diff --git a/datahub-web/.eslintignore b/datahub-web/.eslintignore index 37832ca97fe8f..a9b5c34bea98c 100644 --- a/datahub-web/.eslintignore +++ b/datahub-web/.eslintignore @@ -22,6 +22,13 @@ /bower.json.ember-try /package.json.ember-try +# TODO [META-12204] Fix issues in datahub/pdsc that make us have to ignore the directory +# vendor generator for metadata-models TypeScript type definitions +**/@datahub/pdsc/ + +# generated metadata-models TypeScript type definitions +**/types/codegen/**/*.d.ts + # generated addon sources for publishing **/@datahub/*/addon/**/*.js **/@datahub/*/addon/**/*.js diff --git a/datahub-web/.eslintrc.js b/datahub-web/.eslintrc.js index eabdc8b88f86a..63c8be37d5b2b 100644 --- a/datahub-web/.eslintrc.js +++ b/datahub-web/.eslintrc.js @@ -28,18 +28,22 @@ module.exports = { '@typescript-eslint/interface-name-prefix': ['error', 'always'], '@typescript-eslint/member-delimiter-style': 'error', '@typescript-eslint/no-empty-interface': 'error', - '@typescript-eslint/no-angle-bracket-type-assertion': 'warn', - '@typescript-eslint/array-type': ['error', 'generic'], + '@typescript-eslint/consistent-type-assertions': 'warn', + '@typescript-eslint/array-type': ['error', { default: 'generic' }], '@typescript-eslint/no-non-null-assertion': 'warn', '@typescript-eslint/explicit-member-accessibility': 'off', '@typescript-eslint/no-parameter-properties': 'off', - '@typescript-eslint/no-object-literal-type-assertion': 'warn', '@typescript-eslint/explicit-function-return-type': 'warn', + '@typescript-eslint/ban-ts-ignore': 'warn', + '@typescript-eslint/no-empty-function': 'warn', '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], 'prettier/prettier': ['error', { singleQuote: true, printWidth: 120 }], - 'ember/no-ember-super-in-es-classes': 'error' + 'ember/no-ember-super-in-es-classes': 'error', + '@datahub/no-addon-import': 'error', + '@datahub/no-linkedin-import': 'warn', + eqeqeq: ['error', 'always'] }, - plugins: ['prettier', 'ember', '@typescript-eslint'], + plugins: ['prettier', 'ember', '@typescript-eslint', '@datahub'], overrides: [ // node files { @@ -47,8 +51,9 @@ module.exports = { '**/.eslintrc.js', '**/.template-lintrc.js', '**/ember-cli-build.js', + '**/scripts/**/*.js', '**/testem.js', - '**/blueprints/*/index.js', + '**/index.js', '**/config/**/*.js', '**/lib/*/**.js' ], @@ -63,6 +68,17 @@ module.exports = { rules: { '@typescript-eslint/no-var-requires': 'off' } + }, + { + files: [ + '@linkedin/**/*.ts', + '@linkedin/**/*.js', + 'packages/data-portal-internal-clone/**/*.ts', + 'packages/data-portal-internal-clone/**/*.js' + ], + rules: { + '@datahub/no-linkedin-import': 'off' + } } ] }; diff --git a/datahub-web/.eslintrc.precommit.js b/datahub-web/.eslintrc.precommit.js index 61d9dd7ef9312..7b7d9d358a136 100644 --- a/datahub-web/.eslintrc.precommit.js +++ b/datahub-web/.eslintrc.precommit.js @@ -1,20 +1,23 @@ module.exports = { rules: { - '@typescript-eslint/no-angle-bracket-type-assertion': 'error', + '@typescript-eslint/consistent-type-assertions': 'error', '@typescript-eslint/no-non-null-assertion': 'error', - '@typescript-eslint/no-object-literal-type-assertion': 'error', '@typescript-eslint/explicit-function-return-type': 'error', - '@typescript-eslint/no-explicit-any': 'error' + '@typescript-eslint/no-explicit-any': 'error', + eqeqeq: ['error', 'always'] }, overrides: [ { files: ['*-test.js', '*-test.ts', '**/mirage/**/*.ts'], rules: { - '@typescript-eslint/no-angle-bracket-type-assertion': 'warn', + '@typescript-eslint/consistent-type-assertions': 'warn', '@typescript-eslint/no-non-null-assertion': 'warn', - '@typescript-eslint/no-object-literal-type-assertion': 'warn', '@typescript-eslint/explicit-function-return-type': 'warn', '@typescript-eslint/no-explicit-any': 'warn' + }, + files: ['*.js'], + rules: { + '@typescript-eslint/explicit-function-return-type': 'warn' } } ] diff --git a/datahub-web/@datahub/data-models/.npmignore b/datahub-web/@datahub/data-models/.npmignore index 2f20afe3bf827..410da08fbf3f7 100644 --- a/datahub-web/@datahub/data-models/.npmignore +++ b/datahub-web/@datahub/data-models/.npmignore @@ -11,6 +11,7 @@ /.ember-cli /.eslintignore /.eslintrc.js +/.git/ /.gitignore /.watchmanconfig /.travis.yml diff --git a/datahub-web/@datahub/data-models/.travis.yml b/datahub-web/@datahub/data-models/.travis.yml index 00af6f0e1b690..8c8f454054475 100644 --- a/datahub-web/@datahub/data-models/.travis.yml +++ b/datahub-web/@datahub/data-models/.travis.yml @@ -3,7 +3,7 @@ language: node_js node_js: # we recommend testing addons with the same minimum supported node version as Ember CLI # so that your addon works for all apps - - "6" + - '10' sudo: false dist: trusty @@ -26,9 +26,8 @@ jobs: include: # runs linting and tests with current locked deps - - - stage: "Tests" - name: "Tests" + - stage: 'Tests' + name: 'Tests' install: - yarn install --non-interactive script: @@ -36,19 +35,26 @@ jobs: - yarn lint:js - yarn test - - name: "Floating Dependencies" + - name: 'Floating Dependencies' script: - yarn test + - stage: 'Additional Tests' + name: 'Floating Dependencies' + install: + - npm install --no-package-lock + script: + - npm test + # we recommend new addons test the current and previous LTS # as well as latest stable release (bonus points to beta/canary) - - stage: "Additional Tests" - env: EMBER_TRY_SCENARIO=ember-lts-2.16 - - env: EMBER_TRY_SCENARIO=ember-lts-2.18 + - env: EMBER_TRY_SCENARIO=ember-lts-3.8 + - env: EMBER_TRY_SCENARIO=ember-lts-3.12 - env: EMBER_TRY_SCENARIO=ember-release - env: EMBER_TRY_SCENARIO=ember-beta - env: EMBER_TRY_SCENARIO=ember-canary - env: EMBER_TRY_SCENARIO=ember-default-with-jquery + - env: EMBER_TRY_SCENARIO=ember-classic before_install: - curl -o- -L https://yarnpkg.com/install.sh | bash diff --git a/datahub-web/@datahub/data-models/LICENSE.md b/datahub-web/@datahub/data-models/LICENSE.md index f8d1edb3b7d6e..0d02ed0266734 100644 --- a/datahub-web/@datahub/data-models/LICENSE.md +++ b/datahub-web/@datahub/data-models/LICENSE.md @@ -1,9 +1,13 @@ -The MIT License (MIT) +Copyright (c) 2020 LinkedIn -Copyright (c) 2019 +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + http://www.apache.org/licenses/LICENSE-2.0 -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/datahub-web/@datahub/data-models/README.md b/datahub-web/@datahub/data-models/README.md index 6524db9cf9f96..778eab355e761 100644 --- a/datahub-web/@datahub/data-models/README.md +++ b/datahub-web/@datahub/data-models/README.md @@ -1,51 +1,48 @@ -@datahub/data-models -============================================================================== +# @datahub/data-models -[Short description of the addon.] +## Compatibility -Installation ------------------------------------------------------------------------------- +- Ember.js v3.8 or above +- Ember CLI v2.13 or above +- Node.js v8 or above + +## Installation ``` ember install @datahub/data-models ``` - -Usage ------------------------------------------------------------------------------- +## Usage [Longer description of how to use the addon in apps.] - -Contributing ------------------------------------------------------------------------------- +## Contributing ### Installation -* `git clone ` -* `cd @datahub/data-models` -* `yarn install` +- `git clone ` +- `cd @datahub/data-models` +- `yarn install` ### Linting -* `yarn lint:hbs` -* `yarn lint:js` -* `yarn lint:js --fix` +- `yarn lint:hbs` +- `yarn lint:js` +- `yarn lint:js --fix` ### Running tests -* `ember test` – Runs the test suite on the current Ember version -* `ember test --server` – Runs the test suite in "watch mode" -* `ember try:each` – Runs the test suite against multiple Ember versions +- `ember test` – Runs the test suite on the current Ember version +- `ember test --server` – Runs the test suite in "watch mode" +- `ember try:each` – Runs the test suite against multiple Ember versions ### Running the dummy application -* `ember serve` -* Visit the dummy application at [http://localhost:4200](http://localhost:4200). +- `ember serve` +- Visit the dummy application at [http://localhost:4200](http://localhost:4200). For more information on using ember-cli, visit [https://ember-cli.com/](https://ember-cli.com/). -License ------------------------------------------------------------------------------- +## License -This project is licensed under the [MIT License](LICENSE.md). +This project is licensed under the [Apache License](LICENSE.md). diff --git a/datahub-web/@datahub/data-models/addon/api/common/institutional-memory.ts b/datahub-web/@datahub/data-models/addon/api/common/institutional-memory.ts new file mode 100644 index 0000000000000..70b3f91c73a52 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/api/common/institutional-memory.ts @@ -0,0 +1,35 @@ +import { IInstitutionalMemory } from '@datahub/metadata-types/types/aspects/institutional-memory'; +import { getJSON, postJSON } from '@datahub/utils/api/fetcher'; +import { ApiVersion, getApiRoot } from '@datahub/utils/api/shared'; + +/** + * Constructs the url for institutional memory + * @param {string} urn - the urn for the entity + */ +const institutionalMemoryByUrn = (urn: string, entityType: string): string => + `${getApiRoot(ApiVersion.v2)}/${entityType}s/${urn}/institutionalmemory`; + +/** + * Fetches the list of wiki-type url links to documents related to an entity + * @param {string} urn - urn for the entity + */ +export const readInstitutionalMemory = ( + urn: string, + entityType: string +): Promise<{ elements: Array }> => getJSON({ url: institutionalMemoryByUrn(urn, entityType) }); + +/** + * Returns a view of the full list of wiki-type url links to documents related to an entity. This should be how the + * list appears after any changes by the user (add or delete) + * @param {string} urn - urn for the entity + * @param {Array} wikiLinks - related links snapshot + */ +export const writeInstitutionalMemory = ( + urn: string, + entityType: string, + wikiLinks: Array +): Promise => + postJSON({ + url: institutionalMemoryByUrn(urn, entityType), + data: { elements: wikiLinks } + }); diff --git a/datahub-web/@datahub/data-models/addon/api/common/social-actions.ts b/datahub-web/@datahub/data-models/addon/api/common/social-actions.ts new file mode 100644 index 0000000000000..d62b390cca6b4 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/api/common/social-actions.ts @@ -0,0 +1,107 @@ +import { DataModelName } from '@datahub/data-models/constants/entity'; +import { getApiRoot, ApiVersion } from '@datahub/utils/api/shared'; +import { getJSON, postJSON } from '@datahub/utils/api/fetcher'; +import { + ILikesAspect, + ILikeAction, + IFollowsAspect, + IFollowerType +} from '@datahub/metadata-types/types/aspects/social-actions'; +import { encodeUrn } from '@datahub/utils/validators/urn'; + +/** + * Creates a url for a specific entity by urn and the social action we are constructing + * @param {DataModelName} entityType - the type of entity for which we are making this request + * @param {string} urn - identifier for the specific entity for which we want to construct the url + * @param {string} action - the kind of action we are creating + */ +const getSocialActionsUrl = (entityType: DataModelName, urn: string, action: string): string => + `${getApiRoot(ApiVersion.v2)}/${entityType}/${encodeUrn(urn)}/${action}`; + +/** + * Using the socialActionsUrl as a base, create a function that constructs one specifically for + * like actions + * @param {DataModelName} entityType - type of entity for which we want to construct this url + * @param {string} urn - urn identifier for the specific entity for which we are constructing the url + */ +const getLikeActionsUrl = (entityType: DataModelName, urn: string): string => + getSocialActionsUrl(entityType, urn, 'likes'); + +/** + * Given a Likes aspect from the backend, returns the actual like actions related to that aspect + * @param actions - the list of like actions that are retrieved from the api + */ +const getLikeActionsFromAspect = ({ actions }: ILikesAspect): Array => actions; + +/** + * Given an entity type and urn, construct a getter for which to retrieve likes information + * @param {DataModelName} entityType - the type of entity for which we want to read like information + * @param {string} urn - the identifier for the entity for which we want to read like information + */ +export const readLikesForEntity = (entityType: DataModelName, urn: string): Promise> => + getJSON({ url: getLikeActionsUrl(entityType, urn) }).then(getLikeActionsFromAspect); + +/** + * Given an entity type and urn, post an update request that adds the user to the list of those who + * like the specified entity + * @param {DataModelName} entityType - the type of entity for which we want to add a like + * @param {string} urn - the identifier for the entity to which to add the user's like action + * @return an updated likes aspect for the entity + */ +export const addLikeForEntity = (entityType: DataModelName, urn: string): Promise> => + postJSON({ url: `${getLikeActionsUrl(entityType, urn)}/add`, data: {} }).then(getLikeActionsFromAspect); + +/** + * Given an entity type and urn, post an update request that removes the user to the list of those + * who like the specified entity + * @param {DataModelName} entityType - the type of entity for which we want to add a like + * @param {string} urn - the identifier for teh entity to which to add the user's like action + * @return an updated likes aspect for the entity + */ +export const removeLikeForEntity = (entityType: DataModelName, urn: string): Promise> => + postJSON({ url: `${getLikeActionsUrl(entityType, urn)}/remove`, data: {} }).then(getLikeActionsFromAspect); + +/** + * Using the socialActionsUrl as a base, create a function that constructs one specifically for + * follow actions + * @param {DataModelName} entityType - the type of entity for which we want to construct this urn + * @param {string} urn - urn identifier for the specific entity instance for which we are + * constructing the url + */ +const getFollowActionsUrl = (entityType: DataModelName, urn: string): string => + getSocialActionsUrl(entityType, urn, 'follows'); + +/** + * Given the followers aspect from the API response, provided as a convenience function we return + * objects representing the followers themselves + * @param {Array} followers - the list of followers presented as + * FollowAction objects + */ +const getFollowersFromAspect = ({ followers }: IFollowsAspect): Array => + followers.map(({ follower }): IFollowerType => follower); + +/** + * Given an entity type and urn, construct a getter for which to retrieve follows information + * @param {DataModelName} entityType - the type of entity for which we want to read follow information + * @param {string} urn - the identifier for the entity for which we want to read follow information + */ +export const readFollowsForEntity = (entityType: DataModelName, urn: string): Promise> => + getJSON({ url: getFollowActionsUrl(entityType, urn) }).then(getFollowersFromAspect); + +/** + * Given an entity type and urn, construct a getter for which to add the user as a follower + * @param {DataModelName} entityType - the type of entity for which we want to add the user as a follower + * @param {string} urn - the identifier for the entity for which we want to update follow information + * @return an updated follow aspect for the entity, if successful + */ +export const addFollowForEntity = (entityType: DataModelName, urn: string): Promise> => + postJSON({ url: `${getFollowActionsUrl(entityType, urn)}/add`, data: {} }).then(getFollowersFromAspect); + +/** + * Given an entity type and urn, construct a getter for which to remove the user as a follower + * @param {DataModelName} entityType - the type of entity for which we want to remove the user as a follower + * @param {string} urn - the identifier for the entity for which we want to update follow information + * @return an updated follow aspect for the entity, if successful + */ +export const removeFollowForEntity = (entityType: DataModelName, urn: string): Promise> => + postJSON({ url: `${getFollowActionsUrl(entityType, urn)}/remove`, data: {} }).then(getFollowersFromAspect); diff --git a/datahub-web/@datahub/data-models/addon/api/dataset/compliance.ts b/datahub-web/@datahub/data-models/addon/api/dataset/compliance.ts new file mode 100644 index 0000000000000..aa0812f8cdf71 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/api/dataset/compliance.ts @@ -0,0 +1,152 @@ +import { datasetUrlByUrn } from '@datahub/data-models/api/dataset/dataset'; +import { IDatasetComplianceInfo } from '@datahub/metadata-types/types/entity/dataset/compliance/info'; +import { getJSON, postJSON } from '@datahub/utils/api/fetcher'; +import { getListUrlRoot } from '@datahub/data-models/api/dataset/shared/lists'; +import { ApiVersion } from '@datahub/utils/api/shared'; +import { IComplianceDataType } from '@datahub/metadata-types/types/entity/dataset/compliance-data-types'; +import { IDatasetRetentionPolicy } from '@datahub/metadata-types/types/entity/dataset/compliance/retention'; +import { IDatasetExportPolicy } from '@datahub/metadata-types/types/entity/dataset/compliance/export-policy'; +import { Omit } from 'lodash'; +import { IDatasetComplianceSuggestionInfo } from '@datahub/data-models/types/entity/dataset'; +import { SuggestionIntent } from '@datahub/data-models/constants/entity/dataset/compliance-suggestions'; + +/** + * Returns the url for a datasets compliance policy by urn + * @param {string} urn + * @return {string} + */ +export const datasetComplianceUrl = (urn: string): string => `${datasetUrlByUrn(urn)}/compliance`; + +/** + * Returns the url for a dataset compliance suggestion by urn + * @param {string} urn + * @return {string} + */ +export const datasetComplianceSuggestionUrlByUrn = (urn: string): string => + `${datasetUrlByUrn(urn)}/compliance/suggestion`; + +/** + * Returns the url for a dataset compliance suggestion feedback by urn + * @param {string} urn the urn for the dataset + * @return {string} + */ +export const datasetComplianceSuggestionFeedbackUrlByUrn = (urn: string): string => + `${datasetComplianceSuggestionUrlByUrn(urn)}/feedback`; + +/** + * Returns the url for a dataset's export policy by urn + * @param {string} urn + * @return {string} + */ +export const datasetExportPolicyByUrn = (urn: string): string => `${datasetUrlByUrn(urn)}/exportpolicy`; + +/** + * Reads the dataset compliance policy by urn. + * Resolves with a new compliance policy instance if remote response is ApiResponseStatus.NotFound + * @param {string} urn the urn for the related dataset + * @return {Promise} + */ +export const readDatasetCompliance = (urn: string): Promise => + getJSON({ url: datasetComplianceUrl(urn) }).then(({ complianceInfo }): IDatasetComplianceInfo => complianceInfo); + +/** + * Reads the suggestions for a dataset compliance policy by urn + * @param {string} urn + * @return {Promise} + */ +export const readDatasetComplianceSuggestion = (urn: string): Promise => + getJSON({ url: datasetComplianceSuggestionUrlByUrn(urn) }).then( + ({ complianceSuggestion }): IDatasetComplianceSuggestionInfo => complianceSuggestion + ); + +/** + * Saves the suggestion feedback for a dataset when selected by the user + * @param {string} urn the urn for the dataset with suggestions + * @param {string | null} uid the suggestion uid + * @param {SuggestionIntent} feedback indicator for acceptance or discarding a suggestion + * @return {Promise} + */ +export const saveDatasetComplianceSuggestionFeedbackByUrn = ( + urn: string, + uid: string | null, + feedback: SuggestionIntent +): Promise => postJSON({ url: datasetComplianceSuggestionFeedbackUrlByUrn(urn), data: { uid, feedback } }); + +/** + * Persists the dataset compliance policy + * @param {string} urn + * @param {IComplianceInfo} complianceInfo + * @return {Promise} + */ +export const saveDatasetCompliance = (urn: string, complianceInfo: IDatasetComplianceInfo): Promise => + postJSON({ + url: datasetComplianceUrl(urn), + data: { ...complianceInfo, complianceType: null, compliancePurgeNote: null } + }); + +/** + * Defines the url endpoint for the list of dataset compliance data types and attributes + * @type {string} + */ +const complianceDataTypesUrl = `${getListUrlRoot(ApiVersion.v2)}/compliance-data-types`; + +/** + * Requests the list of compliance data types and the related attributes + * @returns {Promise>} + */ +export const readComplianceDataTypes = (): Promise> => + getJSON({ url: complianceDataTypesUrl }).then( + ({ complianceDataTypes }): Array => complianceDataTypes + ); + +/** + * Constructs the url for a datasets retention policy + * @param {string} urn the urn for the dataset + * @return {string} + */ +const datasetRetentionUrlByUrn = (urn: string): string => `${datasetUrlByUrn(urn)}/retention`; + +/** + * Fetches the list of retention policy for a dataset by urn + * @param {string} urn urn for the dataset + * @return {Promise} + */ +export const readDatasetRetention = (urn: string): Promise => + getJSON({ url: datasetRetentionUrlByUrn(urn) }).then( + ({ retentionPolicy }): IDatasetRetentionPolicy => retentionPolicy + ); + +/** + * Persists the dataset retention policy remotely + * @param {string} urn the urn of the dataset to save + * @param {IDatasetRetention} retention the dataset retention policy to update + * @return {Promise} + */ +export const saveDatasetRetention = ( + urn: string, + retention: Omit +): Promise => + postJSON({ + url: datasetRetentionUrlByUrn(urn), + data: retention + }); + +/** + * Reads the export policy for a dataset by urn + * @param urn + * @return {Promise} + */ +export const readDatasetExportPolicy = (urn: string): Promise => + getJSON({ url: datasetExportPolicyByUrn(urn) }).then(({ exportPolicy }): IDatasetExportPolicy => exportPolicy); + +export const saveDatasetExportPolicy = async ( + urn: string, + exportPolicy: Omit +): Promise => { + const response = (await postJSON({ + url: datasetExportPolicyByUrn(urn), + data: exportPolicy + })) as { exportPolicy: IDatasetExportPolicy }; + + return response.exportPolicy; +}; diff --git a/datahub-web/@datahub/data-models/addon/api/dataset/count.ts b/datahub-web/@datahub/data-models/addon/api/dataset/count.ts deleted file mode 100644 index 9fadcabd209b8..0000000000000 --- a/datahub-web/@datahub/data-models/addon/api/dataset/count.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { cacheApi, getJSON } from '@datahub/utils/api/fetcher'; -import { IReadDatasetsOptionBag } from '@datahub/data-models/types/entity/dataset'; -import { encodeForwardSlash } from '@datahub/utils/validators/urn'; -import { datasetUrlRoot } from '@datahub/data-models/api/dataset/dataset'; -import { ApiVersion } from '@datahub/utils/api/shared'; - -/** - * Composes the datasets count url from a given platform and or prefix if provided - * @param {Partial} [{ platform, prefix }={}] - * @returns {string} - */ -export const datasetsCountUrl = ({ platform, prefix }: Partial = {}): string => { - const urlRoot = `${datasetUrlRoot(ApiVersion.v2)}/count`; - - if (platform && prefix) { - return `${urlRoot}/platform/${platform}/prefix/${encodeForwardSlash(prefix)}`; - } - - if (platform) { - return `${urlRoot}/platform/${platform}`; - } - - return urlRoot; -}; - -/** - * Gets the number of datasets, if provided, using the platform and prefix also - * @param {Partial} { platform, prefix } - * @returns {Promise} - */ -export const readDatasetsCount = cacheApi( - ({ platform, prefix }: Partial): Promise => { - const url = datasetsCountUrl({ platform, prefix }); - return getJSON({ url }); - } -); diff --git a/datahub-web/@datahub/data-models/addon/api/dataset/dataset.ts b/datahub-web/@datahub/data-models/addon/api/dataset/dataset.ts index 5ce39db8fdc4b..596a601adac5f 100644 --- a/datahub-web/@datahub/data-models/addon/api/dataset/dataset.ts +++ b/datahub-web/@datahub/data-models/addon/api/dataset/dataset.ts @@ -1,5 +1,4 @@ import { ApiVersion, getApiRoot } from '@datahub/utils/api/shared'; -import { IDatasetEntity } from '@datahub/metadata-types/types/entity/dataset/dataset-entity'; import { getJSON } from '@datahub/utils/api/fetcher'; import { encodeUrn } from '@datahub/utils/validators/urn'; @@ -18,9 +17,7 @@ export const datasetUrlRoot = (version: ApiVersion): string => `${getApiRoot(ver export const datasetUrlByUrn = (urn: string): string => `${datasetUrlRoot(ApiVersion.v2)}/${encodeUrn(urn)}`; /** - * Queries the Feature endpoint with the urn provided to retrieve entity information - * @param {string} urn - * @returns {Promise} + * Reads a dataset entity from api */ -export const readDataset = (urn: string): Promise => - getJSON({ url: datasetUrlByUrn(urn) }).then(({ dataset }): IDatasetEntity => dataset); +export const readDataset = (urn: string): Promise => + getJSON({ url: datasetUrlByUrn(urn) }); diff --git a/datahub-web/@datahub/data-models/addon/api/dataset/groups.ts b/datahub-web/@datahub/data-models/addon/api/dataset/groups.ts new file mode 100644 index 0000000000000..d103d7f1992e9 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/api/dataset/groups.ts @@ -0,0 +1,22 @@ +import { getJSON } from '@datahub/utils/api/fetcher'; +import { datasetUrlByUrn } from '@datahub/data-models/api/dataset/dataset'; +import { isNotFoundApiError } from '@datahub/utils/api/shared'; + +const datasetGroupsByUrn = (urn: string): string => `${datasetUrlByUrn(urn)}/groups`; + +/** + * Fetches the dataset groups from the mid tier for the given URN + * @param {string} urn The URN of the dataset + * @return {Promise} + */ +export const readDatasetGroups = (urn: string): Promise> => { + try { + return getJSON({ url: datasetGroupsByUrn(urn) }); + } catch (e) { + // In the case a 404 is encountered. We return an empty list to the UI , so that the 404 is gracefully handled. + if (isNotFoundApiError(e)) { + return Promise.resolve([]); + } + throw e; + } +}; diff --git a/datahub-web/@datahub/data-models/addon/api/dataset/lineage.ts b/datahub-web/@datahub/data-models/addon/api/dataset/lineage.ts index 71bd19bec7556..f2d56ee9f1a15 100644 --- a/datahub-web/@datahub/data-models/addon/api/dataset/lineage.ts +++ b/datahub-web/@datahub/data-models/addon/api/dataset/lineage.ts @@ -1,34 +1,28 @@ import { datasetUrlByUrn } from '@datahub/data-models/api/dataset/dataset'; import { DatasetLineageList } from '@datahub/metadata-types/types/entity/dataset/lineage'; import { getJSON } from '@datahub/utils/api/fetcher'; -import { encodeUrn } from '@datahub/utils/validators/urn'; /** * Constructs the url for a datasets upstreams - * @param {string} urn the urn for the child dataset - * @return {string} + * @param urn the urn for the child dataset */ const datasetUpstreamUrlByUrn = (urn: string): string => `${datasetUrlByUrn(urn)}/upstreams`; /** * Constructs the url for a datasets downstreams - * @param {string} urn - * @return {string} + * @param urn */ const datasetDownstreamUrlByUrn = (urn: string): string => `${datasetUrlByUrn(urn)}/downstreams`; /** * Fetches the list of upstream datasets for a dataset by urn - * @param {string} urn urn for the child dataset - * @return {Promise>} */ export const readUpstreamDatasets = (urn: string): Promise => - getJSON({ url: datasetUpstreamUrlByUrn(encodeUrn(urn)) }); + getJSON({ url: datasetUpstreamUrlByUrn(urn) }); /** * Requests the downstream datasets for the dataset identified by urn - * @param {string} urn string urn for the dataset - * @return {Promise>} + * @param urn string urn for the dataset */ export const readDownstreamDatasets = (urn: string): Promise => - getJSON({ url: datasetDownstreamUrlByUrn(encodeUrn(urn)) }); + getJSON({ url: datasetDownstreamUrlByUrn(urn) }); diff --git a/datahub-web/@datahub/data-models/addon/api/dataset/ownership.ts b/datahub-web/@datahub/data-models/addon/api/dataset/ownership.ts new file mode 100644 index 0000000000000..4ce9b75957d50 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/api/dataset/ownership.ts @@ -0,0 +1,50 @@ +import { IOwnerResponse, IOwner } from '@datahub/data-models/types/entity/dataset/ownership'; +import { getJSON } from '@datahub/utils/api/fetcher'; +import { isNotFoundApiError } from '@datahub/utils/api/shared'; +import { datasetUrlByUrn } from '@datahub/data-models/api/dataset/dataset'; + +/** + * Shared Dataset ownership mid-tier endpoint + */ +export const ownershipEndpoint = 'owners'; + +/** + * Modifies an owner object by applying the modified date property as a Date object + * @param {IOwner} owner an instance of a Dataset Owner + */ +export const ownerWithModifiedTimeAsDate = (owner: IOwner): IOwner => ({ + ...owner, + modifiedTime: new Date(owner.modifiedTime as number) +}); + +/** + * Returns the dataset owners url by urn + * @param {string} urn the related dataset urn for which ownership is sought + */ +export const datasetOwnersUrlByUrn = (urn: string): string => `${datasetUrlByUrn(urn)}/${ownershipEndpoint}`; + +/** + * Reads the owners for dataset by urn + * @param {string} urn associated dataset urn to request ownership information of + */ +export const readDatasetOwnersByUrn = async (urn: string): Promise => { + let owners: Array = [], + fromUpstream = false, + datasetUrn = '', + lastModified = 0, + actor = ''; + + try { + ({ owners = [], fromUpstream, datasetUrn, actor, lastModified } = await getJSON({ + url: datasetOwnersUrlByUrn(urn) + })); + + return { owners: owners.map(ownerWithModifiedTimeAsDate), fromUpstream, datasetUrn, actor, lastModified }; + } catch (e) { + if (isNotFoundApiError(e)) { + return { owners, fromUpstream, datasetUrn, actor, lastModified }; + } + + throw e; + } +}; diff --git a/datahub-web/@datahub/data-models/addon/api/dataset/platform.ts b/datahub-web/@datahub/data-models/addon/api/dataset/platform.ts deleted file mode 100644 index 9a30bbcad5681..0000000000000 --- a/datahub-web/@datahub/data-models/addon/api/dataset/platform.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { encodeForwardSlash } from '@datahub/utils/validators/urn'; -import { getApiRoot, ApiVersion } from '@datahub/utils/api/shared'; -import { getJSON, cacheApi } from '@datahub/utils/api/fetcher'; -import { IReadDatasetsOptionBag } from '@datahub/data-models/types/entity/dataset'; - -/** - * Generates the base url for a platform given a specified ApiVersion - * @param {ApiVersion} version - */ -export const platformsUrlRoot = (version: ApiVersion): string => `${getApiRoot(version)}/platforms`; - -/** - * Composes a url for platforms, uses platform and prefix if provided - * @param {IReadDatasetsOptionBag} {platform} - * @param {IReadDatasetsOptionBag} {prefix} - * @returns {string} - */ -const platformsUrl = ({ platform, prefix }: IReadDatasetsOptionBag): string => { - const urlRoot = platformsUrlRoot(ApiVersion.v2); - - if (platform && prefix) { - return `${urlRoot}/${platform}/prefix/${encodeForwardSlash(prefix)}`; - } - - if (platform) { - return `${urlRoot}/${platform}`; - } - - return urlRoot; -}; - -/** - * Reads the platforms endpoint and returns a list of platforms or prefixes found - * @param {IReadDatasetsOptionBag} {platform} - * @param {IReadDatasetsOptionBag} {prefix} - * @returns {Promise>} - */ -const readPlatforms = cacheApi( - ({ platform, prefix }: IReadDatasetsOptionBag): Promise> => { - const url = platformsUrl({ platform, prefix }); - return getJSON>({ url }); - } -); - -export { readPlatforms }; diff --git a/datahub-web/@datahub/data-models/addon/api/dataset/platforms.ts b/datahub-web/@datahub/data-models/addon/api/dataset/platforms.ts index 69f23535cb323..8724043630b15 100644 --- a/datahub-web/@datahub/data-models/addon/api/dataset/platforms.ts +++ b/datahub-web/@datahub/data-models/addon/api/dataset/platforms.ts @@ -3,7 +3,17 @@ import { ApiVersion } from '@datahub/utils/api/shared'; import { getJSON } from '@datahub/utils/api/fetcher'; import { IDataPlatform } from '@datahub/metadata-types/types/entity/dataset/platform'; +/** + * Defines the url endpoint for the list of dataset compliance data types and attributes + * @type {string} + */ const platformsUrl = `${getListUrlRoot(ApiVersion.v2)}/platforms`; +/** + * Requests the list of compliance data types and the related attributes + * @returns {Promise>} + */ export const readDataPlatforms = (): Promise> => - getJSON({ url: platformsUrl }).then(({ platforms }) => platforms); + getJSON({ url: platformsUrl }) + .then(({ platforms }) => platforms || []) + .catch(() => []); diff --git a/datahub-web/@datahub/data-models/addon/api/dataset/wiki.ts b/datahub-web/@datahub/data-models/addon/api/dataset/wiki.ts deleted file mode 100644 index aec4fb4ede77b..0000000000000 --- a/datahub-web/@datahub/data-models/addon/api/dataset/wiki.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { IInstitutionalMemory } from '@datahub/data-models/types/entity/common/wiki/institutional-memory'; -import { getJSON, postJSON } from '@datahub/utils/api/fetcher'; -import { datasetUrlByUrn } from '@datahub/data-models/api/dataset/dataset'; - -/** - * Constructs the url for a datasets institutional memory - * @param {string} urn - the urn for the dataset - */ -const datasetInstitutionalMemoryByUrn = (urn: string): string => `${datasetUrlByUrn(urn)}/institutionalmemory`; - -/** - * Fetches the list of wiki-type url links to documents related to a dataset - * @param {string} urn - urn for the dataset - */ -export const readDatasetInstitutionalMemory = (urn: string): Promise<{ elements: Array }> => - getJSON({ url: datasetInstitutionalMemoryByUrn(urn) }); - -/** - * Returns a view of the full list of wiki-type url links to documents related to a dataset. This should be how the - * list appears after any changes by the user (add or delete) - * @param {string} urn - urn for the dataset - * @param {Array} wikiLinks - related links snapshot - */ -export const writeDatasetInstitutionalMemory = (urn: string, wikiLinks: Array): Promise => - postJSON({ - url: datasetInstitutionalMemoryByUrn(urn), - data: { elements: wikiLinks } - }); diff --git a/datahub-web/@datahub/data-models/addon/api/entity.ts b/datahub-web/@datahub/data-models/addon/api/entity.ts index f8014e0e23413..c89512d6a5172 100644 --- a/datahub-web/@datahub/data-models/addon/api/entity.ts +++ b/datahub-web/@datahub/data-models/addon/api/entity.ts @@ -4,24 +4,24 @@ import { getJSON } from '@datahub/utils/api/fetcher'; /** * Generic entity root path - * @param entityType the entity type that API accepts + * @param entityEndpoint the URL path segment or endpoint for the specific entity, this may be different from the entity name * @param version version of the API, defaulted to V2 */ -export const entityApiRoot = (entityType: string, version: ApiVersion = ApiVersion.v2): string => - `${getApiRoot(version)}/${entityType}`; +export const entityApiRoot = (entityEndpoint: string, version: ApiVersion = ApiVersion.v2): string => + `${getApiRoot(version)}/${entityEndpoint}`; /** * Generic entity read api url * @param urn urn for the entity - * @param entityType the entity type that API accepts + * @param entityEndpoint the URL path segment or endpoint for the specific entity, this may be different from the entity name */ -export const entityApiByUrn = (urn: string, entityType: string): string => - `${entityApiRoot(entityType)}/${encodeUrn(urn)}`; +export const entityApiByUrn = (urn: string, entityEndpoint: string): string => + `${entityApiRoot(entityEndpoint)}/${encodeUrn(urn)}`; /** * Generic entity read api call * @param urn urn for the entity - * @param entityType the entity type that API accepts + * @param entityEndpoint the URL path segment or endpoint for the specific entity, this may be different from the entity name */ -export const readEntity = (urn: string, entityType: string): Promise => - getJSON({ url: entityApiByUrn(urn, entityType) }); +export const readEntity = (urn: string, entityEndpoint: string): Promise => + getJSON({ url: entityApiByUrn(urn, entityEndpoint) }); diff --git a/datahub-web/@datahub/data-models/addon/api/feature/feature.ts b/datahub-web/@datahub/data-models/addon/api/feature/feature.ts new file mode 100644 index 0000000000000..6332543889eba --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/api/feature/feature.ts @@ -0,0 +1,70 @@ +import { IFeatureEntity } from '@datahub/metadata-types/types/entity/feature/feature-entity'; +import { encodeUrn } from '@datahub/utils/validators/urn'; +import { getJSON, postJSON } from '@datahub/utils/api/fetcher'; +import { ApiVersion } from '@datahub/utils/api/shared'; +import { featureUrlRoot } from '@datahub/data-models/api/feature'; +import { IFrameFeatureStatusConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-status-config'; +import { IFrameFeatureEditableConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-editable-config'; +import { IFrameFeatureTierConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-tier-config'; + +/** + * Constructs the url for a Feature identified by the provided string urn + * @param {string} urn the urn to use in querying for Feature entity + * @returns {string} + */ +export const featureUrlByUrn = (urn: string): string => `${featureUrlRoot(ApiVersion.v2)}/${encodeUrn(urn)}`; + +/** + * Constructs the url to the Feature endpoint to update it's statusConfig metadata aspect + * @param {string} urn the string urn for the Feature + */ +export const featureStatusConfigUrlByUrn = (urn: string): string => `${featureUrlByUrn(urn)}/statusconfig`; + +/** + * Constructs the url to the Feature endpoint to update it's tierConfig metadata aspect + * @param {string} urn the string urn for the Feature Tier endpoint + */ +export const featureTierConfigUrlByUrn = (urn: string): string => `${featureUrlByUrn(urn)}/tierconfig`; +/** + * Constructs the url to the Feature endpoint to update it's editableConfig metadata aspect + * @param {string} urn the string urn for the Feature + */ +export const featureEditableConfigUrlByUrn = (urn: string): string => `${featureUrlByUrn(urn)}/editableconfig`; + +/** + * Queries the Feature endpoint with the urn provided to retrieve entity information + * @param {string} urn + * @returns {Promise} + */ +export const readFeature = (urn: string): Promise => getJSON({ url: featureUrlByUrn(urn) }); + +/** + * Updates the Feature represented by the urn, by making a POST request to the endpoint at the url + * @param {string} urn the string urn for the Feature to be updated + * @param {IFrameFeatureStatusConfig} statusConfig the full statusConfig metadata aspect with updated values + * @returns {Promise<{updated: true}>} if update is successful a response string with value of `updated` will be returned + */ +export const updateFeatureStatusConfig = ( + urn: string, + statusConfig: IFrameFeatureStatusConfig +): Promise<{ updated: true }> => postJSON({ url: featureStatusConfigUrlByUrn(urn), data: statusConfig }); + +/** + * Updates the Feature represented by the urn, by making a POST request to the endpoint at the url + * @param {string} urn the string urn for the Feature to be updated + * @param {IFrameFeatureEditableConfig} editableConfig the full editableConfig metadata aspect with the updated values for this Feature + * @returns {Promise<{updated: true}>} if update is successful a response string with value of `updated` will be returned + */ +export const updateFeatureEditableConfig = ( + urn: string, + editableConfig: IFrameFeatureEditableConfig +): Promise<{ updated: true }> => postJSON({ url: featureEditableConfigUrlByUrn(urn), data: editableConfig }); + +/** + * Updates the Feature represented by the urn, by making a POST request to the endpoint at the url + * @param {string} urn the string urn for the Feature to be updated + * @param {IFrameFeatureTierConfig} tierConfig the tierConfig aspect with the updated value of `tier` for this Feature + * @returns {Promise<{updated: true}>} if update is successful a response string with value of `updated` will be returned + */ +export const updateFeatureTierConfig = (urn: string, tierConfig: IFrameFeatureTierConfig): Promise<{ update: true }> => + postJSON({ url: featureTierConfigUrlByUrn(urn), data: tierConfig }); diff --git a/datahub-web/@datahub/data-models/addon/api/feature/features.ts b/datahub-web/@datahub/data-models/addon/api/feature/features.ts new file mode 100644 index 0000000000000..516c7f318f274 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/api/feature/features.ts @@ -0,0 +1,37 @@ +import { featureUrlRoot } from '@datahub/data-models/api/feature/index'; +import { ApiVersion } from '@datahub/utils/api/shared'; +import { getJSON } from '@datahub/utils/api/fetcher'; +import { IReadFeatureHierarchyResponse } from '@datahub/data-models/types/entity/feature/features'; +import buildUrl from '@datahub/utils/api/build-url'; +import { FeatureStatusType } from '@datahub/metadata-types/constants/entity/feature/frame/feature-status-type'; + +/** + * Parameters for querying the Features Entity GET endpoint + * @interface IReadFeaturesParameters + */ +interface IReadFeaturesHierarchyParameters { + baseEntity?: string; + classification?: string; + category?: string; + // Current status of the feature + status?: FeatureStatusType; +} + +/** + * Constructs the base url for feature platforms + */ +const featuresUrl = (params: IReadFeaturesHierarchyParameters): string => + buildUrl(featureUrlRoot(ApiVersion.v2), params); + +/** + * Queries the Feature platforms endpoint to get the list of feature platforms + */ +export const readFeatureHierarchy = ( + params: IReadFeaturesHierarchyParameters +): Promise => { + // Only features that are in status FeatureStatusType.Published are available for browsing, adds a default status flag + // If a specific status is specified in params, that value will take precedence over default below + params = { status: FeatureStatusType.Published, ...params }; + + return getJSON({ url: featuresUrl(params) }); +}; diff --git a/datahub-web/@datahub/data-models/addon/api/feature/index.ts b/datahub-web/@datahub/data-models/addon/api/feature/index.ts new file mode 100644 index 0000000000000..668ad36b8fa05 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/api/feature/index.ts @@ -0,0 +1,8 @@ +import { ApiVersion, getApiRoot } from '@datahub/utils/api/shared'; + +/** + * Constructs the Feature url root endpoint + * @param {ApiVersion} version the version of the api applicable to retrieve the Feature + * @returns {string} + */ +export const featureUrlRoot = (version: ApiVersion): string => `${getApiRoot(version)}/features`; diff --git a/datahub-web/@datahub/data-models/addon/api/feature/snapshot.ts b/datahub-web/@datahub/data-models/addon/api/feature/snapshot.ts new file mode 100644 index 0000000000000..2560ed2f13a9c --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/api/feature/snapshot.ts @@ -0,0 +1,32 @@ +import { IFeatureSnapshot } from '@datahub/metadata-types/types/metadata/feature-snapshot'; +import { getJSON } from '@datahub/utils/api/fetcher'; +import { featureUrlByUrn } from '@datahub/data-models/api/feature/feature'; +import { featureUrlRoot } from '@datahub/data-models/api/feature'; +import { ApiVersion } from '@datahub/utils/api/shared'; + +/** + * Constructs the Feature instance snapshot url from the urn + * @param {string} urn string urn value for the feature snapshot required + * @returns {string} + */ +const featureSnapshotUrlByUrn = (urn: string): string => `${featureUrlByUrn(urn)}/snapshot`; + +/** + * Queries the endpoint at the url to request feature snapshot information + * @param {string} urn + * @returns {Promise} + */ +export const readFeatureSnapshot = (urn: string): Promise => + getJSON({ url: featureSnapshotUrlByUrn(urn) }); + +/** + * Constructs the url for the batch GET endpoint for Feature Snapshots + */ +const featureSnapshotsUrl = (urns: Array): string => + `${featureUrlRoot(ApiVersion.v2)}/snapshots/${urns.join(';')}`; + +/** + * Reads the list of snapshots at the batch GET endpoint for Feature Entities + */ +export const readFeatureSnapshots = (urns: Array): Promise> => + getJSON>({ url: featureSnapshotsUrl(urns) }); diff --git a/datahub-web/@datahub/data-models/addon/components/get-entity-by-urn.hbs b/datahub-web/@datahub/data-models/addon/components/get-entity-by-urn.hbs new file mode 100644 index 0000000000000..e83cc52266c1f --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/components/get-entity-by-urn.hbs @@ -0,0 +1 @@ +{{yield this.entityInstance}} diff --git a/datahub-web/@datahub/data-models/addon/components/get-entity-by-urn.ts b/datahub-web/@datahub/data-models/addon/components/get-entity-by-urn.ts new file mode 100644 index 0000000000000..e3fb968aa3b22 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/components/get-entity-by-urn.ts @@ -0,0 +1,39 @@ +import Component from '@glimmer/component'; +import { inject as service } from '@ember/service'; +import DataModelsService from '@datahub/data-models/services/data-models'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { extractEntityType } from '@datahub/utils/validators/urn'; + +interface IGetEntityByUrnArgs { + urn: string; +} + +/** + * Allows us to get an entity instance from our data model service by its urn. Helpful when we are composing templates + * and only have a urn to work with (and we may or may not know the entity type we are working with) and we want to + * abstract the concern of instantiating a model with the data models service away from the parent component. + * + * @example + * + * + * {{dataset.name}} + * {{dataset.someOtherInfo}} + * + * + */ +export default class GetEntityByUrn extends Component { + /** + * Injects the data models service so that we can get the actual entity class/instance + */ + @service + dataModels!: DataModelsService; + + /** + * Given the entity type and urn, we are able to return a partial instance + */ + get entityInstance(): DataModelEntityInstance | void { + const urn = this.args.urn; + const entityModel = this.dataModels.getModelByApiName(extractEntityType(urn) as string); + return entityModel && this.dataModels.createPartialInstance(entityModel.displayName, urn); + } +} diff --git a/datahub-web/@datahub/data-models/addon/config/urn/actor.ts b/datahub-web/@datahub/data-models/addon/config/urn/actor.ts deleted file mode 100644 index 6283bc6e9ea14..0000000000000 --- a/datahub-web/@datahub/data-models/addon/config/urn/actor.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Base for all actor/user urns. A person's username is appended to this base - * @type {string} - */ -export const actorUrnBasePrefix = 'urn:li:corpuser:'; diff --git a/datahub-web/@datahub/data-models/addon/config/urn/base-prefix.ts b/datahub-web/@datahub/data-models/addon/config/urn/base-prefix.ts new file mode 100644 index 0000000000000..117e5bb4d4ebd --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/config/urn/base-prefix.ts @@ -0,0 +1,14 @@ +/** + * Base for all corpuser type user urns. A person's username is appended to this base + */ +export const corpUserUrnBasePrefix = 'urn:li:corpuser:'; + +/** + * Base for all actor type user urns. A person's username is appended to this base + */ +export const actorUrnBasePrefix = 'urn:li:actor:'; + +/** + * Base for all grid group type urns. A group's account name is appended to this base + */ +export const gridGroupUrnBasePrefix = 'urn:li:gridGroup:'; diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/common/acl-access.ts b/datahub-web/@datahub/data-models/addon/constants/entity/common/acl-access.ts new file mode 100644 index 0000000000000..3c96c972fa6fe --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/constants/entity/common/acl-access.ts @@ -0,0 +1,19 @@ +/** + * Enumerates the access control types for an ACL entry + * @export + */ +export enum AccessControlAccessType { + Read = 'READ', + Write = 'WRITE', + ReadWrite = 'READ_WRITE' +} + +/** + * Possible values for the ACL access status, where expired means we are past the expiration time + */ +export enum AclAccessStatus { + // Access existed but is past the expiration + EXPIRED = 'EXPIRED', + // Access is currently standing + ACTIVE = 'ACTIVE' +} diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/dataset/compliance-suggestions.ts b/datahub-web/@datahub/data-models/addon/constants/entity/dataset/compliance-suggestions.ts new file mode 100644 index 0000000000000..73ae4b13f8dfe --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/constants/entity/dataset/compliance-suggestions.ts @@ -0,0 +1,22 @@ +/** + * String indicating that the user affirms or ignored a field suggestion + * @export + * @namespace Dataset + * @enum {string} + */ +export enum SuggestionIntent { + accept = 'accept', + ignore = 'reject' +} + +/** + * Possible states to record the user interaction with a suggestion. + * @export + * @namespace Dataset + * @enum {string} + */ +export enum UserSuggestionInteraction { + NONE = 'none', + ACCEPT = 'accepted', + REJECT = 'rejected' +} diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/dataset/groups.ts b/datahub-web/@datahub/data-models/addon/constants/entity/dataset/groups.ts new file mode 100644 index 0000000000000..6af0012d8560d --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/constants/entity/dataset/groups.ts @@ -0,0 +1,5 @@ +/** + * Regex pattern used to extract the group name and the namespace from the URN resulting from the `readDatasetGroups` api call + * + */ +export const datasetGroupNameRegexPattern = /^urn:li:datasetGroup:\((.*)\)/; diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/dataset/ownership.ts b/datahub-web/@datahub/data-models/addon/constants/entity/dataset/ownership.ts new file mode 100644 index 0000000000000..b433f0090db19 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/constants/entity/dataset/ownership.ts @@ -0,0 +1,8 @@ +/** + * Accepted string values for the namespace of a user + */ +export enum OwnerUrnNamespace { + corpUser = 'urn:li:corpuser', + groupUser = 'urn:li:corpGroup', + multiProduct = 'urn:li:multiProduct' +} diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/dataset/tabs.ts b/datahub-web/@datahub/data-models/addon/constants/entity/dataset/tabs.ts new file mode 100644 index 0000000000000..63e66fa32b8db --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/constants/entity/dataset/tabs.ts @@ -0,0 +1,72 @@ +import { CommonTabProperties } from '@datahub/data-models/constants/entity/shared/tabs'; +import { ITabProperties } from '@datahub/data-models/types/entity/rendering/entity-render-props'; + +/** + * Lists the dataset tabs available + * @export + * @enum {string} + */ +export enum DatasetTab { + Properties = 'properties', + Access = 'access', + Schema = 'schema', + Ownership = 'ownership', + Compliance = 'compliance', + Relationships = 'relationships', + Health = 'health', + DatasetGroups = 'datasetgroups' +} + +/** + * Properties for dataset tabs + */ +export const TabProperties: Array = [ + { + id: DatasetTab.Schema, + title: 'Schema', + contentComponent: 'datasets/containers/dataset-schema' + }, + { + id: DatasetTab.Properties, + title: 'Status', + contentComponent: 'datasets/containers/dataset-properties' + }, + { + id: DatasetTab.Access, + title: 'ACL Access', + contentComponent: 'jit-acl/containers/jit-acl-access-container', + lazyRender: true + }, + { + id: DatasetTab.Ownership, + title: 'Ownership', + contentComponent: 'datasets/containers/dataset-ownership' + }, + { + id: DatasetTab.Compliance, + title: 'Compliance', + contentComponent: 'datasets/containers/compliance-main' + }, + { + id: DatasetTab.DatasetGroups, + title: 'Dataset Groups', + contentComponent: 'datasets/core/containers/dataset-groups', + lazyRender: true + }, + /* + ** Todo : META-9512 datasets - relationships view is unable to handle big payloads + ** Adding lazy render as a workaround, so as to unblock rest of the tabs on the page. + */ { + id: DatasetTab.Relationships, + title: 'Relationships', + contentComponent: 'datasets/dataset-relationships', + lazyRender: true + }, + { + id: DatasetTab.Health, + title: 'Health', + contentComponent: 'health/entity-detail', + lazyRender: true + }, + ...CommonTabProperties +]; diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/feature/list-fields.ts b/datahub-web/@datahub/data-models/addon/constants/entity/feature/list-fields.ts new file mode 100644 index 0000000000000..cdd3608b27927 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/constants/entity/feature/list-fields.ts @@ -0,0 +1,42 @@ +import { attributeDisplayName } from '@datahub/data-models/entity/feature/utils'; +import { ArrayElement } from '@datahub/utils/types/array'; +import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; +import { ISearchEntityRenderProps } from '@datahub/data-models/types/search/search-entity-render-prop'; + +// Lists properties for rendering a Feature in a list +type ListItemFields = Array; + +/** + * Specifies the attributes to be displayed per feature in an EntityListContainer + */ +export const entityListRenderFields: ListItemFields = [ + { + displayName: attributeDisplayName.baseEntity, + fieldName: 'baseEntity' + }, + { + displayName: attributeDisplayName.classification, + fieldName: 'classification' + }, + { + displayName: attributeDisplayName.category, + fieldName: 'categoryPathString' + }, + { + displayName: attributeDisplayName.frameMp, + fieldName: 'namespace' + }, + { + displayName: attributeDisplayName.availability, + fieldName: 'formattedDataAvailability' + } +].map( + (field): ArrayElement['searchResultConfig']['attributes']> => ({ + ...field, + showInResultsPreview: true, + showInAutoCompletion: false, + showInFacets: false, + desc: '', + example: '' + }) +); diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/feature/source.ts b/datahub-web/@datahub/data-models/addon/constants/entity/feature/source.ts new file mode 100644 index 0000000000000..52c04b8061e35 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/constants/entity/feature/source.ts @@ -0,0 +1,9 @@ +/** + * Path key for Frame hdfs source attribute + */ +export const hdfsSourceAttribute = 'com.linkedin.feature.frame.HDFSSourceProperties'; + +/** + * Prefix for the hdfs route + */ +export const offlineFeatureSourceUrlBase = 'https://ltx1-holdemaz01.grid.linkedin.com:8443/hdfs'; diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/feature/tabs.ts b/datahub-web/@datahub/data-models/addon/constants/entity/feature/tabs.ts new file mode 100644 index 0000000000000..8c8d98fa5de17 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/constants/entity/feature/tabs.ts @@ -0,0 +1,29 @@ +import { ITabProperties } from '@datahub/data-models/types/entity/rendering/entity-render-props'; + +/** + * Lists the Feature Tabs available + */ +export enum FeatureTab { + Metadata = 'metadata', + Statistics = 'statistics' +} + +/** + * Optional tab that will be added during runtime + */ +export const FeatureStatisticTab = { + id: FeatureTab.Statistics, + title: 'Statistics', + contentComponent: 'feature-statistics' +}; + +/** + * List of default tabs for feature + */ +export const TabProperties: Array = [ + { + id: FeatureTab.Metadata, + title: 'Metadata', + contentComponent: 'feature-attributes' + } +]; diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/index.ts b/datahub-web/@datahub/data-models/addon/constants/entity/index.ts index d112fc8789dc3..d83b82c4ee1bc 100644 --- a/datahub-web/@datahub/data-models/addon/constants/entity/index.ts +++ b/datahub-web/@datahub/data-models/addon/constants/entity/index.ts @@ -1,5 +1,10 @@ +import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity'; import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; +import { ListEntity } from '@datahub/data-models/entity/list/list-entity'; +import { BaseEntity } from '@datahub/data-models/entity/base-entity'; +import { IBaseEntity } from '@datahub/metadata-types/types/entity/index'; +import { DataConstructChangeManagementEntity } from '@datahub/data-models/entity/data-construct-change-management/data-construct-change-management-entity'; /** * Defines the interface for the DataModelEntity enum below. @@ -7,7 +12,10 @@ import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; */ export interface IDataModelEntity { [DatasetEntity.displayName]: typeof DatasetEntity; + [FeatureEntity.displayName]: typeof FeatureEntity; [PersonEntity.displayName]: typeof PersonEntity; + [ListEntity.displayName]: typeof ListEntity; + [DataConstructChangeManagementEntity.displayName]: typeof DataConstructChangeManagementEntity; } /** @@ -16,9 +24,34 @@ export interface IDataModelEntity { */ export const DataModelEntity: IDataModelEntity = { [DatasetEntity.displayName]: DatasetEntity, - [PersonEntity.displayName]: PersonEntity + [FeatureEntity.displayName]: FeatureEntity, + [PersonEntity.displayName]: PersonEntity, + [ListEntity.displayName]: ListEntity, + [DataConstructChangeManagementEntity.displayName]: DataConstructChangeManagementEntity }; +/** + * Will Generate a map of entities using the api name. Since some entities will throw exceptions while + * accesing their render props, it will ignore those entities + * @param entities + */ +export const generateEntityApiNameMap = (entities: k): Record => + Object.values(entities).reduce((m, entity: IDataModelEntity[keyof IDataModelEntity]) => { + // some entities may no implement render props + try { + return { ...m, [`${entity.renderProps.apiEntityName}`]: entity }; + } catch (e) { + return m; + } + }, {}); + +/** + * Reverse lookup by apiName + */ +export const DataModelEntityApiNameMap: Record< + string, + IDataModelEntity[keyof IDataModelEntity] +> = generateEntityApiNameMap(DataModelEntity); /** * Aliases the keys on the DataModelEntity enum for reference convenience * This maps to the names of the available entities for example 'datasets', 'users', etc @@ -34,14 +67,7 @@ export type DataModelEntity = typeof DataModelEntity[DataModelName]; /** * A specific instance of data model entity * For example { DatasetEntity | UserEntity | ... } + * As we move to a dynamic world of entities. Having a more open entity like BaseEntity, which all entities should + * implement aliviate some type constrains. */ -export type DataModelEntityInstance = InstanceType; - -/** - * Guards on a string entityName if it maps to an entity data model (class inheriting from BaseEntity) - * @param {string} entityName the displayName to match against for DataModelEntity types - */ -export const isDataModelBaseEntityName = (entityName: DataModelName): boolean => - Object.values(DataModelEntity) - .mapBy('displayName') - .includes(entityName); +export type DataModelEntityInstance = BaseEntity; diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/person/links.ts b/datahub-web/@datahub/data-models/addon/constants/entity/person/links.ts new file mode 100644 index 0000000000000..3bd7c19f21d80 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/constants/entity/person/links.ts @@ -0,0 +1,7 @@ +/** + * Constant base for the user profile link. We append the username to this to reach their + * profile + * @type {string} + * @deprecated - should be moved to internal version + */ +export const profileLinkBase = 'https://cinco.linkedin.biz/people/'; diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/person/social-actions.ts b/datahub-web/@datahub/data-models/addon/constants/entity/person/social-actions.ts new file mode 100644 index 0000000000000..551651103ec85 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/constants/entity/person/social-actions.ts @@ -0,0 +1,11 @@ +/** + * The expected types of social actions that a user can take on an entity. + */ +export enum SocialAction { + // Gives an upvote to the entity to endorse its usefulness + LIKE = 'like', + // Opts into notifications for the entity's changes in metadata + FOLLOW = 'follow', + // Saves the entity to a specified list, organized by the user for some organizational benefit + SAVE = 'save' +} diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/person/tabs.ts b/datahub-web/@datahub/data-models/addon/constants/entity/person/tabs.ts index 36dd386886462..b00e0f563f7ca 100644 --- a/datahub-web/@datahub/data-models/addon/constants/entity/person/tabs.ts +++ b/datahub-web/@datahub/data-models/addon/constants/entity/person/tabs.ts @@ -1,4 +1,4 @@ -import { ITabProperties, TabProperties } from '@datahub/data-models/constants/entity/shared/tabs'; +import { ITabProperties } from '@datahub/data-models/types/entity/rendering/entity-render-props'; /** * Tabs available for Person entity @@ -9,13 +9,64 @@ export enum PersonTab { UserOwnership = 'userownership', UserJitAccess = 'userjitaccess', UserUMPFlows = 'userumpflows', - UserFeatureList = 'userfeaturelist' + UserFeatureList = 'userfeaturelist', + UserLikeList = 'userlikelist', + UserSocialActionList = 'usersocialactionlist', + UserDYMIList = 'userdymilist' } /** * Tab properties available for Person entity */ -export const personTabProperties: Array = [TabProperties.userlists, TabProperties.userownership]; +export const personTabProperties: Array = [ + { + id: PersonTab.DataAccess, + title: 'Data Access', + contentComponent: '', + tablistMenuComponent: 'user/containers/tablist/data-access' + }, + { + id: PersonTab.UserLists, + title: 'Lists', + contentComponent: '', + tablistMenuComponent: 'user/containers/tablist/entity-lists' + }, + { + id: PersonTab.UserFeatureList, + title: 'Features', + contentComponent: 'user/containers/tab-content/entity-lists', + lazyRender: true + }, + { + id: PersonTab.UserDYMIList, + title: 'Data you might be interested in', + contentComponent: '', + tablistMenuComponent: 'user/containers/tablist/recommendation-list' + }, + { + id: PersonTab.UserOwnership, + title: 'Ownership', + contentComponent: '', + tablistMenuComponent: 'user/containers/tablist/entity-ownership' + }, + { + id: PersonTab.UserJitAccess, + title: 'JIT Datasets', + contentComponent: 'user/containers/tab-content/data-access' + }, + { + id: PersonTab.UserUMPFlows, + title: 'UMP Flows', + contentComponent: 'ump-flows/route-content', + lazyRender: true + }, + { + id: PersonTab.UserSocialActionList, + title: '', + contentComponent: 'user/containers/tab-content/social-action-list', + lazyRender: true + } +]; /** * Helper fn to filter the personTabProperties using the ids. diff --git a/datahub-web/@datahub/data-models/addon/constants/entity/shared/tabs.ts b/datahub-web/@datahub/data-models/addon/constants/entity/shared/tabs.ts index 78d376c3a40f2..2a685214b287c 100644 --- a/datahub-web/@datahub/data-models/addon/constants/entity/shared/tabs.ts +++ b/datahub-web/@datahub/data-models/addon/constants/entity/shared/tabs.ts @@ -1,98 +1,22 @@ -/** - * Tab properties for entity profile pages - * @export - * @interface ITabProperties - */ -export interface ITabProperties { - id: string; - title: string; - component?: string; - contentComponent?: string; - tablistMenuComponent?: string; - lazyRender?: boolean; -} +import { ITabProperties } from '@datahub/data-models/types/entity/rendering/entity-render-props'; /** - * Lists the tabs available globally to each entity + * Lists the tabs shared globally * @export * @enum {string} */ -export enum Tab { - Properties = 'properties', - Comments = 'comments', - Schema = 'schema', - Ownership = 'ownership', - SampleData = 'sample', - Relationships = 'relationships', - Metadata = 'metadata', - Wiki = 'wiki', - UserLists = 'userlists', - UserOwnership = 'userownership' +export enum CommonTab { + Wiki = 'wiki' } /** - * A lookup table for each Tabs enumeration - * @type {Record} + * List the tab properties of shared tabs */ -export const TabProperties: Record = { - [Tab.Schema]: { - id: Tab.Schema, - title: 'Schema', - component: 'datasets/containers/dataset-schema' - }, - [Tab.Properties]: { - id: Tab.Properties, - title: 'Status', - component: 'datasets/containers/dataset-properties' - }, - [Tab.Ownership]: { - id: Tab.Ownership, - title: 'Ownership', - component: 'datasets/containers/dataset-ownership' - }, - [Tab.Comments]: { - id: Tab.Comments, - title: 'Comments', - component: '' - }, - [Tab.SampleData]: { - id: Tab.SampleData, - title: 'Sample Data', - component: '' - }, - /* - ** Todo : META-9512 datasets - relationships view is unable to handle big payloads - ** Adding lazy render as a workaround, so as to unblock rest of the tabs on the page. - */ - [Tab.Relationships]: { - id: Tab.Relationships, - title: 'Relationships', - component: 'datasets/dataset-relationships', - lazyRender: true - }, - [Tab.Metadata]: { - id: Tab.Metadata, - title: 'Metadata', - component: 'feature-attributes' - }, - [Tab.Wiki]: { - id: Tab.Wiki, +export const CommonTabProperties: Array = [ + { + id: CommonTab.Wiki, title: 'Docs', - component: 'institutional-memory/containers/tab', + contentComponent: 'institutional-memory/containers/tab', lazyRender: true - }, - [Tab.UserLists]: { - id: Tab.UserLists, - title: 'Lists', - component: '', - contentComponent: '', - tablistMenuComponent: 'user/containers/tablist/entity-lists' - }, - [Tab.UserOwnership]: { - id: Tab.UserOwnership, - title: 'Ownership', - component: '', - contentComponent: '', - tablistMenuComponent: 'user/containers/tablist/entity-ownership' } -}; +]; diff --git a/datahub-web/@datahub/data-models/addon/entity/base-entity.ts b/datahub-web/@datahub/data-models/addon/entity/base-entity.ts index 2d04c2e7a4ca7..ba2b9b3438396 100644 --- a/datahub-web/@datahub/data-models/addon/entity/base-entity.ts +++ b/datahub-web/@datahub/data-models/addon/entity/base-entity.ts @@ -1,16 +1,16 @@ import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; import { Snapshot } from '@datahub/metadata-types/types/metadata/snapshot'; -import { computed } from '@ember/object'; +import { computed, set } from '@ember/object'; import { MetadataAspect } from '@datahub/metadata-types/types/metadata/aspect'; import { getMetadataAspect } from '@datahub/metadata-types/constants/metadata/aspect'; -import { IOwner } from '@datahub/metadata-types/types/common/owner'; -import { map } from '@ember/object/computed'; +import { map, mapBy } from '@ember/object/computed'; import { IEntityLinkAttrs, EntityLinkNode, IBrowsePath, IEntityLinkAttrsWithCount, - AppRoute + AppRoute, + EntityPageRoute } from '@datahub/data-models/types/entity/shared'; import { NotImplementedError } from '@datahub/data-models/constants/entity/shared/index'; import { readBrowse, readBrowsePath } from '@datahub/data-models/api/browse'; @@ -18,6 +18,44 @@ import { getFacetDefaultValueForEntity } from '@datahub/data-models/entity/utils import { InstitutionalMemory } from '@datahub/data-models/models/aspects/institutional-memory'; import { IBaseEntity } from '@datahub/metadata-types/types/entity'; import { readEntity } from '@datahub/data-models/api/entity'; +import { relationship } from '@datahub/data-models/relationships/decorator'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; +import { SocialAction } from '@datahub/data-models/constants/entity/person/social-actions'; +import { ILikeAction, IFollowerType } from '@datahub/metadata-types/types/aspects/social-actions'; +import { + readLikesForEntity, + addLikeForEntity, + removeLikeForEntity, + readFollowsForEntity, + addFollowForEntity, + removeFollowForEntity +} from '@datahub/data-models/api/common/social-actions'; +import { DataModelName } from '@datahub/data-models/constants/entity'; +import { isArray } from '@ember/array'; +import { noop } from 'lodash'; + +/** + * Options for get category method + */ +interface IGetCategoryOptions { + // Page number to fetch from BE starting from 0 + page?: number; + // number of items per page that the BE should return + count?: number; +} + +/** + * Parameters for the BaseEntity static method, getLinkForEntity + * @interface IGetLinkForEntityParams + */ +interface IGetLinkForEntityParams { + // The display text for the generated entity link, not related to BaseEntity['displayName'] + displayName: string; + // The URN for the specific entity instance + entityUrn: string; + // Optional text for the title attribute in the consuming anchor element + title?: string; +} /** * Interfaces and abstract classes define the "instance side" of a type / class, @@ -28,7 +66,7 @@ import { readEntity } from '@datahub/data-models/api/entity'; * @template T {T extends new (...args: Array) => void} constrains T to constructor interfaces * @type {() => ClassDecorator} */ -export const statics = ) => void>(): ((c: T) => void) => (_ctor: T): void => {}; +export const statics = ) => void>(): ((c: T) => void) => noop; /** * Defines the interface for the static side or constructor of a class that extends BaseEntity @@ -56,15 +94,7 @@ export interface IBaseEntityStatics { * Queries the entity's endpoint to retrieve the list of nodes that are contained in the hierarchy * @param {(Array)} args list of string values corresponding to the different hierarchical categories for the entity */ - readCategories(...args: Array): Promise; - - /** - * Queries the entity's endpoint to get the count for categories. This call will be made if 'showCount' is true and - * only will be available in the card layout. - * @param args list fo segments in the entity hierarchy, maybe be culled from the entity, entity urn, or query (user entered url) - */ - // TODO META-8863 remove once dataset is migrated - readCategoriesCount(...segments: Array): Promise; + readCategories(args: Array, options?: IGetCategoryOptions): Promise; /** * Queries the batch GET endpoint for snapshots for the supplied urns @@ -108,6 +138,7 @@ export abstract class BaseEntity { entity?: T; /** + * TODO META-10097: We should be consistent with entity and use a generic type * References the Snapshot for the related Entity * @type {Snapshot} */ @@ -116,7 +147,19 @@ export abstract class BaseEntity { /** * References the wiki related documents and objects related to this entity */ - institutionalMemories?: Array; + _institutionalMemories?: Array; + + /** + * Getter and setter for institutional memories + */ + @computed('_institutionalMemories') + get institutionalMemories(): Array | undefined { + return this._institutionalMemories; + } + + set institutionalMemories(institutionalMemories: Array | undefined) { + set(this, '_institutionalMemories', institutionalMemories); + } /** * Hook for custom fetching operations after entity is created @@ -148,14 +191,14 @@ export abstract class BaseEntity { * Selects the list of owners from the ownership aspect attribute of the entity * All entities have an ownership aspect have this property exists on the base and is inherited * - * This provides the full IOwnership objects in a list, if what is needed is just the list of + * This provides the full Owner objects in a list, if what is needed is just the list of * owner urns, the macro value ownerUrns provides that immediately * @readonly * @type {Array} * @memberof BaseEntity */ @computed('snapshot') - get owners(): Array { + get owners(): Array { const ownership = getMetadataAspect(this.snapshot)( 'com.linkedin.common.Ownership' ) as MetadataAspect['com.linkedin.common.Ownership']; @@ -169,7 +212,7 @@ export abstract class BaseEntity { * @type {Array} * @memberof BaseEntity */ - @map('owners.[]', ({ owner }: IOwner): string => owner) + @map('owners.[]', ({ owner }: Com.Linkedin.Common.Owner): string => owner) ownerUrns!: Array; /** @@ -182,19 +225,10 @@ export abstract class BaseEntity { } /** - * Statically accessible Base entity kind discriminant + * Base Ember route reference for entity pages * @static */ - static kind = 'BaseEntity'; - - /** - * Discriminant to allow the construction of discriminated / tagged union types - * @type {string} - */ - get kind(): string { - // Expected to be implemented in concrete class - throw new Error(NotImplementedError); - } + static entityBaseRoute: EntityPageRoute = 'entity-type.urn'; /** * Base entity display name @@ -226,7 +260,7 @@ export abstract class BaseEntity { */ get readPath(): Promise> { const { urn, staticInstance } = this; - const entityName = staticInstance.renderProps.search.apiName; + const entityName = staticInstance.renderProps.apiEntityName; return readBrowsePath({ type: entityName, urn @@ -244,8 +278,8 @@ export abstract class BaseEntity { */ get readEntity(): Promise | Promise { const { entityPage } = this.staticInstance.renderProps; - if (entityPage && entityPage.apiName) { - return readEntity(this.urn, entityPage.apiName); + if (entityPage && entityPage.apiRouteName) { + return readEntity(this.urn, entityPage.apiRouteName); } // Implemented in concrete class, if it exists for the entity throw new Error(NotImplementedError); @@ -255,6 +289,8 @@ export abstract class BaseEntity { * Asynchronously resolves with the Snapshot for the entity * This should be implemented on the concrete class and is enforced to be available with the * abstract modifier + * + * Backend is moving away from snapshot api. UI won't enforce implementing this fn. * @readonly * @type {Promise} */ @@ -282,6 +318,25 @@ export abstract class BaseEntity { }); } + /** + * Constructs a link to a specific entity tab using the supplied tab name + * @param {string} tabName the name of the tab to generate a link for + */ + entityTabLink(tabName: string): this['entityLink'] { + const { entityLink } = this; + + if (entityLink) { + const { + link, + link: { model = [], route } + } = entityLink; + + return { ...entityLink, link: { ...link, route: `${route}.tab` as AppRoute, model: [...model, tabName] } }; + } + + return entityLink; + } + /** * Class properties common across instances * Dictates how visual ui components should be rendered @@ -295,40 +350,63 @@ export abstract class BaseEntity { * Queries the entity's endpoint to retrieve the list of nodes that are contained in the hierarchy * @param {(Array)} args list of string values corresponding to the different hierarchical categories for the entity */ - static async readCategories(...segments: Array): Promise { - const cleanSegments: Array = segments.filter(Boolean) as Array; - const defaultFacets = this.renderProps.browse.attributes - ? getFacetDefaultValueForEntity(this.renderProps.browse.attributes) - : []; - const { elements, metadata } = await readBrowse({ - type: this.renderProps.search.apiName, - path: cleanSegments.length > 0 ? `/${cleanSegments.join('/')}` : '', - count: 100, - start: 0, - ...defaultFacets - }); - const entityLinks: Array = elements.map( - (element): IEntityLinkAttrs => - this.getLinkForEntity({ - displayName: element.name, - entityUrn: element.urn - }) - ); - const categoryLinks: Array = metadata.groups.map( - (group): IEntityLinkAttrsWithCount => { - return this.getLinkForCategory({ - segments: [...cleanSegments, group.name], - count: group.count, - displayName: group.name - }); - } - ); + static async readCategories( + segments: Array, + { page = 0, count = 100 }: IGetCategoryOptions = {} + ): Promise { + const { browse } = this.renderProps; + if (browse) { + const cleanSegments: Array = segments.filter(Boolean) as Array; + const defaultFacets: Record> = browse.attributes + ? getFacetDefaultValueForEntity(browse.attributes) + : {}; + const { elements, metadata, total } = await readBrowse({ + type: this.renderProps.apiEntityName, + path: cleanSegments.length > 0 ? `/${cleanSegments.join('/')}` : '', + count, + start: page * count, + ...defaultFacets + }); + // List of entities + // Create links for the entities for the current category + const entityLinks: Array = elements + .map((element): IEntityLinkAttrs | void => + this.getLinkForEntity({ + displayName: element.name, + entityUrn: element.urn + }) + ) + .filter((link): boolean => Boolean(link)) as Array; // filter removed undefined + + // List of folders + // For this category will append and create a link for the next category (the one that you can potentially go) + const categoryLinks: Array = metadata.groups.map( + (group): IEntityLinkAttrsWithCount => { + return this.getLinkForCategory({ + segments: [...cleanSegments, group.name], + count: group.count, + displayName: group.name + }); + } + ); + return { + segments, + title: segments[segments.length - 1] || this.displayName, + totalNumEntities: metadata.totalNumEntities, + entitiesPaginationCount: total, + entities: entityLinks, + groups: categoryLinks + }; + } + + // if no browse available return empty return { - segments, - title: segments[segments.length - 1] || this.displayName, - count: metadata.totalNumEntities, - entities: entityLinks, - groups: categoryLinks + segments: [], + title: '', + totalNumEntities: 0, + entitiesPaginationCount: 0, + entities: [], + groups: [] }; } @@ -339,19 +417,25 @@ export abstract class BaseEntity { * @static * @param {IGetLinkForEntityParams} params parameters for generating the link object matching the IEntityLinkAttrs interface */ - static getLinkForEntity(params: { entityUrn: string; displayName: string }): IEntityLinkAttrs { - const { displayName, entityUrn } = params; - const link: EntityLinkNode = { - title: displayName || '', - text: displayName || '', - route: this.renderProps.browse.entityRoute, - model: [entityUrn || ''] - }; + static getLinkForEntity(params: IGetLinkForEntityParams): IEntityLinkAttrs | void { + const entityPage = this.renderProps.entityPage; + const { displayName = this.displayName, entityUrn, title = displayName } = params; - return { - link, - entity: this.displayName - }; + if (entityPage && entityUrn) { + const model = entityPage.route === 'entity-type.urn' ? [this.displayName, entityUrn] : [entityUrn]; + + const link: EntityLinkNode = { + route: entityPage.route, + text: displayName, + title, + model + }; + + return { + entity: this.displayName, + link + }; + } } /** @@ -377,11 +461,6 @@ export abstract class BaseEntity { }; } - // TODO META-8863 this can be removed once dataset is migrated - static readCategoriesCount(..._args: Array): Promise { - throw new Error(NotImplementedError); - } - /** * Reads the snapshots for the entity * @static @@ -396,9 +475,12 @@ export abstract class BaseEntity { * @param {Array} [segments=[]] the list of hierarchy segments to generate the keyword for */ static getQueryForHierarchySegments(segments: Array = []): string { - return `browsePaths:\\\\/${segments.join('\\\\/').replace(/\s/gi, '\\\\ ')}`; + return `browsePaths:\\/${segments.join('\\/').replace(/\s/gi, '\\ ')}`; } + // TODO META-12149 this should be part of an Aspect. This fns can't live under BaseEntity as + // then we would have a circular dependency: + // BaseEntity -> InstitutionalMemory -> PersonEntity -> BaseEntity /** * Retrieves a list of wiki documents related to the particular entity instance * @readonly @@ -407,6 +489,9 @@ export abstract class BaseEntity { throw new Error(NotImplementedError); } + // TODO META-12149 this should be part of an Aspect. This fns can't live under BaseEntity as + // then we would have a circular dependency: + // BaseEntity -> InstitutionalMemory -> PersonEntity -> BaseEntity /** * Writes a list of wiki documents related to a particular entity instance to the api layer */ @@ -414,6 +499,137 @@ export abstract class BaseEntity { throw new Error(NotImplementedError); } + /** + * For social features, we flag whether or not the entity is opted into social actions + * @default true + */ + allowedSocialActions: Record = { + like: true, + follow: true, + save: true + }; + + /** + * For this particular entity, get the list of like actions related to the entity, + * effectively getting the number of people that have upvoted the entity + */ + async readLikes(): Promise { + if (this.allowedSocialActions.like) { + const likeActions = await readLikesForEntity(this.displayName as DataModelName, this.urn).catch(() => []); + set(this, 'likedByActions', likeActions || []); + } + } + + /** + * For this particular entity, add the user's like action to the entity + */ + async addLike(): Promise { + if (this.allowedSocialActions.like) { + const updatedLikeActions = await addLikeForEntity(this.displayName as DataModelName, this.urn); + + if (isArray(updatedLikeActions)) { + set(this, 'likedByActions', updatedLikeActions); + } + } + } + + /** + * For this particular entity, remove the user's like action from the entity + */ + async removeLike(): Promise { + if (this.allowedSocialActions.like) { + const updatedLikeActions = await removeLikeForEntity(this.displayName as DataModelName, this.urn); + + if (isArray(updatedLikeActions)) { + set(this, 'likedByActions', updatedLikeActions); + } + } + } + + /** + * For this particular entity, get the list of follow actions related to the entity, + * effectively getting the number of people that have subscribed to notifications for metadata + * changes in the entity + */ + async readFollows(): Promise { + if (this.allowedSocialActions.follow) { + const followActions = await readFollowsForEntity(this.displayName as DataModelName, this.urn).catch(() => []); + + set(this, 'followedByActions', followActions || []); + } + } + + /** + * For this particular entity, add the user's follow action to the entity, subscribing them to + * updates for metadata changes + */ + async addFollow(): Promise { + if (this.allowedSocialActions.follow) { + const updatedFollowActions = await addFollowForEntity(this.displayName as DataModelName, this.urn); + + if (isArray(updatedFollowActions)) { + set(this, 'followedByActions', updatedFollowActions); + } + } + } + + /** + * For this particular entity, remove the user's follow action from the entity, unsubscribing + * them from changes + */ + async removeFollow(): Promise { + if (this.allowedSocialActions.follow) { + const updatedFollowActions = await removeFollowForEntity(this.displayName as DataModelName, this.urn); + + if (isArray(updatedFollowActions)) { + set(this, 'followedByActions', updatedFollowActions); + } + } + } + + /** + * Actions representing a like from a specific user + */ + likedByActions: Array = []; + + /** + * For social features, we add the concept of "liking" an entity which implies that the data + * related to the entity is useful or of importance + */ + @mapBy('likedByActions', 'likedBy') + likedByUrns!: Array; + + /** + * For social features, we translate the urn ids of the people who have liked an entity into + * the related PersonEntity instances + */ + @relationship('people', 'likedByUrns') + likedBy!: Array; + + /** + * Action objects representing a follow from a specific user + */ + followedByActions: Array = []; + + /** + * For social features, we add the concept of "following" an entity, which means that the person + * (current user) has opted into notifications of updates regarding this entity's metadata + */ + @computed('followedByActions') + get followedByUrns(): Array { + const { followedByActions } = this; + // corpUser || corpGroup is guaranteed to be a string as one of them MUST be defined, as + // dictated by our API interface + return followedByActions.map(({ corpGroup, corpUser }): string => (corpUser || corpGroup) as string); + } + + /** + * For social features, we translate the urn ids of the people who have followed an entity into + * the related PersonEntity instances + */ + @relationship('people', 'followedByUrns') + followedBy!: Array; + /** * Creates an instance of BaseEntity concrete class * @param {string} urn the urn for the entity being instantiated. urn is a parameter property diff --git a/datahub-web/@datahub/data-models/addon/entity/data-construct-change-management/data-construct-change-management-entity.ts b/datahub-web/@datahub/data-models/addon/entity/data-construct-change-management/data-construct-change-management-entity.ts new file mode 100644 index 0000000000000..1d9f04180a1c5 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/data-construct-change-management/data-construct-change-management-entity.ts @@ -0,0 +1,32 @@ +import { BaseEntity, statics, IBaseEntityStatics } from '@datahub/data-models/entity/base-entity'; +import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; + +/** + * A Placeholder entity only meant to get search working ( i.e have a valid displayName, renderProps ) + * + * There is no intention to display an Entity page or utilize this as an aspect. + */ +@statics>() +export class DataConstructChangeManagementEntity extends BaseEntity< + Com.Linkedin.DataConstructChangeManagement.DataConstructChangeManagement +> { + /** + * Human friendly Identifier for the entity. + */ + static displayName: 'data-construct-change-management' = 'data-construct-change-management'; + + /** + * Default renderProps for changeManagement. + * We will not be dealing with entity pages for this entity. + */ + static get renderProps(): IEntityRenderProps { + return { + apiEntityName: 'dataConstructChangeManagement', + search: { + placeholder: '', + attributes: [], + isEnabled: false + } + }; + } +} diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/dataset-entity.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/dataset-entity.ts index 06286e5875223..cb710781713d7 100644 --- a/datahub-web/@datahub/data-models/addon/entity/dataset/dataset-entity.ts +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/dataset-entity.ts @@ -1,53 +1,96 @@ import { BaseEntity, IBaseEntityStatics, statics } from '@datahub/data-models/entity/base-entity'; -import { IDatasetEntity } from '@datahub/metadata-types/types/entity/dataset/dataset-entity'; -import { readDataset } from '@datahub/data-models/api/dataset/dataset'; +import { + saveDatasetCompliance, + readDatasetExportPolicy, + readDatasetRetention, + saveDatasetExportPolicy, + saveDatasetRetention, + saveDatasetComplianceSuggestionFeedbackByUrn +} from '@datahub/data-models/api/dataset/compliance'; +import DatasetComplianceInfo from '@datahub/data-models/entity/dataset/modules/compliance-info'; import { readDatasetSchema } from '@datahub/data-models/api/dataset/schema'; import DatasetSchema from '@datahub/data-models/entity/dataset/modules/schema'; -import { set } from '@ember/object'; -import { isNotFoundApiError } from '@datahub/utils/api/shared'; +import { set, setProperties, computed } from '@ember/object'; +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; -import { oneWay } from '@ember/object/computed'; +import { DatasetExportPolicy } from '@datahub/data-models/entity/dataset/modules/export-policy'; +import { DatasetPurgePolicy } from '@datahub/data-models/entity/dataset/modules/purge-policy'; import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; import { decodeUrn } from '@datahub/utils/validators/urn'; -import { readCategories } from '@datahub/data-models/entity/dataset/read-categories'; -import { getPrefix } from '@datahub/data-models/entity/dataset/utils/segments'; -import { readDatasetsCount } from '@datahub/data-models/api/dataset/count'; -import { setProperties } from '@ember/object'; +import { IDataPlatform } from '@datahub/metadata-types/types/entity/dataset/platform'; import { DatasetLineage } from '@datahub/data-models/entity/dataset/modules/lineage'; import { readUpstreamDatasets } from '@datahub/data-models/api/dataset/lineage'; import { DatasetLineageList } from '@datahub/metadata-types/types/entity/dataset/lineage'; import { getRenderProps } from '@datahub/data-models/entity/dataset/render-props'; import { NotImplementedError } from '@datahub/data-models/constants/entity/shared'; import { IDatasetSnapshot } from '@datahub/metadata-types/types/metadata/dataset-snapshot'; -import { IBrowsePath, IEntityLinkAttrsWithCount, IEntityLinkAttrs } from '@datahub/data-models/types/entity/shared'; -import { IInstitutionalMemory } from '@datahub/data-models/types/entity/common/wiki/institutional-memory'; -import { readDatasetInstitutionalMemory, writeDatasetInstitutionalMemory } from '@datahub/data-models/api/dataset/wiki'; -import { InstitutionalMemory } from '@datahub/data-models/models/aspects/institutional-memory'; -import { returnDefaultIfNotFound } from '@datahub/utils/api/fetcher'; - -/** - * Common function used here for the read operation for datasets. If an item is not found we often have to - * default to a UI provided factory value, which can be inserted here to be run as part of the catch - * function in a promise situation - * @type {(value: T): (e: Error) => T} - */ -const returnValueIfNotFound = (value: T): ((e: Error) => T) => (e: Error): T => { - if (isNotFoundApiError(e)) { - return value; - } - throw e; -}; +import { every } from 'lodash'; +import DatasetComplianceSuggestion from '@datahub/data-models/entity/dataset/modules/compliance-suggestion'; +import { SuggestionIntent } from '@datahub/data-models/constants/entity/dataset/compliance-suggestions'; +import { FabricType } from '@datahub/metadata-types/constants/common/fabric-type'; +import { getDatasetUrnParts } from '@datahub/data-models/entity/dataset/utils/urn'; +import { readDataPlatforms } from '@datahub/data-models/api/dataset/platforms'; +import { getDefaultIfNotFoundError } from '@datahub/utils/api/error'; +import { Snapshot } from '@datahub/metadata-types/types/metadata/snapshot'; +import { oneWay, alias, reads } from '@ember/object/computed'; +import { IDatasetEntity } from '@datahub/metadata-types/types/entity/dataset/dataset-entity'; +// import { toLegacy } from '@datahub/data-models/entity/dataset/utils/legacy'; +import { readDatasetOwnersByUrn } from '@datahub/data-models/api/dataset/ownership'; +import { transformOwnersResponseIntoOwners } from '@datahub/data-models/entity/dataset/utils/owner'; +import { readInstitutionalMemory, writeInstitutionalMemory } from '@datahub/data-models/entity/institutional-memory'; +import { relationship } from '@datahub/data-models/relationships/decorator'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; /** * Defines the data model for the Dataset entity. */ -@statics>() -export class DatasetEntity extends BaseEntity { +@statics>() +export class DatasetEntity extends BaseEntity { /** * The human friendly alias for Dataset entities */ static displayName: 'datasets' = 'datasets'; + // TODO: [META-9120] This logic should not exist on the UI and is a temporary fix that will hopefully one day + // get changed and read from API level instead. Also it won't matter once we fully migrate to new compliance + /** + * Calculates whether or not to show this dataset compliance as inherited from parents based on the nature + * of the upstream releationships + * @param upstreams - representation of upstream lineage information. Typing can change if used in data-portal + */ + static hasInheritedCompliance(upstreams: Array = []): boolean { + if (!upstreams.length) { + return false; + } + // Rule 1: If all upstreams are transformed, then we don't want to show this as inherited compliance + const upstreamsAreAllTransformed: boolean = every( + upstreams, + (upstream): boolean => upstream.type === 'TRANSFORMED' + ); + return !upstreamsAreAllTransformed; + } + + /** + * There is no snapshot for datasets, returning undefined but + * implementing since, framework may call it + */ + get readSnapshot(): Promise | Promise { + return Promise.resolve(undefined); + } + + /** + * Additional hook to fetch the platforms needed for some operation in datasets + */ + async onAfterCreate(): Promise { + const dataPlatforms: Array = await readDataPlatforms(); + const currentDataPlatform = dataPlatforms.find((platform): boolean => platform.name === this.platform); + // Reads dataset owner information from the resolved ownership endpoint + const ownersResponse = await readDatasetOwnersByUrn(this.urn); + // Transforms the owners response into a more generic owners response and sets it on the entity + const owners = transformOwnersResponseIntoOwners(ownersResponse); + setProperties(this, { owners, currentDataPlatform }); + } + get displayName(): 'datasets' { return DatasetEntity.displayName; } @@ -69,14 +112,10 @@ export class DatasetEntity extends BaseEntity { } /** - * Creates a link for this specific entity instance, useful for generating a dynamic link from a - * single particular dataset entity + * Returns the fabric/environment for this particular dataset entity */ - get linkForEntity(): IEntityLinkAttrs { - return DatasetEntity.getLinkForEntity({ - entityUrn: this.urn, - displayName: this.name - }); + get fabric(): FabricType | undefined { + throw new Error(NotImplementedError); } /** @@ -87,6 +126,13 @@ export class DatasetEntity extends BaseEntity { throw new Error(NotImplementedError); } + /** + * Holds the classified data retrieved from the API layer for the compliance information as a compliance + * info class + * @type {DatasetComplianceInfo} + */ + compliance?: DatasetComplianceInfo; + /** * Holds the classified data retrieved from the API layer for the schema information as a DatasetSchema * class @@ -94,6 +140,20 @@ export class DatasetEntity extends BaseEntity { */ schema?: DatasetSchema; + /** + * Holds the classified data retrieved from the API layer for the export policy as a DatasetExportPolicy + * class + * @type {DatasetExportPolicy} + */ + exportPolicy?: DatasetExportPolicy; + + /** + * Holds the classified data retrieved from the API layer for the purge policy as a DatasetPurgePOlicy + * class + * @type {DatasetPurgePolicy} + */ + purgePolicy?: DatasetPurgePolicy; + /** * Holds the classified data retrieved from the API layer for the upstream datasets list as an array of * DatasetLineage classes @@ -102,33 +162,99 @@ export class DatasetEntity extends BaseEntity { upstreams?: Array; /** - * Holds the raw data from the API layer for the institutional memory wiki links related to this dataset - * entity by urn + * Whether or not the dataset has been deprecated + */ + @alias('entity.dataset.deprecated') + deprecated?: boolean; + + /** + * Note attached to the deprecation process for this dataset + */ + @alias('entity.dataset.deprecationNote') + deprecationNote?: string; + + /** + * Timestamp for when the dataset was deprecated + */ + @alias('entity.dataset.decommissionTime') + decommissionTime?: number; + + /** + * Last timestamp for the modification of this dataset + */ + @oneWay('entity.dataset.modifiedTime') + modifiedTime?: number; + + /** + * Whether or not the entity has been removed. + * Note: This overrides the BaseEntity implementation since DatasetEntity has a different behavior than + * other entities + */ + @oneWay('entity.dataset.removed') + removed!: boolean; + + /** + * References the value of the healthScore from the underlying IDatasetEntity object + * used in search results where the Health Score is shown as an attribute */ - institutionalMemories?: Array; + @reads('entity.health.score') + healthScore?: number; + + /** + * gets the dataorigin field (needed from search) + * from the urn + */ + @computed('urn') + get dataorigin(): FabricType | undefined { + return getDatasetUrnParts(this.urn).fabric; + } /** * Reference to the data entity, is the data platform to which the dataset belongs - * @type {DatasetPlatform} */ - @oneWay('entity.platform') - platform?: DatasetPlatform; + @computed('entity.dataset.platform', 'urn') + get platform(): DatasetPlatform | undefined { + const { urn, entity } = this; + const parts = getDatasetUrnParts(urn); + const platform = (entity && entity.platform) || parts.platform; + // New API return platform with urn:li:dataPlatform:, in order to + // make it compatible, we manually remove that part. + const platformName = platform?.replace('urn:li:dataPlatform:', ''); + + return platformName as DatasetPlatform | undefined; + } /** * Reference to the data entity's native name, should not be something that is editable but gives us a * more human readable form for the dataset vs the urn */ get name(): string { - return this.entity ? this.entity.nativeName : ''; + const { entity } = this; + const name = (entity && entity.name) || ''; + return name || getDatasetUrnParts(this.urn).prefix || this.urn; } + // TODO: [META-9120] This logic should not exist on the UI and is a temporary fix that will hopefully one day + // get changed and read from API level instead. Also it won't matter once we fully migrate to new compliance /** - * Retrieves the value of the Dataset entity identified by this.urn + * Calculates whether or not to show this dataset compliance as inherited from parents based on the nature + * of the upstream relationships + * @type {boolean} */ - get readEntity(): Promise { - return readDataset(this.urn); + @computed('upstreams', 'compliance') + get hasInheritedCompliance(): boolean | void { + const compliance = this.compliance; + + if (compliance) { + return DatasetEntity.hasInheritedCompliance(this.upstreams) && compliance.resolvedFrom !== this.rawUrn; + } } + /** + * Reference to the constructed data platform once it is fetched from api + */ + currentDataPlatform?: IDataPlatform; + /** * Class properties common across instances * Dictates how visual ui components should be rendered @@ -142,10 +268,11 @@ export class DatasetEntity extends BaseEntity { } /** - * Builds a search query keyword from a list of segments for the a DatasetEntity instance + * Is a promise that retrieves the compliance information (if it doesn't exist yet) and returns whether or not + * the dataset contains personally identifiable information */ - static getQueryForHierarchySegments(_segments: Array): never { - throw new Error(NotImplementedError); + readPiiStatus(): Promise { + return Promise.resolve().then(() => false); } /** @@ -159,6 +286,36 @@ export class DatasetEntity extends BaseEntity { return datasetSchema; } + /** + * Is a promise that retrieves the dataset export policy information and sets the policy information to the class + * as a property + */ + async readExportPolicy(): Promise { + const exportPolicy = await readDatasetExportPolicy(this.urn).catch( + // Handling for an expected possibility of receiving a 404 error for this export policy, which would require + // us to actually use a factory generator for the export policy + getDefaultIfNotFoundError(undefined) + ); + const datasetExportPolicy = new DatasetExportPolicy(exportPolicy); + set(this, 'exportPolicy', datasetExportPolicy); + return datasetExportPolicy; + } + + /** + * Is a promise that retrieves the purge policy information and sets this to the class as a property + */ + async readPurgePolicy(): Promise { + const purgePolicy = await readDatasetRetention(this.urn).catch( + // Handling for an expected possibility of receiving a 404 error for this purge policy, which would require + // us to actually use a factory generator for the purge policy + getDefaultIfNotFoundError(undefined) + ); + + const datasetPurgePolicy = new DatasetPurgePolicy(purgePolicy); + set(this, 'purgePolicy', datasetPurgePolicy); + return datasetPurgePolicy; + } + /** * Asynchronously retrieves the upstream datasets for this dataset and assigns to the upstreams property */ @@ -166,7 +323,7 @@ export class DatasetEntity extends BaseEntity { const lineageList = await readUpstreamDatasets(this.urn).catch( // Handling for an expected possibility of receiving a 404 error for this upstream dataset response, which // would require us to replace error with just an empty list - returnValueIfNotFound([] as DatasetLineageList) + getDefaultIfNotFoundError([] as DatasetLineageList) ); const upstreams = lineageList.map((lineage): DatasetLineage => new DatasetLineage(lineage)); @@ -175,83 +332,88 @@ export class DatasetEntity extends BaseEntity { } /** - * Reads the institutional memory wiki links related to this dataset and stores it on the entity as well as returning - * it as a value from this function + * Processes a request to save compliance data by row or overall compliance. This allows us to save compliance + * information for a single row or as a bulk edit. We know already that bulk edits affect the working copy in + * the compliance object directly, but row edits have their own working copy for the specific field. In the case + * of the latter, we have optional parameters to signify that we should be applying a row edit + * @param {string} fieldName - optional, signifies the field to edit + * @param {Array} fieldDiff - optional, overwriting diffs for the field + * @returns {boolean} whether or not the application was successful */ - async readInstitutionalMemory(): Promise> { - // Handling for expected possibility of receiving a 404 for institutional memory for this dataset, which would - // likely mean nothing has been added yet and we should allow the user to be the first to add something - const { elements: institutionalMemories } = await returnDefaultIfNotFound( - readDatasetInstitutionalMemory(this.urn), - { - elements: [] as Array + async saveCompliance(fieldName?: string, fieldDiff?: Array): Promise { + const { compliance, schema, urn } = this; + + if (compliance) { + if (fieldName && fieldDiff) { + compliance.applyAnnotationsByField(fieldName, fieldDiff); } - ); - const institutionalMemoriesMap = institutionalMemories.map( - (link): InstitutionalMemory => new InstitutionalMemory(link) - ); - set(this, 'institutionalMemories', institutionalMemoriesMap); - return institutionalMemoriesMap; + const workingCopy = compliance.readWorkingCopy({ + withoutNullFields: true, + schema + }); + await saveDatasetCompliance(urn, workingCopy); + } } /** - * Writes the institutional memory wiki links back to the backend to save any user changes (add/delete) + * Processes a request to save the export policy working copy. Returns this in a thennable format so that any + * responses or issues can be handled on the component side */ - async writeInstitutionalMemory(): Promise { - const { institutionalMemories } = this; - institutionalMemories && - (await writeDatasetInstitutionalMemory( - this.urn, - institutionalMemories.map((link): IInstitutionalMemory => link.readWorkingCopy()) - )); + async saveExportPolicy(): Promise { + const { exportPolicy, urn } = this; + + if (exportPolicy) { + const workingCopy = exportPolicy.readWorkingCopy(); + await saveDatasetExportPolicy(urn, workingCopy); + } } /** - * Interim implementation to read categories for datasets - * TODO META-8863 - */ - static async readCategories(...args: Array): Promise { - const [category, ...rest] = args; - const prefix = await getPrefix(category || '', rest || []); - const entitiesOrCategories = await readCategories(category || '', prefix); - const groups = entitiesOrCategories - .filter(({ entityUrn }): boolean => !entityUrn) - .map( - ({ segments = [], displayName }): IEntityLinkAttrsWithCount => - this.getLinkForCategory({ - segments, - displayName, - count: 0 - }) - ); - const entities = entitiesOrCategories - .filter(({ entityUrn }): boolean => Boolean(entityUrn)) - .map( - ({ entityUrn = '', displayName }): IEntityLinkAttrs => - this.getLinkForEntity({ - entityUrn, - displayName - }) - ); - - return { - segments: args, - title: rest[rest.length - 1] || category || this.displayName, - count: 0, - entities, - groups - }; + * Processes a request to save the purge policy working copy. Returns this in a thennable format so that any + * responses or issues can be handled on the component side + */ + async savePurgePolicy(): Promise { + const { purgePolicy, urn } = this; + + if (purgePolicy) { + const workingCopy = purgePolicy.readWorkingCopy(); + await saveDatasetRetention(urn, { + ...workingCopy, + datasetUrn: decodeUrn(urn), + datasetId: null + }); + } } - // TODO META-8863 remove once dataset is migrated - static async readCategoriesCount(...args: Array): Promise { - const [category, ...rest] = args; - const prefix = await getPrefix(category || '', rest || []); - return await readDatasetsCount({ platform: category || '', prefix }); + /** + * Processes a save request to save the suggestion feedback given by the user, or inferred from the user action. + * Since this is a background task, we do not await for a response from the server + * @param suggestion - suggestion for which we are saving the feedback + * @param feedback - whether the user has accepted or rejected the suggestion as accurate + */ + saveSuggestionFeedback(suggestion: DatasetComplianceSuggestion, feedback: SuggestionIntent): void { + const { uid } = suggestion; + saveDatasetComplianceSuggestionFeedbackByUrn(this.urn, uid, feedback); } - constructor(readonly urn: string, entityData?: IDatasetEntity) { + /** + * TODO META-11674 + * Interim method until IDatasetEntity is removed + */ + get legacyDataset(): IDatasetEntity | void { + if (this.entity) { + return (this.entity as unknown) as IDatasetEntity; + } + } + + // TODO META-12149 this should be part of an Aspect. This fns can't live under BaseEntity as + // then we would have a circular dependency: + // BaseEntity -> InstitutionalMemory -> PersonEntity -> BaseEntity + readInstitutionalMemory = readInstitutionalMemory; + writeInstitutionalMemory = writeInstitutionalMemory; + + constructor(readonly urn: string, entityData?: Com.Linkedin.Dataset.Dataset) { super(urn); // Sometimes we do not need readEntity to get this information as it was already provided by another entity // and we can just instantiate the class with it @@ -259,21 +421,7 @@ export class DatasetEntity extends BaseEntity { set(this, 'entity', entityData); } } -} -/** - * Custom factory for the dataset entity. We don't use the base entity factory as the dataset behavior currently - * does not match the expectations of the base entity. Moving forward, when the backend response matches with the - * expected dataset behavior, we may find a use case to rely on that function rather than use of this custom one - * @param {string} urn - provides the context for what dataset entity to create by its urn identifier - */ -export const createDatasetEntity = async (urn: string, fetchedEntity?: IDatasetEntity): Promise => { - const dataset = new DatasetEntity(urn); - const entity = fetchedEntity || (await dataset.readEntity); - - setProperties(dataset, { - entity - }); - - return dataset; -}; + @relationship('people', 'ownerUrns') + datasetOwners?: Array; +} diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/fields.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/fields.ts index 1edd099d7e9b1..e0dd34aa02c98 100644 --- a/datahub-web/@datahub/data-models/addon/entity/dataset/fields.ts +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/fields.ts @@ -6,12 +6,29 @@ import { ISearchEntityRenderProps } from '@datahub/data-models/types/search/sear export const fields: Array = [ { showInAutoCompletion: true, - fieldName: 'origin', + fieldName: 'dataorigin', showInResultsPreview: true, - displayName: 'Origin', + displayName: 'Data Origin', showInFacets: true, - desc: 'The origin of the dataset', - example: 'origin:PROD' + desc: 'The data origin of the dataset', + example: 'dataorigin:PROD', + headerComponent: { + name: 'dynamic-components/header', + options: { + className: 'search-facet__dynamic-header', + title: 'Data Origin', + contentComponents: [ + { + name: 'dynamic-components/composed/user-assistance/help-tooltip-with-link', + options: { + text: 'The environment where the source data lives and the metadata is extracted from', + wikiKey: 'terminologies', + wikiLinkText: 'Learn more' + } + } + ] + } + } }, { showInAutoCompletion: true, @@ -29,7 +46,7 @@ export const fields: Array = [ displayName: 'owners', showInFacets: false, desc: 'The confirmed owners for the dataset', - example: 'owners:sweaver' + example: 'owners:jweiner' }, { showInAutoCompletion: true, @@ -39,5 +56,17 @@ export const fields: Array = [ showInFacets: true, desc: 'The platform of the dataset', example: 'platform:kafka' + }, + { + showInAutoCompletion: false, + fieldName: 'healthScore', + showInResultsPreview: true, + displayName: 'Health', + showInFacets: false, + desc: 'The health score of the dataset which is a signal for the quality of the dataset', + example: 'N/A', + component: { + name: 'health/search-score' + } } ]; diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/base.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/base.ts index 1982c0a9fc111..03ce908188cec 100644 --- a/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/base.ts +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/base.ts @@ -43,7 +43,7 @@ const keyValueHasMatch = (object: Record) => (metadataType: IMe const innerType = metadataType['@props']; if (!isRootValueEquiv) { - throw new Error(`Expected "${name}" to be a key on object`); + throw new Error(`Expected "${name}" to be a key on object with the identifierField: "${object.identifierField}`); } if (type.includes('object') && isObject(value)) { diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/analyze-diff.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/analyze-diff.ts new file mode 100644 index 0000000000000..2a4a7e03fb0ca --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/analyze-diff.ts @@ -0,0 +1,151 @@ +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; +import { groupBy, uniq } from 'lodash'; +import { annotationsMatchByRelevantKeys } from '@datahub/data-models/entity/dataset/helpers/validators/compliance/comparators'; + +/** + * Options for the type of diff we are defining, whether that diff type is a new item added (create), a modification + * of an existing one (update) or a removal of one (delete) + */ +export enum DiffType { + CREATE = 'create', + UPDATE = 'update', + DELETE = 'delete' +} + +/** + * Represents a single diff item in a list for + */ +export interface IDiffValue { + type: DiffType; + annotation: DatasetComplianceAnnotation; +} + +/** + * Expected object to describe the accumulated diffs for a single field in the compliance annotations + */ +export interface IFieldAnnotationDiff { + identifierField: string; + // Old annotations that are not deleted for the field are listed in oldValues, however, + // this will include mutations since they are also a deletion of an old annotation and replacement with a new annotation + // This can be refactored to address only deletions exclusive of mutations, downstream consumers will have to be updated as well + oldValues: Array; + // New annotations for the field are listed in newValues, however, + // this is more encompassing list that will also include mutations since they are technically new values + // This can be refactored to address only new additions exclusive of mutations, downstream consumers will have to be updated as well + newValues: Array; + // Mutations represent updates to existing annotations for a given field, type will be update + mutations: Array; +} + +/** + * Creates an IFieldAnnotationDiff object for a particular given field. This will operate on the following assumptions: + * Rule 1: If there are no annotations for a given field in the original, then everything that the user has done is + * presumed to be a create operation + * Rule 2: If there are no annotations for a given field in the working copy, then everything that the user has done is + * presumed to be a delete operation + * Rule 3: The more complicated rule, in a more complex scenario we might decide to detect what annotations are considered + * updates and what are adds and deletes, but we are seeking a more simplified version where anything in the original that + * is not in the working is a delete and everything in the working that is not in the original is an add. This means we + * need to determine fields that are diffs by removing fields that exist on both sides + * @param {string} field - name of the field we are diffing for + * @param {Array} originalAnnotations - the original annotations for that field + * @param {Array} annotationsBeingUpdated - the working copy of annotations for that field after user changes + */ +const createAnnotationDiffForField = ( + field: string, + originalAnnotations: Array = [], + annotationsBeingUpdated: Array = [] +): IFieldAnnotationDiff => { + // Rule 1: If there are no original annotations for a certain field, then we know that anything in the + // working copy is a CREATE type diff + if (!originalAnnotations.length) { + return { + identifierField: field, + oldValues: [], + newValues: annotationsBeingUpdated.map(tag => ({ type: DiffType.CREATE, annotation: tag })), + mutations: [] + }; + } + + // Rule 2: On the opposite end, if there are no working copy annotations for a particular field, then we + // know that everything in the original was a delete for that field + if (!annotationsBeingUpdated.length) { + return { + identifierField: field, + oldValues: originalAnnotations.map(tag => ({ type: DiffType.DELETE, annotation: tag })), + newValues: [], + mutations: [] + }; + } + + // If both original and working copy annotations exist for a field, then there could be create, update, + // or delete operations involved, or a combination of these + // In the case of compliance annotations, we will call all diffs found in the original but not the + // working copy are DELETE and all diffs found in the working copy but not original are CREATE + // Any tag that is found in both copies is considered no diff + + /** + * Creates a filter predicate that finds an annotation that is not present in the subsequently supplied + * list of annotations using the function annotationsMatchByRelevantKeys for equality evaluation + * @param {Array} annotations the list of annotations to find where the relevant keys are matched i.e. annotationsMatchByRelevantKeys returns true for, but not wanted in the final list + */ + const annotationsNotFoundIn = ( + annotations: Array + ): ((needle: DatasetComplianceAnnotation) => boolean) => (needle: DatasetComplianceAnnotation): boolean => + !annotations.find(annotation => annotationsMatchByRelevantKeys(annotation, needle)); + + const updatedAnnotationsOnly = annotationsBeingUpdated.filter(annotationsNotFoundIn(originalAnnotations)); + const originalAnnotationsOnly = originalAnnotations.filter(annotationsNotFoundIn(annotationsBeingUpdated)); + + // The current implementation will consider a mutation exclusively as a DiffType.DELETE & DiffType.CREATE, + // 'mutations' provides an intersect between the + return { + identifierField: field, + oldValues: originalAnnotationsOnly.map(tag => ({ type: DiffType.DELETE, annotation: tag })), + newValues: updatedAnnotationsOnly.map(tag => ({ type: DiffType.CREATE, annotation: tag })), + mutations: annotationsBeingUpdated + .filter((annotation): boolean => annotation.hasChangedFromSavedAnnotation) + .map((annotation): IDiffValue => ({ type: DiffType.UPDATE, annotation })) + }; +}; + +/** + * Taking what we original fetched from the API and the working copy (accumulated user changes), we calculate a list of + * of diff changes for every applicable field. This list can be used to power things such as any summary of changes report + * for the user to see. + * @param {Array} original - original retrieved API data for the compliance info annotations that + * has been pre-converted into the compliance annotations classified object so that we can compare apples to apples + * @param {Array, + workingCopy: Array +): Array => { + // Groups the original annotations list by identifier field + const originalAnnotationsGroupedByIdentifierField = groupBy(original, item => item.identifierField); + // Groups the working copy annotations by identifier field. This way we can organize how we parse + // through to find diffs + const workingCopyGroupedByIdentifierField = groupBy(workingCopy, item => item.identifierField); + + // Create the list of identifier fields from each copy and then create a unique list of field names + const originalAnnotationsFieldsList = Object.keys(originalAnnotationsGroupedByIdentifierField); + const workingCopyFieldsList = Object.keys(workingCopyGroupedByIdentifierField); + const uniqueFieldsList = uniq(originalAnnotationsFieldsList.concat(workingCopyFieldsList)); + + // We use the unique field list to iterate through and seek out what kind of diffs exist for each field, if any + const diffListPerField: Array = []; + return uniqueFieldsList.reduce((diffList, field) => { + const diffs = createAnnotationDiffForField( + field, + originalAnnotationsGroupedByIdentifierField[field], + workingCopyGroupedByIdentifierField[field] + ); + // We only add something if there are new values or old values to be compared. Otherwise, there + // is no sense in adding in two empty lists (as this means no diff) + if (diffs.newValues.length || diffs.oldValues.length) { + diffList.push(diffs); + } + + return diffList; + }, diffListPerField); +}; diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/annotations.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/annotations.ts new file mode 100644 index 0000000000000..f090ee59691b5 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/annotations.ts @@ -0,0 +1,103 @@ +import { IMetadataType } from '@datahub/data-models/types/entity/validators'; +import { keysEquiv } from '@datahub/data-models/entity/dataset/helpers/validators/base'; +import { IComplianceFieldAnnotation } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-annotation'; + +export type ComplianceAnnotationsEditableProps = + | 'identifierField' + | 'identifierType' + | 'logicalType' + | 'isPurgeKey' + | 'valuePattern' + | 'isReadOnly'; + +export type RawComplianceAnnotationsEditableProps = + | 'identifierField' + | 'identifierType' + | 'logicalType' + | 'nonOwner' + | 'valuePattern' + | 'readonly'; + +/** + * Lists the types for objects or instances in the the compliance metadata entities list + * @type {Array} + */ +export const complianceAnnotationsTaxonomy: Array = [ + { + '@type': 'array', + '@name': 'complianceEntities', + '@props': [ + { + '@name': 'identifierField', + '@type': 'string' + }, + { + '@name': 'identifierType', + '@type': ['string', 'null'] + }, + { + '@name': 'logicalType', + '@type': ['string', 'null'] + }, + { + '@name': 'isPurgeKey', + '@type': ['boolean', 'null'] + }, + { + '@name': 'valuePattern', + '@type': ['string', 'null'] + }, + { + '@name': 'isReadOnly', + '@type': 'boolean' + } + ] + } +]; + +/** + * Lists the types for objects or instances in the the compliance metadata entities list + * @type {Array} + */ +export const rawComplianceAnnotationsTaxonomy: Array = [ + { + '@type': 'array', + '@name': 'complianceEntities', + '@props': [ + { + '@name': 'identifierField', + '@type': 'string' + }, + { + '@name': 'identifierType', + '@type': ['string', 'null'] + }, + { + '@name': 'logicalType', + '@type': ['string', 'null'] + }, + { + '@name': 'nonOwner', + '@type': ['boolean', 'null'] + }, + { + '@name': 'valuePattern', + '@type': ['string', 'null'] + }, + { + '@name': 'readonly', + '@type': 'boolean' + } + ] + } +]; + +/** + * Type guard asserts that object is assignable to { complianceEntities: Array } + * @param {*} object object to be tested against complianceEntitiesTaxonomy + * @returns {(object is { complianceEntities: Array> })} + */ +export const isValidForEditableProps = ( + object: unknown +): object is Array> => + keysEquiv({ complianceEntities: object }, rawComplianceAnnotationsTaxonomy); diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/comparators.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/comparators.ts new file mode 100644 index 0000000000000..89190f6840145 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/comparators.ts @@ -0,0 +1,50 @@ +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; + +/** + * Keys that have been arbitrarily determined to be relevant in regards to determining whether two tags are saying + * the same thing annotation wise. Excluded keys would generally mean that the key is either a readonly key that is + * decorated by the API or a key that is generally more about rendering helpers than identifying the compliance + * qualities of the tag + * @type {Array} + */ +const relevantKeys: Array = [ + 'identifierField', + 'identifierType', + 'logicalType', + 'isPurgeKey', + 'valuePattern' +]; + +/** + * Returns whether two values are the same (by strict match) or are both falsy values (such as null or undefined) + * @param valueA - first value for comparison + * @param valueB - second value for comparison + */ +const valuesMatchOrAreFalsy = (valueA: unknown, valueB: unknown): boolean => valueA === valueB || (!valueA && !valueB); + +/** + * Takes two annotation tags of class DatasetComplianceAnnotation and, given a list of relevant keys for comparison, returns the + * number of keys that are the same for both sides. This will help when we want to calculate how similar two tags are. + * @param basline - annotation to compare to + * @param annotation - annotation to be compared + */ +const countMatchingRelevantKeysBetweenAnnotations = ( + basline: DatasetComplianceAnnotation, + annotation: DatasetComplianceAnnotation +): number => + relevantKeys.reduce( + // We compare whether key values match, or if they are both falsy values because if both values are null or undefined, or an + // empty string they are for all intents and purposes the same + (matches, key) => matches + (valuesMatchOrAreFalsy(basline[key], annotation[key]) ? 1 : 0), + 0 + ); + +/** + * Given a list of relevant keys, determine if two tags are functionally the same by matching on all relevant keys + * @param baseline - annotation to compare to + * @param annotation - annotation to be compared + */ +export const annotationsMatchByRelevantKeys = ( + baseline: DatasetComplianceAnnotation, + annotation: DatasetComplianceAnnotation +): boolean => countMatchingRelevantKeysBetweenAnnotations(baseline, annotation) === relevantKeys.length; diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/schema.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/schema.ts new file mode 100644 index 0000000000000..3d2d426b9e9f2 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/helpers/validators/compliance/schema.ts @@ -0,0 +1,27 @@ +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; +import DatasetSchema from '@datahub/data-models/entity/dataset/modules/schema'; +import { IDatasetSchemaColumn } from '@datahub/metadata-types/types/entity/dataset/scehma'; + +/** + * Given a list of compliance annotations and a schema to match against, removes annotations for + * which there is no matching schema field + * @param {Array} annotations - list of annotations to filter + * @param {DatasetSchema} schema - schema to filter against + */ +export const filterAnnotationsToDatasetSchema = ( + annotations: Array, + schema: DatasetSchema +): Array => { + const { schemaFields } = schema; + + if (!schemaFields) { + return annotations; + } + + const schemaFieldSet: Set = new Set(); + schemaFields.forEach((field): void => { + schemaFieldSet.add(field.fullFieldPath); + }); + + return annotations.filter((annotation): boolean => schemaFieldSet.has(annotation.identifierField)); +}; diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-annotation.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-annotation.ts new file mode 100644 index 0000000000000..94d18fdb4aa3c --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-annotation.ts @@ -0,0 +1,275 @@ +import { IComplianceFieldAnnotation } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-annotation'; +import { annotationIsValid } from '@datahub/data-models/entity/dataset/modules/constants/annotation-helpers'; +import { set, setProperties, computed } from '@ember/object'; +import { ComplianceAnnotationsEditableProps } from '@datahub/data-models/entity/dataset/helpers/validators/compliance/annotations'; +import { IComplianceDataType } from '@datahub/metadata-types/types/entity/dataset/compliance-data-types'; +import { pick, omit, isEqual } from 'lodash'; +/** + * Creates a basic factory to generate default values for a compliance annotation tag. This class is created both to + * translate the API response for annotations as well as when the user initiates the creation of a new tag from the UI. In + * the latter case, the process is a step by step user flow, so we start with these undefined fields and then start to + * fill them out throughout the process. + */ +const complianceAnnotationFactory = (fieldName: string): IComplianceFieldAnnotation => ({ + identifierField: fieldName, + identifierType: undefined, + logicalType: null, + nonOwner: undefined, + pii: false, + readonly: false, + securityClassification: null, + valuePattern: undefined +}); + +/** + * Annotation fields that can be modified on the DatasetComplianceAnnotation class while a user is actively annotating a field + * Extracted out of class to allow ComputedProperty dependent key reference + */ +const modifiableKeysOnClassData: Array = [ + 'identifierField', + 'identifierType', + 'logicalType', + 'isPurgeKey', + 'valuePattern', + 'isReadOnly' +]; + +/** + * A dataset is expected to have a number of fields that can be tagged with metadata regarding what kind of + * information that dataset field contains (namely in terms of PII). Each field has an identifierField to + * tell us the field name, and a number of tags (annotations) tied to that identifierField. This class is the + * objectified representation of a single instance of such a tag. + */ +export default class DatasetComplianceAnnotation implements IComplianceFieldAnnotation { + /** + * The original data that initialized this class. Stored here and expected to remain static. Allows us to + * maintain the original data read from the API. The initialization of this class is not connected to the + * API for each individual tag, so this property does not need an async getter + * @type {IComplianceFieldAnnotation} + */ + private readonly data: Readonly; + + static modifiableKeysOnRawData(): Array { + return ['identifierField', 'identifierType', 'logicalType', 'nonOwner', 'valuePattern', 'readonly']; + } + + /** + * Static class reference to the modifiableKeysOnClassData list. + * @static + */ + static modifiableKeysOnClassData(): Array { + return modifiableKeysOnClassData; + } + + /** + * Whether or not there have been changes made to this annotation tag from the base data that created it. + */ + isDirty = false; + + /** + * The field name that this annotation tag is tied to. Class cannot be initialized with this undefined + */ + identifierField!: IComplianceFieldAnnotation['identifierField']; + + /** + * Determines which kind of tag we are dealing with. If a newly created tag, this item starts undefined + * and becomes defined if the person chooses a tag for the field in the specified dataset. + */ + identifierType?: IComplianceFieldAnnotation['identifierType']; + + /** + * Tag indicating the type of the identifierType, + * solely applicable to corresponding id's with an idType of `false` in the complianceDataTypes endpoint + */ + logicalType?: IComplianceFieldAnnotation['logicalType']; + + /** + * Whether the tag is specified as a "purge key" in the UI by the user in their annotation. Null is allowable + * only as a working copy construct as sometimes it is necessary to specifically assign null instead of + * undefined for no-value situations + */ + isPurgeKey?: boolean | null; + + /** + * Whether the field is flagged as containing PII data + */ + pii!: IComplianceFieldAnnotation['pii']; + + /** + * User specified / default security classification for the related schema field. Null is allowable only + * as a working copy construct as it is sometimes necessary to specifically assign null instead of undefined + * for no-value situations + */ + + securityClassification!: IComplianceFieldAnnotation['securityClassification']; + + /** + * Optional attribute for the value of a CUSTOM regex. Required for CUSTOM field format + */ + valuePattern?: IComplianceFieldAnnotation['valuePattern']; + + /** + * Whether the field should be read only (and therefore requires override to be editable) + */ + isReadOnly!: IComplianceFieldAnnotation['readonly']; + + /** + * Flags a divergence between the underlying previously saved IComplianceFieldAnnotation and attributes on the working copy + * @readonly + */ + @computed('data', ...modifiableKeysOnClassData) + get hasChangedFromSavedAnnotation(): boolean { + const { data } = this; + const { modifiableKeysOnRawData, modifiableKeysOnClassData } = DatasetComplianceAnnotation; + const { nonOwner, ...remainingSourceAnnotation } = pick(data, modifiableKeysOnRawData()); + const { isPurgeKey, ...remainingPossibleUpdates } = pick(this, modifiableKeysOnClassData()); + /** + * Values of this[isReadOnly] / data[readonly] are not considered when comparing annotation values since they are irrelevant to equality + * isPurgeKey is a *reversal* of nonOwner, they are considered equal / unchanged for all other values except if their boolean values are equal + */ + const purgeKeyHasChanged = + typeof nonOwner === 'boolean' && typeof isPurgeKey === 'boolean' ? isPurgeKey === nonOwner : false; + const attributesHaveChanged = + !isEqual(omit(remainingSourceAnnotation, 'readonly'), omit(remainingPossibleUpdates, 'isReadOnly')) || + purgeKeyHasChanged; + + // identifierType being present on the source data is a trusted indicator that this may have been saved perviously + return Boolean(data.identifierType && attributesHaveChanged); + } + + /** + * Creates or resets the fields of this class by applying the original data over the current items. Allows + * us to initialize a working copy of the class or revert back if the user has canceled their changes + */ + createWorkingCopy(): void { + const data = this.data; + const keys: Array = [ + 'identifierField', + 'logicalType', + 'pii', + 'securityClassification' + ]; + // Assigns each value from the object given in the constructor or factory to the corresponding + // class key in the definition + keys.forEach((key): void => { + set(this, key, typeof data[key] === 'object' ? JSON.parse(JSON.stringify(data[key])) : data[key]); + }); + + // Leftover for non-matching keys + // Upon initialization or reverting, we assume that the working copy is no longer dirtied with changes + setProperties(this, { + identifierType: data.identifierType || null, + valuePattern: data.valuePattern || null, + isPurgeKey: typeof data.nonOwner === 'boolean' ? data.nonOwner === false : null, + // Protection vs undefined case + isReadOnly: data.readonly || false, + isDirty: false + }); + } + + /** + * Creates an API friendly object from our classified working copy. This way, we can iterate through a list + * of these annotation objects calling this method to create a batch POST request + */ + readWorkingCopy(): IComplianceFieldAnnotation { + const { + identifierField, + identifierType, + logicalType, + pii, + securityClassification, + valuePattern, + isReadOnly + } = this; + + return { + identifierField, + logicalType, + pii, + securityClassification, + identifierType: identifierType || null, + valuePattern: valuePattern || null, + nonOwner: typeof this.isPurgeKey === 'boolean' ? !this.isPurgeKey : null, + readonly: isReadOnly || false + }; + } + + /** + * Exposes a copy of the private underlying compliance annotation + */ + readOriginalCopy(): IComplianceFieldAnnotation { + return JSON.parse(JSON.stringify(this.data)); + } + + /** + * This function calls on createWorkingCopy as both perform the same functionality, but having this makes + * the interface more consumer friendly. + */ + resetWorkingCopy(): void { + this.createWorkingCopy(); + } + + /** + * Used to determine whether this annotation is currently a valid tag. Ruleset is determined as a definition + * since in open source the rules for what is valid may vary + */ + isValidAnnotation(complianceDataTypes?: Array): boolean { + return annotationIsValid(this, complianceDataTypes); + } + + /** + * Serializes `this` compliance annotation attributes to a match the field compliance interface which is supported by newer + * annotation / compliance endpoints + */ + toFieldCompliance(): Com.Linkedin.Dataset.FieldCompliance { + return DatasetComplianceAnnotation.toFieldCompliance(this); + } + + /** + * Serializes a provided compliance annotation instance of field annotation attributes and maps to an object + * that matches the field compliance interface which is supported by newer + * annotation / compliance endpoints + * @static + * @param {(DatasetComplianceAnnotation | IComplianceFieldAnnotation)} annotation the annotation attributes to transform, can either be an instance of this class + * or attributes that conform to the IComplianceFieldAnnotation interface + */ + static toFieldCompliance( + annotationOrAttributes: DatasetComplianceAnnotation | IComplianceFieldAnnotation + ): Com.Linkedin.Dataset.FieldCompliance { + const annotation = + annotationOrAttributes instanceof DatasetComplianceAnnotation + ? annotationOrAttributes + : new DatasetComplianceAnnotation(annotationOrAttributes); + const { + identifierField, + identifierType, + logicalType, + securityClassification, + valuePattern, + pii, + isPurgeKey + } = annotation; + + return { + fieldPath: identifierField, + pegasusFieldPath: '', + containingPersonalData: pii, + valuePattern: valuePattern === null ? undefined : valuePattern, + fieldFormat: logicalType ? logicalType : undefined, + purgeKey: typeof isPurgeKey === 'boolean' ? isPurgeKey : undefined, + dataType: (identifierType ? identifierType : undefined) as Com.Linkedin.Dataset.FieldCompliance['dataType'], + securityClassification: (securityClassification + ? securityClassification + : undefined) as Com.Linkedin.Dataset.FieldCompliance['securityClassification'], + readonly: annotation.hasOwnProperty('readonly') + ? (annotation as IComplianceFieldAnnotation).readonly + : (annotation as DatasetComplianceAnnotation).isReadOnly + }; + } + + constructor(annotationTag?: IComplianceFieldAnnotation, fieldName = '') { + const data = Object.freeze(annotationTag || complianceAnnotationFactory(fieldName)); + this.data = data; + this.createWorkingCopy(); + } +} diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-data-types-list.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-data-types-list.ts new file mode 100644 index 0000000000000..174d32d7f29c6 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-data-types-list.ts @@ -0,0 +1,35 @@ +import { IComplianceDataType } from '@datahub/metadata-types/types/entity/dataset/compliance-data-types'; +import { readComplianceDataTypes } from '@datahub/data-models/api/dataset/compliance'; +import { set } from '@ember/object'; + +/** + * A simple wrapper around the reader for a compliance data types list that helps us provide the read from + * the data layer to the consuming application + */ +export class ComplianceDataTypesList { + /** + * The read list for the compliance data types, which are used to determine what options are available + * for annoations of a dataset's fields + * @type {Array} + */ + list?: Array; + + /** + * Read function to fetch the compliance data types from the API layer + */ + readDataTypesList(): Promise> { + return readComplianceDataTypes(); + } +} + +/** + * Custom factory for the data types list factory, useful as this does not follow the typical creator + * for a base entity. + */ +export const createComplianceDataTypesList = async (): Promise => { + const dataTypesList = new ComplianceDataTypesList(); + const complianceDataTypes = await dataTypesList.readDataTypesList(); + + set(dataTypesList, 'list', complianceDataTypes); + return dataTypesList; +}; diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-info.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-info.ts new file mode 100644 index 0000000000000..78a467be76d7c --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-info.ts @@ -0,0 +1,379 @@ +import { IDatasetComplianceInfo } from '@datahub/metadata-types/types/entity/dataset/compliance/info'; +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; +import { + IEntityComplianceSuggestion, + SuggestionSource +} from '@datahub/metadata-types/constants/entity/dataset/compliance-suggestion'; +import DatasetComplianceSuggestion from '@datahub/data-models/entity/dataset/modules/compliance-suggestion'; +import { IComplianceFieldAnnotation } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-annotation'; +import { set, setProperties } from '@ember/object'; +import { decodeUrn } from '@datahub/utils/validators/urn'; +import { isArray } from '@ember/array'; +import { oneWay } from '@ember/object/computed'; +import { PurgePolicy } from '@datahub/metadata-types/constants/entity/dataset/compliance/purge-policy'; +import { + IFieldAnnotationDiff, + analyzeAnnotationsDiff +} from '@datahub/data-models/entity/dataset/helpers/validators/compliance/analyze-diff'; +import { computed } from '@ember/object'; +import { applyAnnotationsByEditableProperties } from '@datahub/data-models/entity/dataset/modules/constants/annotation-helpers'; +import DatasetSchema from '@datahub/data-models/entity/dataset/modules/schema'; +import { filterAnnotationsToDatasetSchema } from '@datahub/data-models/entity/dataset/helpers/validators/compliance/schema'; +import { omit } from 'lodash'; +import { IComplianceAnnotationUpdates } from '@datahub/data-models/types/entity/dataset'; + +interface IReadWorkingComplianceOptions { + withoutNullFields?: boolean; + schema?: DatasetSchema; +} + +/** + * Builds a default shape for securitySpecification & privacyCompliancePolicy with default / unset values + * for non null properties as per Avro schema + * @param {string} datasetUrn identifier for the dataset that this privacy object applies to + * @return {IComplianceInfo} + */ +export const initialComplianceObjectFactory = (datasetUrn: string): IDatasetComplianceInfo => ({ + datasetUrn: decodeUrn(datasetUrn), + datasetId: null, + confidentiality: null, + complianceType: '', + compliancePurgeNote: '', + complianceEntities: [], + datasetClassification: null +}); + +/** + * Strips out the readonly attribute from a list of compliance annotations + * @param {Array} tags list of compliance annotations for a specific entity e.g dataset + */ +export const removeReadonlyAttributeFromTags = ( + tags: Array +): Array> => + tags.map((tag: IComplianceFieldAnnotation): Omit => omit(tag, ['readonly'])); + +/** + * Filters out compliance annotations that are not editable from a supplied list + * @param {Array} tags list of compliance annotations for a specific entity e.g dataset + */ +export const getEditableTags = (tags: Array): Array => + tags.filter(({ readonly }: IComplianceFieldAnnotation): boolean => !readonly); + +/** + * Filters out compliance annotations that do not have a value supplied for the annotation attributes identifierField and identifierType + * @param {Array} tags list of compliance annotations for a specific entity e.g dataset + */ +export const removeTagsMissingIdentifierAttributes = ( + tags: Array +): Array => + tags.filter((tag: IComplianceFieldAnnotation): boolean => !!tag.identifierField && !!tag.identifierType); + +/** + * Each dataset is expected to have info related to the compliance aspects, including things such as annotations + * as well as suggested compliance changes. This class holds each of these fields and helps to facilitate the + * information related to that area for the dataset. When this class is initialized, it takes a lot of the + * compliance raw data and maps to our decorated classes to have more information available to our components + */ +export default class DatasetComplianceInfo { + /** + * The original data that initialized this class. Stored here and expected to remain static. Allows us to + * maintain the original data read from the API. The initialization of this class is not connected to the + * API for each individual tag, so this property does not need an async getter + * @type {IDatasetComplianceInfo} + */ + private readonly data: IDatasetComplianceInfo; + + /** + * A dataset is expected to have a number of fields that can be tagged with metadata regarding what kind of + * information that dataset field contains (namely in terms of PII). + * @type {Array} + */ + annotations!: Array; + + /** + * Raw data from the compliance suggestions api call for this particular dataset + * @type {Array} + */ + rawSuggestions!: Array; + + /** + * A dataset is expected to have system suggestions provided for its various fields, which in turn need to have + * some decorated information in order to provide a readable view. + * @type {Array} + */ + readonly suggestions: Array; + + /** + * If the dataset returns not found for compliance, we assume that this dataset does not yet have any compliance + * info and therefore create it from a UI generated factory and mark this as new compliance info + * @type {boolean} + */ + isNewComplianceInfo = false; + + /** + * Readonly property that lets us know based on the received data who was the last person to modify the compliance + * info + * @type {string} + */ + @oneWay('data.modifiedBy') + modifiedBy?: string; + + /** + * Readonly property accessed from the data object that lets us know the unix timestamp of the last time the + * compliance info was modified + * @type {number} + */ + @oneWay('data.modifiedTime') + modifiedTime?: number; + + /** + * Accessed from the class data, returns the Purge Policy fetched from the dataset for this compliance info + * @type {PurgePolicy} + */ + @oneWay('data.complianceType') + complianceType?: PurgePolicy; + + /** + * Accessed from the class data, returns whether or not the compliance info was retrieved from an upstream dataset + * @type {boolean} + */ + @oneWay('data.fromUpstream') + fromUpstream?: boolean; + + /** + * Accessed from the class data, returns whether or not the dataset contains personal information + * @type {boolean | null} + */ + @oneWay('data.containingPersonalData') + containsPersonalData?: boolean | null; + + /** + * Reads the original annotations read from the api layer, but as their classified dataset compliance annotation + * object form + * @type {Array} + */ + @computed('data') + get readOriginalAnnotations(): Array { + const { complianceEntities = [] } = this.data; + return complianceEntities.map( + (annotation: IComplianceFieldAnnotation): DatasetComplianceAnnotation => + new DatasetComplianceAnnotation(annotation) + ); + } + + /** + * Returns where we resolved the compliance info from (which dataset urn) which may match up to the dataset + * entity or come from something upstream + */ + @computed('data.datasetUrn') + get resolvedFrom(): string | undefined { + return this.data.datasetUrn; + } + + /** + * Working copy of the confidentiality classification for this dataset compliance + */ + // Note: Asserting as definitely defined as we set this in createWorkingCopy() called in the constructor + confidentiality!: IDatasetComplianceInfo['confidentiality']; + + /** + * Working copy of the flag for whether or not the underlying dataset for this compliance + * contains any person data + */ + // Note: Asserting as definitely defined as we set this in createWorkingCopy() called in the constructor + containingPersonalData!: IDatasetComplianceInfo['containingPersonalData']; + + /** + * In any scenario where we need to restore all parts of our "working copy" for compliance, this is a useful + * method to call. It will also be used in the constructor to initialize our working copy + */ + createWorkingCopy(): void { + const { complianceEntities = [], confidentiality, containingPersonalData } = this.data; + setProperties(this, { + confidentiality, + containingPersonalData, + annotations: complianceEntities.map( + (annotation: IComplianceFieldAnnotation): DatasetComplianceAnnotation => + new DatasetComplianceAnnotation(annotation) + ) + }); + } + + /** + * When we are about to make a post request, we can use this function to actually read the working annotations + * so that the classified information can be returned as a format expected by the api layer + */ + readWorkingCopy({ withoutNullFields, schema }: IReadWorkingComplianceOptions): IDatasetComplianceInfo { + // Prior to saving the updated annotations, extract only editable annotations i.e. annotations that do no have the readonly flag + // set to true, and omit the readonly attribute from the annotations to be sent to the endpoint + const tags = removeReadonlyAttributeFromTags(getEditableTags(this.getWorkingAnnotations(schema))); + const complianceEntities = withoutNullFields ? removeTagsMissingIdentifierAttributes(tags) : tags; + const { data, confidentiality, containingPersonalData } = this; + + return { + ...data, + complianceEntities, + confidentiality, + containingPersonalData + }; + } + + /** + * Adds an annotation to our working copy. Note that this does not affect the original annotations data. Uses + * replacement instead of mutation to avoid unintended effects + * @param {DatasetComplianceAnnotation | Array} annotationsToBeAdded - the working copy of + * the annotation / annotations to be added + */ + addAnnotation( + annotationsToBeAdded: DatasetComplianceAnnotation | Array + ): Array { + return set(this, 'annotations', this.annotations.concat(annotationsToBeAdded)); + } + + /** + * Removes an annotation from our working copy only. Uses replacement instead of mutation to avoid unintended + * effects. + * @param {(DatasetComplianceAnnotation | Array)} annotations annotations or single annotation to be removed from the compliance policy + */ + removeAnnotation( + annotations: DatasetComplianceAnnotation | Array + ): Array { + // Ensure the annotationsToBeRemoved is manipulated as a list even if a single item may be supplied + const annotationsToBeRemoved = ([] as Array).concat(annotations); + // For identifierType and logicalType are nullable values on IComplianceFieldAnnotation however, non-nullable on + // Com.Linkedin.Dataset.FieldCompliance which is the backing datatype for proposals. Null is added below to account for this + // and accurately compare values + const matchRemovedAnnotationOn = { + identifierField: annotationsToBeRemoved.mapBy('identifierField'), + identifierType: annotationsToBeRemoved.mapBy('identifierType').concat(null), + logicalType: annotationsToBeRemoved.mapBy('logicalType').concat(null) + }; + const updatedAnnotations = this.annotations.filter( + (annotation: DatasetComplianceAnnotation): boolean => + !( + matchRemovedAnnotationOn.identifierField.includes(annotation.identifierField) && + matchRemovedAnnotationOn.identifierType.includes(annotation.identifierType) && + matchRemovedAnnotationOn.logicalType.includes(annotation.logicalType) + ) + ); + + return set(this, 'annotations', updatedAnnotations); + } + + /** + * This allows us to apply the annotations given by the user for a specific field and overwrite all the current + * tags for that specific field. We do so by first making sure all fields to overwrite are valid, and then do a + * "replace" by filtering out any current annotations for the field from our list and adding in the diff. + * @param {string} fieldName - identifies the identifierField we are writing + * @param {Array} fieldDiff - new annotations to add/overwrite for current field + * @returns {boolean} signifying if this apply process was successful + */ + applyAnnotationsByField(fieldName: string, fieldDiff: Array): boolean { + if (!fieldName || !isArray(fieldDiff)) { + return false; + } + + const allFieldDiffsAreValid = fieldDiff.reduce( + (result: boolean, diff: DatasetComplianceAnnotation): boolean => result && diff.isValidAnnotation(), + true + ); + + if (!allFieldDiffsAreValid) { + return false; + } + + const { annotations } = this; + const annotationsForOtherFields = annotations.filter( + (tag: DatasetComplianceAnnotation): boolean => tag.identifierField !== fieldName + ); + + set(this, 'annotations', annotationsForOtherFields.concat(fieldDiff)); + return true; + } + + /** + * Creates a list of "diff" objects, each representing a field in the dataset schema that will describe the + * differences between the original annotations read from the API and the current modified working copy for + * that particular field + */ + getWorkingCopyDiff(): Array { + return analyzeAnnotationsDiff(this.readOriginalAnnotations, this.annotations); + } + + /** + * Modifies the working copy for our confidentiality classification for the dataset + * @param {DatasetClassification} newConfidentiality - new confidentiality classification to modify our working copy + */ + updateWorkingConfidentiality(newConfidentiality: IDatasetComplianceInfo['confidentiality']): void { + set(this, 'confidentiality', newConfidentiality); + } + + /** + * Modifies the working copy for our personal data flag for the dataset + * @param {boolean} newContainingPersonalDataFlag - new personal data flag indication + */ + updateWorkingContainingPersonalData( + newContainingPersonalDataFlag: IDatasetComplianceInfo['containingPersonalData'] + ): void { + set(this, 'containingPersonalData', newContainingPersonalDataFlag); + } + + /** + * Get flattened lists of dataset compliance annotations that have been added, deleted, changed + * add / removed also includes changed annotations (add+delete) + */ + getAnnotationUpdates(): IComplianceAnnotationUpdates { + /** + * Extract reference to the compliance annotation instance + * @param {{ annotation: DatasetComplianceAnnotation }} { annotation } object (IDiffValue), containing a DatasetComplianceAnnotation + */ + const getAnnotation = ({ annotation }: { annotation: DatasetComplianceAnnotation }): DatasetComplianceAnnotation => + annotation; + + return this.getWorkingCopyDiff().reduce( + (flatAddedOrRemovedAnnotations, { newValues, oldValues, mutations }): IComplianceAnnotationUpdates => ({ + added: [...flatAddedOrRemovedAnnotations.added, ...newValues.map(getAnnotation)], + removed: [...flatAddedOrRemovedAnnotations.removed, ...oldValues.map(getAnnotation)], + onlyChanged: [...flatAddedOrRemovedAnnotations.onlyChanged, ...mutations.map(getAnnotation)] + }), + { added: [], removed: [], onlyChanged: [] } + ); + } + + /** + * Calls each annotation's working copy to return a final list of all the annotation working copies but in the + * format expected by our API layer. This can be passed back to the API already massaged to meet the endpoint's + * expectations + */ + getWorkingAnnotations(schema?: DatasetSchema): Array { + const filteredAnnotations = schema ? filterAnnotationsToDatasetSchema(this.annotations, schema) : this.annotations; + return filteredAnnotations.map( + (annotation: DatasetComplianceAnnotation): IComplianceFieldAnnotation => annotation.readWorkingCopy() + ); + } + + /** + * Given a list of objects created from just the editable parts of compliance annotation tags, create a list + * of compliance annotation tag class objects that we can gleam a proper working copy from + * @param workingEditableProps - array of objects created with just the editable props in annotation tags + */ + overrideAnnotationsByEditableProps(workingEditableProps: Array): Array { + return set(this, 'annotations', applyAnnotationsByEditableProperties(workingEditableProps)); + } + + constructor( + complianceInfo: IDatasetComplianceInfo, + suggestions: Array, + isNewComplianceInfo?: boolean + ) { + this.data = complianceInfo; + this.rawSuggestions = suggestions; + this.suggestions = suggestions.map( + (suggestion: IEntityComplianceSuggestion): DatasetComplianceSuggestion => + new DatasetComplianceSuggestion(suggestion, SuggestionSource.system) + ); + this.isNewComplianceInfo = !!isNewComplianceInfo; + + this.createWorkingCopy(); + } +} diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-suggestion.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-suggestion.ts new file mode 100644 index 0000000000000..50d1845c8fc0a --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/compliance-suggestion.ts @@ -0,0 +1,72 @@ +import { computed } from '@ember/object'; +import { + IEntityComplianceSuggestion, + SuggestionSource +} from '@datahub/metadata-types/constants/entity/dataset/compliance-suggestion'; +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; +import { readOnly } from '@ember/object/computed'; +import { UserSuggestionInteraction } from '@datahub/data-models/constants/entity/dataset/compliance-suggestions'; + +/** + * A dataset is expected to have system suggestions provided for its various fields, which in turn need to have + * some decorated information in order to provide a readable view. Fortunately, suggestions are provided by the + * data layer and do not update based on user action, so we don't worry too much about working copies in this + * class. + */ +export default class DatasetComplianceSuggestion { + /** + * The original data that initialized this class. Stored here and expected to remain static. Allows us to + * maintain the original data read from the API. The initialization of this class is not connected to the + * API for each individual tag, so this property does not need an async getter + * @type {IEntityComplianceSuggestion} + */ + data: IEntityComplianceSuggestion; + /** + * The actual tag information for the annotation that is being suggested for a particular field + * @type {DatasetComplianceAnnotation} + */ + suggestion: DatasetComplianceAnnotation; + /** + * The source from which the suggestion was given. This is to handle cases in the future where users may be + * able to provide suggestions for review, but for now the default should be "system" + * @type {SuggestionSource | string} + */ + source: SuggestionSource | string; + /** + * If the user has interacted with the suggestion in any way by declaring the suggestion to be accepted or + * rejected, the changes can be captured here + * @type {UserSuggestionInteraction} + */ + interaction = UserSuggestionInteraction.NONE; + /** + * Static read of the uid of the suggestion from the provided data + * @type {string} + */ + @readOnly('data.uid') + uid!: string; + /** + * Computed confidence to put into a percentage format out of 100 instead of 0->1 as the provided data and rounds up to two decimals if necessary + * @type {number} + */ + @computed('data') + get confidence(): number { + return Math.round(this.data.confidenceLevel * 10000) / 100; + } + + /** + * If the user chooses to discard their changes during their session, this method will capture all + * the operations necessary to reset the suggestion to a clean slate. + */ + resetWorkingCopy() { + this.interaction = UserSuggestionInteraction.NONE; + } + + constructor( + suggestionInfo: IEntityComplianceSuggestion, + source: SuggestionSource | string = SuggestionSource.system + ) { + this.data = suggestionInfo; + this.suggestion = new DatasetComplianceAnnotation(suggestionInfo.suggestion); + this.source = source; + } +} diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/constants/annotation-helpers.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/constants/annotation-helpers.ts new file mode 100644 index 0000000000000..62eb952279020 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/constants/annotation-helpers.ts @@ -0,0 +1,110 @@ +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; +import { + ComplianceFieldIdValue, + MemberIdLogicalType +} from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; +import { + ComplianceAnnotationsEditableProps, + RawComplianceAnnotationsEditableProps +} from '@datahub/data-models/entity/dataset/helpers/validators/compliance/annotations'; +import { setProperties } from '@ember/object'; +import { IComplianceFieldAnnotation } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-annotation'; +import { pick } from 'lodash'; +import { IComplianceDataType } from '@datahub/metadata-types/types/entity/dataset/compliance-data-types'; + +/** + * Helper utility function used to determine whether an annotation tag is currently valid. Especially + * will be helpful in cases such as the annotation selection where if the user has created a valid + * (and therefore complete) tag we want to close the selection window instead of making them have to + * press a specific "done" or "save" button + * @param {DatasetComplianceAnnotation} annotationTag - the tag whose context is being used for the + * validity check + * @param {Array} complianceDataTypes - optional, if provided a data source for + * compliance data types then we use this as a more reliable way to determine if the annotation is + * valid or not than our frontend hardcoded logic + */ +export const annotationIsValid = ( + annotationTag: DatasetComplianceAnnotation, + complianceDataTypes?: Array +): boolean => { + const { identifierType, logicalType, isPurgeKey, valuePattern } = annotationTag; + const memberIdTypes = Object.values(ComplianceFieldIdValue); + const typesWithSupportedFieldFormats = (complianceDataTypes || []) + .filter((dataType: IComplianceDataType): boolean => dataType.supportedFieldFormats.length > 0) + .map((dataType: IComplianceDataType): string => dataType.id); + + // identifierType is a required field, so if it doesn't exist nothing else matters + if (!identifierType) { + return false; + } + + const shouldIncludeLogicalType = + (memberIdTypes.includes(identifierType as ComplianceFieldIdValue) && + identifierType !== ComplianceFieldIdValue.None) || + typesWithSupportedFieldFormats.includes(identifierType); + + // If we have a memberId field (excluding None from this check), then we should have a logical type and + // determination of whether the field tag is a purge key. Otherwise, we are not valid + if (shouldIncludeLogicalType) { + if (!logicalType || typeof isPurgeKey !== 'boolean') { + return false; + } + // If we have a custom type declared, then we need to have a regex entered for this + if (logicalType === MemberIdLogicalType.Custom && !valuePattern) { + return false; + } + } + // Truthy assumption based on not failing any of the above tests + return true; +}; + +/** + * Shortcut typing so that we can refer to a subset of DatasetComplianceAnnotation of only editable props + */ +type AnnotationEditablePropsOnly = Pick; + +/** + * Shortcut to typing so that we can refer to a subset of the raw API response for compliance + * IComplianceFieldAnnotation with only its editable props + */ +type RawAnnotationEditablePropsOnly = Pick; + +/** + * Uses the nature of setProperties to apply all the editable props found within the props parameter to + * the annotation passed into this function + * @param annotation - annotation to have props applied to + * @param props - props to be applied to the annotation + */ +const applyEditablePropsToAnnotation = ( + annotation: DatasetComplianceAnnotation, + props: RawAnnotationEditablePropsOnly +): DatasetComplianceAnnotation => { + // What we are doing here is converting the properties that are found in the raw annotations and transforming them + // into the classified format and then restricting that down to only the editable properties to use to override + // the existing annotation with its editable props + const newAnnotationWithProps = new DatasetComplianceAnnotation({ + ...props, + pii: false, + securityClassification: null + }); + const newAnnotationAsEditableProps: AnnotationEditablePropsOnly = pick( + newAnnotationWithProps, + DatasetComplianceAnnotation.modifiableKeysOnClassData() + ); + + setProperties(annotation, newAnnotationAsEditableProps); + return annotation; +}; + +/** + * From a working copy of only editable props, we create new tags and apply these values so that we can + * create a new working copy annotations list out of them + * @param newWorkingCopy - new working copy of only editable props that we want to apply to new tags + */ +export const applyAnnotationsByEditableProperties = ( + newWorkingCopy: Array +): Array => + newWorkingCopy.map( + (item: RawAnnotationEditablePropsOnly): DatasetComplianceAnnotation => + applyEditablePropsToAnnotation(new DatasetComplianceAnnotation(undefined, item.identifierField), item) + ); diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/constants/security-classification.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/constants/security-classification.ts new file mode 100644 index 0000000000000..867d11d5de287 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/constants/security-classification.ts @@ -0,0 +1,17 @@ +import { IComplianceDataType } from '@datahub/metadata-types/types/entity/dataset/compliance-data-types'; +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; + +/** + * Retrieves the default security classification for an identifier type, or null if it does not exist + * @param {Array} [complianceDataTypes=[]] the list of compliance data types + * @param {ComplianceFieldIdValue} identifierType the compliance data type id string + * @returns {(IComplianceDataType['defaultSecurityClassification'] | null)} + */ +export const getDefaultSecurityClassification = ( + complianceDataTypes: Array = [], + identifierType: DatasetComplianceAnnotation['identifierType'] +): IComplianceDataType['defaultSecurityClassification'] | null => { + const complianceDataType = complianceDataTypes.findBy('id', identifierType || ''); + + return complianceDataType ? complianceDataType.defaultSecurityClassification : null; +}; diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/export-policy.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/export-policy.ts new file mode 100644 index 0000000000000..117d6e0232ce0 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/export-policy.ts @@ -0,0 +1,127 @@ +import { IDatasetExportPolicy } from '@datahub/metadata-types/types/entity/dataset/compliance/export-policy'; +import { alias } from '@ember/object/computed'; +import { setProperties } from '@ember/object'; +import { Omit, omit } from 'lodash'; +import { arrayEvery } from '@datahub/utils/array/every'; +import { computed } from '@ember/object'; + +/** + * Gives us a blank default value for the working copy if none is provided by the API layer + */ +const DatasetExportPolicyFactory = (): IDatasetExportPolicy => ({ + containsUserActionGeneratedContent: null, + containsUserDerivedContent: null, + containsUserGeneratedContent: null, + modifiedBy: null, + modifiedTime: null +}); + +/** + * A classified version of the dataset export policy API return. This serves as the data layer + * intermediary between the actual API response and the UI layer, making any transformations + * necessary to simplify the response into a consumable format + */ +export class DatasetExportPolicy { + /** + * Original API data retrieved for this class. Stored here to power our working copy of the + * export policy + * @type {IDatasetExportPolicy} + * @memberof DatasetExportPolicy + */ + readonly data: IDatasetExportPolicy; + + /** + * Whether the dataset contains content generated by user action + * @type {boolean} + * @memberof DatasetExportPolicy + */ + containsUserActionGeneratedContent!: boolean | null; + + /** + * Whether the dataset contains content derived from user information + * @type {boolean} + * @memberof DatasetExportPolicy + */ + containsUserDerivedContent!: boolean | null; + + /** + * Whether the dataset contains user generated content + * @type {boolean} + * @memberof DatasetExportPolicy + */ + containsUserGeneratedContent!: boolean | null; + + /** + * username of who last modified this policy + * @type {string} + * @memberof DatasetExportPolicy + */ + @alias('data.modifiedBy') + modifiedBy!: string; + + /** + * Unix timestamp for last modified date/time + * @type {number} + * @memberof DatasetExportPolicy + */ + @alias('data.modifiedTime') + modifiedTime!: number; + + /** + * Returns whether all the editable items in the export policy are currently not defined (or null) + * @type {boolean} + * @memberof DatasetExportPolicy + */ + @computed('data') + get isEmpty(): boolean { + const { data } = this; + const exportPolicyKeys = Object.keys(omit(data, ['modifiedBy', 'modifiedTime'])) as Array< + keyof IDatasetExportPolicy + >; + + return arrayEvery((key: keyof IDatasetExportPolicy) => data[key] === null)(exportPolicyKeys); + } + + /** + * Creates or resets the working copy for the export policy of a dataset. Using this method, + * we can initially initialize our desired properties from the original data, or revert any + * changes back to that data + */ + createWorkingCopy(): void { + const { + data: { + containsUserActionGeneratedContent = null, + containsUserDerivedContent = null, + containsUserGeneratedContent = null + } + } = this; + + setProperties(this, { + containsUserActionGeneratedContent, + containsUserDerivedContent, + containsUserGeneratedContent + }); + } + + /** + * Creates an API friendly object from our classified working copy. + */ + readWorkingCopy(): Omit { + const { + containsUserActionGeneratedContent = null, + containsUserDerivedContent = null, + containsUserGeneratedContent = null + } = this; + + return { + containsUserActionGeneratedContent, + containsUserDerivedContent, + containsUserGeneratedContent + }; + } + + constructor(exportPolicyData: IDatasetExportPolicy = DatasetExportPolicyFactory()) { + this.data = exportPolicyData; + this.createWorkingCopy(); + } +} diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/lineage.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/lineage.ts index 1a64c33a6f433..42189c4cb7764 100644 --- a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/lineage.ts +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/lineage.ts @@ -2,6 +2,7 @@ import { DatasetEntity } from '../dataset-entity'; import { IDatasetLineage } from '@datahub/metadata-types/types/entity/dataset/lineage'; import { computed } from '@ember/object'; import { oneWay } from '@ember/object/computed'; +import { fromLegacy } from '@datahub/data-models/entity/dataset/utils/legacy'; /** * The dataset lineage object is a light wrapper around the dataset lineage API response to provide the @@ -24,7 +25,7 @@ export class DatasetLineage { @computed('data') get dataset(): DatasetEntity { const { dataset } = this.data; - return new DatasetEntity(dataset.uri, dataset); + return new DatasetEntity(dataset.uri, fromLegacy(dataset)); } /** diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/ownership.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/ownership.ts new file mode 100644 index 0000000000000..be70d5159f7b4 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/ownership.ts @@ -0,0 +1,114 @@ +import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; +import { reads } from '@ember/object/computed'; +import { task } from 'ember-concurrency'; +import { ETask } from '@datahub/utils/types/concurrency'; +import { IOwnerResponse, IOwner } from '@datahub/data-models/types/entity/dataset/ownership'; +import { readDatasetOwnersByUrn } from '@datahub/data-models/api/dataset/ownership'; +import { setProperties, computed } from '@ember/object'; + +/** + * TODO: META-10994 Finish refactor Dataset ownership modeling in DataHub + */ + +/** + * Module util checks if the ownership of a dataset is valid by comparing against a set of criteria + * - The owner must be confirmed by another user, + * - The owner type must be of category DATA_OWNER (DataOwner at mid-tier) + * - The owner must be of idType USER + * - The owner must be active + * @param {IOwner} { confirmedBy, type, idType, isActive } + */ +const isValidConfirmedOwner = ({ confirmedBy, type, idType, isActive }: IOwner): boolean => + Boolean(confirmedBy) && ['DATA_OWNER', 'DataOwner'].includes(type) && idType === 'USER' && isActive; + +/** + * DatasetOwnership models the ownership attributes and behavior for a dataset + * Instantiated with a reference to the DatasetEntity and utilized a builder to reify ownership + * attributes + * @export + * @class DatasetOwnership + */ +export default class DatasetOwnership { + /** + * The minimum required number of valid confirmed owners + * @static + */ + static readonly minRequiredConfirmedOwners = 2; + + /** + * The list of owners associated with the dataset + */ + owners: Array = []; + + /** + * Flag indicates if the dataset is from an upstream source + */ + fromUpstream = false; + + /** + * Dataset urn, should match the urn attribute on the dataset unless, fromUpstream is true, then + * upstreamUrn will the upstream dataset + */ + upstreamUrn = ''; + + /** + * When the dataset's ownership was last modified + */ + lastModified?: number; + + /** + * The entity that last modified the ownership information + */ + actor = ''; + + /** + * References the urn for the associated dataset, definitely assigned since a dataset is required to + * instantiate DatasetOwnership + */ + @reads('entity.urn') + urn!: string; + + /** + * Computed flag in if the ownership information for the dataset meets the requirements + * @readonly + */ + @computed('owners') + get isValid(): boolean { + return this.owners.filter(isValidConfirmedOwner).length >= DatasetOwnership.minRequiredConfirmedOwners; + } + + /** + * Checks if the userName is listed as an owner on the dataset ownership information + * @param {string} userName the userName to match against in the list of owners + */ + isOwner(userName: string): boolean { + return Boolean(this.owners.findBy('userName', userName)); + } + + /** + * Requests the ownership information for the dataset and sets the associated DatasetOwnership attributes + */ + @task(function*(this: DatasetOwnership): IterableIterator> { + const { owners = [], fromUpstream, datasetUrn, lastModified, actor } = ((yield readDatasetOwnersByUrn( + this.urn + )) as unknown) as IOwnerResponse; + + setProperties(this, { owners, fromUpstream, upstreamUrn: datasetUrn, lastModified, actor }); + }) + getDatasetOwnersTask!: ETask; + + /** + * Class builder allows async instantiation / creation operations to be handled post instantiation + */ + async build(): Promise { + await this.getDatasetOwnersTask.perform(); + + return this; + } + + /** + * Creates an instance of DatasetOwnership. To reify properties the build method should be invoked post instantiation + * @param {DatasetEntity} entity the DatasetEntity for which ownership information is requested + */ + constructor(readonly entity: DatasetEntity) {} +} diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/modules/purge-policy.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/purge-policy.ts new file mode 100644 index 0000000000000..87f4ad39502f4 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/modules/purge-policy.ts @@ -0,0 +1,67 @@ +import { IDatasetRetentionPolicy } from '@datahub/metadata-types/types/entity/dataset/compliance/retention'; +import { alias } from '@ember/object/computed'; +import { setProperties } from '@ember/object'; +import { PurgePolicy } from '@datahub/metadata-types/constants/entity/dataset/compliance/purge-policy'; + +export class DatasetPurgePolicy { + /** + * Original API data retrieved for this class. Stored here to power our working copy of the + * purge policy + * @type {IDatasetRetentionPolicy} + * @memberof DatasetPurgePolicy + */ + readonly data?: IDatasetRetentionPolicy; + + /** + * optional string with username of modifier + * @type {string} + * @memberof DatasetPurgePolicy + */ + @alias('data.modifiedBy') + modifiedBy?: string; + + /** + * optional timestamp of last modification date + * @type {number} + * @memberof DatasetPurgePolicy + */ + @alias('data.modifiedTime') + modifiedTime?: number; + + /** + * User entered purge notation for a dataset with a purge exempt policy + * @type {string | null} + * @memberof DatasetPurgePolicy + */ + purgeNote!: string | null; + + /** + * Purge Policy for the dataset + * @type {PurgePolicy | ''} + * @memberof DatasetPurgePolicy + */ + purgeType!: PurgePolicy | ''; + + /** + * Creates a working copy for the purge policy from the data that instantiated this class. + */ + createWorkingCopy(): void { + const { data } = this; + const { purgeNote = null, purgeType = '' }: Partial> = + data || {}; + setProperties(this, { purgeNote, purgeType }); + } + + /** + * Creates an API friendly object from our classified working copy. + */ + readWorkingCopy(): Pick { + const { purgeNote, purgeType } = this; + return { purgeNote, purgeType }; + } + + constructor(purgePolicyData?: IDatasetRetentionPolicy) { + this.data = purgePolicyData; + this.createWorkingCopy(); + } +} diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/read-categories.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/read-categories.ts deleted file mode 100644 index 38830a4d36772..0000000000000 --- a/datahub-web/@datahub/data-models/addon/entity/dataset/read-categories.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { readPlatforms } from '@datahub/data-models/api/dataset/platform'; -import { - isDatasetSegment, - isDatasetIdentifier, - getPlatformFromString, - isDatasetPlatform -} from '@datahub/data-models/entity/dataset/utils/platform'; -import { getDelimiter } from '@datahub/data-models/entity/dataset/utils/segments'; -import isUrn, { buildDatasetLiUrn } from '@datahub/data-models/entity/dataset/utils/urn'; -import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; - -/** - * Will get the last part of the name of a dataset. For example: - * input: /a/b/asd output: asd - * @param node - * @param separator - */ -const getDisplayName = (node: string, separator: string): string => { - const parts = node.split(separator).filter(Boolean); - return parts[parts.length - 1]; -}; - -/** - * Interim interface until dataset readcategories is no longer needed - * TODO META-8863 - */ -interface IEntityOrCategory { - entityUrn?: string; - displayName: string; - segments?: Array; -} - -/** - * Read and parse categories from api for each entity - * TODO META-8863 - */ -export const readCategories = async (category: string, prefix: string): Promise> => { - const datasetNameDelimiter = await getDelimiter(category); - const platforms: Array = (await readPlatforms({ platform: category, prefix })).map( - (node): IEntityOrCategory => { - const isSegment = isDatasetSegment(node); - const isPlatform = isDatasetPlatform(node); - const isEntity = isDatasetIdentifier(node); - const platformName = getPlatformFromString(node) || ''; - // entity comes as abook so, we need to transform it into urn:li:dataset:(urn:li:dataPlatform:ambry,abook,PROD) - const entityUrn = isEntity - ? isUrn(node as string) - ? (node as string) - : buildDatasetLiUrn(category as DatasetPlatform, node) - : undefined; - - const displayName = isPlatform ? platformName || '' : getDisplayName(node, datasetNameDelimiter); - const segments = isSegment ? [category, ...node.split(datasetNameDelimiter)] : isPlatform ? [platformName] : []; - - return { - entityUrn, - displayName, - segments: segments.filter(Boolean) - }; - } - ); - - return platforms; -}; diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/render-props.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/render-props.ts index 1b12cd50bc006..00ec2ca4c5eef 100644 --- a/datahub-web/@datahub/data-models/addon/entity/dataset/render-props.ts +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/render-props.ts @@ -1,7 +1,6 @@ -import { Tab } from '@datahub/data-models/constants/entity/shared/tabs'; +import { DatasetTab } from '@datahub/data-models/constants/entity/dataset/tabs'; import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; import { fields } from '@datahub/data-models/entity/dataset/fields'; -import { getTabPropertiesFor } from '@datahub/data-models/entity/utils'; /** * Class properties common across instances @@ -11,27 +10,62 @@ import { getTabPropertiesFor } from '@datahub/data-models/entity/utils'; * @type {IEntityRenderProps} */ export const getRenderProps = (): IEntityRenderProps => { - // TODO: right now logic is in dataset-main.ts computed property datasetTabs - const tabIds: Array = []; - + const apiEntityName = 'dataset'; return { + apiEntityName, search: { placeholder: 'Search for datasets...', attributes: fields, - apiName: 'dataset' + secondaryActionComponents: [], + customFooterComponents: [ + { + name: 'top-consumers/insight/top-consumers-insight', + options: { + component: 'top-consumers/insight/insight-strip', + isOptional: true + } + }, + { name: 'social/containers/social-metadata' } + ], + isEnabled: true + }, + userEntityOwnership: { + attributes: fields }, browse: { - // TODO META-8863 remove once dataset is migrated - showCount: true, - showHierarchySearch: false, - entityRoute: 'datasets.dataset' + showHierarchySearch: false }, entityPage: { - tabIds, route: 'datasets.dataset', - tabProperties: getTabPropertiesFor(tabIds), - defaultTab: Tab.Schema, - attributePlaceholder: '-' + tabProperties: [], + defaultTab: DatasetTab.Schema, + attributePlaceholder: '-', + apiRouteName: 'datasets', + pageComponent: { + name: 'datasets/dataset-page' + }, + customHeaderComponents: [ + { + name: 'insight/carousel', + options: { + components: [ + { + name: 'health/carousel-insight', + options: { + priority: 1 + } + }, + { + name: 'top-consumers/insight/top-consumers-insight', + options: { + isOptional: true, + component: 'top-consumers/insight/insight-card' + } + } + ] + } + } + ] } }; }; diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/utils/legacy.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/utils/legacy.ts new file mode 100644 index 0000000000000..08e285be3130e --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/utils/legacy.ts @@ -0,0 +1,74 @@ +import { IDatasetEntity } from '@datahub/metadata-types/types/entity/dataset/dataset-entity'; +import { FabricType } from '@datahub/metadata-types/constants/common/fabric-type'; +import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; +import { buildDatasetLiUrn } from '@datahub/data-models/entity/dataset/utils/urn'; + +/** + * TODO META-11674 + * + * Converts current dataset definition into the legacy one + */ +export function toLegacy(dataset: Com.Linkedin.Dataset.Dataset, urn?: string): IDatasetEntity { + const ds = { + createdTime: dataset.created.time || 0, + decommissionTime: dataset.deprecation?.decommissionTime || null, + deprecated: dataset.deprecation?.deprecated || null, + deprecationNote: dataset.deprecation?.note || null, + description: dataset.description || '', + fabric: (dataset.origin as FabricType) || FabricType.CORP, + nativeName: dataset.name, + platform: (dataset.platform as DatasetPlatform) || DatasetPlatform.HDFS, + properties: '', + tags: [], + removed: dataset.removed, + nativeType: dataset.platformNativeType || '', + modifiedTime: dataset.lastModified.time || 0, + healthScore: dataset.health?.score || 0 + }; + const uri = urn || buildDatasetLiUrn(ds.platform, ds.nativeName, ds.fabric); + return { + ...ds, + uri + }; +} + +/** + * TODO META-11674 + * + * Converts legacy one dataset definition into the current + */ +export function fromLegacy(dataset: IDatasetEntity): Com.Linkedin.Dataset.Dataset { + return { + // Using -1 as we don't have that information in IDatasetEntity and to make sure it is an invalid id (negative) + id: -1, + name: dataset.nativeName, + description: dataset.description, + removed: dataset.removed, + origin: dataset.fabric, + platform: dataset.platform, + created: { + time: dataset.createdTime, + actor: 'Not Available' + }, + lastModified: { + time: dataset.modifiedTime, + actor: 'Not Available' + }, + properties: {}, + tags: [], + deploymentInfos: [], + health: dataset.healthScore + ? { + score: dataset.healthScore, + validations: [] + } + : undefined, + deprecation: dataset.deprecated + ? { + deprecated: dataset.deprecated, + decommissionTime: dataset.decommissionTime || undefined, + note: dataset.deprecationNote || '' + } + : undefined + }; +} diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/utils/owner.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/utils/owner.ts new file mode 100644 index 0000000000000..a89d34f6284c4 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/utils/owner.ts @@ -0,0 +1,33 @@ +import { IOwnerResponse } from '@datahub/data-models/types/entity/dataset/ownership'; + +/** + * Helper method to map legacy ownership type to new ownership type + * @param category The category which the owner belongs to + */ +const transformOwnerCategoryIntoType = ( + category: Com.Linkedin.Dataset.OwnerCategory +): Com.Linkedin.Common.OwnershipType => { + switch (category) { + case 'DATA_OWNER': + return 'DEVELOPER'; + break; + case 'PRODUCER': + case 'CONSUMER': + case 'DELEGATE': + case 'STAKEHOLDER': + return category; + break; + } +}; + +/** + * Helper method that converts an legacy dataset owner response into an array of owners that is more baseEntity friendly. + * @param ownersResponse The response from the api that contains the owner information for a dataset + */ +export const transformOwnersResponseIntoOwners = (ownersResponse: IOwnerResponse): Array => { + const { owners = [] } = ownersResponse; + return owners.map(owner => ({ + owner: owner.userName, + type: transformOwnerCategoryIntoType(owner.type) + })); +}; diff --git a/datahub-web/@datahub/data-models/addon/entity/dataset/utils/urn.ts b/datahub-web/@datahub/data-models/addon/entity/dataset/utils/urn.ts index 5e1cf1e59266f..c02dfa6d42cb8 100644 --- a/datahub-web/@datahub/data-models/addon/entity/dataset/utils/urn.ts +++ b/datahub-web/@datahub/data-models/addon/entity/dataset/utils/urn.ts @@ -1,4 +1,3 @@ -import { assert } from '@ember/debug'; import { datasetPlatformUrnPattern } from '@datahub/metadata-types/utils/entity/dataset/platform/urn'; import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; import { FabricType } from '@datahub/metadata-types/constants/common/fabric-type'; @@ -25,7 +24,7 @@ export const fabricsArray: Array = Object.keys(FabricType).map((key: key * @return {boolean} */ export const isDatasetFabric = (candidate: string): candidate is FabricType => - Object.values(FabricType).includes(candidate.toUpperCase()); + Object.values(FabricType).includes(candidate.toUpperCase() as FabricType); /** * Path segment in a urn. common btw WH and LI formats @@ -105,8 +104,8 @@ export const getDatasetUrnParts = (urn: string): Partial { const formattedPath = convertWhDatasetPathToLiPath(platform, path); @@ -156,7 +155,6 @@ export const buildDatasetLiUrn = ( * @return {string} */ export const convertWhUrnToLiUrn = (whUrn: string): string => { - assert(`Expected ${whUrn} to be in the WH urn format`, isWhUrn(whUrn)); const [, platform = '', path = ''] = datasetUrnRegexWH.exec(whUrn) || []; return buildDatasetLiUrn(platform as DatasetPlatform, path); diff --git a/datahub-web/@datahub/data-models/addon/entity/entity-factory.ts b/datahub-web/@datahub/data-models/addon/entity/entity-factory.ts deleted file mode 100644 index fe1af13183258..0000000000000 --- a/datahub-web/@datahub/data-models/addon/entity/entity-factory.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { BaseEntity } from '@datahub/data-models/entity/base-entity'; -import { IBaseEntity } from '@datahub/metadata-types/types/entity'; -import { set } from '@ember/object'; - -/** - * Defines a local alias for the Entity type that should be created by the factory - * @alias {BaseEntity} - */ -export type DataModelEntityInstance = BaseEntity; - -/** - * Properties expected to be provided when a new Entity is created - * @interface IEntityConstructorParams - */ -interface IEntityConstructorParams { - urn: string; -} - -/** - * Entity factory function receives a constructor Entity type to create, and then arguments required for the - * constructor in a curried async function - * - * An Entity instance may be created by invoking new directly on the constructor, however, the consumer will also have to - * invoke async methods on the instance to reify the underlying entity and related data such as snapshots. - * Using the factory asynchronously abstracts these operations - * - * Usage: - * The following are equivalent - * -import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity'; - - async function caseA(urn: string) { - const myFeature = await createEntity(FeatureEntity)({ urn }); - const isFeatureRemoved = myFeature.removed; - ... -} - -async function caseB(urn: string) { - const myFeature = new FeatureEntity(urn); - await myFeature.readEntity; - - const isFeatureRemoved = myFeature.removed; - ... -} - * - * The factory returns a curried function that can be repeatedly used to create entities repeatedly, - * passing only the parameters that differ from one instance to another - * const createFeatureEntity = createEntity(FeatureEntity); - * const entityA = await createFeatureEntity({urn: 'urnA'}); - * const entityB = await createFeatureEntity({urn: 'urnB'}); - * - * or - * \[urn1, urn2, ...urnN].map(createEntity(FeatureEntity)) - * - * @template E the Entity to be created - * @param {new (urn: string) => E} entityConstructor Entity constructor function - */ -export const createEntity = ( - entityConstructor: new (urn: string) => E -): ((p: IEntityConstructorParams) => Promise) => async ({ urn }: IEntityConstructorParams): Promise => { - const entity = new entityConstructor(urn); - // Post instantiation, request the underlying Entity instance and Snapshot - // and set the related instance attributes with references to the value - set(entity, 'entity', await entity.readEntity); - set(entity, 'snapshot', await entity.readSnapshot); - - return entity; -}; diff --git a/datahub-web/@datahub/data-models/addon/entity/feature/feature-entity.ts b/datahub-web/@datahub/data-models/addon/entity/feature/feature-entity.ts new file mode 100644 index 0000000000000..0b4736cc301b4 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/feature/feature-entity.ts @@ -0,0 +1,430 @@ +import { BaseEntity, statics, IBaseEntityStatics } from '@datahub/data-models/entity/base-entity'; +import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; +import { IFeatureEntity } from '@datahub/metadata-types/types/entity/feature/feature-entity'; +import { computed } from '@ember/object'; +import { + readFeature, + updateFeatureEditableConfig, + updateFeatureStatusConfig +} from '@datahub/data-models/api/feature/feature'; +import { IFeatureSnapshot } from '@datahub/metadata-types/types/metadata/feature-snapshot'; +import { readFeatureSnapshot, readFeatureSnapshots } from '@datahub/data-models/api/feature/snapshot'; +import { getMetadataAspect } from '@datahub/metadata-types/constants/metadata/aspect'; +import { IFeatureAspect } from '@datahub/metadata-types/types/entity/feature/feature-aspect'; +import { IAvailabilityInfo } from '@datahub/metadata-types/types/entity/feature/frame/availability-info'; +import { FeatureStatusType } from '@datahub/metadata-types/constants/entity/feature/frame/feature-status-type'; +import { AvailabilityEnvironmentType } from '@datahub/metadata-types/constants/entity/feature/frame/availability-environment-type'; +import { capitalize } from 'lodash'; +import { IFeatureMultiProductInfo } from '@datahub/metadata-types/types/entity/feature/frame/feature-multiproduct-info'; +import { alias, map, equal, oneWay } from '@ember/object/computed'; +import { IFrameAnchorConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-anchor-config'; +import { getRenderProps } from '@datahub/data-models/entity/feature/render-props'; +import { IFrameFeatureEditableConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-editable-config'; +import { IFrameFeatureTierConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-tier-config'; +import { IFrameFeatureStatusConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-status-config'; +import { IFrameFeatureConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-config'; +import { ISearchFeatureEntity } from '@datahub/data-models/types/entity/feature/features'; +import { getCategoryPathString } from '@datahub/data-models/entity/feature/utils'; +import { relationship } from '@datahub/data-models/relationships/decorator'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; + +/** + * possible types for the entity + */ +type FeatureEntityType = IFeatureEntity | ISearchFeatureEntity; + +/** + * Defines the entity data model for the Feature entity type + * + * FeatureEntity inherits and extends the BaseEntity class by adding/overriding/hiding properties + * and methods on the static, IBaseEntityStatics and instance, BaseEntity interfaces over the entity + * interface IFeatureEntity + * @export + * @class FeatureEntity + * @extends {BaseEntity} + */ +@statics>() +export class FeatureEntity extends BaseEntity { + /** + * TODO META-10097: This should not be needed as it is specified in super class + * Reference to the underlying feature entity + * @type {IFeatureEntity} + * @memberof FeatureEntity + */ + entity?: IFeatureEntity; + + /** + * TODO META-10097: We should be consistent with entity and use a generic type on the super class + * Specifies that snapshot attribute is subtype of Snapshot intersection type, IFeatureSnapshot + * @type {IFeatureSnapshot} + * @memberof FeatureEntity + */ + snapshot?: IFeatureSnapshot; + + /** + * Discriminant for Entity type + * @static + * @memberof FeatureEntity + */ + static kind = 'FeatureEntity'; + + /** + * Discriminant when included in a tagged Entity union + */ + get kind(): string { + return FeatureEntity.kind; + } + + /** + * The human friendly alias for Feature entities + * Statically accessible on the FeatureEntity type + * @static + * @memberof FeatureEntity + */ + static displayName: 'ml-features' = 'ml-features'; + + /** + * The human friendly alias for Feature entities + */ + get displayName(): 'ml-features' { + return FeatureEntity.displayName; + } + + /** + * Class properties common across instances + * Dictates how visual ui components should be rendered + * Implemented as a getter to ensure that reads are idempotent + * @readonly + * @static + * @type {IEntityRenderProps} + */ + static get renderProps(): IEntityRenderProps { + return getRenderProps(); + } + + /** + * Reads the snapshots for a list of Feature urns + * @static + */ + static readSnapshots(urns: Array): Promise> { + return readFeatureSnapshots(urns); + } + + /** + * Updates this Features IFrameFeatureEditableConfig metadata aspect with the supplied argument editableConfig + * @param {IFrameFeatureEditableConfig} editableConfig the editable config aspect to update this Feature with + * @memberof FeatureEntity + */ + updateEditableConfig(editableConfig: IFrameFeatureEditableConfig): ReturnType { + return updateFeatureEditableConfig(this.urn, editableConfig); + } + + /** + * Updates this Features IFrameFeatureStatusConfig metadata aspect with the supplied argument statusConfig + * @param {IFrameFeatureStatusConfig} statusConfig the status config aspect to update this Feature with + * @memberof FeatureEntity + */ + updateStatusConfig(statusConfig: IFrameFeatureStatusConfig): ReturnType { + return updateFeatureStatusConfig(this.urn, statusConfig); + } + + /** + * Retrieves the value of the IFeatureEntity identified by this.urn + * Computed macro allows us to cache value on access + * @readonly + * @type {Promise} + * @memberof FeatureEntity + */ + @computed() + get readEntity(): Promise { + return readFeature(this.urn); + } + + /** + * Retrieves the current Snapshot for this Entity + * @readonly + * @type {Promise} + * @memberof FeatureEntity + */ + @computed() + get readSnapshot(): Promise { + return readFeatureSnapshot(this.urn); + } + + /** + * Private proxy function for configuration aspects on the Feature snapshot + * @readonly + * @private + * @type {{ + * editableConfig: IFeatureAspect['com.linkedin.feature.frame.FrameFeatureEditableConfig']; + * featureConfig: IFeatureAspect['com.linkedin.feature.frame.FrameFeatureConfig']; + * }} + * @memberof FeatureEntity + */ + @computed('snapshot') + get featureConfigs(): { + editableConfig: IFeatureAspect['com.linkedin.feature.frame.FrameFeatureEditableConfig']; + featureConfig: IFeatureAspect['com.linkedin.feature.frame.FrameFeatureConfig']; + tierConfig: IFeatureAspect['com.linkedin.feature.frame.FrameFeatureTierConfig']; + } { + const { snapshot } = this; + + // Editable config contains the snapshot attributes that the user is able to modify + // These should be shown first before other attributes below i.e. order of operations is desired + const editableConfig = getMetadataAspect(snapshot)( + 'com.linkedin.feature.frame.FrameFeatureEditableConfig' + ) as IFeatureAspect['com.linkedin.feature.frame.FrameFeatureEditableConfig']; + // Other config properties + const featureConfig = getMetadataAspect(snapshot)( + 'com.linkedin.feature.frame.FrameFeatureConfig' + ) as IFeatureAspect['com.linkedin.feature.frame.FrameFeatureConfig']; + const tierConfig = getMetadataAspect(snapshot)( + 'com.linkedin.feature.frame.FrameFeatureTierConfig' + ) as IFeatureAspect['com.linkedin.feature.frame.FrameFeatureTierConfig']; + + return { + editableConfig, + featureConfig, + tierConfig + }; + } + + /** + * References the Feature multiproductInfo associated with the multiproduct in which the feature is defined + * @type {IFeatureMultiProductInfo} + * @memberof FeatureEntity + */ + @alias('featureConfigs.featureConfig.multiproductInfo') + multiproductInfo?: IFeatureMultiProductInfo; + + /** + * Lists the urns for datasets related to the Feature instance extracted from the anchors on the FrameFeatureConfig metadata aspect + */ + @map( + 'featureConfigs.featureConfig.anchors.[]', + ({ source: { datasetUrn } }: IFrameAnchorConfig): string | undefined => datasetUrn + ) + datasetUrns!: Array; + + /** + * Lists the hdfs source paths for the Feature Entity if present on the Feature snapshot anchors + * @memberof FeatureEntity + */ + @map('featureConfigs.featureConfig.anchors.[]', ({ source: { properties } }: IFrameAnchorConfig): string => { + const hdfsProps = properties['com.linkedin.feature.frame.HDFSSourceProperties']; + return hdfsProps ? hdfsProps.path : ''; + }) + hdfsPaths!: Array; + + /** + * Hoists a reference to the editableConfig as a top level reference + * @memberof FeatureEntity + */ + @alias('featureConfigs.editableConfig') + editableConfig!: IFrameFeatureEditableConfig; + + /** + * Hoists a reference to the featureConfig value as a top level reference + * @memberof FeatureEntity + */ + @alias('featureConfigs.featureConfig') + featureConfig?: IFrameFeatureConfig; + + /** + * Hoists a reference to the tierConfig value as a top level reference + * @memberof FeatureEntity + */ + @alias('featureConfigs.tierConfig') + tierConfig?: IFrameFeatureTierConfig; + + /** + * Creates relationship between this entity and its owner entities + */ + @relationship('people', 'ownerEntityUrns') + ownerEntities!: Array; + + /** + * Frame owners for the Feature serialized as a string for ui rendering + * @readonly + * @type {string} + * @memberof FeatureEntity + */ + @computed('ownerUrns') + get formattedFrameOwners(): string { + /** + * Serializes the Feature Owner instance as a list of LDAP user names if we have ownership info, + * otherwise we return a placeholder + * @param {Array} [ownerUrns=[]] + * @param {{ placeholder: string; prefix: RegExp }} { placeholder, prefix } + * @returns {string} + */ + const toStringAndRemoveUrnPrefix = (ownerUrns: Array = [], { prefix }: { prefix: RegExp }): string => { + const stringWithoutPrefix = ownerUrns.join(', ').replace(prefix, (): string => ''); + const featureEntityPageRenderProps = FeatureEntity.renderProps.entityPage; + const attributePlaceholder = + (featureEntityPageRenderProps && featureEntityPageRenderProps.attributePlaceholder) || ''; + + return stringWithoutPrefix || attributePlaceholder; + }; + + return toStringAndRemoveUrnPrefix(this.ownerUrns, { prefix: /urn:li:corpuser:/g }); + } + + /** + * Selects the list of environments where the feature or anchor is available + * @readonly + * @type {Array} + * @memberof FeatureEntity + */ + @computed('snapshot') + get dataAvailability(): Array { + const availabilityConfig = getMetadataAspect(this.snapshot)( + 'com.linkedin.feature.frame.FrameFeatureAvailabilityConfig' + ) as IFeatureAspect['com.linkedin.feature.frame.FrameFeatureAvailabilityConfig']; + + return availabilityConfig + ? availabilityConfig.availability.map( + ({ environment }: IAvailabilityInfo): AvailabilityEnvironmentType => environment + ) + : []; + } + + /** + * Serializes the list of environments where the feature or anchor is available + * @readonly + * @type {string} + * @memberof FeatureEntity + */ + @computed('dataAvailability') + get formattedDataAvailability(): string { + const featureEntityPageRenderProps = FeatureEntity.renderProps.entityPage; + const placeholder = featureEntityPageRenderProps ? featureEntityPageRenderProps.attributePlaceholder : ''; + const [last = placeholder, ...preceding] = this.dataAvailability + .map((availability, _, { length }): string => + // If we have only one availability option then append with only, otherwise just toggle the case + length === 1 ? `${availability}-only` : availability + ) + .reverse(); + + // If we have 2 or more elements, separate the preceding with a comma and/or conjugate the last with an 'and', + // otherwise show the single element or placeholder ('-') + return capitalize(preceding.length ? `${preceding.join(', ')} and ${last}` : last); + } + + /** + * The current status of the feature, + * it will try to read it from snapshot, will fallback to entity if not found + * @readonly + * @type {(FeatureStatusType | void)} + * @memberof FeatureEntity + */ + @computed('snapshot', 'entity.status') + get featureStatus(): FeatureStatusType | void { + const featureStatus = getMetadataAspect(this.snapshot)( + 'com.linkedin.feature.frame.FrameFeatureStatusConfig' + ) as IFeatureAspect['com.linkedin.feature.frame.FrameFeatureStatusConfig']; + const { entity } = this; + + return featureStatus ? featureStatus.status : entity ? entity.status : undefined; + } + + /** + * returns the path for this feature + */ + @computed('baseEntity', 'category', 'classification') + get categoryPathString(): string { + return getCategoryPathString(this); + } + + /** + * Convenience flag indicating that the Feature has a FeatureStatusType.Published status + * @memberof FeatureEntity + */ + @equal('featureStatus', FeatureStatusType.Published) + isPublished!: boolean; + + /** + * Convenience flag for Feature in incomplete status + * @memberof FeatureHeader + */ + @equal('featureStatus', FeatureStatusType.Incomplete) + isIncomplete!: boolean; + + /** + * Convenience flag for Feature in unpublished status + * @memberof FeatureHeader + */ + @equal('featureStatus', FeatureStatusType.Unpublished) + isUnpublished!: boolean; + + /** + * Alias for search + */ + @oneWay('entity.availability') + availability!: ISearchFeatureEntity['availability']; + + /** + * Alias for search results + */ + @oneWay('entity.baseEntity') + baseEntity!: ISearchFeatureEntity['baseEntity']; + + /** + * Alias for search results + */ + @oneWay('entity.category') + category!: ISearchFeatureEntity['category']; + + /** + * Alias for search results + */ + @oneWay('entity.baseEntity') + classification!: ISearchFeatureEntity['classification']; + + /** + * Alias for search results + */ + @oneWay('entity.description') + description!: ISearchFeatureEntity['description']; + + /** + * Alias for search results + */ + @oneWay('entity.multiproduct') + multiproduct!: ISearchFeatureEntity['multiproduct']; + + /** + * Alias for search results + */ + @oneWay('entity.name') + name!: ISearchFeatureEntity['name']; + + /** + * Alias for search results + */ + @oneWay('entity.namespace') + namespace!: ISearchFeatureEntity['namespace']; + + /** + * Alias for search results + */ + @oneWay('entity.tier') + tier!: ISearchFeatureEntity['tier']; + + /** + * Alias for search results + */ + @oneWay('entity.owners') + ownersSimple!: ISearchFeatureEntity['owners']; + + /** + * Unifies list of owner urns whether available through readEntity() for fetched by search + */ + @computed('ownersSimple', 'ownerUrns') + get ownerEntityUrns(): Array { + const { ownersSimple, ownerUrns } = this; + const urnFromOwnersSimple = + ownersSimple && ownersSimple.map((username): string => PersonEntity.urnFromUsername(username)); + return urnFromOwnersSimple || ownerUrns || []; + } +} diff --git a/datahub-web/@datahub/data-models/addon/entity/feature/fields.ts b/datahub-web/@datahub/data-models/addon/entity/feature/fields.ts new file mode 100644 index 0000000000000..8833fee218036 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/feature/fields.ts @@ -0,0 +1,145 @@ +import { ISearchEntityRenderProps } from '@datahub/data-models/types/search/search-entity-render-prop'; + +/** + * Fields for dataset + */ +export const fields: Array = [ + { + showInAutoCompletion: true, + fieldName: 'availability', + showInResultsPreview: true, + displayName: 'Availability', + showInFacets: true, + desc: 'Availability of the feature in different environments', + example: 'offline, online and offline/online', + minAutocompleteFetchLength: 0 + }, + { + showInAutoCompletion: true, + fieldName: 'baseEntity', + showInResultsPreview: true, + displayName: 'Base entity', + showInFacets: true, + desc: 'Base category of the feature', + example: 'Member, Job', + minAutocompleteFetchLength: 0 + }, + { + showInAutoCompletion: true, + fieldName: 'category', + showInResultsPreview: true, + displayName: 'Category', + showInFacets: true, + desc: 'Category of the feature', + example: 'Job.Search', + minAutocompleteFetchLength: 0 + }, + { + showInAutoCompletion: true, + fieldName: 'classification', + showInResultsPreview: true, + displayName: 'Classification', + showInFacets: true, + desc: 'Classification category of the feature', + example: 'Characteristic, Activity', + minAutocompleteFetchLength: 0, + headerComponent: { + name: 'dynamic-components/header', + options: { + className: 'search-facet__dynamic-header', + title: 'Classification', + contentComponents: [ + { + name: 'dynamic-components/composed/user-assistance/help-tooltip-with-link', + options: { + text: `Whether the feature is a characteristic feature or an activity feature. + Characteristic features describe the Attribute of its base entity, + such as “Member Title”, “Job Location” etc. + Activity features are features generated based on member’s interactions with Linkedin`, + wikiKey: 'terminologies', + wikiLinkText: 'Learn more' + } + } + ] + } + } + }, + { + showInAutoCompletion: false, + fieldName: 'description', + showInResultsPreview: false, + displayName: 'Description', + showInFacets: false, + desc: '', + example: '' + }, + { + showInAutoCompletion: true, + fieldName: 'multiproduct', + showInResultsPreview: true, + displayName: 'Multiproduct', + showInFacets: true, + desc: 'URN of the frame-feature multiproduct in which this feature has been defined', + example: 'frame-feature-hummingbird', + minAutocompleteFetchLength: 0 + }, + { + showInAutoCompletion: true, + fieldName: 'name', + showInResultsPreview: false, + displayName: 'Name', + showInFacets: false, + desc: 'Name of the feature', + example: 'member_degree' + }, + { + showInAutoCompletion: true, + fieldName: 'namespace', + showInResultsPreview: true, + displayName: 'Namespace', + showInFacets: false, + desc: 'Feature namespace', + example: 'jymbii', + minAutocompleteFetchLength: 0 + }, + { + showInAutoCompletion: true, + fieldNameAlias: 'ownerEntities', + fieldName: 'owners', + showInResultsPreview: true, + displayName: 'Owners', + showInFacets: false, + desc: 'LDAP usernames of corp users who are the owners of the multiproduct in which the feature is defined', + example: 'nazhang', + component: { + name: 'avatar/generic-wrapper', + options: { component: 'avatar/avatar-name' } + } + }, + { + showInAutoCompletion: false, + fieldName: 'sources', + showInResultsPreview: true, + displayName: 'Data sources', + showInFacets: false, + desc: '', + example: '' + }, + { + showInAutoCompletion: false, + showInFacets: true, + showInResultsPreview: true, + fieldName: 'tier', + displayName: 'Tier', + desc: 'Tier that the ML feature resides in', + example: 'Public, Private, Deprecated, Public_Production', + minAutocompleteFetchLength: 0, + tagComponent: { + name: 'custom-search-result-property-component/tag', + options: { + state: 'neutral-inverse', + titleize: true + } + } + } +]; diff --git a/datahub-web/@datahub/data-models/addon/entity/feature/hierarchy.ts b/datahub-web/@datahub/data-models/addon/entity/feature/hierarchy.ts new file mode 100644 index 0000000000000..49c012be2b036 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/feature/hierarchy.ts @@ -0,0 +1,103 @@ +/** + * Defines the available BaseEntity values + * @export + * @enum {string} + */ +export enum BaseEntity { + Company = 'Company', + FieldOfStudy = 'FieldofStudy', + Job = 'Job', + Member = 'Member', + School = 'School', + Skill = 'Skill', + Title = 'Title' +} + +/** + * Defines the available Classification values + * @export + * @enum {string} + */ +export enum Classification { + Activity = 'Activity', + Characteristics = 'Characteristics' +} + +/** + * Maps each classification value to supported Category hierarchy values + */ +export const Category: Record> = { + [Classification.Activity]: [ + 'Ads.Click', + 'Ads.Click.Compaign Type', + 'Ads.Conversion', + 'Ads.Conversion.Action Type', + 'Ads.Conversion.Compaign Type', + 'Ads.View', + 'Ads.View.Compaign Type', + 'Feed', + 'Feed.Click, Save, Comment, Like.Channel', + 'Feed.Like', + 'Feed.Message', + 'Feed.Post', + 'Feed.Reshare.Message', + 'Feed.Reshare.Post', + 'Feed.Share', + 'Feed.Share.ApiShareFlag', + 'Feed.Share.Format', + 'Feed.Share.Post', + 'Feed.Share.Type', + 'Job', + 'Job.Apply, Save', + 'Job.Dismiss', + 'Job.Inmail', + 'Job.SearchQuery', + 'Job.View', + 'Member', + 'Member, Job', + 'Member, Job.Inmail, Post', + 'Member.Respond Inmail.Inmail Type', + 'Member.Respond Inmail.Sender Type', + 'Message.Receive.Inmail', + 'Message.Receive.Other', + 'Notification.Receive.Platform', + 'Page.View', + 'Page.View.Page Group', + 'Page.View.Platform', + 'Page.View.Portal', + 'Page.View.UI Type', + 'Search', + 'Search.Search', + 'Search.Search.Companies', + 'Search.Search.Content', + 'Search.Search.Edu', + 'Search.Search.Federated', + 'Search.Search.Groups', + 'Search.Search.Jobs', + 'Search.Search.People', + 'Search.View' + ], + [Classification.Characteristics]: [ + 'General', + 'General.CompanyStandardizedData', + 'General.EducationDerivedData', + 'General.Embedding', + 'General.ExperienceLevelStandardizedData', + 'General.ExperienceLevelStdData', + 'General.GeoStandardizedData', + 'General.GeoStdData', + 'General.IndustryStandardizedData', + 'General.Network', + 'General.PositionDerivedData', + 'General.SkillsStandardizedData', + 'General.SkillsStdData', + 'General.TermVector', + 'General.TitleStandardizedData', + 'Job.CompanyStandardizedData', + 'Job.GeoStandardizedData', + 'Job.IndustryStandardizedData', + 'Job.TitleStandardizedData', + 'Member.EducationDerivedData', + 'Member.Targeting' + ] +}; diff --git a/datahub-web/@datahub/data-models/addon/entity/feature/render-props.ts b/datahub-web/@datahub/data-models/addon/entity/feature/render-props.ts new file mode 100644 index 0000000000000..4564621f778b8 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/feature/render-props.ts @@ -0,0 +1,75 @@ +import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; +import { fields } from '@datahub/data-models/entity/feature/fields'; +import { FeatureStatusType } from '@datahub/metadata-types/constants/entity/feature/frame/feature-status-type'; +import { entityListRenderFields } from '@datahub/data-models/constants/entity/feature/list-fields'; +import { sortFields } from '@datahub/data-models/entity/utils/fields'; +import { ISearchEntityRenderProps } from '@datahub/data-models/types/search/search-entity-render-prop'; +import { FeatureTab, TabProperties } from '@datahub/data-models/constants/entity/feature/tabs'; + +/** + * Status Field Common, is the metadata associated for the field Status. + * Since the meta associated changes depending if you are in browsing section or + * search, we are keeping this data here instead of '@datahub/data-models/entity/feature/fields'. + */ +const statusFieldCommon: ISearchEntityRenderProps = { + fieldName: 'status', + displayName: 'Status', + desc: '', + example: '', + showInAutoCompletion: false, + showInResultsPreview: false, + showInFacets: true, + tagComponent: { + name: 'feature-status' + } +}; +/** + * Class properties common across instances + * Dictates how visual ui components should be rendered + * Implemented as a getter to ensure that reads are idempotent + */ +export const getRenderProps = (): IEntityRenderProps => { + const secondaryActionComponents = [{ name: 'toggle-on-list' }, { name: 'download-config' }]; + return { + apiEntityName: 'feature', + search: { + placeholder: 'Search for Features ...', + attributes: [ + ...fields, + { + ...statusFieldCommon, + facetDefaultValue: [FeatureStatusType.Published.toLowerCase()] + } + ].sort(sortFields), + isEnabled: true, + secondaryActionComponents + }, + userEntityOwnership: { + attributes: [...fields, statusFieldCommon].sort(sortFields), + secondaryActionComponents + }, + browse: { + showHierarchySearch: true, + attributes: [ + { + ...statusFieldCommon, + // browse requires lowercase values + facetDefaultValue: [FeatureStatusType.Published.toLowerCase()] + } + ] + }, + entityPage: { + apiRouteName: 'features', + route: 'features.feature', + tabProperties: TabProperties, + defaultTab: FeatureTab.Metadata, + attributePlaceholder: '–' + }, + list: { + searchResultConfig: { + attributes: entityListRenderFields, + isEnabled: true + } + } + }; +}; diff --git a/datahub-web/@datahub/data-models/addon/entity/feature/utils.ts b/datahub-web/@datahub/data-models/addon/entity/feature/utils.ts new file mode 100644 index 0000000000000..b94a8db8e88dc --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/feature/utils.ts @@ -0,0 +1,160 @@ +import { IFrameAnchorConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-anchor-config'; +import { IFrameFeatureEditableConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-editable-config'; +import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity'; +import { IFeatureGroup, FeatureConfigDictionary } from '@datahub/data-models/types/entity/rendering/text-render-props'; +import { FrameSourceType } from '@datahub/metadata-types/constants/entity/feature/frame/frame-source-type'; +import { groupBy, uniqBy, flatten } from 'lodash'; +import { hdfsSourceAttribute, offlineFeatureSourceUrlBase } from '@datahub/data-models/constants/entity/feature/source'; +import { IFrameSourceConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-source-config'; +import { getProperties } from '@ember/object'; +/** + * String literal of aspect properties to be rendered, used in the lookup table below, containing a map of keys to display names + */ +export type IFeatureRenderedAttributes = + | 'description' + | 'baseEntity' + | 'classification' + | 'inferType' + | 'category' + | 'documentationLink' + | 'tier' + | 'frameMp' + | 'owners' + | 'availability'; + +/** + * Display names for attributes to be rendered + */ +export const attributeDisplayName: Record = Object.freeze({ + description: 'Description', + inferType: 'Fact or Inferred', + baseEntity: ' Base Entity', + classification: 'Classification', + category: 'Catalog Hierarchy', + documentationLink: 'Documentation Link', + tier: 'Tier', + frameMp: 'Frame MP', + owners: 'Frame MP Owners', + availability: 'Data Availability' +}); + +/** + * Produces an array of strings depicting the hierarchy of a Feature Entity + * TODO META-9971: The current hierarchy should be read from server + */ +const getHierarchySegments = ({ editableConfig, entity }: FeatureEntity): Array => { + if (editableConfig && entity) { + const { name = '' } = entity; + const { + baseEntity = { baseEntityString: '' }, + classification = { classificationString: '' }, + category = { categoryString: '' } + } = getProperties(editableConfig, ['baseEntity', 'category', 'classification']); + + const { baseEntityString } = baseEntity; + const { classificationString } = classification; + const { categoryString } = category; + + // Browse API uses '.' as a separator too so we have to split each part. Also + // it needs to be lowercased. + return flatten( + [baseEntityString, classificationString, categoryString, name] + .filter(Boolean) + .map((path): Array => path.toLowerCase().split('.')) + ); + } + + return []; +}; + +/** + * Reads the segments in a Feature hierarchy and generates a string representation + * TODO META-9971: The current hierarchy should be read from server + */ +export const getCategoryPathString = (feature: FeatureEntity): string => { + const hierarchySegments = getHierarchySegments(feature); + return hierarchySegments.length > 1 ? hierarchySegments.slice(0, hierarchySegments.length - 1).join(' > ') : '-'; +}; + +/** + * Extracts the hdfs data source url from a frame source config + */ +const getFeatureFrameHdfsUrl = ({ properties, type }: IFrameSourceConfig): string => { + const hdfsSourceProperties = properties[hdfsSourceAttribute]; + const hdfsSourcePathSegment = type === FrameSourceType.Hdfs && hdfsSourceProperties ? hdfsSourceProperties.path : ''; + return hdfsSourcePathSegment ? `${offlineFeatureSourceUrlBase}${hdfsSourcePathSegment}` : ''; +}; + +/** + * Creates a lookup table for each data source urn to its source path + * { source urn => path to source } + */ +export const getFeatureDataSourceEntries = ({ featureConfigs }: FeatureEntity): Record => { + const defaultAnchors: Array = []; + const { featureConfig = { anchors: defaultAnchors } } = featureConfigs; + const { anchors } = featureConfig; + + return anchors.reduce((previousEntries, { source }): Record => { + const { datasetUrn = '' } = source; + + return { ...previousEntries, [datasetUrn]: getFeatureFrameHdfsUrl(source) }; + }, {}); +}; + +/** + * Creates a mapping of top level editableConfig attributes to dot notation source paths, to enable future lookup of + * source properties when performing an operation on the original source representation + */ +export const editableConfigRenderAttrToSourcePath: Required<{ [K in keyof IFrameFeatureEditableConfig]: string }> = { + description: 'description', + baseEntity: 'baseEntity.baseEntityString', + classification: 'classification.classificationString', + category: 'category.categoryString', + inferType: 'inferType', + documentationLink: 'documentationLink' +}; + +/** + * Reads relevant properties on the Feature instance(s) and produces an mapping of replacement/substitutions + * to be interpolated in a Tagged Template + */ +export const substitutionDictionary = (features: FeatureEntity | Array): FeatureConfigDictionary => { + const propertyNotFound = '**PROPERTY-NOTFOUND**'; + // Make into single array if a single Feature or an array Features is presented + const featureList: Array = [].concat.apply(features); + // Enumerate the Feature dictionary names as indexable keys on the substitution dictionary + const dictionaryKeys: Array = ['frameMpName', 'frameMpVersion', 'featureName', 'listOfSources']; + + const definitions: Array = featureList.map( + ({ multiproductInfo, hdfsPaths = [], entity }): IFeatureGroup => { + const { version = propertyNotFound, name = propertyNotFound } = multiproductInfo || {}; + const featureName = entity && entity.name ? entity.name : propertyNotFound; + + return { + featureName, + frameMpName: name, + frameMpVersion: version, + listOfSources: hdfsPaths + }; + } + ); + + const emptyDictionary: Partial = {}; + // Group Features by dictionary keys + const dictionaryWithoutFrameMpVersionAggregation = dictionaryKeys.reduce( + (dictionary, dictionaryKey): Partial => ({ + ...dictionary, + [dictionaryKey]: groupBy(definitions, dictionaryKey) + }), + emptyDictionary + ) as Pick>; + + // Aggregate the frameMp group by unique frame versions + const frameMpWithVersion = flatten( + Object.values(dictionaryWithoutFrameMpVersionAggregation.frameMpName).map( + (frameMp): Array => uniqBy(frameMp, 'frameMpVersion') + ) + ); + + return { ...dictionaryWithoutFrameMpVersionAggregation, frameMpWithVersion }; +}; diff --git a/datahub-web/@datahub/data-models/addon/entity/institutional-memory.ts b/datahub-web/@datahub/data-models/addon/entity/institutional-memory.ts new file mode 100644 index 0000000000000..a2c24ddb9f9c2 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/institutional-memory.ts @@ -0,0 +1,57 @@ +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { IInstitutionalMemory } from '@datahub/metadata-types/types/aspects/institutional-memory'; +import { + readInstitutionalMemory as readInstitutionalMemoryApi, + writeInstitutionalMemory as writeInstitutionalMemoryApi +} from '@datahub/data-models/api/common/institutional-memory'; +import { returnDefaultIfNotFound } from '@datahub/utils/api/fetcher'; +import { InstitutionalMemory } from '@datahub/data-models/models/aspects/institutional-memory'; +import { NotImplementedError } from '@datahub/data-models/constants/entity/shared'; +import { set } from '@ember/object'; + +// TODO META-12149 this should be part of an Aspect. This fns can't live under BaseEntity as +// then we would have a circular dependency: +// BaseEntity -> InstitutionalMemory -> PersonEntity -> BaseEntity +/** + * Retrieves a list of wiki documents related to the particular entity instance + * @readonly + */ +export async function readInstitutionalMemory(this: DataModelEntityInstance): Promise> { + const apiEntityName = this.staticInstance.renderProps.apiEntityName; + if (apiEntityName) { + // Handling for expected possibility of receiving a 404 for institutional memory for this dataset, which would + // likely mean nothing has been added yet and we should allow the user to be the first to add something + const { elements: institutionalMemories } = await returnDefaultIfNotFound( + readInstitutionalMemoryApi(this.urn, apiEntityName), + { + elements: [] as Array + } + ); + + const institutionalMemoriesMap = institutionalMemories.map( + (link): InstitutionalMemory => new InstitutionalMemory(link) + ); + set(this, 'institutionalMemories', institutionalMemoriesMap); + return institutionalMemoriesMap; + } else { + throw new Error(NotImplementedError); + } +} + +/** + * Writes a list of wiki documents related to a particular entity instance to the api layer + */ +export async function writeInstitutionalMemory(this: DataModelEntityInstance): Promise { + const apiEntityName = this.staticInstance.renderProps.apiEntityName; + if (apiEntityName) { + const { institutionalMemories } = this; + institutionalMemories && + (await writeInstitutionalMemoryApi( + this.urn, + apiEntityName, + institutionalMemories.map((link): IInstitutionalMemory => link.readWorkingCopy()) + )); + } else { + throw new Error(NotImplementedError); + } +} diff --git a/datahub-web/@datahub/data-models/addon/entity/list/list-entity.ts b/datahub-web/@datahub/data-models/addon/entity/list/list-entity.ts new file mode 100644 index 0000000000000..b8aaa19a9b5f7 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/list/list-entity.ts @@ -0,0 +1,91 @@ +import { BaseEntity, statics, IBaseEntityStatics } from '@datahub/data-models/entity/base-entity'; +import { DataModelEntity } from '@datahub/data-models/constants/entity'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; +import { relationship } from '@datahub/data-models/relationships/decorator'; +import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; + +/** + * A ListEntity is an arbitrary list that a user has created to save a set of other types of + * entities and form a logical grouping for those entities. + * + * IMPORTANT WORDAGE: + * publisher - The publisher of a list is a person with edit permissions for that list, allowing them + * to change the metadata about the list or its contents. The user who created a list is + * automatically the sole publisher of that list. + * + * subscriber - A subscriber is someone who does not have publisher permissions on a list but still + * wishes to add it to their own namespace. A subscriber cannot edit the list, but will still be able + * to reference it from their own user profile page. This list is the same urn as the original list, + * meaning it is considered the same list and any updates by a publisher will be reflected in the + * subscribed list. + */ +@statics>() +export class ListEntity extends BaseEntity<{}> { + /** + * Identifier for the entity + */ + static displayName: 'lists' = 'lists'; + + /** + * Default renderProps for a list entity. We will not be dealing with list entity pages + */ + static get renderProps(): IEntityRenderProps { + return { + apiEntityName: 'N/A', + search: { + placeholder: '', + attributes: [], + isEnabled: false + } + }; + } + + /** + * Returns the static displayName identifier attached to the class + */ + get displayName(): 'lists' { + return this.staticInstance.displayName as 'lists'; + } + + /** + * A name of the list given by the user upon creation of this list + */ + name = ''; + + /** + * A short description about the contents or purpose of the list given by the publisher + */ + description?: string; + + /** + * The urn identifiers for the entities that are included in this list + */ + entityUrns: Array = []; + + /** + * The entities that are included in this list expressed as an array of instances of those entities + */ + entities?: Array; + + /** + * The urn identifiers for the people that are "publishers" of this list. Definition for a publisher + * can be found in the class documentation + */ + publisherUrns: Array = []; + + /** + * The publishers of the list expressed as instances of PersonEntity. Definition for a publisher + * can be found in the class documentation + */ + @relationship('people', 'publisherUrns') + publishers!: Array; + + /** + * The subscribers of a list expressed as instances of PersonEntity. Definition of a subscriber + * can be found in the class documentation + * + * Note: This feature is currently on the roadmap but not implemented yet so we're keeping here + * for definition only + */ + subscribers?: Array; +} diff --git a/datahub-web/@datahub/data-models/addon/entity/mock/mock-entity.ts b/datahub-web/@datahub/data-models/addon/entity/mock/mock-entity.ts new file mode 100644 index 0000000000000..0b3d71d945193 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/mock/mock-entity.ts @@ -0,0 +1,57 @@ +import { BaseEntity } from '@datahub/data-models/entity/base-entity'; +import { IBaseEntity } from '@datahub/metadata-types/types/entity/index'; +import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; + +/** + * Mock Entity for testing purposes only. The goal of this class is to + * simplify testing by creating an metadata agnostic entity type that is a concrete implementation of BaseEntity. + */ +export class MockEntity extends BaseEntity { + static displayName: 'mock-entity' = 'mock-entity'; + static kind = 'mock-entity'; + static get renderProps(): IEntityRenderProps { + return { + apiEntityName: 'mock-api', + search: { + placeholder: 'mock-placeholder', + attributes: [ + { + fieldName: 'pikachu', + showInAutoCompletion: false, + showInResultsPreview: false, + showInFacets: false, + displayName: 'Pikachu', + desc: 'A mock field', + example: 'Electrifying' + }, + { + fieldName: 'eevee', + showInAutoCompletion: false, + showInResultsPreview: false, + showInFacets: false, + displayName: 'Eevee', + desc: 'A mock field', + example: 'Evolutionary' + } + ] + }, + entityPage: { + route: 'entity-type.urn', + tabProperties: [], + defaultTab: 'mock-tab', + apiRouteName: 'mock-api' + } + }; + } + get displayName(): string { + return MockEntity.displayName; + } + + get name(): string { + return 'mock entity'; + } + + constructor(readonly urn: string = 'mock-urn') { + super(urn); + } +} diff --git a/datahub-web/@datahub/data-models/addon/entity/person/modules/acl.ts b/datahub-web/@datahub/data-models/addon/entity/person/modules/acl.ts new file mode 100644 index 0000000000000..9ccfa21178710 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/entity/person/modules/acl.ts @@ -0,0 +1,60 @@ +import { AccessControlAccessType, AclAccessStatus } from '@datahub/data-models/constants/entity/common/acl-access'; + +/** + * The AclAccess class represents a wrapper around an entity for the sake of representing an acl + * access object to that specific entity. This provides the metadata associated over that + */ +export class AclAccess { + /** + * Reference to the underlying entity for which this acl access object represents + */ + entity: T; + + /** + * The environment for which this acl access object is valid. Internally this equates to "fabric" + * but may also be expanded to include various platforms + */ + environment: string; + + /** + * The type of access that this access object is for, i.e. READ, WRITE + */ + accessType: Array; + + /** + * The current status of the access, i.e. ACTIVE or EXPIRED + */ + status: AclAccessStatus; + + /** + * If the ACL access can expire, then we will store it here. Otherwise, this will be null and + * implies that the user has standing access to the underlying entity data + */ + expiration: number | null; + + /** + * The business justification used previously to gain acl access for this entity + * Optional - only defined if owner is accessing own JIT ACLs + */ + businessJustification?: string; + + constructor( + entity: T, + metadata: { + environment: string; + accessType: Array; + status: AclAccessStatus; + expiration: number | null; + businessJustification?: string; + } + ) { + const { environment, accessType, status, expiration = null, businessJustification } = metadata; + this.entity = entity; + + this.environment = environment; + this.accessType = accessType; + this.status = status; + this.expiration = expiration; + this.businessJustification = businessJustification; + } +} diff --git a/datahub-web/@datahub/data-models/addon/entity/person/person-entity.ts b/datahub-web/@datahub/data-models/addon/entity/person/person-entity.ts index c428f32813283..a3577ff440898 100644 --- a/datahub-web/@datahub/data-models/addon/entity/person/person-entity.ts +++ b/datahub-web/@datahub/data-models/addon/entity/person/person-entity.ts @@ -1,27 +1,26 @@ import getActorFromUrn from '@datahub/data-models/utils/get-actor-from-urn'; import { computed, set } from '@ember/object'; +import { profileLinkBase } from '@datahub/data-models/constants/entity/person/links'; import { NotImplementedError } from '@datahub/data-models/constants/entity/shared'; import { getRenderProps, IPersonEntitySpecificConfigs, getPersonEntitySpecificRenderProps } from '@datahub/data-models/entity/person/render-props'; +import { AclAccess } from '@datahub/data-models/entity/person/modules/acl'; import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; import { BaseEntity, statics, IBaseEntityStatics } from '@datahub/data-models/entity/base-entity'; import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; import { DataModelEntity } from '@datahub/data-models/constants/entity'; import { IPersonEntityEditableProperties } from '@datahub/data-models/types/entity/person/props'; -import { ICorpUserEditableInfo, ICorpUserInfo } from '@datahub/metadata-types/types/entity/person/person-entity'; +import { ICorpUserInfo } from '@datahub/metadata-types/types/entity/person/person-entity'; import { readPerson, saveEditablePersonalInfo } from '@datahub/data-models/api/person/entity'; import { alias, not } from '@ember/object/computed'; +import { relationship } from '@datahub/data-models/relationships/decorator'; +import { ListEntity } from '@datahub/data-models/entity/list/list-entity'; +import { SocialAction } from '@datahub/data-models/constants/entity/person/social-actions'; +import { corpUserUrnBasePrefix } from '@datahub/data-models/config/urn/base-prefix'; -/** - * Base for all actor/user urns. A person's username is appended to this base - */ -const corpUserUrnBasePrefix = 'urn:li:corpuser:'; - -// TODO: [META-9699] Temporarily using IBaseEntity until we have a proposed API structure for -// IPersonEntity @statics>() export class PersonEntity extends BaseEntity { /** @@ -59,7 +58,8 @@ export class PersonEntity extends BaseEntity { * @static */ static urnFromUsername(username: string): string { - return typeof username === 'string' ? `${corpUserUrnBasePrefix}${username}` : username; + // TODO: [META-11362] Temporarily identity function until we have urn class + return `${corpUserUrnBasePrefix}${username}`; } /** @@ -70,7 +70,7 @@ export class PersonEntity extends BaseEntity { * TODO: [META-9698] Migrate to using LiPersonEntity */ static profileLinkFromUsername(username: string): string { - return `${username}`; + return `${profileLinkBase}${username}`; } /** @@ -84,10 +84,9 @@ export class PersonEntity extends BaseEntity { return getRenderProps(); } - static ownershipEntities: Array<{ - entity: DataModelEntity; - getter: keyof PersonEntity; - }> = [{ entity: DatasetEntity, getter: 'readDatasetOwnership' }]; + static ownershipEntities: Array<{ entity: DataModelEntity; getter: keyof PersonEntity }> = [ + { entity: DatasetEntity, getter: 'readDatasetOwnership' } + ]; /** * Properties for render props that are only applicable to the person entity. Dictates how UI @@ -113,9 +112,10 @@ export class PersonEntity extends BaseEntity { } /** - * The person's human readable name + * Manually saved fullname, useful for when we have the name available but don't want to waste a + * full api call on readEntity */ - fullName: string = ''; + fullName = ''; /** * The person's display name @@ -138,10 +138,11 @@ export class PersonEntity extends BaseEntity { title!: string; /** - * Retrieves a link to a person's basic profile picture url based on the base url provided to us + * Url link to the person's profile picture */ get profilePictureUrl(): string { - const fallbackImgUrl = this.pictureLink ? this.pictureLink : '/assets/images/default_avatar.png'; + // A not implemented error breaks the build, so we have a default instead + const fallbackImgUrl = PersonEntity.aviUrlFallback || '/assets/images/default_avatar.png'; const baseUrl = PersonEntity.aviUrlPrimary; return baseUrl ? baseUrl.replace('[username]', (): string => this.username) : fallbackImgUrl; @@ -153,10 +154,24 @@ export class PersonEntity extends BaseEntity { @alias('entity.info.managerUrn') reportsToUrn?: string; + /** + * Defines the relationship for the person that this person reports to + */ + @relationship('people', 'reportsToUrn') + manager?: PersonEntity; + /** * Actual reference to related entity for this person */ - reportsTo?: PersonEntity; + @computed('entity') + get reportsTo(): PersonEntity | void { + const { entity, manager } = this; + if (entity && manager) { + const managerEntity = manager; + set(managerEntity, 'name', entity.info.managerName || ''); + return managerEntity; + } + } /** * User's email address @@ -164,11 +179,6 @@ export class PersonEntity extends BaseEntity { @alias('entity.info.email') email!: string; - /** - * References the pictureLink on the editableInfo for the Person Entity - */ - @alias('entity.editableInfo.pictureLink') - pictureLink!: ICorpUserEditableInfo['pictureLink']; /** * A list of skills that this particular person entity has declared to own. */ @@ -181,7 +191,10 @@ export class PersonEntity extends BaseEntity { /** * A link to the user's linkedin profile */ - linkedinProfile?: string; + @computed() + get linkedinProfile(): string | void { + throw new Error(NotImplementedError); + } /** * A link to the user through slack @@ -191,7 +204,7 @@ export class PersonEntity extends BaseEntity { /** * The datasets for which the specified PersonEntity has access to the underlying data */ - datasetsWithAclAccess: Array = []; + datasetsWithAclAccess?: Array>; /** * List of datasets owned by this particular user entity @@ -229,9 +242,10 @@ export class PersonEntity extends BaseEntity { * Should be removed in favor of adding this to internal version of the class * TODO: [META-9698] Migrate to using LiPersonEntity */ - @computed('urn') + @computed('urn', 'entity') get username(): string { - return getActorFromUrn(this.urn); + const { entity } = this; + return entity ? entity.username : getActorFromUrn(this.urn); } /** @@ -292,8 +306,84 @@ export class PersonEntity extends BaseEntity { return saveEditablePersonalInfo(this.urn, { teams: props.teamTags, aboutMe: props.focusArea, - skills: props.skills, - pictureLink: this.pictureLink + skills: props.skills }); } + + /** + * The urns of the direct reports of this person, if they have any + * + * Note: Defined as a getter as the expectation is this property will be dependent on some + * other base proeprty on this class + */ + get directReportUrns(): Array { + // Note: The is intentionally left as a blank array, implementation pending + return []; + } + + /** + * This person's direct reports, expressed as other instances of person entity + */ + @relationship('people', 'directReportUrns') + directReports!: Array; + + /** + * The urns of the peers (same team, same level) as the person, if they have any + * + * Note: Defined as a getter as the expectation is this property will be dependent on some + * other base proeprty on this class* + */ + get peersUrns(): Array { + // Note: The is intentionally left as a blank array, implementation pending + return []; + } + + /** + * This person's peers, expressed as other instances of person entity + */ + @relationship('people', 'peersUrns') + peers!: Array; + + /** + * Opts out any PersonEntity from BEING liked, followed, or saved to a list + */ + allowedSocialActions = { + [SocialAction.LIKE]: false, + [SocialAction.FOLLOW]: false, + [SocialAction.SAVE]: false + }; + + /** + * Reference by id to the list of lists that this person has publisher access to + * Note: Refer to IMPORTANT WORDAGE in ListEntity for definition of publisher + */ + publishedListUrns: Array = []; + + /** + * This person's published lists, expressed as the list entity instances + */ + @relationship('lists', 'publishedListUrns') + publishedLists!: Array; + + /** + * Urns for the entities that this person has liked + */ + likedEntityUrns: Array = []; + + /** + * Urns for the entities that this person has followed + */ + followedEntityUrns: Array = []; + + /** + * Placeholder function for the method that will trigger a follow function for an entity + * @param _entityUrn - urn for the entity that we want to follow + */ + followEntity(_entityUrn: string): void {} + + /** + * Placeholder function for the method that will trigger a like function for an entity + * @param _entityUrn - urn for the entity that we want to like + */ + likeEntity(_entityUrn: string): void {} } diff --git a/datahub-web/@datahub/data-models/addon/entity/person/render-props.ts b/datahub-web/@datahub/data-models/addon/entity/person/render-props.ts index 66a8aab428041..424fcabd3f7f2 100644 --- a/datahub-web/@datahub/data-models/addon/entity/person/render-props.ts +++ b/datahub-web/@datahub/data-models/addon/entity/person/render-props.ts @@ -1,6 +1,9 @@ -import { IEntityRenderProps } from '@datahub/data-models/types/entity/rendering/entity-render-props'; -import { Tab, ITabProperties } from '@datahub/data-models/constants/entity/shared/tabs'; -import { getTabPropertiesFor } from '@datahub/data-models/entity/utils'; +import { + IEntityRenderProps, + IEntityRenderPropsEntityPage, + ITabProperties +} from '@datahub/data-models/types/entity/rendering/entity-render-props'; +import { PersonTab, getPersonTabPropertiesFor } from '@datahub/data-models/constants/entity/person/tabs'; /** * Specific render properties only to the person entity @@ -21,21 +24,36 @@ export interface IPersonEntitySpecificConfigs { * Class properties common across instances * Dictates how visual ui components should be rendered * Implemented as a getter to ensure that reads are idempotent + * + * Making sure entityPage is not marked optional in the types as we know it is defined */ -export const getRenderProps = (): IEntityRenderProps => { - const tabIds = [Tab.UserOwnership]; +export const getRenderProps = (): IEntityRenderProps & { entityPage: IEntityRenderPropsEntityPage } => { + const tabIds = [PersonTab.UserOwnership]; return { + apiEntityName: 'corpuser', entityPage: { - tabIds, + apiRouteName: 'corpusers', route: 'user.profile', - tabProperties: getTabPropertiesFor(tabIds), - defaultTab: Tab.UserOwnership, + tabProperties: getPersonTabPropertiesFor(tabIds), + defaultTab: PersonTab.UserOwnership, attributePlaceholder: '–' }, // Placeholder information search: { attributes: [ + { + fieldName: 'reportsTo.entityLink.link', + component: { + name: 'link/optional-value' + }, + showInResultsPreview: true, + showInAutoCompletion: false, + showInFacets: false, + displayName: 'Manager', + desc: '', + example: '' + }, { fieldName: 'teamTags', showInResultsPreview: true, @@ -53,23 +71,32 @@ export const getRenderProps = (): IEntityRenderProps => { displayName: 'Ask me about', desc: '', example: '' + }, + { + showInAutoCompletion: false, + fieldName: 'inactive', + showInResultsPreview: false, + displayName: 'Inactive', + showInFacets: false, + desc: '', + example: '', + tagComponent: { + name: 'custom-search-result-property-component/tag', + options: { + state: 'alert', + text: 'Inactive' + } + } } ], searchResultEntityFields: { description: 'title', - pictureUrl: 'editableInfo.pictureLink', - name: 'info.fullName' + pictureUrl: 'profilePictureUrl' }, showFacets: false, placeholder: 'Search for People...', - apiName: 'corpuser', - autocompleteNameField: 'fullName' - }, - // Placeholder information - browse: { - showCount: false, - showHierarchySearch: false, - entityRoute: 'user.profile' + autocompleteNameField: 'fullName', + isEnabled: true } }; }; diff --git a/datahub-web/@datahub/data-models/addon/entity/utils/entities.ts b/datahub-web/@datahub/data-models/addon/entity/utils/entities.ts index dbc4814f632a8..13d33ae99f02d 100644 --- a/datahub-web/@datahub/data-models/addon/entity/utils/entities.ts +++ b/datahub-web/@datahub/data-models/addon/entity/utils/entities.ts @@ -2,9 +2,6 @@ import { DataModelEntity } from '@datahub/data-models/constants/entity'; import { capitalize } from '@ember/string'; import { arrayToString } from '@datahub/utils/array/array-to-string'; -export const listOfEntitiesMap = (mapFn: (d: DataModelEntity) => T): Array => - Object.values(DataModelEntity).map(mapFn); - /** * Outputs the list of available entities readable by humans, eg: Datasets or UMP Metrics */ diff --git a/datahub-web/@datahub/data-models/addon/entity/utils/facets.ts b/datahub-web/@datahub/data-models/addon/entity/utils/facets.ts index bfcdd29f2938a..1fc7f623a454f 100644 --- a/datahub-web/@datahub/data-models/addon/entity/utils/facets.ts +++ b/datahub-web/@datahub/data-models/addon/entity/utils/facets.ts @@ -1,24 +1,45 @@ -import { ISearchEntityRenderProps } from '@datahub/data-models/types/entity/rendering/search-entity-render-prop'; import { typeOf } from '@ember/utils'; import { IFacetsSelectionsMap, IFacetSelections } from '@datahub/data-models/types/entity/facets'; +import { ISearchEntityRenderProps } from '@datahub/data-models/types/search/search-entity-render-prop'; +import { KeyNamesWithValueType } from '@datahub/utils/types/base'; /** - * Will return an key value object with forced facets given a list of fields + * Filtering field names that returns array + */ +type FieldNames = KeyNamesWithValueType | undefined>; + +/** + * returns key/value pairs depending on key of field + * @param fields + * @param filterField */ -export const getFacetDefaultValueForEntity = ( - fields: Array +const facetFilter = ( + fields: Array, + filterField: FieldNames ): Record> => { return fields.reduce((facetsApiParams: Record>, field): Record> => { - if (typeOf(field.facetDefaultValue) !== 'undefined') { + if (filterField && typeOf(field[filterField]) !== 'undefined') { return { ...facetsApiParams, - [field.fieldName]: field.facetDefaultValue || [] + [field.fieldName]: field[filterField] || [] }; } return facetsApiParams; }, {}); }; +/** + * Will return an key value object with forced facets given a list of fields + */ +export const getFacetForcedValueForEntity = (fields: Array): Record> => + facetFilter(fields, 'forcedFacetValue'); + +/** + * Will return an key value object with deafult facets given a list of fields + */ +export const getFacetDefaultValueForEntity = (fields: Array): Record> => + facetFilter(fields, 'facetDefaultValue'); + /** * Transforms an input like this: * { diff --git a/datahub-web/@datahub/data-models/addon/entity/utils/fields.ts b/datahub-web/@datahub/data-models/addon/entity/utils/fields.ts index 921356d762ecc..46c389f833866 100644 --- a/datahub-web/@datahub/data-models/addon/entity/utils/fields.ts +++ b/datahub-web/@datahub/data-models/addon/entity/utils/fields.ts @@ -1,4 +1,4 @@ -import { ISearchEntityRenderProps } from '@datahub/data-models/types/entity/rendering/search-entity-render-prop'; +import { ISearchEntityRenderProps } from '@datahub/data-models/types/search/search-entity-render-prop'; /** * Default sorting fn for ISearchEntityRenderProps diff --git a/datahub-web/@datahub/data-models/addon/entity/utils/index.ts b/datahub-web/@datahub/data-models/addon/entity/utils/index.ts deleted file mode 100644 index 5b524b8d23218..0000000000000 --- a/datahub-web/@datahub/data-models/addon/entity/utils/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Tab, TabProperties, ITabProperties } from '@datahub/data-models/constants/entity/shared/tabs'; - -/** - * Lists the TabProperties for a list of TabIds - * @param {Array} tabIds - */ -export const getTabPropertiesFor = (tabIds: Array): Array => - tabIds.map(tabId => TabProperties[tabId]); diff --git a/datahub-web/@datahub/data-models/addon/mirage-addon/factories/dataset.ts b/datahub-web/@datahub/data-models/addon/mirage-addon/factories/dataset.ts new file mode 100644 index 0000000000000..bec68a4b1e358 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/mirage-addon/factories/dataset.ts @@ -0,0 +1,56 @@ +import { Factory, faker } from 'ember-cli-mirage'; +import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; + +// URN is needed for search results +export default Factory.extend({ + id(i: number): number { + return i; + }, + description: faker.lorem.paragraph(1), + platformNativeType: faker.random.arrayElement(['TABLE', 'VIEW', 'DIRECTORY', 'STREAM', 'BUCKET']), + removed: false, + name(i: number): string { + return `dataset-${i}`; + }, + platform: faker.random.arrayElement( + // TODO: [META-11778] This should be no longer necessary once we provide a more elegant solution + // We remove the UMP platform from the random chooser as this can create issues when the + // platform is not expected to be UMP + Object.values(DatasetPlatform).filter((platform): boolean => platform !== DatasetPlatform.UMP) + ), + origin: 'PROD', //defaults to PROD + uri(): string { + return `urn:li:dataset:(urn:li:dataPlatform:${this.platform},${this.name},${this.origin})`; + }, + urn(): string { + return this.uri as string; + }, + deploymentInfos: () => [], + tags: () => [], + created: () => ({ + actor: faker.name.firstName(), + time: faker.date.past().getTime() + }), + lastModified: () => ({ + actor: faker.name.firstName(), + time: faker.date.past().getTime() + }), + health: () => ({ + validations: [], + score: Math.random() + }) +}); + +declare module 'ember-cli-mirage/types/registries/schema' { + interface IMirageSchemaRegistry { + datasets: Com.Linkedin.Dataset.Dataset & { urn: string }; + dataset?: Com.Linkedin.Dataset.Dataset & { urn: string }; + } +} + +declare module 'ember-cli-mirage/types/registries/model' { + interface IMirageModelRegistry { + datasets: Com.Linkedin.Dataset.Dataset & { urn: string }; + dataset?: Com.Linkedin.Dataset.Dataset & { urn: string }; + } +} diff --git a/datahub-web/@datahub/data-models/addon/mirage-addon/fixtures/dataset-ownership.ts b/datahub-web/@datahub/data-models/addon/mirage-addon/fixtures/dataset-ownership.ts new file mode 100644 index 0000000000000..2eb637f7b3e37 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/mirage-addon/fixtures/dataset-ownership.ts @@ -0,0 +1,33 @@ +import { IOwner } from '@datahub/data-models/types/entity/dataset/ownership'; +import { OwnerUrnNamespace } from '@datahub/data-models/constants/entity/dataset/ownership'; + +export default [ + { + confirmedBy: 'test', + email: 'confirmed-owner@example.com', + idType: 'USER', + isActive: true, + isGroup: true, + modifiedTime: Date.now(), + name: 'confirmed owner', + userName: 'fakeconfirmedowner', + namespace: OwnerUrnNamespace.corpUser, + source: 'USER_INTERFACE', + subType: null, + type: 'DATA_OWNER' + }, + { + confirmedBy: 'test', + email: 'suggested-owner@example.com', + idType: 'USER', + isActive: true, + isGroup: true, + modifiedTime: Date.now(), + name: 'suggested owner', + userName: 'fakesuggestedowner', + namespace: OwnerUrnNamespace.corpUser, + source: 'NUAGE', + subType: null, + type: 'DATA_OWNER' + } +] as Array; diff --git a/datahub-web/@datahub/data-models/addon/mirage-addon/mirage-config.ts b/datahub-web/@datahub/data-models/addon/mirage-addon/mirage-config.ts new file mode 100644 index 0000000000000..fdc38f42f65af --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/mirage-addon/mirage-config.ts @@ -0,0 +1,14 @@ +import { Server } from 'ember-cli-mirage'; +import { getApiRoot, ApiVersion } from '@datahub/utils/api/shared'; +import { ownershipEndpoint } from '@datahub/data-models/api/dataset/ownership'; +import { getDatasetOwnership } from '@datahub/data-models/mirage-addon/test-helpers/datasets/ownership'; + +/** + * Shareable mirage/config for dependent modules + * @param {Server} server the passed in Mirage server instance in the calling test + */ +export const setup = (server: Server): void => { + server.namespace = getApiRoot(ApiVersion.v2); + + server.get(`datasets/:urn/${ownershipEndpoint}`, getDatasetOwnership); +}; diff --git a/datahub-web/@datahub/data-models/addon/mirage-addon/scenarios/dataset-ownership.ts b/datahub-web/@datahub/data-models/addon/mirage-addon/scenarios/dataset-ownership.ts new file mode 100644 index 0000000000000..00704b725e2c0 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/mirage-addon/scenarios/dataset-ownership.ts @@ -0,0 +1,12 @@ +import { Server } from 'ember-cli-mirage'; +import { testDatasetOwnershipUrn } from '@datahub/data-models/mirage-addon/test-helpers/datasets/ownership'; +import owners from '@datahub/data-models/mirage-addon/fixtures/dataset-ownership'; + +export default function(server: Server): void { + server.createList('datasetOwnership', 3); + + server.createList('datasetOwnership', 1, { + urn: testDatasetOwnershipUrn, + owners + }); +} diff --git a/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/datasets/ownership.ts b/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/datasets/ownership.ts new file mode 100644 index 0000000000000..f0b38657fe5c9 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/datasets/ownership.ts @@ -0,0 +1,14 @@ +import { HandlerFunction, Schema, Request, MirageRecord } from 'ember-cli-mirage'; +import { IOwnerResponse } from '@datahub/data-models/types/entity/dataset/ownership'; + +export const testDatasetOwnershipUrn = 'urn:li:dataset:(urn:li:dataPlatform:hdfs,kebab-db-name,CORP)'; + +/** + * For the supplied urn, find or populate the DB with a reference to the IOwnerResponse + * @param {Schema} schema the Mirage schema + * @param {Request} { params: { urn } } parameters supplied with the user request + */ +export const getDatasetOwnership: HandlerFunction = ( + schema: Schema, + { params: { urn } }: Request +): MirageRecord => schema.db.datasetOwnerships.firstOrCreate({ urn: String(urn) }); diff --git a/datahub-web/@datahub/data-models/tests/dummy/app/mocks/entity/dataset/schema.ts b/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/datasets/schema.ts similarity index 100% rename from datahub-web/@datahub/data-models/tests/dummy/app/mocks/entity/dataset/schema.ts rename to datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/datasets/schema.ts diff --git a/datahub-web/@datahub/data-models/tests/helpers/setup-sinon-test.ts b/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/setup-sinon-test.ts similarity index 100% rename from datahub-web/@datahub/data-models/tests/helpers/setup-sinon-test.ts rename to datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/setup-sinon-test.ts diff --git a/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/test-data-models-service.ts b/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/test-data-models-service.ts new file mode 100644 index 0000000000000..708f6027950e4 --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/test-data-models-service.ts @@ -0,0 +1,74 @@ +import { TestPersonEntity } from '@datahub/data-models/mirage-addon/test-helpers/test-entities/test-person-entity'; +import { + IDataModelEntity, + DataModelEntity, + DataModelName, + DataModelEntityInstance +} from '@datahub/data-models/constants/entity'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; +import DataModelsService from '@datahub/data-models/services/data-models'; + +/** + * Maps DataModelEntity to our test entities instead where applicable + */ +interface ITestDataModelEntity extends IDataModelEntity { + [PersonEntity.displayName]: typeof TestPersonEntity; +} + +/** + * Overrides the map of DataModelEntity with our own mapping to test versions of the entities + * (where necessary) + */ +export const TestDataModelEntity: ITestDataModelEntity = { + ...DataModelEntity, + [PersonEntity.displayName]: TestPersonEntity +}; + +/** + * Because the open source data models entities can sometimes be too generic, we will want to be + * able to provide some implementation to the class definitions in order to test certain + * behaviors that rely on those implementations. In order to do so, we create "test entities" that + * extend from the open source versions of the entities that provide these implementations. These + * test entities can also provide an example of how an adopter of DataHub can define their own + * entity implementations. + * + * Since we have these entities, the data models service sometimes needs to be mapped to the test + * entities instead of the open source entities. We create this extended service to apply that map + * instead and can be stubbed in place of the regular service when needed + */ +export default class TestDataModelsService extends DataModelsService { + /** + * Overrides dataModelEntitiesMapping with a mapping to our test entities instead + */ + dataModelEntitiesMap = TestDataModelEntity; + + /** + * Overrides getModel with the map to our test entities instead + */ + getModel(modelKey: K): typeof TestDataModelEntity[K] { + return TestDataModelEntity[modelKey]; + } + + /** + * Overrides createInstance with our typings for testing instances + */ + createInstance( + modelKey: K, + urn: string + ): Promise> { + return super.createInstance(modelKey as DataModelName, urn) as Promise>; + } + + /** + * Overrides open source generic method wih our specific test entity typings + */ + createPartialInstance( + modelName: K, + data: DataModelEntityInstance['entity'] | string + ): InstanceType { + return super.createPartialInstance( + modelName as DataModelName, + data as DataModelEntityInstance['entity'] + ) as InstanceType; + } +} diff --git a/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/test-entities/test-person-entity.ts b/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/test-entities/test-person-entity.ts new file mode 100644 index 0000000000000..54a3f9fcd7c5e --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/mirage-addon/test-helpers/test-entities/test-person-entity.ts @@ -0,0 +1,34 @@ +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; +import { oneWay } from '@ember/object/computed'; + +/** + * Creates more specific items to test the generic PersonEntity instance when needed. + */ +export class TestPersonEntity extends PersonEntity { + /** + * Allows us to manually set directReportUrns from outside the class by modifying this property + * instead + */ + manualDirectReportUrns: Array = []; + + /** + * Because there's no specific implementation for directReportUrns, which is a computed property, + * we cannot manually set this property from outside the class in the open source PersonEntity + * class. This is an issue as we want to test the @relationship decorator for directReports, + * which relies on this property. Therefore, we override the definition here with a "proper" + * (sort of) implementation in order to run those tests. + */ + @oneWay('manualDirectReportUrns') + directReportUrns!: Array; + + /** + * Same as manualDirectReportUrns, for testing peersUrns relationship + */ + manualPeersUrns: Array = []; + + /** + * Same as directReportsUrns, to test peers relationship + */ + @oneWay('manualPeersUrns') + peersUrns!: Array; +} diff --git a/datahub-web/@datahub/data-models/addon/models/aspects/institutional-memory.ts b/datahub-web/@datahub/data-models/addon/models/aspects/institutional-memory.ts index c003269cd2eb8..15deebcf9b57d 100644 --- a/datahub-web/@datahub/data-models/addon/models/aspects/institutional-memory.ts +++ b/datahub-web/@datahub/data-models/addon/models/aspects/institutional-memory.ts @@ -1,4 +1,4 @@ -import { IInstitutionalMemory } from '@datahub/data-models/types/entity/common/wiki/institutional-memory'; +import { IInstitutionalMemory } from '@datahub/metadata-types/types/aspects/institutional-memory'; import { oneWay } from '@ember/object/computed'; import { computed } from '@ember/object'; import { msTimeAsUnix } from '@datahub/utils/helpers/ms-time-as-unix'; diff --git a/datahub-web/@datahub/data-models/addon/relationships/creator.ts b/datahub-web/@datahub/data-models/addon/relationships/creator.ts new file mode 100644 index 0000000000000..7dfb5fac99c5a --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/relationships/creator.ts @@ -0,0 +1,86 @@ +import { DataModelName, IDataModelEntity, DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { + IRelationshipDecoratedClassPrototype, + DataModelsRelationshipGetter +} from '@datahub/data-models/types/relationships/decorator-types'; +import { isArray } from '@ember/array'; + +/** + * Because we're dealing with a prototype that we don't want to expose to the typescript interface + * for these class objects, this custom interface is used in place of those + */ +interface IRelationshipDecoratorModifiedEntity { + prototype: IRelationshipDecoratedClassPrototype; +} + +/** + * Shortcut typing for determining whether we have one instance of an entity or an array of instances + */ +type OneOrMany = T extends string ? K : Array; + +/** + * Given an entity type and function to create an instance as a callback, we create a getter + * function that, for a urn or array of urns, returns the instances for those urns + * @param {DataModelName} entityType - the name identifier for the entity type for which we want + * to provide an instance + * @param {Function} instanceCreator - a function that is given to fetch an instance of the entity + * type we have specified + */ +const createRelationshipGetter = ( + entityType: T, + instanceCreator: (entityType: DataModelName, urn: string) => DataModelEntityInstance +): DataModelsRelationshipGetter> => { + const getter = >( + urns: M + ): OneOrMany> | undefined => { + if (typeof urns === 'string') { + return instanceCreator(entityType, urns) as OneOrMany>; + } else if (isArray(urns)) { + return (urns as Array).map( + (urn): DataModelEntityInstance => instanceCreator(entityType, urn) + ) as OneOrMany>; + } + + return; + }; + + return getter; +}; + +/** + * Given an entity class object (i.e. PersonEntity), return the metadata for the relationships + * for that class, given by the use of the @relationship decorator + * @param {IRelationshipDecoratorModifiedEntity} entityClass - the entity class object for a + * specific entity type + */ +const readRelationshipDecoratorMetadata = (entityClass: IRelationshipDecoratorModifiedEntity): Array => + Array.from(entityClass.prototype.__relationships || new Set()); + +/** + * Given a class object that has been modified with the @relationship decorator, and a creator + * function, modifies that class object so that the relationship getters can be attached to the + * class and be accessible by the functions given in the decorator logic + * @param {unknown} entityClass - expected to be a modified DataModelEntity class, typed as unknown + * for the noted reason below + * @param {Function} instanceCreator - callback function that creates an instance of an entity + * type when given the type and a corresponding urn + */ +// Note: We type entityClass as unknown as we've hidden the prototype modifications from typescript +// so that these properties are not accidentally accessed outside of the relationship decorator and +// creator process +export const assignRelationshipGettersToClassObject = ( + entityClass: Function, + instanceCreator: (entityType: DataModelName, urn: string) => DataModelEntityInstance +): void => { + // Even though our parameter lacks proper type safety, we assert the type we are working with + // from here on out for some limited type safety + const klass = entityClass as IRelationshipDecoratorModifiedEntity; + const relatedEntities = readRelationshipDecoratorMetadata(klass); + + relatedEntities.forEach((entityType): void => { + klass.prototype.__relationshipGetters = { + ...(klass.prototype.__relationshipGetters || {}), + [entityType]: createRelationshipGetter(entityType, instanceCreator) + }; + }); +}; diff --git a/datahub-web/@datahub/data-models/addon/relationships/decorator.ts b/datahub-web/@datahub/data-models/addon/relationships/decorator.ts new file mode 100644 index 0000000000000..46839882bcb6d --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/relationships/decorator.ts @@ -0,0 +1,57 @@ +import { computed } from '@ember/object'; +import { DataModelName, DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { + IRelationshipDecoratedClassPrototype, + DataModelsRelationshipGetter +} from '@datahub/data-models/types/relationships/decorator-types'; + +/** + * Decorates a property in a similar way to Ember computed property macros to return an entity or + * entity list of the relationship type specified. This incorporates the computed decorator with + * a dependent key so that our decorated property can be recalculated whenever the underlying + * dependent data changes. + * @param {DataModelName} entityType - name of the data model that specifies the entity type + * @param {string} dependentKey - a key that the decorator may depend on for computed property + * + * @example + * Usage example: + * ``` + * class PersonEntity extends BaseEntity<{}> { + * ... + * directReportUrns: Array = ['charmander', 'bulbasaur', 'squirtle']; + * + * @relationship('people', 'directReportUrns') + * directReports!: Array; + * } + * ``` + */ +export const relationship = function(entityType: DataModelName, dependentKey: string): PropertyDecorator { + // Defines a getter function for us to use as our computed function to fetch the data model + // instances + function getEntityInstanceForDependentKey( + this: IRelationshipDecoratedClassPrototype + ): DataModelEntityInstance | Array | undefined { + const getters: Partial>> = + this.__relationshipGetters || {}; + const getterForEntityType = getters[entityType]; + return getterForEntityType ? getterForEntityType(this[dependentKey] as string | Array) : undefined; + } + + // Gives us the MethodDecorator given by the @computed decorator from Ember + const computedFn: MethodDecorator = computed(dependentKey, getEntityInstanceForDependentKey); + + // Note: Underlying Ember implementation for computed macros, which we are taking advantage of, + return function( + target: IRelationshipDecoratedClassPrototype, + propertyKey: string, + ...args: Array + ): void | PropertyDescriptor { + // Ensure we're tracking what this entity has access to + target.__relationships = target.__relationships || new Set(); + target.__relationships.add(entityType); + const descriptor = args[0] as PropertyDescriptor; + + // Returning the computed function actually attaches the "computed-ness" and new getter to the class + return computedFn(target, propertyKey, descriptor); + }; +}; diff --git a/datahub-web/@datahub/data-models/addon/services/data-models.ts b/datahub-web/@datahub/data-models/addon/services/data-models.ts index fdf9ea959c9e1..4a95a41bd90b6 100644 --- a/datahub-web/@datahub/data-models/addon/services/data-models.ts +++ b/datahub-web/@datahub/data-models/addon/services/data-models.ts @@ -1,8 +1,16 @@ import Service from '@ember/service'; -import { DataModelEntity, DataModelName, DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { + DataModelEntity, + DataModelName, + DataModelEntityInstance, + DataModelEntityApiNameMap +} from '@datahub/data-models/constants/entity'; import { set } from '@ember/object'; import { isBaseEntity } from '@datahub/data-models/entity/base-entity'; import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; +import { assignRelationshipGettersToClassObject } from '@datahub/data-models/relationships/creator'; +import { IDataModelEntity } from '@datahub/data-models/constants/entity'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; /** * Encapsulating Guards logic into this class so it is easier to move if data-models grow @@ -22,7 +30,7 @@ export class Guards { * List of unguarded entities */ get unGuardedEntitiesDisplayName(): Array { - return [DatasetEntity.displayName]; + return [DatasetEntity.displayName, PersonEntity.displayName]; } /** @@ -68,6 +76,13 @@ export default class DataModelsService extends Service { return DataModelEntity[modelKey]; } + /** + * Returns a Entity Data Model class given its api name + */ + getModelByApiName(apiName: string): IDataModelEntity[keyof IDataModelEntity] | void { + return DataModelEntityApiNameMap[apiName]; + } + /** * Creates a partial instance given the "entity" part of the model. This is useful for bulk * loads like Search or Lists or if we want to rely on the data models service to create an @@ -85,7 +100,7 @@ export default class DataModelsService extends Service { if (typeof data === 'string') { instance = new EntityClass(data) as InstanceType; } else { - const urn: string = isBaseEntity(data) && data.urn ? data.urn : ''; + const urn = isBaseEntity(data) ? data.urn : ''; instance = new EntityClass(urn) as InstanceType; set(instance, 'entity', data as typeof instance['entity']); } @@ -119,6 +134,28 @@ export default class DataModelsService extends Service { * class and within any child classes without a direct import */ dataModelEntitiesMap = DataModelEntity; + + /** + * Sets up the relationships mapping on all of our data model entity classes based on the meta + * information given by the @relationship decorator + */ + _setupRelationships(): void { + const { dataModelEntitiesMap } = this; + const dataModelEntities = Object.values(dataModelEntitiesMap); + dataModelEntities.forEach((entity): void => { + assignRelationshipGettersToClassObject(entity, this.createPartialInstance.bind(this)); + }); + } + + /** + * Inits the services. + * NOTE: This needs to be an 'init' fn as we need to invoke this after default values of dataModelEntitiesMap are set + * for more info, see this link: https://github.com/ember-decorators/ember-decorators/issues/329#issuecomment-443771927 + */ + init(): void { + super.init(); + this._setupRelationships(); + } } // DO NOT DELETE: this is how TypeScript knows how to look up your services. diff --git a/datahub-web/@datahub/data-models/addon/utils/entity-route-name-resolver.ts b/datahub-web/@datahub/data-models/addon/utils/entity-route-name-resolver.ts index be38dcb07aafe..fc371c8132a94 100644 --- a/datahub-web/@datahub/data-models/addon/utils/entity-route-name-resolver.ts +++ b/datahub-web/@datahub/data-models/addon/utils/entity-route-name-resolver.ts @@ -1,9 +1,7 @@ import { resolveDynamicRouteName } from '@datahub/utils/routes/routing'; -import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; import { MaybeRouteInfoWithAttributes } from '@datahub/utils/types/vendor/routerjs'; -import { listOfEntitiesMap } from '@datahub/data-models/entity/utils/entities'; import Transition from '@ember/routing/-private/transition'; -import { DataModelEntity } from '@datahub/data-models/constants/entity'; +import { DataModelEntity, DataModelName } from '@datahub/data-models/constants/entity'; /** * Indexes the route names we care about to functions that resolve the placeholder value @@ -15,8 +13,8 @@ export const mapOfRouteNamesToResolver: Record route.attributes ? `browse.${route.attributes.entity}` : route.name, - 'datasets.dataset.tab': (route: MaybeRouteInfoWithAttributes): string => - route.attributes ? `${DatasetEntity.displayName}.${route.attributes.currentTab}` : route.name + 'entity-type.urn.tab': (route: MaybeRouteInfoWithAttributes): string => + route.attributes ? `${route.attributes.entityClass.displayName}.${route.attributes.tabSelected}` : route.name }; /** @@ -24,16 +22,17 @@ export const mapOfRouteNamesToResolver: Record - listOfEntitiesMap((e): DataModelEntity['displayName'] => e.displayName).some( - (entityName: DataModelEntity['displayName']): boolean => routeName.startsWith(entityName) - ); +const routeNameIsEntityRoute = (routeName: string, entitiesAvailable: Array): boolean => + entitiesAvailable.some((entityName: DataModelEntity['displayName']): boolean => routeName.startsWith(entityName)); /** * Check if the route info instance has a name that is considered an entity route * @returns {boolean} */ -export const isRouteEntityPageRoute = (routeBeingTransitionedTo: Transition['to' | 'from']): boolean => { +export const isRouteEntityPageRoute = ( + routeBeingTransitionedTo: Transition['to' | 'from'], + entitiesAvailable: Array +): boolean => { const routeName = resolveDynamicRouteName(mapOfRouteNamesToResolver, routeBeingTransitionedTo); - return Boolean(routeName && routeNameIsEntityRoute(routeName)); + return Boolean(routeName && routeNameIsEntityRoute(routeName, entitiesAvailable)); }; diff --git a/datahub-web/@datahub/data-models/addon/utils/get-actor-from-urn.ts b/datahub-web/@datahub/data-models/addon/utils/get-actor-from-urn.ts index bbe88c57e2eb0..874da818d02e5 100644 --- a/datahub-web/@datahub/data-models/addon/utils/get-actor-from-urn.ts +++ b/datahub-web/@datahub/data-models/addon/utils/get-actor-from-urn.ts @@ -1,15 +1,7 @@ -import { actorUrnBasePrefix } from '@datahub/data-models/config/urn/actor'; +import { corpUserUrnBasePrefix, actorUrnBasePrefix } from '@datahub/data-models/config/urn/base-prefix'; /** * Returns an actor (username) from a user's urn. * @param urn - expected to be a urn for a user */ -export const getActorFromUrn = (urn: string): string => { - if (typeof urn !== 'string') { - return urn; - } - - return urn.replace(actorUrnBasePrefix, ''); -}; - -export default getActorFromUrn; +export default (urn: string): string => urn.replace(corpUserUrnBasePrefix, '').replace(actorUrnBasePrefix, ''); diff --git a/datahub-web/@datahub/data-models/addon/utils/get-group-from-urn.ts b/datahub-web/@datahub/data-models/addon/utils/get-group-from-urn.ts new file mode 100644 index 0000000000000..bc3380782adaa --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/utils/get-group-from-urn.ts @@ -0,0 +1,7 @@ +import { gridGroupUrnBasePrefix } from '@datahub/data-models/config/urn/base-prefix'; + +/** + * Returns the grid group name from its urn. + * @param urn - expected to be a urn for a grid group + */ +export const getGridGroupFromUrn = (urn: string): string => urn.replace(gridGroupUrnBasePrefix, ''); diff --git a/datahub-web/@datahub/data-models/addon/utils/ownership.ts b/datahub-web/@datahub/data-models/addon/utils/ownership.ts new file mode 100644 index 0000000000000..71c0c5dfb650b --- /dev/null +++ b/datahub-web/@datahub/data-models/addon/utils/ownership.ts @@ -0,0 +1,7 @@ +import { DataModelEntity } from '@datahub/data-models/constants/entity/index'; + +/** + * Given a data model entity, returns whether that entity is valid for ownership + * @param {DataModelEntity} entity - data model entity class we want to test + */ +export const isOwnableEntity = (entity: DataModelEntity): boolean => Boolean(entity.renderProps?.userEntityOwnership); diff --git a/datahub-web/@datahub/data-models/app/components/get-entity-by-urn.js b/datahub-web/@datahub/data-models/app/components/get-entity-by-urn.js new file mode 100644 index 0000000000000..4b8af75a75931 --- /dev/null +++ b/datahub-web/@datahub/data-models/app/components/get-entity-by-urn.js @@ -0,0 +1 @@ +export { default } from '@datahub/data-models/components/get-entity-by-urn'; diff --git a/datahub-web/@datahub/data-models/app/mirage-factories/dataset-ownership.js b/datahub-web/@datahub/data-models/app/mirage-factories/dataset-ownership.js new file mode 100644 index 0000000000000..2df3737817628 --- /dev/null +++ b/datahub-web/@datahub/data-models/app/mirage-factories/dataset-ownership.js @@ -0,0 +1 @@ +export { default } from '@datahub/data-models/mirage-factories/dataset-ownership'; diff --git a/datahub-web/@datahub/data-models/app/mirage-models/dataset-ownership.js b/datahub-web/@datahub/data-models/app/mirage-models/dataset-ownership.js new file mode 100644 index 0000000000000..e56a7b4c37c58 --- /dev/null +++ b/datahub-web/@datahub/data-models/app/mirage-models/dataset-ownership.js @@ -0,0 +1 @@ +export { default } from '@datahub/data-models/mirage-models/dataset-ownership'; diff --git a/datahub-web/@datahub/data-models/app/utils/get-group-from-urn.js b/datahub-web/@datahub/data-models/app/utils/get-group-from-urn.js new file mode 100644 index 0000000000000..f574656bef7f0 --- /dev/null +++ b/datahub-web/@datahub/data-models/app/utils/get-group-from-urn.js @@ -0,0 +1 @@ +export { default } from '@datahub/data-models/utils/get-group-from-urn'; diff --git a/datahub-web/@datahub/data-models/ember-cli-build.js b/datahub-web/@datahub/data-models/ember-cli-build.js index dc5a39e1b796e..d9648581d66f8 100644 --- a/datahub-web/@datahub/data-models/ember-cli-build.js +++ b/datahub-web/@datahub/data-models/ember-cli-build.js @@ -3,7 +3,7 @@ const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); module.exports = function(defaults) { - let app = new EmberAddon(defaults, { + const app = new EmberAddon(defaults, { // Add options here }); diff --git a/datahub-web/@datahub/data-models/index.js b/datahub-web/@datahub/data-models/index.js index fb3f2e2af6211..ac65e94b66155 100644 --- a/datahub-web/@datahub/data-models/index.js +++ b/datahub-web/@datahub/data-models/index.js @@ -2,5 +2,5 @@ module.exports = { name: require('./package').name, - isDevelopingAddon: () => false + isDevelopingAddon: () => true }; diff --git a/datahub-web/@datahub/data-models/package.json b/datahub-web/@datahub/data-models/package.json index e0ccb7ef678d6..bc952ca010d0d 100644 --- a/datahub-web/@datahub/data-models/package.json +++ b/datahub-web/@datahub/data-models/package.json @@ -16,7 +16,7 @@ "test": "tests" }, "scripts": { - "build": "ember build", + "build": "ember build --environment=production", "start": "ember serve", "test": "ember test", "test:all": "ember try:each", @@ -26,49 +26,58 @@ "dependencies": { "@datahub/metadata-types": "0.0.0", "@datahub/utils": "0.0.0", - "ember-cli-babel": "^7.8.0", - "ember-cli-typescript": "^2.0.2", - "ember-fetch": "^6.4.0", + "@types/ember-resolver": "^5.0.7", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^4.2.2", + "ember-cli-typescript": "^3.1.3", + "ember-fetch": "^7.0.0", "ember-lodash": "^4.18.0" }, "devDependencies": { - "@babel/core": "^7.4.0", - "@ember/optional-features": "^0.7.0", - "@types/ember": "^3.1.0", - "@types/ember-qunit": "^3.4.6", + "@babel/core": "^7.8.4", + "@ember/optional-features": "^1.3.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "@types/ember": "^3.1.1", + "@types/ember-qunit": "^3.4.7", "@types/ember-test-helpers": "^1.0.5", "@types/ember-testing-helpers": "^0.0.3", - "@types/ember__test-helpers": "^0.7.8", - "@types/qunit": "^2.5.4", - "@types/rsvp": "^4.0.2", + "@types/ember__test-helpers": "^0.7.9", + "@types/qunit": "^2.9.0", + "@types/rsvp": "^4.0.3", "@types/sinon": "^7.0.3", + "babel-eslint": "^10.0.3", "broccoli-asset-rev": "^3.0.0", - "ember-ajax": "^4.0.2", - "ember-cli": "~3.11.0", - "ember-cli-dependency-checker": "^3.1.0", - "ember-cli-htmlbars": "^3.0.0", - "ember-cli-htmlbars-inline-precompile": "^2.1.0", - "ember-cli-inject-live-reload": "^2.0.1", + "ember-auto-import": "^1.5.3", + "ember-cli": "~3.16.0", + "ember-cli-dependency-checker": "^3.2.0", + "ember-cli-inject-live-reload": "^2.0.2", + "ember-cli-mirage": "^0.4.15", "ember-cli-sri": "^2.1.1", - "ember-cli-typescript-blueprints": "^2.0.0", - "ember-cli-uglify": "^2.1.0", + "ember-cli-typescript-blueprints": "^3.0.0", + "ember-cli-uglify": "^3.0.0", + "ember-cli-update": "^0.52.1", "ember-decorators": "^6.0.0", - "ember-export-application-global": "^2.0.0", - "ember-load-initializers": "^2.0.0", + "ember-export-application-global": "^2.0.1", + "ember-load-initializers": "^2.1.1", "ember-maybe-import-regenerator": "^0.1.6", - "ember-qunit": "^4.4.0", - "ember-resolver": "^5.0.1", + "ember-qunit": "^4.6.0", + "ember-resolver": "^7.0.0", "ember-sinon": "^3.1.0", "ember-sinon-qunit": "^3.4.0", - "ember-source": "~3.11.1", - "ember-source-channel-url": "^1.1.0", - "ember-try": "^1.0.0", + "ember-source": "~3.16.3", + "ember-source-channel-url": "^2.0.1", + "ember-try": "^1.4.0", + "faker": "^4.1.0", "loader.js": "^4.7.0", - "qunit-dom": "^0.8.4", - "typescript": "^3.5.3" + "qunit-dom": "^0.9.1", + "typescript": "^3.9.3" }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": "10.* || >= 12" + }, + "ember": { + "edition": "octane" }, "ember-addon": { "configPath": "tests/dummy/config" diff --git a/datahub-web/@datahub/data-models/tests/dummy/app/app.js b/datahub-web/@datahub/data-models/tests/dummy/app/app.js index b3b2bd677e090..d8e2088b6b0e5 100644 --- a/datahub-web/@datahub/data-models/tests/dummy/app/app.js +++ b/datahub-web/@datahub/data-models/tests/dummy/app/app.js @@ -1,14 +1,12 @@ import Application from '@ember/application'; -import Resolver from './resolver'; +import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; -const App = Application.extend({ - modulePrefix: config.modulePrefix, - podModulePrefix: config.podModulePrefix, - Resolver -}); +export default class App extends Application { + modulePrefix = config.modulePrefix; + podModulePrefix = config.podModulePrefix; + Resolver = Resolver; +} loadInitializers(App, config.modulePrefix); - -export default App; diff --git a/datahub-web/@datahub/data-models/tests/dummy/app/config/environment.d.ts b/datahub-web/@datahub/data-models/tests/dummy/app/config/environment.d.ts index 60c3b7ef4ba05..b5a45a3d93efd 100644 --- a/datahub-web/@datahub/data-models/tests/dummy/app/config/environment.d.ts +++ b/datahub-web/@datahub/data-models/tests/dummy/app/config/environment.d.ts @@ -6,11 +6,15 @@ * since different ember addons can materialize new entries. */ declare const config: { - environment: any; + environment: 'development' | 'test' | 'production'; modulePrefix: string; podModulePrefix: string; locationType: string; rootURL: string; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; }; export default config; diff --git a/datahub-web/@datahub/data-models/tests/dummy/app/constants/mocks/dataset.ts b/datahub-web/@datahub/data-models/tests/dummy/app/constants/mocks/dataset.ts deleted file mode 100644 index 8ba2971123f22..0000000000000 --- a/datahub-web/@datahub/data-models/tests/dummy/app/constants/mocks/dataset.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { IDatasetEntity } from '@datahub/metadata-types/types/entity/dataset/dataset-entity'; -import { FabricType } from '@datahub/metadata-types/constants/common/fabric-type'; -import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; - -export const mockDatasetEntity = (overrideProps: Partial = {}): IDatasetEntity => ({ - uri: 'urn', - createdTime: 8675309, - decommissionTime: 8675309, - deprecated: false, - deprecationNote: '', - description: '', - fabric: FabricType.CORP, - modifiedTime: 8675309, - nativeName: 'CHAR_MANDER', - nativeType: '', - platform: DatasetPlatform.HDFS, - properties: '', - removed: false, - tags: [], - ...overrideProps -}); diff --git a/datahub-web/@datahub/data-models/tests/dummy/app/router.js b/datahub-web/@datahub/data-models/tests/dummy/app/router.js index 53c53c6c07590..3c68e32dd992d 100644 --- a/datahub-web/@datahub/data-models/tests/dummy/app/router.js +++ b/datahub-web/@datahub/data-models/tests/dummy/app/router.js @@ -1,11 +1,9 @@ import EmberRouter from '@ember/routing/router'; import config from './config/environment'; -const Router = EmberRouter.extend({ - location: config.locationType, - rootURL: config.rootURL -}); +export default class Router extends EmberRouter { + location = config.locationType; + rootURL = config.rootURL; +} Router.map(function() {}); - -export default Router; diff --git a/datahub-web/@datahub/data-models/tests/dummy/config/environment.js b/datahub-web/@datahub/data-models/tests/dummy/config/environment.js index 182d3fcbfa04e..599a59f74e004 100644 --- a/datahub-web/@datahub/data-models/tests/dummy/config/environment.js +++ b/datahub-web/@datahub/data-models/tests/dummy/config/environment.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = function(environment) { - let ENV = { + const ENV = { modulePrefix: 'dummy', environment, rootURL: '/', @@ -38,6 +38,8 @@ module.exports = function(environment) { // keep test console output quieter ENV.APP.LOG_ACTIVE_GENERATION = false; ENV.APP.LOG_VIEW_LOOKUPS = false; + ENV.RAISE_ON_DEPRECATION = false; + ENV.LOG_STACKTRACE_ON_DEPRECATION = false; ENV.APP.rootElement = '#ember-testing'; ENV.APP.autoboot = false; diff --git a/datahub-web/@datahub/data-models/tests/dummy/config/optional-features.json b/datahub-web/@datahub/data-models/tests/dummy/config/optional-features.json index b1902623ae759..b26286e2ecdf3 100644 --- a/datahub-web/@datahub/data-models/tests/dummy/config/optional-features.json +++ b/datahub-web/@datahub/data-models/tests/dummy/config/optional-features.json @@ -1,3 +1,6 @@ { - "jquery-integration": false + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true } diff --git a/datahub-web/@datahub/data-models/tests/dummy/mirage/config.ts b/datahub-web/@datahub/data-models/tests/dummy/mirage/config.ts new file mode 100644 index 0000000000000..2cce7d8a315bd --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/dummy/mirage/config.ts @@ -0,0 +1,11 @@ +import { Server } from 'ember-cli-mirage'; +import { setup } from '@datahub/data-models/mirage-addon/mirage-config'; + +/** + * Default handler for Mirage config + * @export + * @param {Server} this the Mirage server instance + */ +export default function(this: Server): void { + setup(this); +} diff --git a/datahub-web/@datahub/data-models/tests/dummy/mirage/factories/dataset-ownership.ts b/datahub-web/@datahub/data-models/tests/dummy/mirage/factories/dataset-ownership.ts new file mode 100644 index 0000000000000..3c635d1ac1892 --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/dummy/mirage/factories/dataset-ownership.ts @@ -0,0 +1,67 @@ +import { Factory } from 'ember-cli-mirage'; +import faker from 'faker'; +import { IOwnerResponse, IOwner } from '@datahub/data-models/types/entity/dataset/ownership'; +import { corpUserUrnBasePrefix } from '@datahub/data-models/config/urn/base-prefix'; +import { OwnerUrnNamespace } from '@datahub/data-models/constants/entity/dataset/ownership'; + +export default Factory.extend({ + owners(): Array { + const numberOfOwners = faker.random.number({ min: 1, max: 10 }); + return Array.from( + { length: numberOfOwners }, + (): IOwner => ({ + confirmedBy: null, + email: faker.internet.email(), + isActive: faker.random.arrayElement([true, false]), + isGroup: faker.random.arrayElement([true, false]), + name: faker.name.firstName(), + modifiedTime: faker.date.recent().getTime(), + idType: faker.random.arrayElement(['USER', 'GROUP', 'SERVICE']), + namespace: faker.random.arrayElement(Object.values(OwnerUrnNamespace)), + source: faker.random.arrayElement([ + 'AUDIT', + 'DATA_VAULT', + 'DATABASE', + 'FILE_SYSTEM', + 'JIRA', + 'NUAGE', + 'OTHER', + 'REVIEW_BOARD', + 'SOS', + 'SOURCE_CONTROL', + 'USER_INTERFACE' + ]), + type: faker.random.arrayElement(['DATA_OWNER', 'PRODUCER', 'DELEGATE', 'STAKEHOLDER', 'CONSUMER']), + userName: faker.internet.userName(), + sortId: null, + subType: null + }) + ); + }, + fromUpstream(): boolean { + return faker.random.arrayElement([true, false]); + }, + datasetUrn: faker.lorem.slug, + lastModified(): number { + return faker.date.recent().getTime(); + }, + actor(): string { + return `${corpUserUrnBasePrefix}${faker.internet.userName()}`; + } +}); + +// IOwnerResponse augmented with a urn to support Mirage DB request that use the requested urn to find an instance +type OwnerResponseWithUrn = IOwnerResponse & { urn: string }; + +declare module 'ember-cli-mirage/types/registries/schema' { + interface IMirageSchemaRegistry { + datasetOwnerships: OwnerResponseWithUrn; + datasetOwnership?: OwnerResponseWithUrn; + } +} +declare module 'ember-cli-mirage/types/registries/model' { + interface IMirageModelRegistry { + datasetOwnerships: OwnerResponseWithUrn; + datasetOwnership?: OwnerResponseWithUrn; + } +} diff --git a/datahub-web/packages/data-portal/mirage/models/dataset-ownership.ts b/datahub-web/@datahub/data-models/tests/dummy/mirage/models/dataset-ownership.ts similarity index 100% rename from datahub-web/packages/data-portal/mirage/models/dataset-ownership.ts rename to datahub-web/@datahub/data-models/tests/dummy/mirage/models/dataset-ownership.ts diff --git a/datahub-web/@datahub/data-models/tests/dummy/mirage/scenarios/default.ts b/datahub-web/@datahub/data-models/tests/dummy/mirage/scenarios/default.ts new file mode 100644 index 0000000000000..53a0b41e2de83 --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/dummy/mirage/scenarios/default.ts @@ -0,0 +1 @@ +export default function(): void {} diff --git a/datahub-web/@datahub/data-models/tests/dummy/mirage/serializers/application.ts b/datahub-web/@datahub/data-models/tests/dummy/mirage/serializers/application.ts new file mode 100644 index 0000000000000..c95616feae69e --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/dummy/mirage/serializers/application.ts @@ -0,0 +1,9 @@ +import { Serializer } from 'ember-cli-mirage'; + +export default class extends Serializer { + // Removes the default root key + root = false; + + // Since api's are not side-loaded, allow embed. Also, this is required when root is false + embed = true; +} diff --git a/datahub-web/@datahub/data-models/tests/integration/components/get-entity-by-urn-test.ts b/datahub-web/@datahub/data-models/tests/integration/components/get-entity-by-urn-test.ts new file mode 100644 index 0000000000000..dee56ab27d85e --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/integration/components/get-entity-by-urn-test.ts @@ -0,0 +1,28 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | get-entity-by-urn', function(hooks) { + setupRenderingTest(hooks); + + test('it returns the correct type of entity', async function(assert) { + this.set('urn', 'urn:li:dataset:(urn:li:dataPlatform:hdfs,pikachu,PROD)'); + await render(hbs` + + {{dataset.displayName}} + + `); + + assert.dom('#assert-test-1').hasText('datasets', 'Correctly yielded dataset entity'); + + this.set('urn', 'urn:li:corpuser:pikachu'); + await render(hbs` + + {{person.displayName}} + + `); + + assert.dom('#assert-test-2').hasText('people', 'Correctly yielded person entity'); + }); +}); diff --git a/datahub-web/@datahub/data-models/tests/test-helper.js b/datahub-web/@datahub/data-models/tests/test-helper.js index 0382a848dd078..e19b9e4ed4808 100644 --- a/datahub-web/@datahub/data-models/tests/test-helper.js +++ b/datahub-web/@datahub/data-models/tests/test-helper.js @@ -2,6 +2,7 @@ import Application from '../app'; import config from '../config/environment'; import { setApplication } from '@ember/test-helpers'; import { start } from 'ember-qunit'; +import 'qunit-dom'; setApplication(Application.create(config.APP)); diff --git a/datahub-web/@datahub/data-models/tests/unit/services/data-models-test.ts b/datahub-web/@datahub/data-models/tests/unit/services/data-models-test.ts index 65e43c1b7ae6b..a6e7edf0fd666 100644 --- a/datahub-web/@datahub/data-models/tests/unit/services/data-models-test.ts +++ b/datahub-web/@datahub/data-models/tests/unit/services/data-models-test.ts @@ -2,19 +2,66 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; import DataModelsService from '@datahub/data-models/services/data-models'; import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; +import { setProperties, set } from '@ember/object'; +import { ICorpUserInfo } from '@datahub/metadata-types/types/entity/person/person-entity'; +import TestDataModelsService from '@datahub/data-models/mirage-addon/test-helpers/test-data-models-service'; +import { TestPersonEntity } from '@datahub/data-models/mirage-addon/test-helpers/test-entities/test-person-entity'; -module('Unit | Service | data-models', function(hooks) { +module('Unit | Service | data-models', function(hooks): void { setupTest(hooks); - test('it exists', function(assert) { + test('it exists', function(assert): void { const service = this.owner.lookup('service:data-models'); assert.ok(service); }); - test('it returns the correct entity', function(assert) { + test('it returns the correct entity', function(assert): void { const service: DataModelsService = this.owner.lookup('service:data-models'); const datasetEntity = service.getModel(DatasetEntity.displayName); assert.equal(datasetEntity.kind, DatasetEntity.kind); }); + + test('it creates relationships as expected', function(assert): void { + this.owner.register('service:data-models', TestDataModelsService); + const service: DataModelsService = this.owner.lookup('service:data-models'); + const mockPerson = service.createPartialInstance('people', 'pikachu') as TestPersonEntity; + + assert.ok(mockPerson instanceof PersonEntity, 'Created the instance as expected'); + assert.ok(mockPerson instanceof TestPersonEntity); + setProperties(mockPerson, { + manualDirectReportUrns: ['charmander', 'bulbasaur', 'squirtle'], + manualPeersUrns: ['eevee'] + }); + assert.equal(mockPerson.directReports.length, 3, 'Created 3 instances for direct reports'); + assert.ok(mockPerson.directReports[0] instanceof PersonEntity, 'Created the correct kind of relationship instance'); + assert.equal( + mockPerson.directReports[1].urn, + 'bulbasaur', + 'Properly created a person entity of with the right urn' + ); + assert.equal(mockPerson.peers.length, 1, 'Multiple relationships are displayed correctly'); + assert.equal( + mockPerson.peers[0].urn, + 'eevee', + 'The correct object is created when dealing with multiple relationships' + ); + + const mockPersonEntity = { + info: { + managerUrn: 'aketchum', + managerName: 'Ash Ketchum' + } + } as ICorpUserInfo; + set(mockPerson, 'entity', mockPersonEntity); + + assert.ok(mockPerson.reportsTo instanceof PersonEntity, 'Works with a relationship to a singer urn'); + + assert.equal( + (mockPerson.reportsTo as PersonEntity).name, + 'Ash Ketchum', + 'Created the expected single entity relationship' + ); + }); }); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/api/dataset/dataset-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/api/dataset/dataset-test.ts deleted file mode 100644 index ff5b6936be286..0000000000000 --- a/datahub-web/@datahub/data-models/tests/unit/utils/api/dataset/dataset-test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { setupTest } from 'ember-qunit'; -import { module } from 'qunit'; -import test from 'ember-sinon-qunit/test-support/test'; -import { setupSinonTest } from 'dummy/tests/helpers/setup-sinon-test'; -import { readDataset } from '@datahub/data-models/api/dataset/dataset'; -import { IDatasetEntity } from '@datahub/metadata-types/types/entity/dataset/dataset-entity'; -import { mockDatasetEntity } from 'dummy/constants/mocks/dataset'; - -module('Unit | Utility | api/dataset/dataset', function(hooks) { - setupTest(hooks); - - test('readDataset() is a thennable', async function(this: SinonTestContext, assert) { - assert.expect(2); - const testDataset: IDatasetEntity = mockDatasetEntity(); - const setupValue = setupSinonTest(this); - - const response = readDataset('urn'); - - assert.ok(typeof response.then === 'function', 'expected readDataset invocation to return a promise'); - - setupValue.request!.respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ dataset: testDataset })); - const value = await response; - - assert.deepEqual(value, testDataset, 'expected value to have the shape of a Feature'); - - setupValue.requester.restore(); - }); -}); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/api/feature/feature-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/api/feature/feature-test.ts new file mode 100644 index 0000000000000..b494009c747e6 --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/unit/utils/api/feature/feature-test.ts @@ -0,0 +1,26 @@ +import { readFeature } from '@datahub/data-models/api/feature/feature'; +import { setupTest } from 'ember-qunit'; +import { module } from 'qunit'; +import test from 'ember-sinon-qunit/test-support/test'; +import { setupSinonTest } from '@datahub/data-models/mirage-addon/test-helpers/setup-sinon-test'; + +module('Unit | Utility | api/feature/feature', function(hooks): void { + setupTest(hooks); + + test('readFeature() is a thennable', async function(this: SinonTestContext, assert) { + assert.expect(2); + const testFeature = { urn: 'urn' }; + const setupValue = setupSinonTest(this); + + const response = readFeature('urn'); + + assert.ok(typeof response.then === 'function', 'expected readFeature invocation to return a promise'); + + setupValue.request!.respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(testFeature)); + const value = await response; + + assert.deepEqual(value, testFeature, 'expected value to have the shape of a Feature'); + + setupValue.requester.restore(); + }); +}); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/dataset-entity-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/dataset-entity-test.ts index 0c727f53e810a..e2d1c3a58955f 100644 --- a/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/dataset-entity-test.ts +++ b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/dataset-entity-test.ts @@ -4,12 +4,12 @@ import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entit import sinonTest from 'ember-sinon-qunit/test-support/test'; import Sinon from 'sinon'; import { BaseEntity } from '@datahub/data-models/entity/base-entity'; -import { mockDatasetEntity } from 'dummy/constants/mocks/dataset'; +import DatasetFactory from '@datahub/data-models/mirage-addon/factories/dataset'; -module('Unit | Utility | entity/dataset/dataset-entity', function(hooks) { +module('Unit | Utility | entity/dataset/dataset-entity', function(hooks): void { setupTest(hooks); - test('DatasetEntity class', function(assert) { + test('DatasetEntity class', function(assert): void { const entity = new DatasetEntity('squirtle_urn'); assert.ok(entity instanceof BaseEntity, 'Expects entity to be an instance of the BaseEntity'); assert.equal(entity.displayName, 'datasets', 'expected entity display name to be Datasets'); @@ -17,23 +17,23 @@ module('Unit | Utility | entity/dataset/dataset-entity', function(hooks) { assert.equal(entity.urn, 'squirtle_urn', 'expected entity urn to match supplied value squirtle_urn'); }); - sinonTest('DatasetEntity readEntity', async function(this: SinonTestContext, assert) { + sinonTest('DatasetEntity readEntity', async function(this: SinonTestContext, assert): Promise { assert.expect(1); - - const testUrn = 'bulbasaur_urn'; - const testEntity = mockDatasetEntity({ uri: testUrn }); + const factory = new DatasetFactory(); + const testUrn = 'urn:li:dataset:(urn:li:dataPlatform:platform1,somedir.domedata,PROD)'; + const testEntity = { ...factory.build(1), uri: testUrn }; const requester = this.sandbox.useFakeXMLHttpRequest(); let request: Sinon.SinonFakeXMLHttpRequest | undefined; - requester.onCreate = req => { + requester.onCreate = (req): void => { request = req; }; const entityRequest = new DatasetEntity(testUrn).readEntity; - request && request.respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ dataset: testEntity })); + request && request.respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(testEntity)); const entity = await entityRequest; - assert.equal(entity.uri, testUrn, 'expected entity urn to match requested urn'); + assert.equal(entity?.uri, testUrn, 'expected entity urn to match requested urn'); requester.restore(); }); }); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/helpers/validators/schema-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/helpers/validators/schema-test.ts new file mode 100644 index 0000000000000..08095c22f6c03 --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/helpers/validators/schema-test.ts @@ -0,0 +1,49 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; +import DatasetSchema from '@datahub/data-models/entity/dataset/modules/schema'; +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; +import { filterAnnotationsToDatasetSchema } from '@datahub/data-models/entity/dataset/helpers/validators/compliance/schema'; +import { + generateDatasetSchemaFields, + generateDatasetSchema +} from '@datahub/data-models/mirage-addon/test-helpers/datasets/schema'; + +module('Unit | Utility | entity/dataset/helpers/validators/schema', function(hooks): void { + setupTest(hooks); + + test('filterAnnotationsToDatasetSchema', function(assert): void { + const annotations: Array = []; + let schema = new DatasetSchema(); + + const resultA = filterAnnotationsToDatasetSchema(annotations, schema); + assert.ok(resultA, 'Blank case works without issues'); + + schema = generateDatasetSchema(generateDatasetSchemaFields(['pokemon["name"]', 'type["string"]'])); + + annotations.push( + ...[ + new DatasetComplianceAnnotation(undefined, 'pokemon["name"]'), + new DatasetComplianceAnnotation(undefined, 'type["string"]'), + new DatasetComplianceAnnotation(undefined, 'pokemon["name"]') + ] + ); + + const resultB = filterAnnotationsToDatasetSchema(annotations, schema); + assert.equal(resultB.length, 3, 'Base case: annotations are not filtered when they match schema fields'); + + annotations.push( + ...[ + new DatasetComplianceAnnotation(undefined, 'type["string"]'), + new DatasetComplianceAnnotation(undefined, 'pokemon["string"]') + ] + ); + + const resultC = filterAnnotationsToDatasetSchema(annotations, schema); + assert.equal(resultC.length, 4, 'Filters out the annotation that doesnt match schema'); + + schema = generateDatasetSchema(generateDatasetSchemaFields(['pokemon["string"]', 'type["string"]'])); + + const resultD = filterAnnotationsToDatasetSchema(annotations, schema); + assert.equal(resultD.length, 3, 'Filters out annotations that do not match schema, after schema change'); + }); +}); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/compliance-annotation-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/compliance-annotation-test.ts new file mode 100644 index 0000000000000..661dbe721a666 --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/compliance-annotation-test.ts @@ -0,0 +1,55 @@ +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; +import { ComplianceFieldIdValue } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; +import { set } from '@ember/object'; + +module('Unit | Utility | entity/dataset/modules/compliance-annotation', function(hooks): void { + setupTest(hooks); + + test('DatasetComplianceAnnotation class', function(assert): void { + const complianceAnnotationA = new DatasetComplianceAnnotation(); + assert.equal(complianceAnnotationA.identifierField, '', 'Class works with blank base case'); + + const complianceAnnotationB = new DatasetComplianceAnnotation(undefined, 'detective pikachu'); + assert.equal( + complianceAnnotationB.identifierField, + 'detective pikachu', + 'Class can assign field name without being given a tag object' + ); + assert.equal(complianceAnnotationB.identifierType, null, 'Correctly assigns base values when not given tag object'); + + const complianceAnnotationC = new DatasetComplianceAnnotation({ + identifierField: 'pikachu_tag', + identifierType: ComplianceFieldIdValue.MemberId, + logicalType: null, + nonOwner: false, + pii: true, + readonly: false, + securityClassification: null, + valuePattern: '' + }); + + assert.equal( + complianceAnnotationC.identifierType, + ComplianceFieldIdValue.MemberId, + 'Correctly assigns identifier type in initialization' + ); + + set(complianceAnnotationC, 'identifierType', ComplianceFieldIdValue.GroupId); + assert.ok( + complianceAnnotationC.readWorkingCopy().identifierType !== ComplianceFieldIdValue.MemberId, + 'Tests readWorkingCopy and value has changed when set anew' + ); + assert.ok( + complianceAnnotationC.readWorkingCopy().identifierType === ComplianceFieldIdValue.GroupId, + 'Setting a new identifier type persists' + ); + + complianceAnnotationC.resetWorkingCopy(); + assert.ok( + complianceAnnotationC.readWorkingCopy().identifierType === ComplianceFieldIdValue.MemberId, + 'Reset working copy works as expected' + ); + }); +}); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/compliance-info-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/compliance-info-test.ts new file mode 100644 index 0000000000000..e0717f6d5cf77 --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/compliance-info-test.ts @@ -0,0 +1,217 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; +import { IDatasetComplianceInfo } from '@datahub/metadata-types/types/entity/dataset/compliance/info'; +import DatasetComplianceInfo, { + removeReadonlyAttributeFromTags, + getEditableTags, + removeTagsMissingIdentifierAttributes +} from '@datahub/data-models/entity/dataset/modules/compliance-info'; +import { isArray } from '@ember/array'; +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; +import { IComplianceFieldAnnotation } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-annotation'; +import { + ComplianceFieldIdValue, + Classification +} from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; +import DatasetSchema from '@datahub/data-models/entity/dataset/modules/schema'; + +module('Unit | Utility | entity/dataset/modules/compliance-info', function(hooks): void { + setupTest(hooks); + + const rawComplianceInfo: IDatasetComplianceInfo = { + complianceEntities: [], + compliancePurgeNote: null, + complianceType: '', + confidentiality: null, + containingPersonalData: null, + datasetClassification: null, + datasetId: null, + datasetUrn: 'pikachu_dataset_urn', + modifiedBy: 'catran', + modifiedTime: 1552443949, + fromUpstream: false + }; + + const complianceEntities: Array = [ + { + identifierField: 'testFieldA', + identifierType: ComplianceFieldIdValue.None, + logicalType: null, + nonOwner: true, + pii: false, + readonly: true, + securityClassification: null + }, + { + identifierField: 'testFieldB', + identifierType: ComplianceFieldIdValue.None, + logicalType: null, + nonOwner: true, + pii: false, + readonly: false, + securityClassification: null + } + ]; + + test('DatasetComplianceInfo class', function(assert): void { + const complianceInfo = new DatasetComplianceInfo(rawComplianceInfo, []); + + assert.ok( + isArray(complianceInfo.annotations), + 'Creates a proper list for annotations from complianceEntities property' + ); + assert.equal(complianceInfo.annotations.length, 0, 'Sanity check: Compliance annotations are currently empty'); + + complianceInfo.addAnnotation(new DatasetComplianceAnnotation()); + assert.equal(complianceInfo.annotations.length, 1, 'Adds a compliance annotation'); + + complianceInfo.removeAnnotation(new DatasetComplianceAnnotation()); + assert.equal(complianceInfo.annotations.length, 0, 'Removes annotation with function'); + + complianceInfo.addAnnotation([new DatasetComplianceAnnotation(), new DatasetComplianceAnnotation()]); + assert.equal(complianceInfo.annotations.length, 2, 'Expected 2 annotations to be added to compliance'); + + complianceInfo.removeAnnotation([new DatasetComplianceAnnotation(), new DatasetComplianceAnnotation()]); + assert.equal(complianceInfo.annotations.length, 0, 'Expected 2 annotations to be removed to compliance'); + + const complianceAnnotation: IComplianceFieldAnnotation = { + identifierField: 'eevee', + identifierType: ComplianceFieldIdValue.MemberId, + nonOwner: true, + pii: false, + readonly: false, + securityClassification: null + }; + + complianceInfo.addAnnotation(new DatasetComplianceAnnotation(complianceAnnotation)); + const workingAnnotations = complianceInfo.getWorkingAnnotations(); + const readWorkingCopy = workingAnnotations[0]; + + assert.equal( + readWorkingCopy.identifierField, + complianceAnnotation.identifierField, + 'Working copy works as expected' + ); + assert.equal(readWorkingCopy.identifierType, complianceAnnotation.identifierType, 'Working copy sanity check'); + }); + + test('Getting list of added or removed annotations', function(assert): void { + const complianceInfo = new DatasetComplianceInfo(rawComplianceInfo, []); + const [testA, testB] = complianceEntities; + const annotationsToBeAdded = [new DatasetComplianceAnnotation(testA), new DatasetComplianceAnnotation(testB)]; + complianceInfo.addAnnotation(annotationsToBeAdded); + assert.equal(complianceInfo.annotations.length, 2, 'Expected 2 annotations to be added to compliance'); + const { added, removed } = complianceInfo.getAnnotationUpdates(); + + assert.equal(removed.length, 0, 'Expected no annotations to be removed'); + assert.equal(added.length, complianceInfo.annotations.length, 'Expected the number of added annotations to match'); + + assert.ok( + annotationsToBeAdded.includes(added[0]), + 'Expected added annotations to include item from annotationsToBeAdded' + ); + + complianceInfo.removeAnnotation(annotationsToBeAdded[0]); + const updatedAddedAnnotations = complianceInfo.getAnnotationUpdates().added; + + assert.equal( + updatedAddedAnnotations.length, + 1, + 'Expected the list for annotations to be added to not contain the removed item' + ); + }); + + test('compliance info utility function: removeReadonlyAttributeFromTags', function(assert): void { + const tagsWithoutReadonlyAttribute = removeReadonlyAttributeFromTags(complianceEntities); + + assert.equal( + tagsWithoutReadonlyAttribute.filter((tag: Omit): boolean => + tag.hasOwnProperty('readonly') + ).length, + 0, + 'Expected no tags to have a readonly attribute' + ); + }); + + test('compliance info utility function: getEditableTags', function(assert): void { + const editableTags = getEditableTags(complianceEntities); + + assert.equal(editableTags.length, 1, 'Expected only one editable tag'); + assert.equal( + editableTags[0].identifierField, + 'testFieldB', + 'Expected editable tag identifierField to be "testFieldB"' + ); + }); + + test('compliance info utility function: removeTagsMissingIdentifierAttributes', function(assert): void { + const tagsWithOneMissingAnIdentifierAttribute = complianceEntities.map( + (entity: IComplianceFieldAnnotation): IComplianceFieldAnnotation => + entity.identifierField === 'testFieldB' ? { ...entity, identifierType: undefined } : entity + ); + + const tagsWithoutIdentifierAttributes = removeTagsMissingIdentifierAttributes( + tagsWithOneMissingAnIdentifierAttribute + ); + + assert.equal( + tagsWithoutIdentifierAttributes.length, + 1, + 'Expected only tags to be in the list tagsWithoutIdentifierAttributes' + ); + assert.equal( + tagsWithoutIdentifierAttributes[0].identifierField, + 'testFieldA', + 'Expected tag with identifierField testFieldA to be a tag with complete identifier attributes i.e. identifierField & identifierType' + ); + }); + + test('reading the compliance-info working copy with readonly annotations', function(assert): void { + const rawComplianceInfoWithReadonlyAnnotations = { ...rawComplianceInfo, complianceEntities }; + const complianceInfo = new DatasetComplianceInfo(rawComplianceInfoWithReadonlyAnnotations, []); + // Since we aren't testing for behavior when schemaFields are specified, + // instantiation here omits adding the columns field so schemaFields will be unavailable and + // the annotations will be returned without the process of filtering to the dataset schema + const emptySchema = new DatasetSchema({ schemaless: false, rawSchema: null, keySchema: null }); + + const { complianceEntities: annotations } = complianceInfo.readWorkingCopy({ + withoutNullFields: true, + schema: emptySchema + }); + + assert.equal(annotations.length, 1, 'Expected the compliance info working copy to have only one field annotation'); + + const [{ readonly, identifierField }] = annotations; + + assert.equal(readonly, undefined, "Expected the annotation's readonly field to not exist on the result"); + assert.equal(identifierField, 'testFieldB', 'Expected testFieldB to be the compliance info workingCopy result'); + }); + + test('working copy for compliance info properties', function(assert): void { + const complianceInfo = new DatasetComplianceInfo(rawComplianceInfo, []); + + assert.equal(complianceInfo.confidentiality, null, 'Confidentiality is derived from raw info as expected'); + assert.equal( + complianceInfo.containingPersonalData, + null, + 'Personal data flag is derived from raw info as expected' + ); + + complianceInfo.updateWorkingConfidentiality(Classification.Public); + complianceInfo.updateWorkingContainingPersonalData(false); + assert.equal(complianceInfo.confidentiality, Classification.Public, 'Update function works as expected'); + assert.equal( + complianceInfo.containingPersonalData, + false, + 'Update function updates personal info flag as expected' + ); + + complianceInfo.createWorkingCopy(); + assert.equal(complianceInfo.confidentiality, null, 'After reset, confidentiality returns to derived value'); + assert.equal( + complianceInfo.containingPersonalData, + null, + 'After reset, personal data flag returns to derived value' + ); + }); +}); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/constants/annotation-helpers-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/constants/annotation-helpers-test.ts new file mode 100644 index 0000000000000..70e5a54d31d62 --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/constants/annotation-helpers-test.ts @@ -0,0 +1,84 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; +import { setProperties } from '@ember/object'; +import { + annotationIsValid, + applyAnnotationsByEditableProperties +} from '@datahub/data-models/entity/dataset/modules/constants/annotation-helpers'; +import { + ComplianceFieldIdValue, + MemberIdLogicalType +} from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; + +module('Unit | Utility | entity/dataset/modules/constants/annotation-helpers', function(hooks): void { + setupTest(hooks); + + test('Dataset compliance annotation helpers test: annotationIsValid', function(assert): void { + const annotationTag = new DatasetComplianceAnnotation(); + assert.notOk(annotationIsValid(annotationTag), 'Returns false for an empty identifier field'); + + setProperties(annotationTag, { identifierType: ComplianceFieldIdValue.None }); + assert.ok(annotationIsValid(annotationTag), 'A none tag should be considered valid without a logical type'); + + setProperties(annotationTag, { + identifierType: ComplianceFieldIdValue.GroupId, + logicalType: MemberIdLogicalType.Numeric, + isPurgeKey: false + }); + assert.ok(annotationIsValid(annotationTag), 'A member id tag should have a logical type and purge key notation'); + + setProperties(annotationTag, { logicalType: undefined, isPurgeKey: undefined }); + assert.notOk( + annotationIsValid(annotationTag), + 'A member id tag should have a logical type and is not considered valid if missing' + ); + + setProperties(annotationTag, { + logicalType: MemberIdLogicalType.Urn, + isPurgeKey: false + }); + assert.ok(annotationIsValid(annotationTag), 'A false purgeKey is not the same as an undefined purgeKey'); + + setProperties(annotationTag, { logicalType: MemberIdLogicalType.Custom }); + assert.notOk(annotationIsValid(annotationTag), 'A custom logical type should have a value pattern'); + + setProperties(annotationTag, { valuePattern: 'totally regex pattern' }); + assert.ok(annotationIsValid(annotationTag), 'A custom logical type with an existing value pattern will pass'); + }); + + test('Dataset compliance annotation helpers test: applyAnnotationsByEditableProperties', function(assert): void { + const propTags = [ + { + identifierField: 'pikachu', + identifierType: ComplianceFieldIdValue.MemberId, + logicalType: MemberIdLogicalType.Numeric, + isPurgeKey: false, + valuePattern: undefined, + isReadOnly: false + }, + { + identifierField: 'eevee', + identifierType: ComplianceFieldIdValue.None, + logicalType: undefined, + isPurgeKey: false, + valuePattern: undefined, + isReadOnly: false + } + ]; + + const result = applyAnnotationsByEditableProperties(propTags); + + assert.equal(result.length, 2, 'Function returns expected number of elements'); + result.forEach( + item => assert.ok(item instanceof DatasetComplianceAnnotation), + 'Function returns expected instances of tag' + ); + + const secondResult = result[1]; + const secondPropTag = propTags[1]; + + assert.equal(secondResult.identifierType, secondPropTag.identifierType, 'Values applied properly'); + assert.equal(secondResult.valuePattern, secondPropTag.valuePattern, 'Sanity check, values appleid prpoerly'); + }); +}); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/ownership-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/ownership-test.ts new file mode 100644 index 0000000000000..c21e43127b63e --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/unit/utils/entity/dataset/modules/ownership-test.ts @@ -0,0 +1,115 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; +import { set } from '@ember/object'; +import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; +import { MirageTestContext } from '@datahub/utils/types/vendor/ember-cli-mirage/mirage-tests'; +import DatasetOwnership from '@datahub/data-models/entity/dataset/modules/ownership'; +import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; +import { testDatasetOwnershipUrn } from '@datahub/data-models/mirage-addon/test-helpers/datasets/ownership'; +import ownershipScenario from '@datahub/data-models/mirage-addon/scenarios/dataset-ownership'; +import ownersForTestUrn from '@datahub/data-models/mirage-addon/fixtures/dataset-ownership'; +import { IOwner } from '@datahub/data-models/types/entity/dataset/ownership'; +import { fromLegacy } from '@datahub/data-models/entity/dataset/utils/legacy'; +import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; +import { FabricType } from '@datahub/metadata-types/constants/common/fabric-type'; + +module('Unit | Utility | entity/dataset/modules/ownership', function(hooks): void { + setupTest(hooks); + setupMirage(hooks); + + const datasetEntity = new DatasetEntity( + testDatasetOwnershipUrn, + fromLegacy({ + fabric: FabricType.CORP, + platform: DatasetPlatform.HDFS, + createdTime: Date.now(), + modifiedTime: Date.now(), + description: '', + nativeName: '', + nativeType: '', + uri: '', + tags: [], + removed: false, + decommissionTime: null, + deprecated: null, + deprecationNote: null, + properties: null, + healthScore: Math.random() + }) + ); + + test('DatasetOwnership instantiation', function(assert): void { + const datasetOwnership = new DatasetOwnership(datasetEntity); + + assert.equal( + datasetOwnership.entity, + datasetEntity, + 'Expected DatasetOwnership to reference the Dataset on the entity class field' + ); + assert.equal( + datasetOwnership.urn, + testDatasetOwnershipUrn, + 'Expected DatasetOwnership to reference the Dataset urn property' + ); + }); + + test('DatasetOwnership behavior post build', async function(this: MirageTestContext, assert): Promise { + ownershipScenario(this.server); + + const datasetOwnership = new DatasetOwnership(datasetEntity); + const builtDatasetOwnership = await datasetOwnership.build(); + const [firstOwner] = ownersForTestUrn; + const { userName } = firstOwner; + + assert.equal( + builtDatasetOwnership, + datasetOwnership, + 'Expected DatasetOwnership#build() invocation, to resolve with the same instance' + ); + + assert.equal( + builtDatasetOwnership.owners.length, + ownersForTestUrn.length, + 'Expected number of owners in DatasetOwnership to match fixture length' + ); + + assert.ok(builtDatasetOwnership.isOwner(userName), `Expected DatasetOwnership to confirm ${userName} as an owner`); + + assert.ok(builtDatasetOwnership.isValid, 'Expected DatasetOwnership to be valid for fixture owners'); + + set(builtDatasetOwnership, 'owners', []); + assert.notOk(builtDatasetOwnership.isValid, 'Expected DatasetOwnership to be invalid when no owner exists'); + + const invalidNumberOfOwners = Array.from( + { length: DatasetOwnership.minRequiredConfirmedOwners - 1 }, + (): IOwner => firstOwner + ); + + set(builtDatasetOwnership, 'owners', invalidNumberOfOwners); + assert.notOk( + builtDatasetOwnership.isValid, + `Expected DatasetOwnership to be invalid when the number of owners is less than the required: ${DatasetOwnership.minRequiredConfirmedOwners}` + ); + + set(builtDatasetOwnership, 'owners', [{ ...firstOwner, confirmedBy: null }, firstOwner]); + assert.notOk( + builtDatasetOwnership.isValid, + 'Expected DatasetOwnership to be invalid when the number of confirmed owners is less than the required' + ); + set(builtDatasetOwnership, 'owners', [{ ...firstOwner, isActive: false }, firstOwner]); + assert.notOk( + builtDatasetOwnership.isValid, + 'Expected DatasetOwnership to be invalid when the number of active owners is less than the required' + ); + set(builtDatasetOwnership, 'owners', [{ ...firstOwner, idType: 'GROUP' }, firstOwner]); + assert.notOk( + builtDatasetOwnership.isValid, + 'Expected DatasetOwnership to be invalid when the number of owners with USER idType is less than the required' + ); + set(builtDatasetOwnership, 'owners', [{ ...firstOwner, type: 'STAKEHOLDER' }, firstOwner]); + assert.notOk( + builtDatasetOwnership.isValid, + 'Expected DatasetOwnership to be invalid when the number of owners with DATA_OWNER type is less than the required' + ); + }); +}); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/entity/feature/feature-entity-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/entity/feature/feature-entity-test.ts new file mode 100644 index 0000000000000..1dacf369aef8d --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/unit/utils/entity/feature/feature-entity-test.ts @@ -0,0 +1,40 @@ +import { BaseEntity } from '@datahub/data-models/entity/base-entity'; +import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity'; +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; + +import sinonTest from 'ember-sinon-qunit/test-support/test'; +import Sinon from 'sinon'; + +module('Unit | Utility | entity/feature/feature-entity', function(hooks): void { + setupTest(hooks); + + test('FeatureEntity class', function(assert): void { + const entity = new FeatureEntity('test_urn'); + + assert.ok(entity instanceof BaseEntity, 'expected FeatureEntity to be an instance of BaseEntity'); + assert.equal(entity.displayName, 'ml-features', 'expected entity display name to be Features'); + assert.equal(entity.kind, 'FeatureEntity', 'expected entity kind to be FeatureEntity'); + assert.equal(entity.urn, 'test_urn', 'expected entity urn to match supplied value test_urn'); + }); + + sinonTest('FeatureEntity readEntity', async function(this: SinonTestContext, assert) { + assert.expect(1); + + const testUrn = 'test_urn'; + const testEntity = { urn: testUrn }; + const requester = this.sandbox.useFakeXMLHttpRequest(); + let request: Sinon.SinonFakeXMLHttpRequest | undefined; + + requester.onCreate = req => { + request = req; + }; + + const entityRequest = new FeatureEntity(testUrn).readEntity; + request && request.respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(testEntity)); + const entity = await entityRequest; + + assert.equal(entity.urn, testUrn, 'expected entity urn to match requested urn'); + requester.restore(); + }); +}); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/entity/mock/mock-entity-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/entity/mock/mock-entity-test.ts new file mode 100644 index 0000000000000..a4431f5db94b9 --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/unit/utils/entity/mock/mock-entity-test.ts @@ -0,0 +1,18 @@ +import { MockEntity } from '@datahub/data-models/entity/mock/mock-entity'; +import { module, test } from 'qunit'; +import { IEntityLinkAttrs } from '@datahub/data-models/types/entity/shared'; + +module('Unit | Utility | entity/mock/mock-entity', function(): void { + test('entityTabLink', function(assert): void { + const expectedTab = 'tabName'; + const expectedUrn = 'mock-urn'; + const tabLinkParams = new MockEntity('mock-urn').entityTabLink(expectedTab) as IEntityLinkAttrs; + + assert.ok(tabLinkParams, 'Expected tabLinkParams to be generated when supplied with required attributes'); + + const [, urn, tabName] = tabLinkParams.link.model as Array; + + assert.equal(expectedTab, tabName, 'Expected the supplied tab name to be in the model array'); + assert.equal(expectedUrn, urn, 'Expected the supplied urn to be in the model array'); + }); +}); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/get-actor-from-urn-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/get-actor-from-urn-test.ts index c18a928e3e024..51e8a7047d00a 100644 --- a/datahub-web/@datahub/data-models/tests/unit/utils/get-actor-from-urn-test.ts +++ b/datahub-web/@datahub/data-models/tests/unit/utils/get-actor-from-urn-test.ts @@ -1,8 +1,8 @@ -import getActorFromUrn from 'dummy/utils/get-actor-from-urn'; +import getActorFromUrn from '@datahub/data-models/utils/get-actor-from-urn'; import { module, test } from 'qunit'; module('Unit | Utility | get-actor-from-urn', function() { - test('it works as intended', function(assert) { + test('it works as intended', function(assert): void { const sampleUrn = 'urn:li:corpuser:pikachu'; let result = getActorFromUrn(sampleUrn); assert.ok(result === 'pikachu', 'Response as expected'); diff --git a/datahub-web/@datahub/data-models/tests/unit/utils/get-group-from-urn-test.ts b/datahub-web/@datahub/data-models/tests/unit/utils/get-group-from-urn-test.ts new file mode 100644 index 0000000000000..ffc2659318139 --- /dev/null +++ b/datahub-web/@datahub/data-models/tests/unit/utils/get-group-from-urn-test.ts @@ -0,0 +1,14 @@ +import { getGridGroupFromUrn } from '@datahub/data-models/utils/get-group-from-urn'; +import { module, test } from 'qunit'; + +module('Unit | Utility | get-group-from-urn', function() { + test('it works as intended', function(assert): void { + const sampleUrn = 'urn:li:gridGroup:pikachu'; + let result = getGridGroupFromUrn(sampleUrn); + assert.ok(result === 'pikachu', 'Response as expected'); + + const sampleBadUrn = 'somethingsomethingdarkside'; + result = getGridGroupFromUrn(sampleBadUrn); + assert.ok(result === sampleBadUrn, 'No change as expected if given bad urn'); + }); +}); diff --git a/datahub-web/@datahub/data-models/tsconfig.json b/datahub-web/@datahub/data-models/tsconfig.json index 7ddf3bc17c744..639b1d140dd97 100644 --- a/datahub-web/@datahub/data-models/tsconfig.json +++ b/datahub-web/@datahub/data-models/tsconfig.json @@ -4,6 +4,7 @@ "baseUrl": ".", "rootDir": "../../", "paths": { + "dummy/mirage/*": ["tests/dummy/mirage/*"], "dummy/tests/*": ["tests/*"], "dummy/*": ["tests/dummy/app/*", "app/*"], "@datahub/data-models": ["addon"], diff --git a/datahub-web/@datahub/data-models/types/entity/containers/index.d.ts b/datahub-web/@datahub/data-models/types/entity/containers/index.d.ts deleted file mode 100644 index b585dfe30f677..0000000000000 --- a/datahub-web/@datahub/data-models/types/entity/containers/index.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ITabProperties, Tab } from '@datahub/data-models/constants/entity/shared/tabs'; -import { ETaskPromise } from '@datahub/utils/types/concurrency'; - -/** - * Defines expected container properties and methods for an Entity Container Component - * This allows a uniform base contract when dealing with entity top level containers - * @interface IEntityContainer - * @template T - */ -export interface IEntityContainer { - // urn for the entity - urn?: string; - // Reference to the underlying entity - entity?: T; - // The currently selected or current tab location - currentTab: Tab; - // Tabs that are available for the entity - tabs: Array; - // concurrency task to materialize the related underlying IEntity - reifyEntityTask: ETaskPromise; -} diff --git a/datahub-web/@datahub/data-models/types/entity/dataset/index.d.ts b/datahub-web/@datahub/data-models/types/entity/dataset/index.d.ts index 45d1439be40da..62236c478df57 100644 --- a/datahub-web/@datahub/data-models/types/entity/dataset/index.d.ts +++ b/datahub-web/@datahub/data-models/types/entity/dataset/index.d.ts @@ -1,4 +1,7 @@ import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; +import { IEntityComplianceSuggestion } from '@datahub/metadata-types/constants/entity/dataset/compliance-suggestion'; +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; + /** * Describes the options for the dataset * @interface IReadDatasetsOptionBag @@ -8,3 +11,27 @@ export interface IReadDatasetsOptionBag { prefix: string; start?: number; } + +export interface IDatasetComplianceSuggestionInfo { + lastModified: number; + suggestedDatasetClassification: {}; + suggestedFieldClassification: Array; + urn: string; +} + +/** + * A map of DatasetComplianceAnnotation instances that are being added or removed from a dataset's compliance policy + * Used to get a flat list of annotation instances, i.e. each separate annotation without field groupings + * @export + * @interface IComplianceAnnotationUpdates + */ +export interface IComplianceAnnotationUpdates { + // Lists the annotations that are being added to the compliance policy + added: Array; + // Lists the annotations that are being removed from the compliance policy + removed: Array; + // Lists the annotations that are mutations of previously saved annotations, + // currently includes annotations found in added "and" removed since those prior lists are not pruned of intersections and technically, + // a change is a removal and an addition + onlyChanged: Array; +} diff --git a/datahub-web/@datahub/data-models/types/entity/dataset/ownership.d.ts b/datahub-web/@datahub/data-models/types/entity/dataset/ownership.d.ts new file mode 100644 index 0000000000000..afb8389c51250 --- /dev/null +++ b/datahub-web/@datahub/data-models/types/entity/dataset/ownership.d.ts @@ -0,0 +1,52 @@ +import { OwnerUrnNamespace } from '@datahub/data-models/constants/entity/dataset/ownership'; + +/** + * Describes the interface for a mid-tier Dataset Owner + */ +export interface IOwner { + // Flag indicating that this owner has been confirmed by another user from the UI, + // value of this flag is the confirming user's username + confirmedBy: null | string; + // Email address associated with this owner + email: null | string; + // Flag indicating that the owner is currently active / inactive within the domain, e.g. organization + isActive: boolean; + // Flag indicating that the owner is a group + isGroup: boolean; + // Human name for the owner + name: string; + // Time when this owner was last modified for this dataset, this is provided as a number by the mid-tier, however + // locally mutated to be a date due to a legacy implementation + modifiedTime?: number | Date; + // Principal type for the owner + idType: Com.Linkedin.Avro2pegasus.Events.Datavault.PrincipalType; + // Owner prefix for the urn, indicating the type of owner + namespace: OwnerUrnNamespace; + // Provenance for the ownership information + source: Com.Linkedin.Dataset.OwnershipProvider; + // The type of ownership the user has in relation to the dataset + type: Com.Linkedin.Dataset.OwnerCategory; // or? datahub-web/packages/data-portal/app/utils/api/datasets/owners.ts/OwnerType + // username for the owner + userName: string; + // Unused attribute + sortId: null | number; + // unused attribute + subType: null; +} + +/** + * Describes the expected shape of the response from dataset owners endpoint + * when requesting ownership information + */ +export interface IOwnerResponse { + // List of dataset owners confirming to the mid-tier IOwner interface + owners?: Array; + // Flag indicates if the dataset is from an upstream source + fromUpstream: boolean; + // urn for the dataset, however if the fromUpstream flag is truthy, then this will be the upstream dataset's urn + datasetUrn: string; + // date the ownership information was last modified + lastModified: number; + // entity that performed the modification + actor: string; +} diff --git a/datahub-web/@datahub/data-models/types/entity/facets.d.ts b/datahub-web/@datahub/data-models/types/entity/facets.d.ts index 7939ec3120b19..40b45a1e4ebe4 100644 --- a/datahub-web/@datahub/data-models/types/entity/facets.d.ts +++ b/datahub-web/@datahub/data-models/types/entity/facets.d.ts @@ -1,3 +1,5 @@ +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; + /** * Options inside a facet * @interface ISearchFacetOption @@ -12,9 +14,14 @@ export interface ISearchFacetOption { * Interface of a facet */ export interface ISearchFacet { + // the business side logical name of the facet name: string; + // the visually represented name of the facet displayName: string; + // Array of key value pairs that contain the actual search facet and it's value values: Array; + // Optional component that takes care of all header based display logic like : header text , additional helpers , other UI modifiers like checkboxes or edit options + headerComponent?: IDynamicComponent; } /** diff --git a/datahub-web/@datahub/data-models/types/entity/feature/features.d.ts b/datahub-web/@datahub/data-models/types/entity/feature/features.d.ts new file mode 100644 index 0000000000000..bc45568d3b236 --- /dev/null +++ b/datahub-web/@datahub/data-models/types/entity/feature/features.d.ts @@ -0,0 +1,52 @@ +import { IFeatureEntity } from '@datahub/metadata-types/types/entity/feature/feature-entity'; +import { FeatureStatusType } from '@datahub/metadata-types/constants/entity/feature/frame/feature-status-type'; + +/** + * Describes the interface for a feature category object + * @export + * @interface IFeatureNode + */ +export type IFeatureNode = Partial & { urn: IFeatureEntity['urn'] | 'urn:li:feature:(namespace,name)' }; + +/** + * Describes the response shape returned when a requests is made for a list of features and feature categories + * @export + * @interface IReadFeaturesResponse + */ +export interface IReadFeatureHierarchyResponse { + // List if Feature nodes contained within this hierarchy + elements: Array; + start: number; + count: number; + // Total number of nodes available are this hierarchy + total: number; +} + +/** + * Path segments / category + prefix to a Feature node mapping to baseEntity, classification, category + */ +export type FeatureSegments = [string, undefined | string, undefined | string]; + +/** + * Search response for feature + */ +export interface ISearchFeatureEntity { + anchors: Array; + availability: string; + baseEntity: string; + browsePaths: Array; + category: string; + classification: string; + description: string; + documentationLink: string; + multiproduct: string; + multiproductVersion: string; + name: string; + namespace: string; + owners: Array; + path: string; + sources: Array; + status: FeatureStatusType; + tier: string; + urn: string; +} diff --git a/datahub-web/@datahub/data-models/types/entity/index.d.ts b/datahub-web/@datahub/data-models/types/entity/index.d.ts deleted file mode 100644 index a684abeea90f9..0000000000000 --- a/datahub-web/@datahub/data-models/types/entity/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; - -/** - * Algebraic data type of entity product types. New Entity types should be added here - * Included union types are discriminated on the "kind" field - */ -export type Entity = DatasetEntity; diff --git a/datahub-web/@datahub/data-models/types/entity/rendering/entity-render-props.d.ts b/datahub-web/@datahub/data-models/types/entity/rendering/entity-render-props.d.ts index 217ce068b591f..3bf3ae3117952 100644 --- a/datahub-web/@datahub/data-models/types/entity/rendering/entity-render-props.d.ts +++ b/datahub-web/@datahub/data-models/types/entity/rendering/entity-render-props.d.ts @@ -1,9 +1,38 @@ import { AppRoute } from '@datahub/data-models/types/entity/shared'; -import { ISearchEntityRenderProps } from '@datahub/data-models/types/entity/rendering/search-entity-render-prop'; -import { ITabProperties, Tab } from '@datahub/data-models/constants/entity/shared/tabs'; -import { BaseEntity } from '@datahub/data-models/entity/base-entity'; +import { + ISearchEntityRenderProps, + IEntityRenderPropsSearch, + IEntityRenderCommonPropsSearch +} from '@datahub/data-models/types/search/search-entity-render-prop'; import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; -import { IEntityRenderPropsSearch } from '@datahub/data-models/types/search/search-entity-render-prop'; +import { IEntityPageMainComponent, PageComponent } from '@datahub/data-models/types/entity/rendering/page-components'; +import { BaseEntity } from '@datahub/data-models/entity/base-entity'; +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; + +/** + * Tab properties for entity profile pages + * @export + * @interface ITabProperties + */ +export interface ITabProperties { + // A unique identifier for the tab so that we can tell what tab navigation piece is connected to + // what content piece inside ivy tabs + id: string; + // The rendered label title for the tab, will show up in the tab navigation menu + title: string; + // The component that is rendered in the content section for the tab, in charge of taking in top + // level data and supplying the proper view + // TODO META-10757: As we move forward with generic entity page, this component needs to accept options + // new pages won't support string as contentComponent. + contentComponent: string | PageComponent | IDynamicComponent; + // Will only insert the tab element and run its render logic if the tab is currently selected. + // The tradeoff is more time to load between tab changes but less heavy initial load times + lazyRender?: boolean; + // Whenever the tablist menu is more complex than a simple label, we need can choose to specify + // a component to handle the more sophisticated logic (example use case would be rendering + // subtabs or expansion/collapsing of menus) + tablistMenuComponent?: string; +} /** * Defines the interface of objects expected to be passed to a nacho table instance @@ -21,19 +50,40 @@ export interface IAttributeValue { /** * Render descriptions for search results */ -export interface IEntityRenderPropsEntityPage) = never> { - // Lists the sub navigation tab ids for the associated entity - tabIds: Array; +export interface IEntityRenderPropsEntityPage = never> { // Route for the entity page route: AppRoute; // The URL path segment to the entity's api endpoint - apiName?: string; + apiRouteName: string; // Lists the tab properties for the tabs on this Entity. A fn is also accepted to dynamically return tabs. tabProperties: Array | ((entity: E) => Array); // Specifies the default tab from the list of tabIds if a specific tab is not provided on navigation - defaultTab: ITabProperties['id']; + defaultTab: ITabProperties['id'] | ((entityUrn: string) => ITabProperties['id']); // Placeholder rendered when attribute are missing for entity metadata attributePlaceholder?: string; + // References the main component used for the entity page. It will receive entity type, urn and tab as parameters + pageComponent?: IEntityPageMainComponent | IDynamicComponent; + // List of components to be dynamically inserted into the entity page header at runtime + customHeaderComponents?: Array; +} + +/** + * Browse definitions of an entity + */ +export interface IEntityRenderPropsBrowse { + // Flag indicating if the `SearchWithinHierarchy` component should be rendered on the browse page + // This performs an advanced search query with the category fields populated in the query string + showHierarchySearch: boolean; + // List of field metadata that browse may use. For example, it can send specific params to API to + // get a custom browse experience. + attributes?: Array; +} + +/** + * `Lists` property definitions + */ +export interface IEntityRenderPropsList { + searchResultConfig: IEntityRenderCommonPropsSearch; } /** @@ -41,38 +91,18 @@ export interface IEntityRenderPropsEntityPage; - }; - browse: { - // Flag indicating if the count of entities should be rendered in the browse page - // TODO META-8863 remove once dataset is migrated - showCount: boolean; - // Flag indicating if the `SearchWithinHierarchy` component should be rendered on the browse page - // This performs an advanced search query with the category fields populated in the query string - showHierarchySearch: boolean; - // Route for the entity page - entityRoute: AppRoute; - // List of field metadata that browse may use. For example, it can send specific params to API to - // get a custom browse experience. - attributes?: Array; - }; + userEntityOwnership?: IEntityRenderCommonPropsSearch; + browse?: IEntityRenderPropsBrowse; + // Some entities need to show custom visuals on top of browse, these entities + // can add those custom components here + browseHeaderComponents?: Array; // Specifies properties for rendering the 'profile' page of an entity, aka Entity page // if there is not an entity page, this should be undefined - entityPage: IEntityRenderPropsEntityPage; + entityPage?: IEntityRenderPropsEntityPage; // Specifies attributes for displaying Entity properties in a list component - list?: { - fields: Array<{ - // Flag indicating that this field's value should be shown in a list item view - showInResultsPreview: boolean; - // The title name for the field - displayName: string; - // The name of the field to display - fieldName: string; - // Optional compute function on how to render the field value - compute?: (arg: unknown) => string; - }>; - }; + list?: IEntityRenderPropsList; } diff --git a/datahub-web/@datahub/data-models/types/entity/rendering/page-components.d.ts b/datahub-web/@datahub/data-models/types/entity/rendering/page-components.d.ts new file mode 100644 index 0000000000000..65e584a9904e6 --- /dev/null +++ b/datahub-web/@datahub/data-models/types/entity/rendering/page-components.d.ts @@ -0,0 +1,231 @@ +import { INachoTableConfigs } from '@nacho-ui/table/types/nacho-table'; +import { KeyNamesWithValueType } from '@datahub/utils/types/base'; +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; +import { IStandardDynamicProperty } from '@datahub/data-models/types/entity/rendering/properties-panel'; +import { INachoDropdownOption } from '@nacho-ui/dropdown/types/nacho-dropdown'; + +// TODO https://jira01.corp.linkedin.com:8443/browse/META-10764: Investigate how to solve the 'wrapper' components scalability issue in generic entity page and search +/** + * Property to show in the entity page header + * Value will be fetched from the entity using the propery `name` + */ +export interface IEntityPageHeaderProperty extends IStandardDynamicProperty { + // Dynamic component that this property can use to be rendered as a tag + tagComponent?: IDynamicComponent; +} + +/** + * Entity Page Header configuration params for an entity + */ +export interface IEntityPageHeader { + // Properties to show in the entity page header + properties: Array; + // Page components at CTA level that will show up in the header + actionComponents?: Array; + // Additional custom components + customComponents?: Array; +} + +/** + * Will render an empty state with a message + */ +export interface IEmptyStateComponent { + // name of the component + name: 'empty-state'; + options: { + // Message to show as a header in the empty state + heading: string; + }; +} + +/** + * Generic component to render the entity page + */ +export interface IEntityPageMainComponent extends IDynamicComponent { + // name of the component + name: 'entity-page/entity-page-main'; + options: { + // header options for the page + header: IEntityPageHeader; + }; +} + +/** + * Content panel that will wrap a component with title, maybe a subheader, and some other common display info + */ +export interface IContentPanelComponent extends IDynamicComponent { + // name of the component + name: 'entity-page/entity-page-content/content-panel'; + options: { + // Id for the element + domId?: string; + // Title to render + title: string; + // Component inside + contentComponent: PageComponent | IDynamicComponent; + }; +} + +/** + * File Viewer Component input content + */ +export interface IFileViewerItem { + /** + * type of the content: + * to add new ones, check modes available here: + * https://github.com/ajaxorg/ace-builds/tree/master/src-noconflict + * + * then add in the options (index.js) for ember ace: + * ace: { + * modes: [...], + * workers: [...], + * exts: [...] + * } + * + * then add that mode as type + */ + type: 'json' | 'graphqlschema' | 'text'; + + // content of the file + content: string; +} + +/** + * Component that will use ember-ace to display the content of a file + */ +export interface IFileViewerComponent extends IDynamicComponent { + // name of the component + name: 'entity-page/entity-page-content/file-viewer'; + options: { + // properties name that has IFileViewerItem as type + propertyName: KeyNamesWithValueType; + // message to display when no file is available + emptyStateMessage: string; + }; +} + +/** + * Nacho table wrapper for generic entity page + */ +export interface INachoTableComponent extends IDynamicComponent { + // name of the component + name: 'entity-page/entity-page-content/nacho-table'; + options: { + // optional css class name for this component + className?: string; + // properties names to retrieve the array of values to show + propertyName?: KeyNamesWithValueType | undefined> | KeyNamesWithValueType>; + // message to show when no data is available + emptyStateMessage: string; + // table configuration + tableConfigs: INachoTableConfigs; + }; +} + +/** + * Simple aggregation component that will show all contained components + */ +export interface ILinearLayoutComponent extends IDynamicComponent { + // name of the component + name: 'entity-page/layouts/linear-layout'; + options: { + // List of components to render + components: Array>; + }; +} + +/** + * This component will switch the entity passed down to components to another one + * using a property of the original entity. This way we can reuse components meant for entity1, + * on entity2 if there is a relation + */ +export interface IEntitySwitch extends IDynamicComponent { + name: 'entity-page/entity-page-content/entity-switch'; + options: { + // property name to fetch the new entity from E + propertyName: keyof E; + // Child component to render + component: IDynamicComponent; + }; +} + +/** + * This component will create an entity given an entity... wait what? The problem is that + * sometimes entity intances are not completely instatiated (with all props). This class will act as + * a simple container calling DataModels and instanciating a complete instance. + */ +export interface IHydrateEntity extends IDynamicComponent { + name: 'entity-page/entity-page-content/hydrate-entity'; + options: { + // Child component to render + component: IDynamicComponent; + }; +} + +/** + * See IContentPanelWithToggle + * + * For each option in the toggle, the component to be rendered inside is needed + * plus an optional toolbar component in case the content component needs a toolbar. + * + * The comunication between content and toolbar is done through a shared object called 'state'. + */ +export interface IContentPanelWithToggleItem { + // component to be rendered in the content section of the panel + contentComponent: IDynamicComponent; + // toolbar to be rendered next to the toggle + toolbarComponent?: IDynamicComponent; +} + +/** + * Content panel that will have a toggle to switch between content + */ +export interface IContentPanelWithToggle extends IDynamicComponent { + // name of the component + name: 'entity-page/entity-page-content/content-panel-with-toggle'; + options: { + // title of content + title: string; + // optional description for the content + description?: string; + // toggle options available + dropDownItems: Array>; + }; +} + +/** + * Map between the value of a property in an entity and a dynamic component + */ +export type Discriminator = Partial, IDynamicComponent>>; + +/** + * Component to create variants of a page using the value of a property + */ +export interface IEntityDiscriminator extends IDynamicComponent { + name: 'entity-page/entity-page-content/entity-discriminator'; + options: { + // Map with platform and desired page params + discriminator: Discriminator; + // If no suitable platform is found, default page will be used + default: IDynamicComponent; + // Property name where to fetch the value to discriminate + propertyName: keyof T; + }; +} + +/** + * All Page Components available + * + * @template E entity or object where page components can read properties + */ +export type PageComponent = + | IFileViewerComponent + | ILinearLayoutComponent + | INachoTableComponent + | IContentPanelComponent + | IEmptyStateComponent + | IContentPanelWithToggle + | IEntityDiscriminator + | IEntitySwitch + | IHydrateEntity + | IDynamicComponent; diff --git a/datahub-web/@datahub/data-models/types/entity/rendering/properties-panel.d.ts b/datahub-web/@datahub/data-models/types/entity/rendering/properties-panel.d.ts new file mode 100644 index 0000000000000..22c65c62528f1 --- /dev/null +++ b/datahub-web/@datahub/data-models/types/entity/rendering/properties-panel.d.ts @@ -0,0 +1,47 @@ +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; + +/** + * Properties Panel accepted options + */ +export interface IPropertiesPanelArgsOptions { + // List of properties to display + properties: Array>; + // Number of column to display the properties + columnNumber: number; + // Whether this component it is embeded or it should show its own borders and margins + standalone: boolean; +} + +/** + * Properties panel label accepted options + */ +export interface IPropertyPanelLabelComponentOptions { + // Display name of the property to show in the UI + displayName: string; + // Optional text providing additional information about the property rendered as a tooltip + tooltipText?: string; +} + +/** + * The property panel label component properties for dynamic rendering + */ +export interface IPropertyPanelLabelComponent { + // Name of the component to render + name: string; + // The options permissible for a panel label component + options?: IPropertyPanelLabelComponentOptions; +} + +/** + * Standarized dynamic property across Datahub + */ +export interface IStandardDynamicProperty { + // Name of the property to retreive the value + name: ValidPropertiesName; + // Display name of the property to show in the UI + displayName?: string; + // Dynamic component used to render the label for this property + labelComponent?: IPropertyPanelLabelComponent; + // Dynamic component that this property can use to be rendered + component?: IDynamicComponent; +} diff --git a/datahub-web/@datahub/data-models/types/entity/rendering/search-entity-render-prop.d.ts b/datahub-web/@datahub/data-models/types/entity/rendering/search-entity-render-prop.d.ts deleted file mode 100644 index d21f1bedd8904..0000000000000 --- a/datahub-web/@datahub/data-models/types/entity/rendering/search-entity-render-prop.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Defines attributes that determine how search related visual elements are rendered - * @export - * @interface ISearchEntityRenderProps - */ -export interface ISearchEntityRenderProps { - // The name of the search entity attribute that these render properties apply to e.g. dataorigin - fieldName: string; - // Flag indicating that this search entity attribute should be available or hidden from search auto complete - showInAutoCompletion: boolean; - // Flag indicating that this search entity attribute should be available or hidden from results preview - showInResultsPreview: boolean; - // Flag indicating that this search entity attribute should be shown as a search facet property - showInFacets: boolean; - // Flag indicating that this search entity attribute should be shown as a search result tag or not - showAsTag?: boolean; - // An alternative string representation of the fieldName attribute that's more human-friendly e.g. Data Origin - displayName: string; - // A description of the search attribute - desc: string; - // An example of the search pattern for the field - example: string; - // The compute function is helpful when we want to define how a specific field gets rendered in a template - // An example is when we have nested objects or array of objects that we need to massage to a standardized - // way to view - compute?: (data: unknown) => string; - // forced selection for facets, this should be send to the api regardless the user selection - facetDefaultValue?: Array; - // browse may require to filter by some facets on some cases - browseFiltersValue?: Array; - // minimun query length to fetch suggestions for backend - minAutocompleteFetchLength?: number; - // Flag indicating if the search entity attribute should be represented as an Icon or not - showAsIcon?: boolean; - // A string which serves as an identifier for the icon itself. Generally associated with a className - iconName?: string; - // Optional text that is shown over hovering of the element, to provide more meaning and context - hoverText?: string; - // Component that can serve different purposes when default rendering options are not enough - // attributes is an optional object used to provide additional rendering information about the component - component?: { - name: string; - attrs?: Record; - }; -} diff --git a/datahub-web/@datahub/data-models/types/entity/search.d.ts b/datahub-web/@datahub/data-models/types/entity/search.d.ts index 24005b25bc485..1de0f1603c830 100644 --- a/datahub-web/@datahub/data-models/types/entity/search.d.ts +++ b/datahub-web/@datahub/data-models/types/entity/search.d.ts @@ -1,6 +1,4 @@ -import { IEntityLinkAttrs } from '@datahub/data-models/types/entity/shared'; import { IFacetsCounts } from '@datahub/data-models/types/entity/facets'; -import { DataModelEntityInstance } from '@datahub/data-models/entity/entity-factory'; import { ArrayElement } from '@datahub/utils/types/array'; /** @@ -35,11 +33,8 @@ export type SearchResultDataItem = ArrayElement { - entityLink: IEntityLinkAttrs; + // Position in search result resultPosition: number; - // Interim approach to provide secondary actions components with a required DataModelEntityInstance reference - // In the ideal case search results should be reified with the class - instance: DataModelEntityInstance | null; } /** diff --git a/datahub-web/@datahub/data-models/types/entity/shared.d.ts b/datahub-web/@datahub/data-models/types/entity/shared.d.ts index 86efaab2586b9..d64faec3af291 100644 --- a/datahub-web/@datahub/data-models/types/entity/shared.d.ts +++ b/datahub-web/@datahub/data-models/types/entity/shared.d.ts @@ -1,25 +1,47 @@ import { BaseEntity } from '@datahub/data-models/entity/base-entity'; import { IBaseEntity } from '@datahub/metadata-types/types/entity'; import { IDynamicLinkNode } from '@datahub/utils/types/vendor/dynamic-link'; +import { DataModelName } from '@datahub/data-models/constants/entity'; /** * String literal of available entity routes */ -export type AppRoute = 'browse.entity' | 'datasets.dataset' | 'user.profile'; +export type AppRoute = + | 'browse.entity' + | 'features.feature' + | 'datasets.dataset' + | 'user.profile' + | 'dataconcepts.dataconcept' + | 'jobs.job' + | EntityPageRoute; + +/** + * Specifies the top level Ember route representing navigation to an instance of entity page + */ +export type EntityPageRoute = 'entity-type.urn'; /** * Properties that enable a dynamic link to the entity or category - * @template T {T = unknown} by default, queryParams for EntityLinkNode are not specified, however, otherwise an associated type must be provided + * @template T {T = undefined} by default, queryParams for EntityLinkNode are not specified, however, otherwise an associated type must be provided + */ +export type EntityLinkNode = IDynamicLinkNode, AppRoute, T>; + +/** + * Search Link type alias */ -export type EntityLinkNode = IDynamicLinkNode, AppRoute, T>; +export type SearchLinkNode = IDynamicLinkNode< + Array, + 'search', + { entity: DataModelName; keyword: string; page?: number } +>; /** * Envelopes the link: EntityLinkNode with metadata on how the link should be displayed * @export * @interface IEntityLinkAttrs - * @template T {T = unknown} by default, queryParams for IEntityLinkAttrs are not specified, however, otherwise an associated type must be provided + * @template T {T = undefined} by default, queryParams for IEntityLinkAttrs are not specified, however, otherwise an associated type must be provided */ -export interface IEntityLinkAttrs { +export interface IEntityLinkAttrs { // Link properties that enable a dynamic link tho the entity or category link: EntityLinkNode; // Display name for the concrete entity class @@ -42,8 +64,10 @@ export interface IBrowsePath { title: string; // segments of the path (path separated into an array of string) segments: Array; - // count of total entities under this path - count?: number; + // count of total entities under this path (nested) + totalNumEntities?: number; + // number of entities only in current path + entitiesPaginationCount: number; // link to groups/folders groups: Array; // link to entities diff --git a/datahub-web/@datahub/data-models/types/relationships/decorator-types.d.ts b/datahub-web/@datahub/data-models/types/relationships/decorator-types.d.ts new file mode 100644 index 0000000000000..eb97407c17a01 --- /dev/null +++ b/datahub-web/@datahub/data-models/types/relationships/decorator-types.d.ts @@ -0,0 +1,19 @@ +import { DataModelEntityInstance, DataModelName } from '@datahub/data-models/constants/entity'; + +/** + * Expresses the form of a getter function for a data model entity when given a urn and entity type + */ +export type DataModelsRelationshipGetter = >( + urns: T +) => (T extends string ? K : Array) | undefined; + +/** + * Creates a custom object to provide the interface for the Objects we are actually working with. + * Since we are messing with decorators and prototypes under the hood, typescript won't actually + * know such a property exists on the object interface + */ +export interface IRelationshipDecoratedClassPrototype { + __relationshipGetters: Partial>>; + __relationships: Set; + [key: string]: unknown; +} diff --git a/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component.d.ts b/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component.d.ts new file mode 100644 index 0000000000000..1b9a42af65ad0 --- /dev/null +++ b/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component.d.ts @@ -0,0 +1,30 @@ +import { ICustomSearchResultPropertyComponentTag } from '@datahub/data-models/types/search/custom-search-result-property-component/tag'; +import { ICustomSearchResultPropertyComponentLink } from '@datahub/data-models/types/search/custom-search-result-property-component/link'; +import { ICustomSearchResultPropertyComponentDate } from '@datahub/data-models/types/search/custom-search-result-property-component/date'; +import { ICustomSearchResultPropertyComponentIcon } from '@datahub/data-models/types/search/custom-search-result-property-component/icon'; +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; + +// TODO https://jira01.corp.linkedin.com:8443/browse/META-10764: Investigate how to solve the 'wrapper' components scalability issue in generic entity page and search + +/** + * This interface should live in search addon, but search addon depends on data-models and + * we don't want to create a circular dependency. Storing this interface at data-models for now. + * + * Search can have custom components to be render on fields, tags or secondary actions. + * + * Unifying interface to invoke these components + */ + +/** + * Known components are the ones that are generic and reusable for all kind of purposes + */ +type KnownComponents = + | ICustomSearchResultPropertyComponentTag + | ICustomSearchResultPropertyComponentLink + | ICustomSearchResultPropertyComponentDate + | ICustomSearchResultPropertyComponentIcon; + +/** + * Making explicit this distintion to make it easier to add new KnownComponents + */ +export type ICustomSearchResultPropertyComponent = KnownComponents | IDynamicComponent; diff --git a/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/date.d.ts b/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/date.d.ts new file mode 100644 index 0000000000000..c7989d9b720f5 --- /dev/null +++ b/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/date.d.ts @@ -0,0 +1,12 @@ +/** + * Interface for component that renders a formatted date + */ +export interface ICustomSearchResultPropertyComponentDate { + name: 'custom-search-result-property-component/date'; + options: { + // moment format + format: string; + // multiplies value by 1000 + inSeconds?: boolean; + }; +} diff --git a/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/icon.d.ts b/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/icon.d.ts new file mode 100644 index 0000000000000..440cea181c49d --- /dev/null +++ b/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/icon.d.ts @@ -0,0 +1,12 @@ +/** + * Interface for component that renders an icon + */ +export interface ICustomSearchResultPropertyComponentIcon { + name: 'custom-search-result-property-component/icon'; + options: { + // Name of the icon + iconName: string; + // Meaning of the icon readable by humans + hoverText: string; + }; +} diff --git a/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/link.d.ts b/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/link.d.ts new file mode 100644 index 0000000000000..a5a9f7e9add51 --- /dev/null +++ b/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/link.d.ts @@ -0,0 +1,17 @@ +/** + * Interface for component that renders an external link + */ +export interface ICustomSearchResultPropertyComponentLink { + name: 'custom-search-result-property-component/link'; + options: { + /** + * property from entity that will return a ILink + */ + linkProperty: string; + + /** + * Text for the button + */ + text: string; + }; +} diff --git a/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/tag.d.ts b/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/tag.d.ts new file mode 100644 index 0000000000000..6a4443184a3e7 --- /dev/null +++ b/datahub-web/@datahub/data-models/types/search/custom-search-result-property-component/tag.d.ts @@ -0,0 +1,14 @@ +/** + * Interface for component that renders a tag + */ +export interface ICustomSearchResultPropertyComponentTag { + name: 'custom-search-result-property-component/tag'; + options: { + // should be type PillState but it is not exposed in nacho-ui + state: string; + // should use titleize helper to format the text + titleize?: boolean; + // if text is used, then value should be a boolean + text?: string; + }; +} diff --git a/datahub-web/@datahub/data-models/types/search/search-entity-render-prop.d.ts b/datahub-web/@datahub/data-models/types/search/search-entity-render-prop.d.ts index 0516e582d9057..2ec85d623f1e6 100644 --- a/datahub-web/@datahub/data-models/types/search/search-entity-render-prop.d.ts +++ b/datahub-web/@datahub/data-models/types/search/search-entity-render-prop.d.ts @@ -1,4 +1,5 @@ -type ICustomSearchResultPropertyComponent = any; // eslint-disable-line @typescript-eslint/no-explicit-any +import { ICustomSearchResultPropertyComponent } from '@datahub/data-models/types/search/custom-search-result-property-component'; +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; export interface IEntityRenderCommonPropsSearch { // Lists a set of render properties that indicate how search attributes for an entity are rendered in the ui @@ -9,8 +10,7 @@ export interface IEntityRenderCommonPropsSearch { // actions are rendered in the order they are presented, this may evolve to include options for rendering such as properties e.t.c secondaryActionComponents?: Array; // Lists the optional search result item footer component string references - // Footer components are rendered in the order they are presented, this may evolve to include - // options for rendering + // Footer components are rendered in the order they are presented, this may evolve to include options for rendering customFooterComponents?: Array; searchResultEntityFields?: { // Field that returns the name of the entity, by default is 'name' @@ -20,6 +20,12 @@ export interface IEntityRenderCommonPropsSearch { // Field that returns the entity picture of the entity, it won't be shown by default pictureUrl?: string; }; + // Whether or not this entity is searchable through conventional means in the application. One + // can still have search props but have isEnabled set to false if the entity relies on search but + // is not necessary available in the global search functionality for the app + // Note: Though this parameter is optional, items that rely on listing entities that are searchable + // will default this to false + isEnabled?: boolean; } /** * This interface should live in search addon, but search addon depends on data-models and @@ -30,12 +36,8 @@ export interface IEntityRenderCommonPropsSearch { export interface IEntityRenderPropsSearch extends IEntityRenderCommonPropsSearch { // Placeholder text describing call to action for search input placeholder: string; - // API use a specific name to refer to an entity. For example, 'features' in api is 'feature'. - apiName: string; // By default autocomplete field is `name`, but some entities maybe need some other field autocompleteNameField?: string; - // Flag indicating that this entity should be searchable, by default all entities are searchable so this attribute is optional - isEnabled?: boolean; } /** @@ -71,11 +73,14 @@ export interface ISearchEntityRenderProps { facetDefaultValue?: Array; // browse may require to filter by some facets on some cases browseFiltersValue?: Array; - // minimun query length to fetch suggestions for backend + // minimum query length to fetch suggestions for backend minAutocompleteFetchLength?: number; // Optional text that is shown over hovering of the element, to provide more meaning and context hoverText?: string; // Component that can serve different purposes when default rendering options are not enough // attributes is an optional object used to provide additional rendering information about the component component?: ICustomSearchResultPropertyComponent; + // Optional dynamic component(s) that are supplied as a way to flexibly control what and how components work + // An implementation of this interface would contain custom `DynamicComponent` names and custom options on a per component basis + headerComponent?: IDynamicComponent; } diff --git a/datahub-web/@datahub/datasets-core/.npmignore b/datahub-web/@datahub/datasets-core/.npmignore index 2f20afe3bf827..410da08fbf3f7 100644 --- a/datahub-web/@datahub/datasets-core/.npmignore +++ b/datahub-web/@datahub/datasets-core/.npmignore @@ -11,6 +11,7 @@ /.ember-cli /.eslintignore /.eslintrc.js +/.git/ /.gitignore /.watchmanconfig /.travis.yml diff --git a/datahub-web/@datahub/datasets-core/.travis.yml b/datahub-web/@datahub/datasets-core/.travis.yml index 00af6f0e1b690..8c8f454054475 100644 --- a/datahub-web/@datahub/datasets-core/.travis.yml +++ b/datahub-web/@datahub/datasets-core/.travis.yml @@ -3,7 +3,7 @@ language: node_js node_js: # we recommend testing addons with the same minimum supported node version as Ember CLI # so that your addon works for all apps - - "6" + - '10' sudo: false dist: trusty @@ -26,9 +26,8 @@ jobs: include: # runs linting and tests with current locked deps - - - stage: "Tests" - name: "Tests" + - stage: 'Tests' + name: 'Tests' install: - yarn install --non-interactive script: @@ -36,19 +35,26 @@ jobs: - yarn lint:js - yarn test - - name: "Floating Dependencies" + - name: 'Floating Dependencies' script: - yarn test + - stage: 'Additional Tests' + name: 'Floating Dependencies' + install: + - npm install --no-package-lock + script: + - npm test + # we recommend new addons test the current and previous LTS # as well as latest stable release (bonus points to beta/canary) - - stage: "Additional Tests" - env: EMBER_TRY_SCENARIO=ember-lts-2.16 - - env: EMBER_TRY_SCENARIO=ember-lts-2.18 + - env: EMBER_TRY_SCENARIO=ember-lts-3.8 + - env: EMBER_TRY_SCENARIO=ember-lts-3.12 - env: EMBER_TRY_SCENARIO=ember-release - env: EMBER_TRY_SCENARIO=ember-beta - env: EMBER_TRY_SCENARIO=ember-canary - env: EMBER_TRY_SCENARIO=ember-default-with-jquery + - env: EMBER_TRY_SCENARIO=ember-classic before_install: - curl -o- -L https://yarnpkg.com/install.sh | bash diff --git a/datahub-web/@datahub/datasets-core/LICENSE.md b/datahub-web/@datahub/datasets-core/LICENSE.md index f8d1edb3b7d6e..0d02ed0266734 100644 --- a/datahub-web/@datahub/datasets-core/LICENSE.md +++ b/datahub-web/@datahub/datasets-core/LICENSE.md @@ -1,9 +1,13 @@ -The MIT License (MIT) +Copyright (c) 2020 LinkedIn -Copyright (c) 2019 +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + http://www.apache.org/licenses/LICENSE-2.0 -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/datahub-web/@datahub/datasets-core/README.md b/datahub-web/@datahub/datasets-core/README.md index 688fd43147883..cdb1b0e7c55e6 100644 --- a/datahub-web/@datahub/datasets-core/README.md +++ b/datahub-web/@datahub/datasets-core/README.md @@ -1,19 +1,14 @@ -@datahub/datasets-core -============================================================================== +# @datahub/datasets-core -"The handler for datasets as an entity under DataHub Data Hub" +"The handler for datasets as an entity under DataHub" - -Installation ------------------------------------------------------------------------------- +## Installation ``` ember install @datahub/datasets-core ``` - -Usage & Development ------------------------------------------------------------------------------- +## Usage & Development This addon is meant to be used within the context of the DataHub application and exists to house our dataset as an entity related components and utilities. @@ -47,7 +42,9 @@ General outline of the table overview is here: - Title...sorting...filters + + Title...sorting...filters + @@ -56,7 +53,7 @@ General outline of the table overview is here:
-
{{tag}}
+
{{tag}}
Dropdown menu for annotation tagging
@@ -67,35 +64,33 @@ General outline of the table overview is here:
``` -Contributing ------------------------------------------------------------------------------- +## Contributing ### Installation -* `git clone ` -* `cd datasets-core` -* `yarn install` +- `git clone ` +- `cd datasets-core` +- `yarn install` ### Linting -* `yarn lint:hbs` -* `yarn lint:js` -* `yarn lint:js --fix` +- `yarn lint:hbs` +- `yarn lint:js` +- `yarn lint:js --fix` ### Running tests -* `ember test` – Runs the test suite on the current Ember version -* `ember test --server` – Runs the test suite in "watch mode" -* `ember try:each` – Runs the test suite against multiple Ember versions +- `ember test` – Runs the test suite on the current Ember version +- `ember test --server` – Runs the test suite in "watch mode" +- `ember try:each` – Runs the test suite against multiple Ember versions ### Running the dummy application -* `ember serve` -* Visit the dummy application at [http://localhost:4200](http://localhost:4200). +- `ember serve` +- Visit the dummy application at [http://localhost:4200](http://localhost:4200). For more information on using ember-cli, visit [https://ember-cli.com/](https://ember-cli.com/). -License ------------------------------------------------------------------------------- +## License -This project is licensed under the [MIT License](LICENSE.md). +This project is licensed under the [Apache License](LICENSE.md). diff --git a/datahub-web/@datahub/datasets-core/addon/components/datasets/containers/dataset-main.ts b/datahub-web/@datahub/datasets-core/addon/components/datasets/containers/dataset-main.ts new file mode 100644 index 0000000000000..79f522f2ebd5d --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/components/datasets/containers/dataset-main.ts @@ -0,0 +1,285 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/datasets/containers/dataset-main'; +import { computed, action } from '@ember/object'; +import { or } from '@ember/object/computed'; +import { set } from '@ember/object'; +import { setProperties } from '@ember/object'; +import { next } from '@ember/runloop'; +import { inject as service } from '@ember/service'; +import RouterService from '@ember/routing/router-service'; +import { layout, classNames } from '@ember-decorators/component'; +import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; +import { containerDataSource } from '@datahub/utils/api/data-source'; +import { task } from 'ember-concurrency'; +import { ETaskPromise } from '@datahub/utils/types/concurrency'; +import DataModelsService from '@datahub/data-models/services/data-models'; +import { isNotFoundApiError } from '@datahub/utils/api/shared'; +import Search from '@datahub/search/services/search'; +import { ISearchEntityRenderProps } from '@datahub/data-models/types/search/search-entity-render-prop'; +import { IAppConfig, IConfigurator } from '@datahub/shared/types/configurator/configurator'; +import { TabProperties, DatasetTab } from '@datahub/data-models/constants/entity/dataset/tabs'; +import { CommonTabProperties } from '@datahub/data-models/constants/entity/shared/tabs'; +import { ITabProperties } from '@datahub/data-models/types/entity/rendering/entity-render-props'; + +/** + * Defines the error properties when there is an error in the container + */ +interface IContainerError { + isNotFoundApiError: boolean; + error: Error; +} + +/** + * This file is a replacement of the DatasetController. Still there is too much + * going on here. It would be nice in the future to extract some parts out. + */ +@classNames('dataset-main') +@layout(template) +@containerDataSource('containerDataTask', ['urn']) +export default class DatasetMainContainer extends Component { + /** + * Inject the router as there are some transitions that we need to do + */ + @service + router!: RouterService; + + /** + * Data Models service to load entities + */ + @service('data-models') + dataModels!: DataModelsService; + + /** + * Search service to set entity type when visiting dataset page + */ + @service('search') + search!: Search; + + /** + * URN for the current dataset view + */ + urn!: string; + + /** + * Enum of tab properties + */ + tabIds = DatasetTab; + + /** + * The currently selected tab in view + */ + tabSelected!: DatasetTab; + + /** + * Configurator service if available + */ + @service + configurator?: IConfigurator; + + /** + * References the collection of help links with references to external pages of help information + */ + wikiLinks: IAppConfig['wikiLinks'] = this.configurator?.getConfig('wikiLinks') || {}; + + /** + * References a collection of properties for avatar properties + */ + avatarEntityProps?: IAppConfig['userEntityProps'] = this.configurator?.getConfig('userEntityProps'); + + /** + * Jit ACL configs + */ + jitAclConfig = this.configurator?.getConfig('jitAcl'); + + /** + * Flag indicating the dataset policy is derived from an upstream source + */ + isPolicyFromUpstream = false; + + /** + * Flag indicating if the viewer is internal + */ + get isInternal(): boolean { + return Boolean(this.configurator?.getConfig('isInternal')); + } + + /** + * Flag indicating whether or not we are in the staging environment, which is useful for determining whether + * or not to display some features in testing + */ + get isStaging(): boolean { + return Boolean(this.configurator?.getConfig('isStagingBanner')); + } + + /** + * Whether or not we have met the dataset ownership count requirements + */ + datasetOwnersRequiredNotMet?: boolean; + + /** + * Flag indicating that the dataset ownership requires user attention + * @type {ComputedProperty} + */ + @or('datasetOwnersRequiredNotMet') + ownershipRequiresUserAction!: boolean; + + /** + * Stores the entity definition for a dataset to be passed into the template + */ + fields: Array = DatasetEntity.renderProps.search.attributes; + + /** + * This value will only be read by non-UMP dataset header, and powers whether + * the tag will show that we have PII in the dataset or not + */ + datasetContainsPersonalData?: boolean; + + /** + * Reference to the DatasetEntity + */ + entity?: DatasetEntity; + + /** + * Reference to the entity class for use by downstream components, for example, to access the Entity's render props + */ + entityClass: typeof DatasetEntity = DatasetEntity; + + /** + * Indicate if the container is in a error state and what error ocurred + */ + error?: IContainerError; + + /** + * List of tasks to perform on instantiation of this container + */ + @(task(function*(this: DatasetMainContainer): IterableIterator> { + this.resetState(); + + try { + yield this.reifyEntityTask.perform(); + + yield this.getPiiStatusTask.perform(); + } catch (e) { + set(this, 'error', { + isNotFoundApiError: isNotFoundApiError(e), + error: e + }); + } + }).restartable()) + containerDataTask!: ETaskPromise; + + /** + * Materializes the DatasetEntity instance + */ + @(task(function*(this: DatasetMainContainer): IterableIterator> { + const { dataModels, urn } = this; + + //TODO: META-8267 Container notifications decorator + if (urn) { + const entity: DatasetEntity | undefined = yield dataModels.createInstance(DatasetEntity.displayName, urn); + set(this, 'entity', entity); + } + }).restartable()) + reifyEntityTask!: ETaskPromise; + + /** + * Gets the PII status for any non UMP dataset + */ + @(task(function*(this: DatasetMainContainer): IterableIterator> { + const { entity } = this; + if (entity) { + const piiStatus = yield entity.readPiiStatus(); + set(this, 'datasetContainsPersonalData', piiStatus); + } + }).restartable()) + getPiiStatusTask!: ETaskPromise; + + /** + * Resets the state of the container as it may be reused for different datasets + */ + resetState(): void { + setProperties(this, { + error: undefined, + datasetOwnersRequiredNotMet: undefined, + datasetContainsPersonalData: undefined, + entity: undefined, + isPolicyFromUpstream: false + }); + } + + /** + * This will return the paths for an entity. We should be able to consume entity.readPath + * direcly but since datasets are not migrated we need to flag guard it. + * + */ + @computed('entity') + get paths(): Promise> { + const { entity } = this; + if (!entity) { + return Promise.resolve([]); + } + + return entity.readPath; + } + /** + * Array of tabs that are available for this entity + */ + @computed('entity') + get datasetTabs(): Array { + const { entity } = this; + + if (!entity) { + return []; + } + const tabs: Array = [ + DatasetTab.Schema, + DatasetTab.Properties, + DatasetTab.Ownership, + DatasetTab.Relationships + ]; + + return [...TabProperties.filter((tab): boolean => tabs.includes(tab.id)), ...CommonTabProperties]; + } + + /** + * Map to say which tab we should highlight with a notification badge + */ + @computed('requiresUserAction', 'ownershipRequiresUserAction') + get notificationsMap(): { [key in DatasetTab]?: boolean } { + return { + [DatasetTab.Ownership]: this.ownershipRequiresUserAction + }; + } + + /** + * Handler to capture changes in dataset PII status + */ + @action + onNotifyPiiStatus(containingPersonalData: boolean): void { + set(this, 'datasetContainsPersonalData', containingPersonalData); + } + + /** + * Handles user generated tab selection action by transitioning to specified route + * @param {Tabs} tabSelected the currently selected tab + */ + @action + tabSelectionChanged(tabSelected: DatasetTab): void { + // if the tab selection is not same as current, transition + if (this.tabSelected !== tabSelected) { + const router = this.router; + router.transitionTo(router.currentRouteName, this.urn, tabSelected); + } + } + + /** + * Triggered when the ownership information changes, will alert the user on the tab with a red dot if + * the current state of the dataset doesn't match the rules set out for the dataset ownership + * @param ownersNotConfirmed - Whether or not the owners for the dataset meet the requirements + */ + @action + setOwnershipRuleChange(ownersNotConfirmed: boolean): void { + next(this, (): boolean | undefined => set(this, 'datasetOwnersRequiredNotMet', ownersNotConfirmed)); + } +} diff --git a/datahub-web/@datahub/datasets-core/addon/components/datasets/core/containers/dataset-groups.ts b/datahub-web/@datahub/datasets-core/addon/components/datasets/core/containers/dataset-groups.ts new file mode 100644 index 0000000000000..9d5d5fd2652f7 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/components/datasets/core/containers/dataset-groups.ts @@ -0,0 +1,141 @@ +import { IDatasetGroupsAPIResponse, IDatasetGroupAPIResponse } from '@datahub/datasets-core/types/groups'; +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../../../templates/components/datasets/core/containers/dataset-groups'; +import { layout, classNames } from '@ember-decorators/component'; +import { ETaskPromise } from '@datahub/utils/types/concurrency'; +import { task } from 'ember-concurrency'; +import { containerDataSource } from '@datahub/utils/api/data-source'; +import { set, computed } from '@ember/object'; +import { readDatasetGroups } from '@datahub/data-models/api/dataset/groups'; +import { datasetGroupNameRegexPattern } from '@datahub/data-models/constants/entity/dataset/groups'; +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component.d'; + +const baseTableClass = 'dataset-groups-table'; +const tableTitle = 'Groups'; + +/** + * The type of each DatasetGroup created solely from the `groupsResponse` so that we can display it as per our liking in the UI + */ +interface IDatasetGroupMap { + // Name of the dataset group. Ex: OauthDatasets + name: string; + // The namespace that precedes the name and provides more context. Ex : com.abc.apidatasets + namespace: string; +} + +@layout(template) +@classNames('dataset-groups__container') +@containerDataSource('getContainerDataTask', ['urn']) +export default class DatasetGroupsContainer extends Component { + /** + * Styling class used in the template + */ + baseTableClass = baseTableClass; + + /** + * Title of the table that holds the groups' info + */ + tableTitle = tableTitle; + + /** + * The urn is a passed in element that is used by this container to know the context of the entity we are + * displaying as an entity is identified by this unique urn key + */ + urn = ''; + + /** + * Response data for the dataset groups API call + */ + groupsResponse: IDatasetGroupsAPIResponse = []; + + /** + * Method responsible for return the a Dynamic Component that can be used as a header for the groups table + */ + get dynamicHeaderComponent(): IDynamicComponent { + return { + name: 'dynamic-components/header', + options: { + className: `${baseTableClass}__dynamic-header`, + title: + 'A group is a subset of related datasets. Each group has a namespace and a description associated with it', + contentComponents: [ + { + name: 'dynamic-components/composed/user-assistance/help-tooltip-with-link', + options: { + className: `${baseTableClass}__tooltip`, + text: + 'Standardized identifier used for GDPR purposes to identify and group a static collection of datasets. Makes purging and onboarding of subsets to dashboards easier' + } + } + ] + } + }; + } + + /** + * Local state representative of the groups that the dataset belongs to. + * Groups is formed by extracting a list of names from the `groupsResponse` property + * + * We construct the `DatasetGroupMap` for each group available by calling the `formatDatasetGroupNames` helper function, + * and make a list called `groupList` + * + */ + @computed('groupsResponse') + get groups(): Array { + return this.groupsResponse.reduce( + (groupList: Array, currentGroup: IDatasetGroupAPIResponse): Array => { + const groupNameMatches = datasetGroupNameRegexPattern.exec(currentGroup.urn); + if (groupNameMatches) { + return [...groupList, this.formatDatasetGroupNames(groupNameMatches)]; + } + return groupList; + }, + [] + ); + } + + /** + * Helper method to parse the input into a usable object. + * We construct both `namespace` and `name` as part of this object + * + * @param groupNameMatches The incoming param containing the groupNames + */ + formatDatasetGroupNames(groupNameMatches: Array): IDatasetGroupMap { + const groupNames = groupNameMatches[1].split(','); + return { + namespace: groupNames[0], + name: groupNames[1] + }; + } + + /** + * Text displayed at the template level when there are no groups associated with the dataset + */ + emptyStateDisplayText = 'There are no groups that this dataset belongs to'; + + /** + * A boolean flag to indicate if there are groups or not + */ + @computed('groups') + get isEmpty(): boolean { + return !this.groups.length; + } + + /** + * Async task that reads the dataset groups from `readDatasetGroups`, + * then extracts the datasetName from it ( if any ) + + * Also responsible for setting the value for `groupsResponse` + */ + @(task(function*(this: DatasetGroupsContainer): IterableIterator> { + const { urn } = this; + const emptyGroups: IDatasetGroupsAPIResponse = []; + + if (urn) { + const groupsResponse = yield readDatasetGroups(urn); + set(this, 'groupsResponse', groupsResponse || emptyGroups); + } + }).restartable()) + getContainerDataTask!: ETaskPromise; +} diff --git a/datahub-web/@datahub/datasets-core/addon/components/datasets/core/page/platform-discriminator.ts b/datahub-web/@datahub/datasets-core/addon/components/datasets/core/page/platform-discriminator.ts new file mode 100644 index 0000000000000..d9a932c580bc5 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/components/datasets/core/page/platform-discriminator.ts @@ -0,0 +1,54 @@ +import Component from '@glimmer/component'; +import { IEntityRenderPropsEntityPage } from '@datahub/data-models/types/entity/rendering/entity-render-props'; +import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; +import { getDatasetUrnParts } from '@datahub/data-models/entity/dataset/utils/urn'; + +/** + * Page Component type extracted from render props + */ +type EntityPageComponent = Exclude; + +/** + * Platform type extracted from dataset + */ +type Platform = Exclude; + +/** + * Map between platform and entity page wanted for that specific platform + */ +export type Discriminator = Partial>; + +/** + * Arguments for this component + */ +export interface IDatasetsCorePagePlatformDiscriminatorArgs { + options: { + // Map with platform and desired page params + discriminator: Discriminator; + // If no suitable platform is found, default page will be used + default: EntityPageComponent; + }; + // urn of dataset to extract platform + urn: string; +} + +/** + * This component will allow to map dataset platform with custom page for that platform. + */ +export default class DatasetsCorePagePlatformDiscriminator extends Component< + IDatasetsCorePagePlatformDiscriminatorArgs +> { + get component(): IDynamicComponent { + const { urn, options } = this.args; + const { discriminator, default: defaultPage } = options; + const parts = getDatasetUrnParts(urn); + const discriminatedPage = parts.platform && discriminator[parts.platform]; + + if (discriminatedPage) { + return discriminatedPage; + } + + return defaultPage; + } +} diff --git a/datahub-web/@datahub/datasets-core/addon/components/datasets/relationships/dataset-relationship-table.ts b/datahub-web/@datahub/datasets-core/addon/components/datasets/relationships/dataset-relationship-table.ts new file mode 100644 index 0000000000000..e4bf909d23c1a --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/components/datasets/relationships/dataset-relationship-table.ts @@ -0,0 +1,141 @@ +import Component from '@ember/component'; +// @ts-ignore +import template from '../../../templates/components/datasets/relationships/dataset-relationship-table'; +import { layout } from '@ember-decorators/component'; +import { action, computed } from '@ember/object'; +import { IDatasetLineage, DatasetLineageList } from '@datahub/metadata-types/types/entity/dataset/lineage'; +import { set } from '@ember/object'; +import { arrayMap, arrayPipe, arrayReduce } from '@datahub/utils/array/index'; +import { + allRelationshipType, + dedupeType, + takeNLineageItems, + filterLineageByType +} from '@datahub/datasets-core/utils/lineage'; +import { AppRoute } from '@datahub/data-models/types/entity/shared'; +import { INachoDropdownOption } from '@nacho-ui/dropdown/types/nacho-dropdown'; + +/** + * Shortcut typing to reference dropdown options for relationship types + */ +type RelationshipType = INachoDropdownOption; + +@layout(template) +export default class DatasetRelationshipTable extends Component { + /** + * The default number of element relationships to render initially + * @type {number} + * @memberof DatasetRelationshipTable + */ + truncatedLength = 10; + + /** + * List of dataset relationships + * @type {IDatasetLineage} + * @memberof DatasetRelationshipTable + */ + relationships: DatasetLineageList = []; + + /** + * References the currently selected relationship type, used to filter out relationships + * of non matching type + * @type {RelationshipType} + * @memberof DatasetRelationshipTable + */ + selectedRelationshipType: RelationshipType = allRelationshipType; + + /** + * Flag indicating if all relationships for the selected relationship type should be shown + * @type {boolean} + * @memberof DatasetRelationshipTable + */ + showAllRelationships = false; + + @computed('selectedRelationshipType', 'relationships.[]') + get filteredRelationshipsByType(): DatasetLineageList { + return filterLineageByType(this.selectedRelationshipType.value)(this.relationships); + } + + /** + * Determines if a supplied urn string is an actor that can be linked to within the DataHub app or externally + * @private + * @param {string} actorUrn the urn for the actor in the dataset relationship + */ + protected linkableActor(_actorUrn?: string): { route: AppRoute | null; actorType?: string } { + return { route: null }; + } + + /** + * Computes the list of relationships to be rendered based on the currently set props + * for filter values e.g. relationshipType and show all flag + * @type {Relationships} + * @memberof DatasetRelationshipTable + */ + @computed('showAllRelationships', 'filteredRelationshipsByType') + get filteredRelationships(): DatasetLineageList & Array> { + const { filteredRelationshipsByType, showAllRelationships, truncatedLength: n } = this; + + return takeNLineageItems( + showAllRelationships, + n + )(filteredRelationshipsByType).map(({ actor, ...lineage }): IDatasetLineage & + ReturnType => ({ + actor, + ...lineage, + ...this.linkableActor(actor) + })); + } + + /** + * Computed flag indicating if the currently rendered list of relationships has more + * elements than the current truncation length value + * @type {boolean} + * @memberof DatasetRelationshipTable + */ + @computed('showAllRelationships', 'relationships.length', 'truncatedLength', 'filteredRelationshipsByType.length') + get hasMore(): boolean { + const { + selectedRelationshipType, + relationships: { length: totalLength }, + filteredRelationshipsByType: { length: filteredLength }, + truncatedLength + } = this; + const hasFilter = selectedRelationshipType !== allRelationshipType; + + return hasFilter ? filteredLength > truncatedLength : totalLength > truncatedLength; + } + + /** + * Computes a unique list of relationship types found the list of relationship + * @type {Array} + * @memberof DatasetRelationshipTable + */ + @computed('relationships.[]') + get relationshipTypes(): Array { + const typeOption = ({ type }: IDatasetLineage): RelationshipType => ({ + label: type, + value: type + }); + const createTypeOptionAndDedupe = arrayPipe(arrayMap(typeOption), arrayReduce(dedupeType, [])); + + return [allRelationshipType, ...createTypeOptionAndDedupe(this.relationships)]; + } + + /** + * Handles the relationship type selection change + * @param {RelationshipType} type + * @memberof DatasetRelationshipTable + */ + @action + onTypeSelect(type: RelationshipType): void { + set(this, 'selectedRelationshipType', type); + } + + /** + * Toggles the flag to show all available relationships + */ + @action + onToggleShowMore(): void { + this.toggleProperty('showAllRelationships'); + } +} diff --git a/datahub-web/@datahub/datasets-core/addon/components/more-info.ts b/datahub-web/@datahub/datasets-core/addon/components/more-info.ts deleted file mode 100644 index 59a4e3e74554f..0000000000000 --- a/datahub-web/@datahub/datasets-core/addon/components/more-info.ts +++ /dev/null @@ -1,39 +0,0 @@ -import Component from '@ember/component'; -// @ts-ignore: Ignore import of compiled template -import layout from '../templates/components/more-info'; -import { tagName, classNames } from '@ember-decorators/component'; - -// TODO: [META-8255] This is a copy of the component from data-portal and should be migrated to a centralized addon -// to share between our other addons -@tagName('span') -@classNames('more-info') -export default class MoreInfo extends Component { - layout = layout; - - /** - * Proxies to anchor element target attribute - * @type {string} - * @memberOf MoreInfo - */ - target: string = '_blank'; - - /** - * Proxies to anchor element href attribute - * @type {string} - * @memberOf MoreInfo - */ - link: string = '#'; - - /** - * Renders the tool tip component, if present - * @type {string} - * @memberOf MoreInfo - */ - tooltip?: string; - - /** - * Disables DOM event propagation - * @return {boolean} - */ - click = () => false; -} diff --git a/datahub-web/@datahub/datasets-core/addon/components/placeholder/nacho-toggle.ts b/datahub-web/@datahub/datasets-core/addon/components/placeholder/nacho-toggle.ts index b672e21407291..2267ad73c6ce5 100644 --- a/datahub-web/@datahub/datasets-core/addon/components/placeholder/nacho-toggle.ts +++ b/datahub-web/@datahub/datasets-core/addon/components/placeholder/nacho-toggle.ts @@ -2,7 +2,7 @@ import Component from '@ember/component'; // @ts-ignore: Ignore import of compiled template import template from '../../templates/components/placeholder/nacho-toggle'; import { layout, classNames } from '@ember-decorators/component'; -import { noop } from '@datahub/utils/function/noop'; +import { noop } from 'lodash'; import { action } from '@ember/object'; // TODO: [META-8566] This is a placeholder/test run for a nacho toggle component. If we like it as a standalone, diff --git a/datahub-web/@datahub/datasets-core/addon/helpers/compliance/is-none.ts b/datahub-web/@datahub/datasets-core/addon/helpers/compliance/is-none.ts new file mode 100644 index 0000000000000..f442ac6006f8e --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/helpers/compliance/is-none.ts @@ -0,0 +1,12 @@ +import { helper } from '@ember/component/helper'; +import { ComplianceFieldIdValue } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; + +/** + * Returns whether a passed in value is a none annotation tag + * @param value - passed in value + */ +export function complianceIsNone([value]: [unknown]): boolean { + return value === ComplianceFieldIdValue.None; +} + +export default helper(complianceIsNone); diff --git a/datahub-web/@datahub/datasets-core/addon/mirage-addon/datasets-config.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/datasets-config.ts new file mode 100644 index 0000000000000..f644aa83505c7 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/mirage-addon/datasets-config.ts @@ -0,0 +1,52 @@ +import { getDatasetEntity } from '@datahub/datasets-core/mirage-addon/helpers/get-dataset-entity'; +import { + getDatasetCompliance, + postDatasetCompliance +} from '@datahub/datasets-core/mirage-addon/helpers/compliance/info'; +import { getDatasetSchema } from '@datahub/datasets-core/mirage-addon/helpers/schema'; +import { getDatasetComplianceSuggestions } from '@datahub/datasets-core/mirage-addon/helpers/compliance/suggestions'; +import { getComplianceDataTypes } from '@datahub/datasets-core/mirage-addon/helpers/compliance/data-types'; +import { + getDatasetExportPolicy, + postDatasetExportPolicy +} from '@datahub/datasets-core/mirage-addon/helpers/compliance/export-policy'; +import { getDataPlatforms } from '@datahub/datasets-core/mirage-addon/helpers/platforms'; +import { getDatasetOwnership } from '@datahub/datasets-core/mirage-addon/helpers/ownership'; +import { + getDatasetPurgePolicy, + postDatasetPurgePolicy +} from '@datahub/datasets-core/mirage-addon/helpers/compliance/purge-policy'; +import { Server } from 'ember-cli-mirage'; +import { IMirageServer } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; + +// TODO: [META-11940] Looks like mirage server types are incompatible but is outside the scope of this +// migration. Should return to clean up +export function datasetsMirageConfig(server: Server | IMirageServer): void { + server = server as IMirageServer; + server.namespace = '/api/v2'; + + server.get('/datasets/:urn', getDatasetEntity); + + server.get('/datasets/:urn/compliance', getDatasetCompliance); + // TODO: [META-8403] Make sure the post response is sufficient for compliance entities + server.post('/datasets/:urn/compliance', postDatasetCompliance); + + server.get('/datasets/:urn/compliance/suggestion', getDatasetComplianceSuggestions); + + server.get('/datasets/:urn/schema', getDatasetSchema); + + server.get('/datasets/:urn/exportpolicy', getDatasetExportPolicy); + server.post('/datasets/:urn/exportpolicy', postDatasetExportPolicy); + + server.get('/datasets/:urn/retention', getDatasetPurgePolicy); + server.post('/datasets/:urn/retention', postDatasetPurgePolicy); + // Temporary solution as we don't need real upstreams at the moment, we just don't wnat mirage to throw + // any errors + server.get('/datasets/:urn/upstreams', () => []); + + server.get('/list/compliance-data-types', getComplianceDataTypes); + + server.get('/list/platforms', getDataPlatforms); + + server.get(`datasets/:urn/owners`, getDatasetOwnership); +} diff --git a/datahub-web/@datahub/datasets-core/addon/mirage-addon/fixtures/compliance-data-types.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/fixtures/compliance-data-types.ts new file mode 100644 index 0000000000000..aa02051ac9833 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/mirage-addon/fixtures/compliance-data-types.ts @@ -0,0 +1,259 @@ +import { IComplianceDataType } from '@datahub/metadata-types/types/entity/dataset/compliance-data-types'; + +export default [ + { + pii: true, + idType: true, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Member ID', + $URN: 'urn:li:complianceDataType:MEMBER_ID', + supportedFieldFormats: ['NUMERIC', 'URN', 'REVERSED_URN', 'COMPOSITE_URN'], + id: 'MEMBER_ID' + }, + { + pii: false, + idType: true, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Organization ID', + $URN: 'urn:li:complianceDataType:COMPANY_ID', + supportedFieldFormats: ['NUMERIC', 'URN', 'REVERSED_URN', 'COMPOSITE_URN'], + id: 'COMPANY_ID' + }, + { + pii: false, + idType: true, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Group ID', + $URN: 'urn:li:complianceDataType:GROUP_ID', + supportedFieldFormats: ['NUMERIC', 'URN', 'REVERSED_URN', 'COMPOSITE_URN'], + id: 'GROUP_ID' + }, + { + pii: false, + idType: true, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Mixed ID', + $URN: 'urn:li:complianceDataType:MIXED_ID', + supportedFieldFormats: ['URN'], + id: 'MIXED_ID' + }, + { + pii: true, + idType: true, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Enterprise Profile ID', + $URN: 'urn:li:complianceDataType:ENTERPRISE_PROFILE_ID', + supportedFieldFormats: ['NUMERIC', 'URN', 'REVERSED_URN', 'COMPOSITE_URN'], + id: 'ENTERPRISE_PROFILE_ID' + }, + { + pii: false, + idType: true, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Enterprise Account ID', + $URN: 'urn:li:complianceDataType:ENTERPRISE_ACCOUNT_ID', + supportedFieldFormats: ['NUMERIC', 'URN', 'REVERSED_URN', 'COMPOSITE_URN'], + id: 'ENTERPRISE_ACCOUNT_ID' + }, + { + pii: false, + idType: true, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Contract ID', + $URN: 'urn:li:complianceDataType:CONTRACT_ID', + supportedFieldFormats: ['NUMERIC', 'URN', 'REVERSED_URN', 'COMPOSITE_URN'], + id: 'CONTRACT_ID' + }, + { + pii: true, + idType: true, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Seat ID', + $URN: 'urn:li:complianceDataType:SEAT_ID', + supportedFieldFormats: ['NUMERIC', 'URN', 'REVERSED_URN', 'COMPOSITE_URN'], + id: 'SEAT_ID' + }, + { + pii: false, + idType: true, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Advertiser ID', + $URN: 'urn:li:complianceDataType:ADVERTISER_ID', + supportedFieldFormats: ['NUMERIC', 'URN', 'REVERSED_URN', 'COMPOSITE_URN'], + id: 'ADVERTISER_ID' + }, + { + pii: true, + idType: true, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'SlideShare User ID', + $URN: 'urn:li:complianceDataType:SLIDESHARE_USER_ID', + supportedFieldFormats: ['NUMERIC', 'URN', 'REVERSED_URN', 'COMPOSITE_URN'], + id: 'SLIDESHARE_USER_ID' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'CONFIDENTIAL', + title: 'Name', + $URN: 'urn:li:complianceDataType:NAME', + supportedFieldFormats: [], + id: 'NAME' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'CONFIDENTIAL', + title: 'Email', + $URN: 'urn:li:complianceDataType:EMAIL', + supportedFieldFormats: [], + id: 'EMAIL' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'CONFIDENTIAL', + title: 'Phone', + $URN: 'urn:li:complianceDataType:PHONE', + supportedFieldFormats: [], + id: 'PHONE' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'CONFIDENTIAL', + title: 'Address', + $URN: 'urn:li:complianceDataType:ADDRESS', + supportedFieldFormats: [], + id: 'ADDRESS' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'CONFIDENTIAL', + title: 'Latitude & Longitude', + $URN: 'urn:li:complianceDataType:LATITUDE_LONGITUDE', + supportedFieldFormats: [], + id: 'LATITUDE_LONGITUDE' + }, + { + pii: false, + idType: false, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'City, State, Region, Country', + $URN: 'urn:li:complianceDataType:CITY_STATE_REGION', + supportedFieldFormats: [], + id: 'CITY_STATE_REGION' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'CONFIDENTIAL', + title: 'IP Address', + $URN: 'urn:li:complianceDataType:IP_ADDRESS', + supportedFieldFormats: [], + id: 'IP_ADDRESS' + }, + { + pii: false, + idType: false, + defaultSecurityClassification: 'CONFIDENTIAL', + title: 'Financial Number', + $URN: 'urn:li:complianceDataType:FINANCIAL_NUMBER', + supportedFieldFormats: [], + id: 'FINANCIAL_NUMBER' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'HIGHLY_CONFIDENTIAL', + title: 'Payment Info', + $URN: 'urn:li:complianceDataType:PAYMENT_INFO', + supportedFieldFormats: [], + id: 'PAYMENT_INFO' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'HIGHLY_CONFIDENTIAL', + title: 'Password & Credentials', + $URN: 'urn:li:complianceDataType:PASSWORD_CREDENTIAL', + supportedFieldFormats: [], + id: 'PASSWORD_CREDENTIAL' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'HIGHLY_CONFIDENTIAL', + title: 'Authentication Token', + $URN: 'urn:li:complianceDataType:AUTHENTICATION_TOKEN', + supportedFieldFormats: [], + id: 'AUTHENTICATION_TOKEN' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'HIGHLY_CONFIDENTIAL', + title: 'Message', + $URN: 'urn:li:complianceDataType:MESSAGE', + supportedFieldFormats: [], + id: 'MESSAGE' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'HIGHLY_CONFIDENTIAL', + title: 'National ID', + $URN: 'urn:li:complianceDataType:NATIONAL_ID', + supportedFieldFormats: [], + id: 'NATIONAL_ID' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'CONFIDENTIAL', + title: 'Social Network ID', + $URN: 'urn:li:complianceDataType:SOCIAL_NETWORK_ID', + supportedFieldFormats: [], + id: 'SOCIAL_NETWORK_ID' + }, + { + pii: false, + idType: false, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Event Time', + $URN: 'urn:li:complianceDataType:EVENT_TIME', + supportedFieldFormats: [], + id: 'EVENT_TIME' + }, + { + pii: false, + idType: false, + defaultSecurityClassification: 'LIMITED_DISTRIBUTION', + title: 'Transaction Time', + $URN: 'urn:li:complianceDataType:TRANSACTION_TIME', + supportedFieldFormats: [], + id: 'TRANSACTION_TIME' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'CONFIDENTIAL', + title: 'Cookies, Beacons, Browser ID', + $URN: 'urn:li:complianceDataType:COOKIE_BEACON_BROWSER_ID', + supportedFieldFormats: [], + id: 'COOKIE_BEACON_BROWSER_ID' + }, + { + pii: true, + idType: false, + defaultSecurityClassification: 'CONFIDENTIAL', + title: 'Device ID, Advertising ID', + $URN: 'urn:li:complianceDataType:DEVICE_ID_ADVERTISING_ID', + supportedFieldFormats: [], + id: 'DEVICE_ID_ADVERTISING_ID' + } +].map(type => ({ + ...type, + supportedFieldFormats: type.supportedFieldFormats.map(format => ({ id: format, description: '' })) +})) as Array; diff --git a/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/data-types.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/data-types.ts new file mode 100644 index 0000000000000..7c3e42814e38d --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/data-types.ts @@ -0,0 +1,13 @@ +import { IFunctionRouteHandler } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; +import { IMirageDatasetCoreSchema } from '@datahub/datasets-core/types/vendor/mirage-for-datasets'; +import { IComplianceDataType } from '@datahub/metadata-types/types/entity/dataset/compliance-data-types'; + +/** + * This handler is used by the mirage route config to handle the get request for dataset compliance data types + */ +export const getComplianceDataTypes = function( + this: IFunctionRouteHandler, + schema: IMirageDatasetCoreSchema +): { complianceDataTypes: Array } { + return { complianceDataTypes: this.serialize(schema.complianceDataTypes.all()) }; +}; diff --git a/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/export-policy.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/export-policy.ts new file mode 100644 index 0000000000000..9bbafed8b7bf6 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/export-policy.ts @@ -0,0 +1,33 @@ +import { IFunctionRouteHandler, IMirageRequest } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; +import { IMirageDatasetCoreSchema } from '@datahub/datasets-core/types/vendor/mirage-for-datasets'; +import { IDatasetExportPolicy } from '@datahub/metadata-types/types/entity/dataset/compliance/export-policy'; + +/** + * This handler is used by the mirage route config to handle the get request for dataset export policy + */ +export const getDatasetExportPolicy = function( + this: IFunctionRouteHandler, + schema: IMirageDatasetCoreSchema +): { exportPolicy: IDatasetExportPolicy } { + const exportPolicy = schema.db.datasetExportPolicies[0]; + return { + exportPolicy: this.serialize({ + ...exportPolicy, + modifiedBy: 'catran', + modifiedTime: 1552531600 * 1000 + }) + }; +}; + +/** + * This handler is used by the mirage route config to handle the post request for export policy. It overwrites + * all current export factory policies since we only have 1 at the moment and don't deal with relationships + */ +export const postDatasetExportPolicy = function( + this: IFunctionRouteHandler, + schema: IMirageDatasetCoreSchema, + req: IMirageRequest +): void { + const requestBody = JSON.parse(req.requestBody); + schema.db.datasetExportPolicies.update(requestBody); +}; diff --git a/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/info.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/info.ts new file mode 100644 index 0000000000000..1c79e24994f44 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/info.ts @@ -0,0 +1,40 @@ +import { IFunctionRouteHandler, IMirageRequest } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; +import { IMirageDatasetCoreSchema } from '@datahub/datasets-core/types/vendor/mirage-for-datasets'; +import { IDatasetComplianceInfo } from '@datahub/metadata-types/types/entity/dataset/compliance/info'; + +// TODO: [META-8403] Dataset compliance and compliance suggestions need to be expanded so that we can handle +// multiple compliance scenarios, but in this phase of development this should be sufficient to handle our +// single use case + +/** + * This handler is used by the mirage route config to handle the get request for dataset compliance + */ +export const getDatasetCompliance = function( + this: IFunctionRouteHandler, + schema: IMirageDatasetCoreSchema +): { complianceInfo: IDatasetComplianceInfo } { + const complianceInfo: IDatasetComplianceInfo = { + ...schema.db.datasetComplianceInfos[0], + complianceEntities: schema.db.datasetComplianceAnnotationTags.where({ isSuggestion: false }) + }; + + return { complianceInfo: this.serialize(complianceInfo) }; +}; + +export const postDatasetCompliance = function( + this: IFunctionRouteHandler, + schema: IMirageDatasetCoreSchema, + req: IMirageRequest +): void { + const requestBody: IDatasetComplianceInfo = JSON.parse(req.requestBody); + const annotations = requestBody.complianceEntities; + + schema.db.datasetComplianceAnnotationTags.remove({ isSuggestion: false }); + + annotations.forEach(tag => + schema.db.datasetComplianceAnnotationTags.insert({ + ...tag, + isSuggestion: false + }) + ); +}; diff --git a/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/purge-policy.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/purge-policy.ts new file mode 100644 index 0000000000000..ba8d0d4e68637 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/purge-policy.ts @@ -0,0 +1,29 @@ +import { IFunctionRouteHandler, IMirageRequest } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; +import { IMirageDatasetCoreSchema } from '@datahub/datasets-core/types/vendor/mirage-for-datasets'; +import { IDatasetRetentionPolicy } from '@datahub/metadata-types/types/entity/dataset/compliance/retention'; + +/** + * This handler is used by the mirage route config to handle the get request for dataset export policy + */ +export const getDatasetPurgePolicy = function( + this: IFunctionRouteHandler, + schema: IMirageDatasetCoreSchema +): { retentionPolicy: IDatasetRetentionPolicy } { + const purgePolicy = schema.db.datasetPurgePolicies[0]; + return { + retentionPolicy: this.serialize(purgePolicy) + }; +}; + +/** + * This handler is used by the mirage route config to handle the post request for export policy. It overwrites + * all current export factory policies since we only have 1 at the moment and don't deal with relationships + */ +export const postDatasetPurgePolicy = function( + this: IFunctionRouteHandler, + schema: IMirageDatasetCoreSchema, + req: IMirageRequest +): void { + const requestBody = JSON.parse(req.requestBody); + schema.db.datasetPurgePolicies.update(requestBody); +}; diff --git a/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/suggestions.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/suggestions.ts new file mode 100644 index 0000000000000..9440d8c36c661 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/compliance/suggestions.ts @@ -0,0 +1,28 @@ +import { IFunctionRouteHandler } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; +import { IMirageDatasetCoreSchema } from '@datahub/datasets-core/types/vendor/mirage-for-datasets'; +import { IDatasetComplianceSuggestionInfo } from '@datahub/data-models/types/entity/dataset'; + +// TODO: [META-8403] Dataset compliance and compliance suggestions need to be expanded so that we can handle +// multiple compliance scenarios, but in this phase of development this should be sufficient to handle our +// single use case + +/** + * This handler is used by the mirage route config to handle the get request for dataset compliance suggestions + */ +export const getDatasetComplianceSuggestions = function( + this: IFunctionRouteHandler, + schema: IMirageDatasetCoreSchema +): { complianceSuggestion: IDatasetComplianceSuggestionInfo } { + const suggestionInfo: IDatasetComplianceSuggestionInfo = { + lastModified: 1542929020775, + suggestedDatasetClassification: {}, + urn: '', + suggestedFieldClassification: schema.db.datasetComplianceAnnotationTags.slice(10, 19).map(annotation => ({ + uid: 'fake-uid', + confidenceLevel: 0.9, + suggestion: annotation + })) + }; + + return { complianceSuggestion: suggestionInfo }; +}; diff --git a/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/get-dataset-entity.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/get-dataset-entity.ts new file mode 100644 index 0000000000000..c6cc0945386b6 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/get-dataset-entity.ts @@ -0,0 +1,14 @@ +import { IFunctionRouteHandler } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; +import { IMirageDatasetCoreSchema } from '@datahub/datasets-core/types/vendor/mirage-for-datasets'; + +/** + * Mirage response for the dataset entity getter API request, used in the mirage router file for a more + * clean approach + */ +export const getDatasetEntity = function( + this: IFunctionRouteHandler, + schema: IMirageDatasetCoreSchema +): Com.Linkedin.Dataset.Dataset { + const datasetInfo = schema.db.datasets[0]; + return this.serialize(datasetInfo); +}; diff --git a/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/ownership.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/ownership.ts new file mode 100644 index 0000000000000..8e9d2988a5685 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/ownership.ts @@ -0,0 +1,10 @@ +import { IOwnerResponse } from '@datahub/data-models/types/entity/dataset/ownership'; +import owners from '@datahub/data-models/mirage-addon/fixtures/dataset-ownership'; + +export const getDatasetOwnership = (): IOwnerResponse => ({ + owners, + fromUpstream: false, + datasetUrn: '', + lastModified: 0, + actor: '' +}); diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/helpers/platforms.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/platforms.ts similarity index 100% rename from datahub-web/@datahub/datasets-core/tests/dummy/mirage/helpers/platforms.ts rename to datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/platforms.ts diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/helpers/schema.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/schema.ts similarity index 100% rename from datahub-web/@datahub/datasets-core/tests/dummy/mirage/helpers/schema.ts rename to datahub-web/@datahub/datasets-core/addon/mirage-addon/helpers/schema.ts diff --git a/datahub-web/@datahub/datasets-core/addon/mirage-addon/scenarios/default.ts b/datahub-web/@datahub/datasets-core/addon/mirage-addon/scenarios/default.ts new file mode 100644 index 0000000000000..0578bf05dede0 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/mirage-addon/scenarios/default.ts @@ -0,0 +1,18 @@ +import { IMirageServer } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; +import { Server } from 'ember-cli-mirage'; + +// TODO: [META-11940] Looks like mirage server types are incompatible but is outside the scope of this +// migration. Should return to clean up +export default function(server: Server | IMirageServer): void { + server = server as IMirageServer; + server.loadFixtures('compliance-data-types'); + + server.createList('datasetComplianceAnnotationTag', 9); + server.createList('datasetComplianceAnnotationTag', 10, 'asSuggestion'); + server.createList('datasetSchemaColumn', 9); + server.createList('datasetPurgePolicy', 1); + server.createList('datasets', 1); + server.createList('datasetComplianceInfo', 1); + server.createList('datasetExportPolicy', 1); + server.createList('platform', 20); +} diff --git a/datahub-web/@datahub/datasets-core/addon/services/datasets-core.ts b/datahub-web/@datahub/datasets-core/addon/services/datasets-core.ts index 4b3a581625b69..9aa8018b5884d 100644 --- a/datahub-web/@datahub/datasets-core/addon/services/datasets-core.ts +++ b/datahub-web/@datahub/datasets-core/addon/services/datasets-core.ts @@ -1,4 +1,8 @@ import Service from '@ember/service'; +import { + ComplianceDataTypesList, + createComplianceDataTypesList +} from '@datahub/data-models/entity/dataset/modules/compliance-data-types-list'; import { set } from '@ember/object'; import { DatasetPlatformsList, @@ -12,8 +16,33 @@ import { * and cache its value here. */ export default class DatasetsCoreService extends Service { + /** + * Cached version of compliance data types class. Makes sure we only need to instantiate one instance + * of this from one single API call + * @type {ComplianceDataTypesList} + */ + readonly complianceDataTypes?: ComplianceDataTypesList; + readonly dataPlatforms?: DatasetPlatformsList; + /** + * If we already have compliance data types available, then return it. Otherwise, await a new instance of + * the ComplianceDataTypes list + */ + async getComplianceDataTypes(): Promise { + const { complianceDataTypes } = this; + + if (complianceDataTypes) { + return complianceDataTypes; + } + + const dataTypes = await createComplianceDataTypesList(); + if (dataTypes) { + set(this, 'complianceDataTypes', dataTypes); + } + return dataTypes; + } + /** * If we already have data platforms available, then return it. Otherwise, await a new instance of the * DatasetPlatforms list diff --git a/datahub-web/@datahub/datasets-core/addon/templates/components/datasets/containers/dataset-main.hbs b/datahub-web/@datahub/datasets-core/addon/templates/components/datasets/containers/dataset-main.hbs new file mode 100644 index 0000000000000..f7da0d3160cc9 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/templates/components/datasets/containers/dataset-main.hbs @@ -0,0 +1,24 @@ +{{yield + (hash + error=error + entity=entity + urn=urn + tabSelected=tabSelected + entityClass=this.entityClass + jitAclConfig=this.jitAclConfig + wikiLinks=wikiLinks + avatarEntityProps=avatarEntityProps + isPolicyFromUpstream=isPolicyFromUpstream + isInternal=isInternal + datasetContainsPersonalData=datasetContainsPersonalData + datasetOwnersRequiredNotMet=datasetOwnersRequiredNotMet + requiresUserAction=requiresUserAction + datasetTabs=datasetTabs + notifications=notificationsMap + fields=fields + paths=this.paths + onNotifyPiiStatus=(action onNotifyPiiStatus) + tabSelectionChanged=(action tabSelectionChanged) + setOwnershipRuleChange=(action setOwnershipRuleChange) + ) +}} diff --git a/datahub-web/@datahub/datasets-core/addon/templates/components/datasets/core/containers/dataset-groups.hbs b/datahub-web/@datahub/datasets-core/addon/templates/components/datasets/core/containers/dataset-groups.hbs new file mode 100644 index 0000000000000..7cb3d53acdcff --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/templates/components/datasets/core/containers/dataset-groups.hbs @@ -0,0 +1,56 @@ + + {{#if this.isEmpty}} + + +
+

+ {{this.tableTitle}} +

+

+ {{component this.dynamicHeaderComponent.name options=this.dynamicHeaderComponent.options }} +

+
+
+ + + + {{this.emptyStateDisplayText}} + + + +
+ {{else}} + + +

+ Dataset Groups +

+
+ + + Namespace + + + Group Name + + + + {{#each this.groups as |group|}} + + + {{group.namespace}} + + + {{group.name}} + + + {{/each}} + +
+ {{/if}} +
diff --git a/datahub-web/@datahub/datasets-core/addon/templates/components/datasets/relationships/dataset-relationship-table.hbs b/datahub-web/@datahub/datasets-core/addon/templates/components/datasets/relationships/dataset-relationship-table.hbs new file mode 100644 index 0000000000000..3b86e802d52f9 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/addon/templates/components/datasets/relationships/dataset-relationship-table.hbs @@ -0,0 +1,76 @@ + + + Dataset + + + + {{dd.content}} + + + + Platform + Actor + Last Modified + + + + {{#each relationTable.fields as |lineage|}} + + + + + {{lineage.dataset.nativeName}} + + + + + {{capitalize lineage.type}} + + + {{titleize lineage.dataset.platform}} + + + {{#with lineage.route as |actorRoute|}} + + {{lineage.actorType}} + + {{else}} + {{lineage.actor}} + {{/with}} + + + {{moment-calendar lineage.dataset.modifiedTime sameElse="MMM Do YYYY, h:mm a"}} + + + {{/each}} + + + {{#if hasMore}} + + + + + + {{/if}} + diff --git a/datahub-web/@datahub/datasets-core/addon/templates/components/more-info.hbs b/datahub-web/@datahub/datasets-core/addon/templates/components/more-info.hbs deleted file mode 100644 index e8a0b3e32fc16..0000000000000 --- a/datahub-web/@datahub/datasets-core/addon/templates/components/more-info.hbs +++ /dev/null @@ -1,13 +0,0 @@ - - - {{#if tooltip}} - - - - {{else}} - - {{/if}} - - - - diff --git a/datahub-web/@datahub/datasets-core/addon/templates/components/placeholder/nacho-toggle.hbs b/datahub-web/@datahub/datasets-core/addon/templates/components/placeholder/nacho-toggle.hbs index 6678db44de504..64932daf8dcc1 100644 --- a/datahub-web/@datahub/datasets-core/addon/templates/components/placeholder/nacho-toggle.hbs +++ b/datahub-web/@datahub/datasets-core/addon/templates/components/placeholder/nacho-toggle.hbs @@ -1,17 +1,19 @@
- {{#let (eq value leftOptionValue) as |leftActive|}} + {{#let (eq @value @leftOptionValue) as |leftActive|}}
; + +/** + * Constant for the relationship type i.e. nativeType property with an empty string value, intended + * to signify all nativeType + * @type {Readonly<{label: string; value: string}>} + */ +const allRelationshipType: RelationshipType = { label: 'All Types', value: '' }; + +/** + * Creates a filter function and will filter an instance of an IDatasetLineage based on its type property + * @param {IDatasetLineage.type} filter + */ +const lineageTypeFilter = (filter: IDatasetLineage['type'] = '') => ({ type }: IDatasetLineage): boolean => + filter ? type === filter : true; + +/** + * Filters a list of dataset lineage objects on the type attribute + * @param {string} filter + * @return {(array: LineageList) => LineageList} + */ +const filterLineageByType = (filter = ''): ((array: DatasetLineageList) => DatasetLineageList) => + arrayFilter(lineageTypeFilter(filter)); + +/** + * Dedupes a list of RelationshipType objects + * @param {Array} set the deduped list + * @param {RelationshipType} relationshipType a RelationshipType element in the list + * @returns {Array} + */ +const dedupeType = (set: Array, relationshipType: RelationshipType): Array => { + const isSameType = ({ value }: RelationshipType): boolean => relationshipType.value === value; + const hasType = set.find(isSameType); + + return hasType ? set : [...set, relationshipType]; +}; + +/** + * Takes the first N elements in the list of relationships if the shouldShowAll flag is false + * @param {boolean} shouldShowAll flag to determine if all relationships should be shown + * @param {number} [n=10] + */ +const takeNLineageItems = (shouldShowAll: boolean, n = 10) => (relationships: DatasetLineageList): DatasetLineageList => + shouldShowAll ? relationships : take(n)(relationships); + +export { allRelationshipType, dedupeType, takeNLineageItems, filterLineageByType }; diff --git a/datahub-web/@datahub/datasets-core/app/components/datasets/containers/dataset-main.js b/datahub-web/@datahub/datasets-core/app/components/datasets/containers/dataset-main.js new file mode 100644 index 0000000000000..27d3348ed9e05 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/components/datasets/containers/dataset-main.js @@ -0,0 +1 @@ +export { default } from '@datahub/datasets-core/components/datasets/containers/dataset-main'; diff --git a/datahub-web/@datahub/datasets-core/app/components/datasets/core/containers/dataset-groups.js b/datahub-web/@datahub/datasets-core/app/components/datasets/core/containers/dataset-groups.js new file mode 100644 index 0000000000000..57445e43102d0 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/components/datasets/core/containers/dataset-groups.js @@ -0,0 +1 @@ +export { default } from '@datahub/datasets-core/components/datasets/core/containers/dataset-groups'; diff --git a/datahub-web/@datahub/datasets-core/app/components/datasets/core/page/platform-discriminator.js b/datahub-web/@datahub/datasets-core/app/components/datasets/core/page/platform-discriminator.js new file mode 100644 index 0000000000000..7c44ca14e7795 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/components/datasets/core/page/platform-discriminator.js @@ -0,0 +1 @@ +export { default } from '@datahub/datasets-core/components/datasets/core/page/platform-discriminator'; diff --git a/datahub-web/@datahub/datasets-core/app/components/datasets/core/tabs/dataset-compliance.js b/datahub-web/@datahub/datasets-core/app/components/datasets/core/tabs/dataset-compliance.js new file mode 100644 index 0000000000000..50ed5536d1bfb --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/components/datasets/core/tabs/dataset-compliance.js @@ -0,0 +1 @@ +export { default } from '@datahub/datasets-core/components/datasets/core/tabs/dataset-compliance'; diff --git a/datahub-web/@datahub/datasets-core/app/components/datasets/relationships/dataset-relationship-table.js b/datahub-web/@datahub/datasets-core/app/components/datasets/relationships/dataset-relationship-table.js new file mode 100644 index 0000000000000..935a888981db7 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/components/datasets/relationships/dataset-relationship-table.js @@ -0,0 +1 @@ +export { default } from '@datahub/datasets-core/components/datasets/relationships/dataset-relationship-table'; diff --git a/datahub-web/@datahub/datasets-core/app/components/more-info.js b/datahub-web/@datahub/datasets-core/app/components/more-info.js deleted file mode 100644 index f62dbfc5aa07e..0000000000000 --- a/datahub-web/@datahub/datasets-core/app/components/more-info.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@datahub/datasets-core/components/more-info'; diff --git a/datahub-web/@datahub/datasets-core/app/helpers/compliance/is-none.js b/datahub-web/@datahub/datasets-core/app/helpers/compliance/is-none.js new file mode 100644 index 0000000000000..b82f9e17a77a0 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/helpers/compliance/is-none.js @@ -0,0 +1 @@ +export { default, complianceIsNone } from '@datahub/datasets-core/helpers/compliance/is-none'; diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/_all.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/_all.scss index 1318f2a6e036b..f30b13b8bfd78 100644 --- a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/_all.scss +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/_all.scss @@ -1,5 +1,7 @@ @import 'abstracts/all'; +@import 'tabs/all'; +@import 'tables/all'; @import 'interactivity/all'; +@import 'lineage/all'; @import 'placeholder-nacho-tooltip'; -@import 'placeholder-nacho-button'; @import 'placeholder-nacho-toggle'; diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/_placeholder-nacho-button.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/_placeholder-nacho-button.scss deleted file mode 100644 index 835728219ba58..0000000000000 --- a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/_placeholder-nacho-button.scss +++ /dev/null @@ -1,14 +0,0 @@ -// TODO: [META-8295] This is a placeholder that should be migrated and imported from a nacho component -.placeholder-nacho-button { - cursor: pointer; - - &--no-border { - border: none; - background-color: transparent; - } - - &--with-border { - background-color: transparent; - border: 1px solid get-color(blue6); - } -} diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/lineage/_all.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/lineage/_all.scss new file mode 100644 index 0000000000000..2cbbabcaacb80 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/lineage/_all.scss @@ -0,0 +1 @@ +@import 'upstream-dataset'; diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/lineage/_upstream-dataset.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/lineage/_upstream-dataset.scss new file mode 100644 index 0000000000000..1e7d882c07100 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/lineage/_upstream-dataset.scss @@ -0,0 +1,47 @@ +.upstream-dataset { + @include nacho-container; + padding: item-spacing(2 5); + display: flex; + align-items: center; + + &__compliance-status { + &__complete { + color: get-color(green5); + } + + &__incomplete { + color: get-color(orange5); + } + } + + &__upstream-link { + margin-left: item-spacing(3); + } + + &__upstream-link-chevron { + margin-left: auto; + } +} + +.downstream-purge-policy-header { + display: flex; + align-items: center; + margin: item-spacing(6 0 0); +} + +.downstream-purge-policy { + &__no-policy { + @include nacho-container; + } + + &__edit { + margin-left: auto; + display: flex; + align-items: center; + + &--label { + margin-right: item-spacing(4); + font-weight: fw(normal, 2); + } + } +} diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/_all.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/_all.scss new file mode 100644 index 0000000000000..4088849609336 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/_all.scss @@ -0,0 +1,4 @@ +@import 'compliance-annotations/all'; +@import 'export-policy/all'; +@import 'purge-policy/all'; +@import 'dataset-groups/all'; diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/compliance-annotations/_all.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/compliance-annotations/_all.scss new file mode 100644 index 0000000000000..7dd6a18b28263 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/compliance-annotations/_all.scss @@ -0,0 +1,2 @@ +@import 'compliance-table'; +@import 'change-summary'; diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/compliance-annotations/_change-summary.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/compliance-annotations/_change-summary.scss new file mode 100644 index 0000000000000..d99e9b2518a3d --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/compliance-annotations/_change-summary.scss @@ -0,0 +1,95 @@ +.dataset-compliance-diff { + $requiredWidthForFieldNameColumn: 240px; + $requiredWidthForActionableItemsColumn: 136px; + $requiredWidthForFooter: 1125px; + $pageListHeight: 56px; + $pageListMinimumHeight: 29px; + + font-size: fs(standard); + + &__container { + margin-bottom: item-spacing(3); + } + + &__field-name { + width: $requiredWidthForFieldNameColumn; + } + + &__actionable-items { + width: $requiredWidthForActionableItemsColumn; + + &__btn { + background: transparent; + color: get-color(blue5); + font-weight: bold; + border: none; + } + } + + &__footer { + &__content { + display: flex; + justify-content: space-between; + width: $requiredWidthForFooter; + } + } + + &__page-list { + list-style: none; + display: flex; + align-items: center; + justify-content: center; + height: $pageListHeight; + overflow: hidden; + + &__item { + margin-left: item-spacing(1); + text-align: center; + + &.selected { + font-weight: 600; + color: get-color(black); + box-sizing: border-box; + padding: item-spacing(1); + min-width: $pageListMinimumHeight; + background-color: get-color(slate7, 0.5); + } + } + + &__button { + background: transparent; + border: none; + color: get-color(blue5); + } + } + + &__next-btn { + margin-left: auto; + margin-right: item-spacing(4); + + .fa-chevron-right { + margin-left: item-spacing(2); + } + } + + &__previous-btn { + margin-right: auto; + margin-left: item-spacing(4); + + .fa-chevron-left { + margin-right: item-spacing(2); + } + } + + &__next-btn, + &__previous-btn { + background: transparent; + border: none; + font-weight: 600; + + &:disabled { + cursor: not-allowed; + opacity: 0.25; + } + } +} diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/compliance-annotations/_compliance-table.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/compliance-annotations/_compliance-table.scss new file mode 100644 index 0000000000000..d03beeabc3973 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/compliance-annotations/_compliance-table.scss @@ -0,0 +1,564 @@ +.datasets-compliance-annotations { + $compliance-suggestion-color: get-color(orange5); + $compliance-readonly-color: get-color(red7); + $compliance-review-required-color: get-color(blue5); + $compliance-ok-color: get-color(green5); + $field-column-width: $max-container-width * 0.35; + $status-column-width: item-spacing(9) * 2; + $edit-column-width: $status-column-width; + + @mixin mimic-select { + $color: get-color(gray1); + $default-border: (1px solid shade($color, 20%)); + max-width: item-spacing(9) * 3; + display: inline-flex; + align-items: center; + height: 34px; + width: 100%; + border: $default-border; + border-radius: 2px; + background-color: get-color(white); + padding: item-spacing(0 4 0); + position: relative; + } + /// TODO: [META-7332] Temporary solution pending restyling of nacho tables + thead th { + background-color: white; + border-bottom: 2px solid get-color(slate2, 0.75); + } + + .nacho-dropdown { + select { + height: 32px; + background: white; + } + } + + &__container { + margin-bottom: item-spacing(6); + } + + &__global { + display: flex; + flex-direction: column; + padding: item-spacing(1) 0; + width: 100%; + + &-row { + display: flex; + flex-direction: row; + } + + &__item { + margin-left: auto; + } + + &__actions { + display: flex; + align-items: center; + } + + &__button { + margin-left: item-spacing(2); + } + } + + &__editable-icon { + position: absolute; + right: 12px; + color: get-color(gray4); + } + + &__remove-icon { + color: get-color(gray6); + margin-top: 4px; + } + + &__filter-count { + color: $compliance-suggestion-color; + margin-left: item-spacing(2); + } + + &__subtitle { + display: flex; + align-items: center; + padding: item-spacing(2 0); + } + + &__row-edit { + width: $edit-column-width; + box-sizing: border-box; + padding: 16px 8px; + + &__button { + color: get-color(blue5); + font-weight: 600; + display: inline; + margin-right: 8px; + + & + & { + margin: 0; + } + } + } + + &__status { + width: $status-column-width; + box-sizing: border-box; + padding: item-spacing(4 2); + + .nacho-pill { + cursor: inherit; + + &--neutral { + color: get-color(black); + background-color: get-color(gray1, 0.75); + border: none; + } + } + + &__title { + font-weight: bold; + margin-bottom: item-spacing(2); + } + } + + &__review-hint { + color: $compliance-suggestion-color; + height: item-spacing(5); + padding-left: item-spacing(5); + } + + &__has-suggestions { + color: $compliance-suggestion-color; + margin-left: item-spacing(2); + + &__icon { + color: $compliance-suggestion-color; + } + } + + &__notification-column { + width: 5%; + } + + &__identifier-column { + width: $field-column-width; + + input[type='checkbox'] + label.checkbox-input__wrapper { + padding-top: 0; + + &:before, + &:after { + top: 0; + } + + &:hover { + background-color: transparent; + } + } + + &__title { + font-weight: bold; + margin-bottom: item-spacing(2); + } + + &__input { + display: block; + } + } + + &__identifier-field { + input[type='checkbox'] + label.checkbox-input__wrapper { + display: block; + } + } + + &__info-column { + &__dropdown { + display: block; + } + + &__title { + font-weight: bold; + margin-bottom: item-spacing(2); + } + } + + &__identifier-cell { + text-align: right; + } + + &__tall-cell#{&}__tall-cell { + vertical-align: top; + } + + &__current-value { + display: inline-block; + height: 0; + padding: item-spacing(1); + color: get-color(gray5); + } + + &__form-input { + padding: item-spacing(2 0); + margin-top: item-spacing(2); + opacity: 0.8; + } + + &--readonly { + &#{&}#{&} { + color: get-color(slate5); + opacity: 0.7; + cursor: not-allowed; + } + + &__icon { + &#{&} { + color: $compliance-readonly-color; + opacity: 0.9; + } + } + } + + &--review-required { + &__icon { + color: $compliance-review-required-color; + } + } + + &--ok { + &__icon { + color: $compliance-ok-color; + } + } + + &--missing-selection { + &#{&}#{&} { + $invalid-color: get-color(red7, 0.6); + + background-color: $invalid-color; + border-color: $invalid-color; + color: get-color(white); + + &::after { + content: '?'; + color: get-color(white); + } + } + } + + &__add-field { + margin-top: item-spacing(2); + + &#{&} { + font-weight: fw(normal, 4); + display: block; + } + } + + &__guided-modal { + @include nacho-container; + padding: 0; + border: 0; + z-index: z(modal); + } + + &__tag-radio { + $hover-state: get-color(gray1); + + width: 100%; + padding: item-spacing(1 2 0 4); + + .ember-radio-button { + color: get-color(black, 0.6); + left: 0; + width: 100%; + + &::before, + &::after { + display: none; + } + } + + &:hover { + background-color: $hover-state; + } + + &--disabled { + background-color: get-color(slate2); + position: sticky; + top: -1px; + z-index: 1; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.085); + + &::before { + position: absolute; + right: item-spacing(0); + color: black; + } + + &:hover { + background-color: get-color(slate2); + } + + .ember-radio-button { + color: black; + font-weight: fw(normal, 6); + cursor: default; + } + } + + &--checked { + background-color: get-color(blue0); + + &:hover { + background-color: $hover-state; + } + + .ember-radio-button { + color: get-color(blue7); + } + } + } + + &__compliance-info-column { + display: flex; + flex-direction: column; + + &:first-of-type { + min-width: 280px; + } + + &__title { + padding: item-spacing(3); + background-color: get-color(slate1); + border-right: 1px solid get-color(slate2); + } + + &__content { + position: relative; + display: flex; + flex-direction: column; + height: 100%; + padding: item-spacing(0 0 4); + overflow-y: scroll; + overflow-x: hidden; + border-right: 1px solid get-color(slate2); + } + } + + &__tag-item { + display: flex; + flex-wrap: nowrap; + } + + &__tag-info { + padding: item-spacing(1); + + &--editable { + @include mimic-select; + padding: item-spacing(0 5 0 4); + } + + &__text { + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin: 0; + + &--obscure { + color: get-color(gray4); + } + + &--error { + color: $nacho-color-error; + } + } + } + + &__suggested-tag-info { + margin-top: item-spacing(3); + font-style: italic; + display: flex; + + &__button { + border: none; + background-color: transparent; + padding: 0; + + &:focus { + outline: none; + } + + &__container { + display: flex; + width: 36px; + margin-right: item-spacing(2); + } + } + + &__dropdown { + } + + &__action { + color: get-color(blue6); + margin-right: 6px; + cursor: pointer; + } + } + + &__rollup-toggle { + &#{&} { + color: get-color(slate10); + } + } + + &__remove-tag { + &#{&} { + background-color: transparent; + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + box-sizing: border-box; + color: get-color(black, 0.7); + border: 0; + } + } + + &__field-tag { + height: 50vh; + display: flex; + flex-direction: column; + + &__content { + display: flex; + height: calc(50vh - 48px); + } + + &__quick-desc { + padding: item-spacing(4); + max-width: item-spacing(8) * 4; + } + + &__footer { + text-align: right; + height: item-spacing(7); + padding: item-spacing(1); + background-color: get-color(slate1); + border-right: 1px solid get-color(slate2); + position: absolute; + width: 100%; + bottom: 0; + } + } + + &__suggested-values { + display: inline-flex; + align-items: center; + width: 100%; + } + + &__suggestion-actions { + margin-left: auto; + display: flex; + flex-wrap: nowrap; + } + + &__resolution { + color: get-color(red5); + + &--ok { + color: $compliance-ok-color; + } + } + + &__suggested-value { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + &--no-res { + color: $compliance-suggestion-color; + } + } + + &__search { + padding: item-spacing(1); + } + + &__text-pattern-wrap { + $error-font-size: fs(small); + padding: item-spacing(1 4); + position: relative; + display: flex; + flex-direction: column; + + &--error { + font-size: $error-font-size; + position: absolute; + bottom: -18px; + color: get-color(red7); + } + } + + &__text-pattern { + padding: (item-spacing(3) / 2) item-spacing(2); + white-space: pre; + font-family: monospace; + outline: none; + } + + &__id-field-wrap { + display: flex; + flex-direction: column; + width: 100%; + overflow: hidden; + } + + &__manual-entry-errors { + margin-left: item-spacing(2); + } + + &__data-status { + @include datasets-core-loading-container; + /// Creates a default height pretty close to the expected actual height of the component so that the loading + /// and rendering of data is as non-jarring as possible to the user + height: item-spacing(9) * 3; + } + + &__ownership-needed-notice { + display: flex; + align-items: center; + justify-content: flex-end; + padding: item-spacing(2); + color: get-color(orange5); + + &-icon { + margin: item-spacing(0 2); + } + + &-label { + margin: item-spacing(0 2 0 0); + } + } +} + +.dataset-compliance-editor { + pre { + border-radius: item-spacing(1) / 2; + } +} + +.compliance-depends { + display: none; + opacity: 0; + + &--visible { + opacity: 1; + display: block; + transition: all 0.4s ease 0.4s; + } +} diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/dataset-groups/_all.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/dataset-groups/_all.scss new file mode 100644 index 0000000000000..22d61f72f462f --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/dataset-groups/_all.scss @@ -0,0 +1 @@ +@import 'dataset-groups-table'; diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/dataset-groups/_dataset-groups-table.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/dataset-groups/_dataset-groups-table.scss new file mode 100644 index 0000000000000..28ce840a1cc11 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/dataset-groups/_dataset-groups-table.scss @@ -0,0 +1,38 @@ +.dataset-groups-table { + border: none; + &#{&} td, + &#{&} th, + thead { + padding: item-spacing(5 4); + font-weight: fw(normal, 4); + border: none; + } + + &#{&} &--wrap { + white-space: normal; + } + + &__header { + font-size: 20px; + font-weight: fw(normal, 4); + margin: item-spacing(5 0 5 0); + } + + &__label { + color: rgba(0, 0, 0, 0.6); + line-height: line-height; + margin-bottom: 0px; + } + + &__title { + font-weight: fw(normal, 7); + font-size: fs(x-large); + line-height: 28px; + } +} + +.dataset-groups-column { + &--wide { + width: 15%; + } +} diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/export-policy/_all.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/export-policy/_all.scss new file mode 100644 index 0000000000000..1b07b908e2ee1 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/export-policy/_all.scss @@ -0,0 +1 @@ +@import 'export-policy-table'; diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/export-policy/_export-policy-table.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/export-policy/_export-policy-table.scss new file mode 100644 index 0000000000000..fb1da05d3622d --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/export-policy/_export-policy-table.scss @@ -0,0 +1,96 @@ +/// Forces td cells on dataset field classification table to not wrap +.dataset-export-policy { + &__container { + margin-bottom: item-spacing(4); + } + + &--edit-mode { + .dataset-field-value { + visibility: visible; + } + } + + &__global { + display: flex; + padding: item-spacing(1 0); + width: 100%; + + &__item { + margin-left: auto; + } + + &__actions { + margin-left: auto; + display: flex; + align-items: center; + } + + &__button { + margin-left: item-spacing(2); + } + } + + &__prompt, + &__input { + height: 52px; + box-sizing: border-box; + padding: item-spacing(2 4); + } + + &__prompt { + white-space: nowrap; + } + + &__header { + text-align: right; + } + + &__input { + &__wrap { + display: flex; + align-items: center; + justify-content: flex-end; + } + } + + &__data-status { + @include datasets-core-loading-container; + /// Creates a default height pretty close to the expected actual height of the component so that the loading + /// and rendering of data is as non-jarring as possible to the user + height: item-spacing(3) * 13; + } + + &__empty#{&}__empty#{&}__empty { + background-color: transparent; + + td { + border: 0; + } + } +} + +/// Wraps a status notification icon for a given dataset +.dataset-tag-container { + width: 20px; + display: flex; +} + +/// Default visual state for dataset-field-value selector +.dataset-field-value { + visibility: hidden; + margin-left: auto; +} + +.dataset-classification-indicator { + padding-right: item-spacing(2); + + /// A notification that a dataset contains a tag + &--tagged { + color: get-color(green5); + } + + /// A notification that a dataset does not contains a tag + &--not-tagged { + color: get-color(red5); + } +} diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/purge-policy/_all.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/purge-policy/_all.scss new file mode 100644 index 0000000000000..77b26e5a1f3fe --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/purge-policy/_all.scss @@ -0,0 +1 @@ +@import 'purge-policy-list'; \ No newline at end of file diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/purge-policy/_purge-policy-list.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/purge-policy/_purge-policy-list.scss new file mode 100644 index 0000000000000..dab95fb0358d5 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tables/purge-policy/_purge-policy-list.scss @@ -0,0 +1,55 @@ +.purge-policy-list { + margin: 0; + padding: 0; + + &__container { + margin-bottom: item-spacing(4); + } + + &__global { + display: flex; + padding: item-spacing(1 0); + width: 100%; + + &__item { + margin-left: auto; + } + + &__actions { + margin-left: auto; + display: flex; + align-items: center; + } + + &__button { + margin-left: item-spacing(2); + } + } + + &__item { + @include nacho-container; + list-style-type: none; + + &--disabled { + color: get-color(gray5); + background-color: get-color(gray3); + } + } + + &__platform { + &--unavailable { + @include tag(get-color(red6), get-color(white)); + } + } + + &__retry-platforms { + @include flex-column-center; + } + + &__data-status { + @include datasets-core-loading-container; + /// Creates a default height pretty close to the expected actual height of the component so that the loading + /// and rendering of data is as non-jarring as possible to the user + height: item-spacing(3) * 4.5; + } +} diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tabs/_all.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tabs/_all.scss new file mode 100644 index 0000000000000..53a113aa0da7b --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tabs/_all.scss @@ -0,0 +1 @@ +@import 'dataset-compliance'; diff --git a/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tabs/_dataset-compliance.scss b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tabs/_dataset-compliance.scss new file mode 100644 index 0000000000000..74ce8ec9a5f80 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/styles/datasets-core/tabs/_dataset-compliance.scss @@ -0,0 +1,18 @@ +.dataset-compliance { + &__loading-container { + padding-top: item-spacing(8); + } + + &__tab-header { + display: flex; + justify-content: flex-end; + padding: item-spacing(4 5); + background-color: get-color(slate7, 0.1); + align-items: center; + } + + &__tab-switch-label { + margin-left: item-spacing(3); + margin-top: item-spacing(1); + } +} diff --git a/datahub-web/@datahub/datasets-core/app/templates/components/datasets/core/page/platform-discriminator.hbs b/datahub-web/@datahub/datasets-core/app/templates/components/datasets/core/page/platform-discriminator.hbs new file mode 100644 index 0000000000000..57f0274ecb1d4 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/templates/components/datasets/core/page/platform-discriminator.hbs @@ -0,0 +1,13 @@ +{{component + this.component.name + options=this.component.options + entityClass=@entityClass + urn=@urn + tabSelected=@tabSelected + userName=@userName + + requestJitUrns=@requestJitUrns + addRequestJitUrn=@addRequestJitUrn + removeRequestJitUrn=@removeRequestJitUrn + resetRequestJitUrns=@resetRequestJitUrns +}} \ No newline at end of file diff --git a/datahub-web/@datahub/datasets-core/app/utils/lineage.js b/datahub-web/@datahub/datasets-core/app/utils/lineage.js new file mode 100644 index 0000000000000..43a8449e14bce --- /dev/null +++ b/datahub-web/@datahub/datasets-core/app/utils/lineage.js @@ -0,0 +1 @@ +export { default } from '@datahub/datasets-core/utils/lineage'; diff --git a/datahub-web/@datahub/datasets-core/config/environment.d.ts b/datahub-web/@datahub/datasets-core/config/environment.d.ts index ae0e32f927e78..3951075c5e2d9 100644 --- a/datahub-web/@datahub/datasets-core/config/environment.d.ts +++ b/datahub-web/@datahub/datasets-core/config/environment.d.ts @@ -4,7 +4,10 @@ declare const config: { podModulePrefix: string; locationType: string; rootURL: string; - APP: unknown; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; }; export default config; diff --git a/datahub-web/@datahub/datasets-core/ember-cli-build.js b/datahub-web/@datahub/datasets-core/ember-cli-build.js index b50c370c72313..f64a5aa2b1e60 100644 --- a/datahub-web/@datahub/datasets-core/ember-cli-build.js +++ b/datahub-web/@datahub/datasets-core/ember-cli-build.js @@ -3,7 +3,7 @@ const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); module.exports = function(defaults) { - let app = new EmberAddon(defaults, {}); + const app = new EmberAddon(defaults, {}); /* This build file specifies the options for the dummy test app of this diff --git a/datahub-web/@datahub/datasets-core/index.js b/datahub-web/@datahub/datasets-core/index.js index 02023cf193be0..8fb51c6b4ccf3 100644 --- a/datahub-web/@datahub/datasets-core/index.js +++ b/datahub-web/@datahub/datasets-core/index.js @@ -1,13 +1,14 @@ 'use strict'; +const buildCliOptionsFor = require('../../configs/ember-cli-build-options'); +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const { options } = buildCliOptionsFor(EmberApp.env()); module.exports = { name: require('./package').name, - isDevelopingAddon: () => false, + isDevelopingAddon: () => true, + ...require('../../configs/import-mirage-tree-from-addon'), + options: { - ace: { - modes: ['json'], - workers: ['json'], - exts: ['searchbox'] - } + ace: options.ace } }; diff --git a/datahub-web/@datahub/datasets-core/package.json b/datahub-web/@datahub/datasets-core/package.json index ea203a82c70d0..65c44c35bb752 100644 --- a/datahub-web/@datahub/datasets-core/package.json +++ b/datahub-web/@datahub/datasets-core/package.json @@ -1,7 +1,7 @@ { "name": "@datahub/datasets-core", "version": "0.0.1", - "description": "The handler for datasets as an entity under DataHub Data Hub", + "description": "The handler for datasets as an entity under DataHub", "keywords": [ "ember-addon" ], @@ -13,7 +13,7 @@ "test": "tests" }, "scripts": { - "build": "ember build", + "build": "ember build --environment=production", "start": "ember serve", "test": "ember test", "test:all": "ember try:each", @@ -23,55 +23,68 @@ "dependencies": { "@datahub/data-models": "0.0.0", "@datahub/metadata-types": "0.0.0", + "@datahub/search": "0.0.0", "@datahub/utils": "0.0.0", "@fortawesome/ember-fontawesome": "^0.1.13", - "@fortawesome/free-regular-svg-icons": "^5.7.2", - "@fortawesome/free-solid-svg-icons": "^5.7.2", - "@nacho-ui/animations": "^0.0.37", - "@nacho-ui/core": "0.0.34", - "@nacho-ui/pill": "^0.0.37", - "@nacho-ui/table": "^0.0.37", + "@fortawesome/free-regular-svg-icons": "^5.9.0", + "@fortawesome/free-solid-svg-icons": "^5.9.0", + "@nacho-ui/animations": "^0.0.38", + "@nacho-ui/core": "^0.0.38", + "@nacho-ui/dropdown": "^0.0.38", + "@nacho-ui/pill": "^0.0.38", + "@nacho-ui/table": "^0.0.38", + "@types/ember-resolver": "^5.0.7", "ember-ace": "^2.0.1", "ember-basic-dropdown": "^1.1.3", - "ember-cli-babel": "^7.8.0", - "ember-cli-htmlbars": "^3.0.0", - "ember-cli-typescript": "^2.0.2", - "ember-composable-helpers": "^2.1.0", - "ember-concurrency": "^1.1.5" + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^4.2.2", + "ember-cli-typescript": "^3.1.3", + "ember-composable-helpers": "^3.0.3", + "ember-concurrency": "^1.1.2" }, "devDependencies": { - "@babel/core": "^7.4.0", - "@ember/optional-features": "^0.7.0", - "@nacho-ui/dropdown": "^0.0.37", + "@babel/core": "^7.8.4", + "@ember/optional-features": "^1.3.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "@types/ember": "^3.1.1", + "@types/ember-qunit": "^3.4.7", + "@types/ember__test-helpers": "^0.7.9", + "@types/qunit": "^2.9.0", + "@types/rsvp": "^4.0.3", + "babel-eslint": "^10.0.3", "broccoli-asset-rev": "^3.0.0", "ember-ace": "^2.0.1", - "ember-ajax": "^4.0.2", - "ember-cli": "~3.11.0", - "ember-cli-dependency-checker": "^3.1.0", - "ember-cli-htmlbars-inline-precompile": "^2.1.0", - "ember-cli-inject-live-reload": "^2.0.1", + "ember-auto-import": "^1.5.3", + "ember-cli": "~3.16.0", + "ember-cli-dependency-checker": "^3.2.0", + "ember-cli-inject-live-reload": "^2.0.2", "ember-cli-mirage": "^0.4.15", "ember-cli-sass": "^10.0.0", "ember-cli-sri": "^2.1.1", - "ember-cli-typescript-blueprints": "^2.0.0", - "ember-cli-uglify": "^2.1.0", + "ember-cli-typescript-blueprints": "^3.0.0", + "ember-cli-uglify": "^3.0.0", + "ember-cli-update": "^0.52.1", "ember-decorators": "^6.0.0", - "ember-export-application-global": "^2.0.0", + "ember-export-application-global": "^2.0.1", "ember-inflector": "^3.0.0", - "ember-load-initializers": "^2.0.0", + "ember-load-initializers": "^2.1.1", "ember-maybe-import-regenerator": "^0.1.6", - "ember-qunit": "^4.4.0", - "ember-resolver": "^5.0.1", - "ember-source": "~3.11.1", - "ember-source-channel-url": "^1.1.0", - "ember-try": "^1.0.0", + "ember-qunit": "^4.6.0", + "ember-resolver": "^7.0.0", + "ember-source": "~3.16.3", + "ember-source-channel-url": "^2.0.1", + "ember-try": "^1.4.0", "loader.js": "^4.7.0", - "qunit-dom": "^0.8.4", + "qunit-dom": "^0.9.1", "sass": "^1.21.0", - "typescript": "^3.5.3" + "typescript": "^3.9.3" }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": "10.* || >= 12" + }, + "ember": { + "edition": "octane" }, "ember-addon": { "configPath": "tests/dummy/config" diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/app/app.js b/datahub-web/@datahub/datasets-core/tests/dummy/app/app.js index b3b2bd677e090..d8e2088b6b0e5 100644 --- a/datahub-web/@datahub/datasets-core/tests/dummy/app/app.js +++ b/datahub-web/@datahub/datasets-core/tests/dummy/app/app.js @@ -1,14 +1,12 @@ import Application from '@ember/application'; -import Resolver from './resolver'; +import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; -const App = Application.extend({ - modulePrefix: config.modulePrefix, - podModulePrefix: config.podModulePrefix, - Resolver -}); +export default class App extends Application { + modulePrefix = config.modulePrefix; + podModulePrefix = config.podModulePrefix; + Resolver = Resolver; +} loadInitializers(App, config.modulePrefix); - -export default App; diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/app/config/environment.d.ts b/datahub-web/@datahub/datasets-core/tests/dummy/app/config/environment.d.ts index 1c2ef7b26286f..6d84647d2750c 100644 --- a/datahub-web/@datahub/datasets-core/tests/dummy/app/config/environment.d.ts +++ b/datahub-web/@datahub/datasets-core/tests/dummy/app/config/environment.d.ts @@ -9,9 +9,13 @@ export default config; * since different ember addons can materialize new entries. */ declare const config: { - environment: any; + environment: 'development' | 'test' | 'production'; modulePrefix: string; podModulePrefix: string; locationType: string; rootURL: string; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; }; diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/app/controllers/tables.ts b/datahub-web/@datahub/datasets-core/tests/dummy/app/controllers/tables.ts new file mode 100644 index 0000000000000..fd02d2206ca8e --- /dev/null +++ b/datahub-web/@datahub/datasets-core/tests/dummy/app/controllers/tables.ts @@ -0,0 +1,47 @@ +import Controller from '@ember/controller'; +import { action } from '@ember/object'; +import DatasetComplianceAnnotation from '@datahub/data-models/entity/dataset/modules/compliance-annotation'; +import DatasetComplianceInfo from '@datahub/data-models/entity/dataset/modules/compliance-info'; +import { set } from '@ember/object'; + +export default class TablesController extends Controller { + model!: { + complianceInfo: DatasetComplianceInfo; + }; + + isEditing = false; + + @action + onCancel(): void { + this.model.complianceInfo.createWorkingCopy(); + set(this, 'isEditing', false); + } + + @action + addToAnnotations(workingTag: DatasetComplianceAnnotation): void { + const { model } = this; + + if (model) { + model.complianceInfo.addAnnotation(workingTag); + } + } + + @action + removeFromAnnotations(workingTag: DatasetComplianceAnnotation): void { + const { model } = this; + + if (model) { + model.complianceInfo.removeAnnotation(workingTag); + } + } + + @action + saveCompliance(workingTags: Array): void { + set(this.model.complianceInfo, 'annotations', workingTags); + } + + @action + resetWorkingCopy(): void { + this.model.complianceInfo.createWorkingCopy(); + } +} diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/app/router.js b/datahub-web/@datahub/datasets-core/tests/dummy/app/router.js index 98c53dd1bc81e..0ef5cef73bbe8 100644 --- a/datahub-web/@datahub/datasets-core/tests/dummy/app/router.js +++ b/datahub-web/@datahub/datasets-core/tests/dummy/app/router.js @@ -1,13 +1,11 @@ import EmberRouter from '@ember/routing/router'; import config from './config/environment'; -const Router = EmberRouter.extend({ - location: config.locationType, - rootURL: config.rootURL -}); +export default class Router extends EmberRouter { + location = config.locationType; + rootURL = config.rootURL; +} Router.map(function() { this.route('tab'); }); - -export default Router; diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/app/routes/tab.ts b/datahub-web/@datahub/datasets-core/tests/dummy/app/routes/tab.ts deleted file mode 100644 index 5b0961aa85353..0000000000000 --- a/datahub-web/@datahub/datasets-core/tests/dummy/app/routes/tab.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Route from '@ember/routing/route'; - -export default class Tab extends Route {} diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/app/styles/app.scss b/datahub-web/@datahub/datasets-core/tests/dummy/app/styles/app.scss index 6887e7e07c761..49262f1fc3b90 100644 --- a/datahub-web/@datahub/datasets-core/tests/dummy/app/styles/app.scss +++ b/datahub-web/@datahub/datasets-core/tests/dummy/app/styles/app.scss @@ -1,22 +1,4 @@ -// TODO: [META-7912] Migrate this to open source nacho-core -/// Applies rules to render an element with a tag shape -/// @param {Color} $bg-color the background color for the tag -/// @param {Color} $color font/text color -/// @param {Color} $border-color=$bg-color the color to apply to the tag border -///@example - Usage -/// .foo { -/// @include tag(get-color(gray1), get-color(gray6)); -/// } -@mixin tag($bg-color, $color, $border-color: $bg-color) { - border-radius: 32px; - background-color: $bg-color; - border: 1px solid $border-color; - color: $color; - display: inline-block; - line-height: item-spacing(3); - padding: 1px 10px; -} - +@import 'nacho-core'; @import 'datahub-utils'; @import 'nacho-table'; @import 'nacho-animations'; diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/app/templates/tables.hbs b/datahub-web/@datahub/datasets-core/tests/dummy/app/templates/tables.hbs deleted file mode 100644 index 9742f966953af..0000000000000 --- a/datahub-web/@datahub/datasets-core/tests/dummy/app/templates/tables.hbs +++ /dev/null @@ -1,23 +0,0 @@ -

Tables Testing

- -
-
- - -
- - {{datasets/core/tables/compliance-annotations - annotations=model.complianceInfo.annotations - suggestions=model.complianceInfo.suggestions - schema=model.schema - complianceDataTypes=model.complianceDataTypes - isEditing=isEditing - addTagToWorkingAnnotations=(action "addToAnnotations") - removeTagFromWorkingAnnotations=(action "removeFromAnnotations") - saveCompliance=(action "saveCompliance") - resetWorkingCopy=(action "resetWorkingCopy") - }} - -
- -{{outlet}} diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/config/environment.js b/datahub-web/@datahub/datasets-core/tests/dummy/config/environment.js index 39077bfa531b3..91c3edc87e86c 100644 --- a/datahub-web/@datahub/datasets-core/tests/dummy/config/environment.js +++ b/datahub-web/@datahub/datasets-core/tests/dummy/config/environment.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = function(environment) { - let ENV = { + const ENV = { modulePrefix: 'dummy', environment, rootURL: '/', @@ -39,6 +39,8 @@ module.exports = function(environment) { // keep test console output quieter ENV.APP.LOG_ACTIVE_GENERATION = false; ENV.APP.LOG_VIEW_LOOKUPS = false; + ENV.RAISE_ON_DEPRECATION = false; + ENV.LOG_STACKTRACE_ON_DEPRECATION = false; ENV.APP.rootElement = '#ember-testing'; ENV.APP.autoboot = false; diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/config/optional-features.json b/datahub-web/@datahub/datasets-core/tests/dummy/config/optional-features.json index 21f1dc719e125..d0d7c47f93757 100644 --- a/datahub-web/@datahub/datasets-core/tests/dummy/config/optional-features.json +++ b/datahub-web/@datahub/datasets-core/tests/dummy/config/optional-features.json @@ -1,3 +1,6 @@ { - "jquery-integration": true + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": true, + "template-only-glimmer-components": true } diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/config.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/config.ts index 538ab05ca1949..8d6ed2eb6ac65 100644 --- a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/config.ts +++ b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/config.ts @@ -1,17 +1,6 @@ -import { IMirageServer } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; -import { getDatasetEntity } from 'dummy/mirage/helpers/get-dataset-entity'; -import { getDatasetSchema } from 'dummy/mirage/helpers/schema'; -import { getDataPlatforms } from 'dummy/mirage/helpers/platforms'; +import { datasetsMirageConfig } from '@datahub/datasets-core/mirage-addon/datasets-config'; +import { Server } from 'ember-cli-mirage'; -export default function(this: IMirageServer): void { - this.namespace = '/api/v2'; - - this.get('/datasets/:urn', getDatasetEntity); - - this.get('/datasets/:urn/schema', getDatasetSchema); - // Temporary solution as we don't need real upstreams at the moment, we just don't wnat mirage to throw - // any errors - this.get('/datasets/:urn/upstreams', () => []); - - this.get('/list/platforms', getDataPlatforms); +export default function(this: Server): void { + datasetsMirageConfig(this); } diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-compliance-annotation-tag.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-compliance-annotation-tag.ts new file mode 100644 index 0000000000000..a46bafb523284 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-compliance-annotation-tag.ts @@ -0,0 +1,117 @@ +import { Factory, faker, trait } from 'ember-cli-mirage'; + +const NONE_IDENTIFIER = 'NONE'; + +/** + * A list of static identifier fields to cycle through for testing purposes. This is to help reduce the variation + * in identifier fields to a list of expected values + */ +const identifierFields = [ + 'CONTACT_ID[type = long]', + 'CONTACT_ID[type = long]', + 'DATA_XML_VERSION[type = long]', + 'DATA[type = string]', + 'DELETED_TS[type = long]', + 'GG_MODI_TS[type = long]', + 'GG_STATUS[type = string]', + 'IS_NOTE_MANUALLY_MOD[type = string]', + 'lumos_dropdate', + 'MODIFIED_DATE' +]; + +/** + * Maps some identifier types to their corresponding fields above. If not included here, we assume the identifier + * type to then be "NONE" + */ +const identifierTypeMap: Record> = { + MEMBER_ID: ['CONTACT_ID[type = long]', 'DATA_XML_VERSION[type = long]'], + GROUP_ID: ['CONTACT_ID[type = long]'], + COMPANY_ID: ['DATA[type = string]'] +}; + +const identifierTypeSuggestionMap: Record> = { + COMPANY_ID: ['CONTACT_ID[type = long]', 'DATA_XML_VERSION[type = long]', 'DATA[type = string]'], + GROUP_ID: ['DATA_XML_VERSION[type = long]'], + ADVERTISER_ID: ['GG_STATUS[type = string]', 'CONTACT_ID[type = long]'] +}; + +/** + * Since the above is a map, this creates a list of possible types aside from "NONE" + */ +const identifierTypes = Object.keys(identifierTypeMap); +const suggestionIdentifierTypes = Object.keys(identifierTypeSuggestionMap); + +/** + * Note: The dataset compliance annotation tag is found in the datasets entity page on the "Compliance" tab and represents + * a "tag" for a single field in the dataset to represent whether or not it has PII and, if so, further details about the + * type of data the field contains + */ +export default Factory.extend({ + identifierField: faker.list.cycle(...identifierFields), + + identifierType(id: number): string { + const field = this.identifierField as string; + // This logic determines identifier type by searching through the map to see if there is an available type + // being mapped, otherwise defaults to NONE, but in multi tagging situations we'll need to have a way to + // determine which tag to use, hence the even/odd logic + return identifierTypes.reduce( + (identifierType, currentType) => + identifierTypeMap[currentType].indexOf(field) > -1 + ? identifierType !== NONE_IDENTIFIER && id % 2 === 0 + ? identifierType + : currentType + : identifierType, + NONE_IDENTIFIER + ); + }, + + logicalType(): string | null { + return this.identifierType === NONE_IDENTIFIER ? null : 'URN'; + }, + // If none identifier, we automatically know there is no purge key + nonOwner(): boolean { + return this.identifierType === NONE_IDENTIFIER || Math.random() > 0.5; + }, + + pii(): boolean { + return this.identifierType === 'MEMBER_ID'; + }, + + readonly: false, + + securityClassification(): string | null { + return this.identifierType === NONE_IDENTIFIER ? null : 'LIMITED_DISTRIBUTION'; + }, + + valuePattern: null, + + notPurgeKey: trait({ + nonOwner: true + }), + + withPurgeKey: trait({ + nonOwner: false + }), + + isSuggestion: false, + + asSuggestion: trait({ + identifierField: faker.list.cycle(...identifierFields), + identifierType(id: number): string { + const field = this.identifierField; + // This logic determines identifier type by searching through the map to see if there is an available type + // being mapped, otherwise defaults to NONE, but in multi tagging situations we'll need to have a way to + // determine which tag to use, hence the even/odd logic + return suggestionIdentifierTypes.reduce( + (identifierType, currentType) => + identifierTypeSuggestionMap[currentType].indexOf(field) > -1 + ? identifierType !== NONE_IDENTIFIER && id % 2 === 0 + ? identifierType + : currentType + : identifierType, + NONE_IDENTIFIER + ); + }, + isSuggestion: true + }) +}); diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-compliance-info.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-compliance-info.ts new file mode 100644 index 0000000000000..e539dc8ca597c --- /dev/null +++ b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-compliance-info.ts @@ -0,0 +1,25 @@ +import { Factory } from 'ember-cli-mirage'; +import { PurgePolicy } from '@datahub/metadata-types/constants/entity/dataset/compliance/purge-policy'; +import { Classification } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; +import { DatasetClassifiers } from '@datahub/metadata-types/constants/entity/dataset/compliance/classifiers'; +import { IComplianceFieldAnnotation } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-annotation'; + +export default Factory.extend({ + complianceEntities(): Array { + return []; + }, + compliancePurgeNote: null, + complianceType: PurgePolicy.AutoPurge, + confidentiality: Classification.LimitedDistribution, + containingPersonalData: true, + datasetClassification(): Partial> { + return { + [DatasetClassifiers.ACCOUNT_STATUS]: false + }; + }, + datasetId: null, + datasetUrn: 'urn', + modifiedBy: 'catran', + modifiedTime: 1552521600 * 1000, + fromUpstream: false +}); diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-export-policy.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-export-policy.ts new file mode 100644 index 0000000000000..6c61fbe7e3ea6 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-export-policy.ts @@ -0,0 +1,17 @@ +import { Factory } from 'ember-cli-mirage'; + +const randomize = () => Math.random() < 0.5; + +export default Factory.extend({ + containsUserActionGeneratedContent() { + return this.randomized ? randomize() : false; + }, + + containsUserDerivedContent() { + return this.randomized ? randomize() : false; + }, + + containsUserGeneratedContent() { + return this.randomized ? randomize() : false; + } +}); diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-purge-policy.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-purge-policy.ts new file mode 100644 index 0000000000000..24fb4828c9b94 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-purge-policy.ts @@ -0,0 +1,19 @@ +import { Factory, faker } from 'ember-cli-mirage'; +import { PurgePolicy } from '@datahub/metadata-types/constants/entity/dataset/compliance/purge-policy'; + +export default Factory.extend({ + datasetId: null, + + datasetUrn: 'fake_pika', + + purgeType: faker.list.random(...Object.values(PurgePolicy)), + + purgeNote(): string { + const { purgeType } = this; + return purgeType === PurgePolicy.PurgeExempt ? faker.lorem.words(5) : ''; + }, + + modifiedBy: faker.internet.userName(), + + modifiedTime: faker.date.past() +}); diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-schema-column.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-schema-column.ts index f2d6e1cf0671c..739081d7ecc67 100644 --- a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-schema-column.ts +++ b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-schema-column.ts @@ -22,10 +22,10 @@ export default Factory.extend({ dataType: 'DATATYPE', distributed: false, fieldName: faker.list.cycle(...fieldNames), - fullFieldPath() { - return this.fieldName; + fullFieldPath(): string { + return this.fieldName as string; }, - id(id: number) { + id(id: number): number { return id; }, indexed: false, diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-view.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-view.ts deleted file mode 100644 index 225338defc608..0000000000000 --- a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset-view.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Factory, faker } from 'ember-cli-mirage'; -import { FabricType } from '@datahub/metadata-types/constants/common/fabric-type'; -import { capitalize } from '@ember/string'; -import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; - -export default Factory.extend({ - createdTime: 1552521600 * 1000, - decommissionTime: null, - deprecated: false, - deprecationNote: '', - description: 'A dataset generated from pallet town', - fabric: faker.list.cycle(FabricType.CORP, FabricType.PROD, FabricType.EI), - modifiedTime() { - return this.createdTime + 24 * 60 * 60 * 5 * 1000; - }, - nativeName: faker.random.word() + capitalize(faker.random.word()), - nativeType: '', - platform: DatasetPlatform.HDFS, - properties: '', - removed: false, - tags(): Array { - return []; - }, - uri: 'urn' -}); diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset.ts new file mode 100644 index 0000000000000..058dee0ac2220 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/dataset.ts @@ -0,0 +1,3 @@ +import DatasetFactory from '@datahub/data-models/mirage-addon/factories/dataset'; + +export default DatasetFactory; diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/platform.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/platform.ts index 01be6973b27ae..960a3c9942a89 100644 --- a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/platform.ts +++ b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/factories/platform.ts @@ -1,5 +1,6 @@ import { Factory, faker } from 'ember-cli-mirage'; import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; +import { PurgePolicy } from '@datahub/metadata-types/constants/entity/dataset/compliance/purge-policy'; const platforms = Object.values(DatasetPlatform); @@ -13,13 +14,15 @@ const PlatformsWithSlash: Partial> = { }; export default Factory.extend({ - name(id: number) { + name(id: number): DatasetPlatform { return platforms[id]; }, type: faker.lorem.words(1), - datasetNameDelimiter() { + supportedPurgePolicies: Object.values(PurgePolicy), + + datasetNameDelimiter(): string { return PlatformsWithSlash[this.name as DatasetPlatform] ? '/' : '.'; } }); diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/helpers/get-dataset-entity.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/helpers/get-dataset-entity.ts deleted file mode 100644 index d3d2acc01ccd7..0000000000000 --- a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/helpers/get-dataset-entity.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { IFunctionRouteHandler } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; -import { IMirageDatasetCoreSchema } from '@datahub/datasets-core/types/vendor/mirage-for-datasets'; -import { IDatasetEntity } from '@datahub/metadata-types/types/entity/dataset/dataset-entity'; - -/** - * Mirage response for the dataset entity getter API request, used in the mirage router file for a more - * clean approach - */ -export const getDatasetEntity = function( - this: IFunctionRouteHandler, - schema: IMirageDatasetCoreSchema -): { dataset: IDatasetEntity } { - const datasetInfo = schema.db.datasetViews[0]; - return { dataset: this.serialize(datasetInfo) }; -}; diff --git a/datahub-web/packages/data-portal/mirage/models/authenticate.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/models/compliance-data-types.ts similarity index 100% rename from datahub-web/packages/data-portal/mirage/models/authenticate.ts rename to datahub-web/@datahub/datasets-core/tests/dummy/mirage/models/compliance-data-types.ts diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/scenarios/default.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/scenarios/default.ts deleted file mode 100644 index 4192b5c9dcd56..0000000000000 --- a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/scenarios/default.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { IMirageServer } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; - -export default function(server: IMirageServer): void { - server.loadFixtures('compliance-data-types'); - - server.createList('datasetComplianceAnnotationTag', 9); - server.createList('datasetComplianceAnnotationTag', 10, 'asSuggestion'); - server.createList('datasetSchemaColumn', 9); - server.createList('datasetPurgePolicy', 1); - server.createList('datasetView', 1); - server.createList('datasetComplianceInfo', 1); - server.createList('platform', 20); -} diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/serializers/application.ts b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/serializers/application.ts index 06097aed3e62d..c95616feae69e 100644 --- a/datahub-web/@datahub/datasets-core/tests/dummy/mirage/serializers/application.ts +++ b/datahub-web/@datahub/datasets-core/tests/dummy/mirage/serializers/application.ts @@ -1,9 +1,9 @@ import { Serializer } from 'ember-cli-mirage'; -export default Serializer.extend({ +export default class extends Serializer { // Removes the default root key - root: false, + root = false; // Since api's are not side-loaded, allow embed. Also, this is required when root is false - embed: true -}); + embed = true; +} diff --git a/datahub-web/@datahub/datasets-core/tests/integration/components/datasets/core/page/platform-discriminator-test.ts b/datahub-web/@datahub/datasets-core/tests/integration/components/datasets/core/page/platform-discriminator-test.ts new file mode 100644 index 0000000000000..7892675817532 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/tests/integration/components/datasets/core/page/platform-discriminator-test.ts @@ -0,0 +1,57 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; +import { + IDatasetsCorePagePlatformDiscriminatorArgs, + Discriminator +} from '@datahub/datasets-core/components/datasets/core/page/platform-discriminator'; +import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; +import Component from '@ember/component'; + +module('Integration | Component | datasets/core/page/platform-discriminator', function(hooks) { + setupRenderingTest(hooks); + + test('it renders', async function(assert) { + this.owner.register('component:layout1', Component.extend({ layout: hbs`layout1` })); + this.owner.register('component:layout2', Component.extend({ layout: hbs`layout2` })); + this.owner.register('component:layout3', Component.extend({ layout: hbs`layout3` })); + + const discriminator: Discriminator = { + [DatasetPlatform.HDFS]: { + name: 'layout1', + options: {} + }, + [DatasetPlatform.Hive]: { + name: 'layout2', + options: {} + } + }; + const args: IDatasetsCorePagePlatformDiscriminatorArgs = { + urn: 'urn:li:dataset:(urn:li:dataPlatform:hdfs,test,PROD)', + options: { + default: { + name: 'layout3', + options: {} + }, + discriminator + } + }; + this.setProperties(args); + + await render(hbs``); + assert.dom().containsText('layout1'); + assert.dom().doesNotContainText('layout2'); + assert.dom().doesNotContainText('layout3'); + + this.set('urn', 'urn:li:dataset:(urn:li:dataPlatform:hive,test,PROD)'); + assert.dom().containsText('layout2'); + assert.dom().doesNotContainText('layout1'); + assert.dom().doesNotContainText('layout3'); + + this.set('urn', 'urn:li:dataset:(urn:li:dataPlatform:other,test,PROD)'); + assert.dom().containsText('layout3'); + assert.dom().doesNotContainText('layout1'); + assert.dom().doesNotContainText('layout2'); + }); +}); diff --git a/datahub-web/@datahub/datasets-core/tests/integration/components/more-info-test.ts b/datahub-web/@datahub/datasets-core/tests/integration/components/more-info-test.ts deleted file mode 100644 index c2cdd3fd78ceb..0000000000000 --- a/datahub-web/@datahub/datasets-core/tests/integration/components/more-info-test.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { module, test } from 'qunit'; -import { setupRenderingTest } from 'ember-qunit'; -import { render } from '@ember/test-helpers'; -import hbs from 'htmlbars-inline-precompile'; - -// TODO: [META-8255] This is a copy of the component from data-portal and should be migrated to a centralized addon -// to share between our other addons. Tests will be written at that time -module('Integration | Component | more-info', function(hooks) { - setupRenderingTest(hooks); - - test('it renders', async function(assert) { - await render(hbs`{{more-info}}`); - assert.ok(this.element, ''); - }); -}); diff --git a/datahub-web/@datahub/datasets-core/tests/integration/components/placeholder/nacho-toggle-test.ts b/datahub-web/@datahub/datasets-core/tests/integration/components/placeholder/nacho-toggle-test.ts index da0b75a8a8875..48f0f67b36b25 100644 --- a/datahub-web/@datahub/datasets-core/tests/integration/components/placeholder/nacho-toggle-test.ts +++ b/datahub-web/@datahub/datasets-core/tests/integration/components/placeholder/nacho-toggle-test.ts @@ -4,7 +4,7 @@ import { render, findAll, click } from '@ember/test-helpers'; import hbs from 'htmlbars-inline-precompile'; import { capitalize } from '@ember/string'; -module('Integration | Component | placeholder/nacho-toggle', function(hooks) { +module('Integration | Component | placeholder/nacho-toggle', function(hooks): void { setupRenderingTest(hooks); const baseClass = '.nacho-toggle'; @@ -13,7 +13,7 @@ module('Integration | Component | placeholder/nacho-toggle', function(hooks) { const leftButton = `${buttonClass}--left`; const rightButton = `${buttonClass}--right`; - test('it renders', async function(assert) { + test('it renders', async function(assert): Promise { await render(hbs`{{placeholder/nacho-toggle}}`); assert.ok(this.element, 'Initial render is without errors'); diff --git a/datahub-web/@datahub/datasets-core/tests/integration/helpers/compliance/is-none-test.ts b/datahub-web/@datahub/datasets-core/tests/integration/helpers/compliance/is-none-test.ts new file mode 100644 index 0000000000000..8d1d6e207d278 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/tests/integration/helpers/compliance/is-none-test.ts @@ -0,0 +1,27 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; +import { ComplianceFieldIdValue } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; + +module('Integration | Helper | compliance/is-none', function(hooks): void { + setupRenderingTest(hooks); + + test('it gives the correct boolean', async function(assert): Promise { + this.set('inputValue', ComplianceFieldIdValue.None); + + await render(hbs`{{#if (compliance/is-none inputValue)}} + Pikachu + {{/if}}`); + + assert.equal(this.element.textContent?.trim(), 'Pikachu', 'Truthy case passes'); + + this.set('inputValue', ComplianceFieldIdValue.MemberId); + + await render(hbs`{{#if (compliance/is-none inputValue)}} + Pikachu + {{/if}}`); + + assert.equal(this.element.textContent?.trim(), '', 'Falsy case passes'); + }); +}); diff --git a/datahub-web/@datahub/datasets-core/tests/unit/services/datasets-core-test.ts b/datahub-web/@datahub/datasets-core/tests/unit/services/datasets-core-test.ts index 1ef5cf989bfd5..f17b82793b9bf 100644 --- a/datahub-web/@datahub/datasets-core/tests/unit/services/datasets-core-test.ts +++ b/datahub-web/@datahub/datasets-core/tests/unit/services/datasets-core-test.ts @@ -1,12 +1,12 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Service | datasets-core', function(hooks) { +module('Unit | Service | datasets-core', function(hooks): void { setupTest(hooks); // Replace this with your real tests. - test('it exists', function(assert) { - let service = this.owner.lookup('service:datasets-core'); + test('it exists', function(assert): void { + const service = this.owner.lookup('service:datasets-core'); assert.ok(service); }); }); diff --git a/datahub-web/@datahub/datasets-core/tsconfig.json b/datahub-web/@datahub/datasets-core/tsconfig.json index 4457dc96db7d1..2d1a7c8e3bcb4 100644 --- a/datahub-web/@datahub/datasets-core/tsconfig.json +++ b/datahub-web/@datahub/datasets-core/tsconfig.json @@ -5,9 +5,14 @@ "rootDir": "../../", "alwaysStrict": false, "paths": { - "dummy/mirage/*": ["tests/dummy/mirage/*"], - "dummy/tests/*": ["tests/*"], - "dummy/*": ["tests/dummy/app/*", "app/*"], + "dummy/mirage/*": ["tests/dummy/mirage/*", "../../@datahub/data-models/tests/dummy/mirage/*"], + "dummy/tests/*": ["tests/*", "../../@datahub/data-models/tests/*"], + "dummy/*": [ + "tests/dummy/app/*", + "app/*", + "../../@datahub/data-models/tests/dummy/app/*", + "../../@datahub/data-models/tests/app/*" + ], "@datahub/datasets-core": ["addon"], "@datahub/datasets-core/*": ["addon/*"], "@datahub/datasets-core/test-support": ["addon-test-support"], @@ -16,6 +21,12 @@ "@datahub/utils/*": ["../../@datahub/utils/addon/*"], "@datahub/data-models": ["../../@datahub/data-models/addon"], "@datahub/data-models/*": ["../../@datahub/data-models/addon/*"], + "@datahub/data-models/tests": ["../../@datahub/data-models/tests/*"], + "@datahub/data-models/tests/*": ["../../@datahub/data-models/tests/*"], + "@datahub/search": ["../../@datahub/search/addon"], + "@datahub/search/*": ["../../@datahub/search/addon/*"], + "@datahub/shared": ["../../@datahub/shared/addon"], + "@datahub/shared/*": ["../../@datahub/shared/addon/*"], "@datahub/metadata-types": ["../../@datahub/metadata-types/addon"], "@datahub/metadata-types/*": ["../../@datahub/metadata-types/addon/*"], "*": ["types/*"] @@ -30,9 +41,15 @@ "addon-test-support/**/*", "../../@datahub/data-models/addon/**/*", "../../@datahub/data-models/types/**/*", + "../../@datahub/data-models/tests/**/*", + "../../@datahub/search/addon/**/*", + "../../@datahub/search/types/**/*", + "../../@datahub/shared/addon/**/*", + "../../@datahub/shared/types/**/*", + "../../@datahub/shared/tests/**/*", "../../@datahub/metadata-types/addon/**/*", "../../@datahub/metadata-types/types/**/*", "../../@datahub/utils/addon/**/*", - "../../@datahub/utils/types/**/*", + "../../@datahub/utils/types/**/*" ] } diff --git a/datahub-web/@datahub/datasets-core/types/compliance/annotation-selection.d.ts b/datahub-web/@datahub/datasets-core/types/compliance/annotation-selection.d.ts new file mode 100644 index 0000000000000..5fd113fc8b852 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/types/compliance/annotation-selection.d.ts @@ -0,0 +1,15 @@ +import { + ComplianceFieldIdValue, + NonMemberIdLogicalType +} from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; +import { INachoDropdownOption } from '@nacho-ui/dropdown/types/nacho-dropdown'; + +/** + * Defines the interface for compliance data type field option + * @interface IComplianceFieldIdentifierOption + * @extends {INachoDropdownOption} + */ +export interface IComplianceFieldIdentifierOption + extends INachoDropdownOption { + isId: boolean; +} diff --git a/datahub-web/@datahub/datasets-core/types/compliance/export-policy.d.ts b/datahub-web/@datahub/datasets-core/types/compliance/export-policy.d.ts new file mode 100644 index 0000000000000..1eef86f624dfe --- /dev/null +++ b/datahub-web/@datahub/datasets-core/types/compliance/export-policy.d.ts @@ -0,0 +1,10 @@ +import { ExportPolicyKeys } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; + +/** + * Each item in the expected dataset + */ +export interface IExportPolicyTable { + label: string; + dataType: ExportPolicyKeys; + value?: boolean; +} diff --git a/datahub-web/@datahub/datasets-core/types/dummy/untyped-modules/ember-cli-mirage.d.ts b/datahub-web/@datahub/datasets-core/types/dummy/untyped-modules/ember-cli-mirage.d.ts deleted file mode 100644 index 873ee5d56f1f6..0000000000000 --- a/datahub-web/@datahub/datasets-core/types/dummy/untyped-modules/ember-cli-mirage.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module 'ember-cli-mirage'; -declare module 'ember-cli-mirage/test-support/setup-mirage'; -declare module 'dummy/initializers/ember-cli-mirage'; diff --git a/datahub-web/@datahub/datasets-core/types/global.d.ts b/datahub-web/@datahub/datasets-core/types/global.d.ts new file mode 100644 index 0000000000000..004202c1e4dc3 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/types/global.d.ts @@ -0,0 +1,6 @@ +// Types for compiled templates +declare module '@datahub/datasets-core/templates/*' { + import { TemplateFactory } from 'htmlbars-inline-precompile'; + const tmpl: TemplateFactory; + export default tmpl; +} diff --git a/datahub-web/@datahub/datasets-core/types/groups.d.ts b/datahub-web/@datahub/datasets-core/types/groups.d.ts new file mode 100644 index 0000000000000..01d7eb2a48303 --- /dev/null +++ b/datahub-web/@datahub/datasets-core/types/groups.d.ts @@ -0,0 +1,13 @@ +/** + * Describes the shape of an individual DatasetGroup result + * @interface IDatasetGroupAPIResponse + */ +export interface IDatasetGroupAPIResponse { + urn: string; +} + +/** + * Definition of the how the DatasetGroup API response looks like + * @type IDatasetGroupsAPIResponse + */ +export type IDatasetGroupsAPIResponse = Array; diff --git a/datahub-web/@datahub/datasets-core/types/vendor/mirage-for-datasets.d.ts b/datahub-web/@datahub/datasets-core/types/vendor/mirage-for-datasets.d.ts index accddc53295f2..d0097e61ba721 100644 --- a/datahub-web/@datahub/datasets-core/types/vendor/mirage-for-datasets.d.ts +++ b/datahub-web/@datahub/datasets-core/types/vendor/mirage-for-datasets.d.ts @@ -1,6 +1,11 @@ +import { IMirageDB } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; +import { IComplianceFieldAnnotation } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-annotation'; +import { IComplianceDataType } from '@datahub/metadata-types/types/entity/dataset/compliance-data-types'; import { IDatasetSchemaColumn } from '@datahub/metadata-types/types/entity/dataset/scehma'; -import { IDatasetEntity } from '@datahub/metadata-types/types/entity/dataset/dataset-entity'; +import { IDatasetComplianceInfo } from '@datahub/metadata-types/types/entity/dataset/compliance/info'; +import { IDatasetExportPolicy } from '@datahub/metadata-types/types/entity/dataset/compliance/export-policy'; import { IDataPlatform } from '@datahub/metadata-types/types/entity/dataset/platform'; +import { IDatasetRetentionPolicy } from '@datahub/metadata-types/types/entity/dataset/compliance/retention'; type SchemaDb = Array & { where: (query: Partial) => Array; @@ -15,9 +20,14 @@ type SchemaDb = Array & { * the available interfaces, and mapping them here specifically for this addon. */ export interface IMirageDatasetCoreSchema { + complianceDataTypes: IMirageDB; db: { + datasetComplianceAnnotationTags: SchemaDb; datasetSchemaColumns: SchemaDb; - datasetViews: SchemaDb; + datasets: SchemaDb; + datasetComplianceInfos: SchemaDb; + datasetExportPolicies: SchemaDb; + datasetPurgePolicies: SchemaDb; platforms: SchemaDb; }; } diff --git a/datahub-web/@datahub/entity-deprecation/.editorconfig b/datahub-web/@datahub/entities/.editorconfig similarity index 100% rename from datahub-web/@datahub/entity-deprecation/.editorconfig rename to datahub-web/@datahub/entities/.editorconfig diff --git a/datahub-web/@datahub/entity-deprecation/.ember-cli b/datahub-web/@datahub/entities/.ember-cli similarity index 100% rename from datahub-web/@datahub/entity-deprecation/.ember-cli rename to datahub-web/@datahub/entities/.ember-cli diff --git a/datahub-web/@datahub/tracking/.gitignore b/datahub-web/@datahub/entities/.gitignore similarity index 100% rename from datahub-web/@datahub/tracking/.gitignore rename to datahub-web/@datahub/entities/.gitignore diff --git a/datahub-web/@datahub/entities/.npmignore b/datahub-web/@datahub/entities/.npmignore new file mode 100644 index 0000000000000..bd09adff92e08 --- /dev/null +++ b/datahub-web/@datahub/entities/.npmignore @@ -0,0 +1,32 @@ +# compiled output +/dist/ +/tmp/ + +# dependencies +/bower_components/ + +# misc +/.bowerrc +/.editorconfig +/.ember-cli +/.env* +/.eslintignore +/.eslintrc.js +/.git/ +/.gitignore +/.template-lintrc.js +/.travis.yml +/.watchmanconfig +/bower.json +/config/ember-try.js +/CONTRIBUTING.md +/ember-cli-build.js +/testem.js +/tests/ +/yarn.lock +.gitkeep + +# ember-try +/.node_modules.ember-try/ +/bower.json.ember-try +/package.json.ember-try diff --git a/datahub-web/@datahub/entities/.travis.yml b/datahub-web/@datahub/entities/.travis.yml new file mode 100644 index 0000000000000..d10bed4d288bc --- /dev/null +++ b/datahub-web/@datahub/entities/.travis.yml @@ -0,0 +1,67 @@ +--- +language: node_js +node_js: + # we recommend testing addons with the same minimum supported node version as Ember CLI + # so that your addon works for all apps + - '10' + +sudo: false +dist: trusty + +addons: + chrome: stable + +cache: + yarn: true + +env: + global: + # See https://git.io/vdao3 for details. + - JOBS=1 + +branches: + only: + - master + # npm version tags + - /^v\d+\.\d+\.\d+/ + +jobs: + fail_fast: true + allow_failures: + - env: EMBER_TRY_SCENARIO=ember-canary + + include: + # runs linting and tests with current locked deps + + - stage: 'Tests' + name: 'Tests' + install: + - yarn install --non-interactive + script: + - yarn lint:hbs + - yarn lint:js + - yarn test + + - name: 'Floating Dependencies' + script: + - yarn test + + # we recommend new addons test the current and previous LTS + # as well as latest stable release (bonus points to beta/canary) + - stage: 'Additional Tests' + env: EMBER_TRY_SCENARIO=ember-lts-2.18 + - env: EMBER_TRY_SCENARIO=ember-lts-3.4 + - env: EMBER_TRY_SCENARIO=ember-release + - env: EMBER_TRY_SCENARIO=ember-beta + - env: EMBER_TRY_SCENARIO=ember-canary + - env: EMBER_TRY_SCENARIO=ember-default-with-jquery + +before_install: + - curl -o- -L https://yarnpkg.com/install.sh | bash + - export PATH=$HOME/.yarn/bin:$PATH + +install: + - yarn install --no-lockfile --non-interactive + +script: + - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO diff --git a/datahub-web/@datahub/entity-deprecation/.watchmanconfig b/datahub-web/@datahub/entities/.watchmanconfig similarity index 100% rename from datahub-web/@datahub/entity-deprecation/.watchmanconfig rename to datahub-web/@datahub/entities/.watchmanconfig diff --git a/datahub-web/@datahub/entities/LICENSE.md b/datahub-web/@datahub/entities/LICENSE.md new file mode 100644 index 0000000000000..0d02ed0266734 --- /dev/null +++ b/datahub-web/@datahub/entities/LICENSE.md @@ -0,0 +1,13 @@ +Copyright (c) 2020 LinkedIn + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/datahub-web/@datahub/entities/README.md b/datahub-web/@datahub/entities/README.md new file mode 100644 index 0000000000000..f60309cb48778 --- /dev/null +++ b/datahub-web/@datahub/entities/README.md @@ -0,0 +1,25 @@ +@datahub/entities +============================================================================== + +This package holds entity specific components and modules. + +## Creating an entity module + +Modules for entities should be namespaced according to the entity in the format: + +``` +// +``` + +where `module-type` is the name of the module we are working with (for example, `component` +or `util`), `pluralized-entity-name` is the identifier for the entity in plural form (for example, +`datasets` or `metrics`) and `entity-module-path` is the specific organization we want for the +module. + +With the above criteria, when we create an upstream datasets component for datasets with respect to +relationships, the command we might run might be: + +``` +// Creates the module components/datasets/relationships/upstream-datasets.ts +ember g component datasets/relationships/upstream-datasets +``` diff --git a/datahub-web/@datahub/data-models/tests/dummy/app/templates/components/.gitkeep b/datahub-web/@datahub/entities/addon/.gitkeep similarity index 100% rename from datahub-web/@datahub/data-models/tests/dummy/app/templates/components/.gitkeep rename to datahub-web/@datahub/entities/addon/.gitkeep diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/app/templates/components/.gitkeep b/datahub-web/@datahub/entities/app/.gitkeep similarity index 100% rename from datahub-web/@datahub/datasets-core/tests/dummy/app/templates/components/.gitkeep rename to datahub-web/@datahub/entities/app/.gitkeep diff --git a/datahub-web/@datahub/tracking/config/ember-try.js b/datahub-web/@datahub/entities/config/ember-try.js similarity index 100% rename from datahub-web/@datahub/tracking/config/ember-try.js rename to datahub-web/@datahub/entities/config/ember-try.js diff --git a/datahub-web/@datahub/entities/config/environment.d.ts b/datahub-web/@datahub/entities/config/environment.d.ts new file mode 100644 index 0000000000000..3951075c5e2d9 --- /dev/null +++ b/datahub-web/@datahub/entities/config/environment.d.ts @@ -0,0 +1,13 @@ +declare const config: { + environment: 'development' | 'test' | 'production'; + modulePrefix: string; + podModulePrefix: string; + locationType: string; + rootURL: string; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; +}; + +export default config; diff --git a/datahub-web/@datahub/entity-deprecation/config/environment.js b/datahub-web/@datahub/entities/config/environment.js similarity index 100% rename from datahub-web/@datahub/entity-deprecation/config/environment.js rename to datahub-web/@datahub/entities/config/environment.js diff --git a/datahub-web/@datahub/entities/ember-cli-build.js b/datahub-web/@datahub/entities/ember-cli-build.js new file mode 100644 index 0000000000000..d9648581d66f8 --- /dev/null +++ b/datahub-web/@datahub/entities/ember-cli-build.js @@ -0,0 +1,18 @@ +'use strict'; + +const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); + +module.exports = function(defaults) { + const app = new EmberAddon(defaults, { + // Add options here + }); + + /* + This build file specifies the options for the dummy test app of this + addon, located in `/tests/dummy` + This build file does *not* influence how the addon or the app using it + behave. You most likely want to be modifying `./index.js` or app's build file + */ + + return app.toTree(); +}; diff --git a/datahub-web/@datahub/entities/index.js b/datahub-web/@datahub/entities/index.js new file mode 100644 index 0000000000000..c0c6e3659f21e --- /dev/null +++ b/datahub-web/@datahub/entities/index.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = { + name: require('./package').name, + + isDevelopingAddon: () => true, + + ...require('../../configs/import-mirage-tree-from-addon') +}; diff --git a/datahub-web/@datahub/entities/package.json b/datahub-web/@datahub/entities/package.json new file mode 100644 index 0000000000000..e8a6956c10fa3 --- /dev/null +++ b/datahub-web/@datahub/entities/package.json @@ -0,0 +1,70 @@ +{ + "name": "@datahub/entities", + "version": "0.0.0", + "description": "Some description for entities", + "keywords": [ + "ember-addon" + ], + "repository": "", + "license": "MIT", + "author": "", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "build": "ember build", + "start": "ember serve", + "test": "ember test", + "test:all": "ember try:each", + "prepublishOnly": "ember ts:precompile", + "postpublish": "ember ts:clean" + }, + "dependencies": { + "@datahub/utils": "0.0.0", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^4.2.2", + "ember-cli-typescript": "^3.1.3" + }, + "devDependencies": { + "@babel/core": "^7.8.4", + "@ember/optional-features": "^1.3.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "@types/ember": "^3.1.1", + "@types/ember-qunit": "^3.4.7", + "@types/ember-test-helpers": "^1.0.5", + "@types/ember-testing-helpers": "^0.0.3", + "@types/ember__test-helpers": "^0.7.9", + "@types/qunit": "^2.9.0", + "@types/rsvp": "^4.0.3", + "@types/sinon": "^7.0.3", + "broccoli-asset-rev": "^3.0.0", + "ember-cli": "~3.16.0", + "ember-cli-dependency-checker": "^3.2.0", + "ember-cli-htmlbars-inline-precompile": "^2.1.0", + "ember-cli-inject-live-reload": "^2.0.2", + "ember-cli-mirage": "^0.4.15", + "ember-cli-sri": "^2.1.1", + "ember-cli-typescript-blueprints": "^3.0.0", + "ember-cli-uglify": "^3.0.0", + "ember-cli-update": "^0.52.1", + "ember-export-application-global": "^2.0.1", + "ember-load-initializers": "^2.1.1", + "ember-maybe-import-regenerator": "^0.1.6", + "ember-qunit": "^4.6.0", + "ember-resolver": "^7.0.0", + "ember-source": "~3.16.3", + "ember-source-channel-url": "^2.0.1", + "ember-try": "^1.4.0", + "loader.js": "^4.7.0", + "qunit-dom": "^0.9.1", + "typescript": "^3.9.3" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + }, + "ember-addon": { + "configPath": "tests/dummy/config" + } +} diff --git a/datahub-web/@datahub/entity-deprecation/testem.js b/datahub-web/@datahub/entities/testem.js similarity index 100% rename from datahub-web/@datahub/entity-deprecation/testem.js rename to datahub-web/@datahub/entities/testem.js diff --git a/datahub-web/@datahub/entities/tests/dummy/app/app.ts b/datahub-web/@datahub/entities/tests/dummy/app/app.ts new file mode 100644 index 0000000000000..d8e2088b6b0e5 --- /dev/null +++ b/datahub-web/@datahub/entities/tests/dummy/app/app.ts @@ -0,0 +1,12 @@ +import Application from '@ember/application'; +import Resolver from 'ember-resolver'; +import loadInitializers from 'ember-load-initializers'; +import config from './config/environment'; + +export default class App extends Application { + modulePrefix = config.modulePrefix; + podModulePrefix = config.podModulePrefix; + Resolver = Resolver; +} + +loadInitializers(App, config.modulePrefix); diff --git a/datahub-web/@datahub/entity-deprecation/addon/.gitkeep b/datahub-web/@datahub/entities/tests/dummy/app/components/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/addon/.gitkeep rename to datahub-web/@datahub/entities/tests/dummy/app/components/.gitkeep diff --git a/datahub-web/@datahub/entities/tests/dummy/app/config/environment.d.ts b/datahub-web/@datahub/entities/tests/dummy/app/config/environment.d.ts new file mode 100644 index 0000000000000..3951075c5e2d9 --- /dev/null +++ b/datahub-web/@datahub/entities/tests/dummy/app/config/environment.d.ts @@ -0,0 +1,13 @@ +declare const config: { + environment: 'development' | 'test' | 'production'; + modulePrefix: string; + podModulePrefix: string; + locationType: string; + rootURL: string; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; +}; + +export default config; diff --git a/datahub-web/@datahub/entity-deprecation/app/.gitkeep b/datahub-web/@datahub/entities/tests/dummy/app/controllers/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/app/.gitkeep rename to datahub-web/@datahub/entities/tests/dummy/app/controllers/.gitkeep diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/app/components/.gitkeep b/datahub-web/@datahub/entities/tests/dummy/app/helpers/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/dummy/app/components/.gitkeep rename to datahub-web/@datahub/entities/tests/dummy/app/helpers/.gitkeep diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/app/index.html b/datahub-web/@datahub/entities/tests/dummy/app/index.html similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/dummy/app/index.html rename to datahub-web/@datahub/entities/tests/dummy/app/index.html diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/app/controllers/.gitkeep b/datahub-web/@datahub/entities/tests/dummy/app/models/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/dummy/app/controllers/.gitkeep rename to datahub-web/@datahub/entities/tests/dummy/app/models/.gitkeep diff --git a/datahub-web/@datahub/entities/tests/dummy/app/router.ts b/datahub-web/@datahub/entities/tests/dummy/app/router.ts new file mode 100644 index 0000000000000..b0aca2421bcb0 --- /dev/null +++ b/datahub-web/@datahub/entities/tests/dummy/app/router.ts @@ -0,0 +1,9 @@ +import EmberRouter from '@ember/routing/router'; +import config from './config/environment'; + +export default class Router extends EmberRouter { + location = config.locationType; + rootURL = config.rootURL; +} + +Router.map(function(): void {}); diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/app/helpers/.gitkeep b/datahub-web/@datahub/entities/tests/dummy/app/routes/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/dummy/app/helpers/.gitkeep rename to datahub-web/@datahub/entities/tests/dummy/app/routes/.gitkeep diff --git a/datahub-web/@datahub/tracking/tests/dummy/app/styles/app.scss b/datahub-web/@datahub/entities/tests/dummy/app/styles/app.scss similarity index 100% rename from datahub-web/@datahub/tracking/tests/dummy/app/styles/app.scss rename to datahub-web/@datahub/entities/tests/dummy/app/styles/app.scss diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/app/templates/application.hbs b/datahub-web/@datahub/entities/tests/dummy/app/templates/application.hbs similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/dummy/app/templates/application.hbs rename to datahub-web/@datahub/entities/tests/dummy/app/templates/application.hbs diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/app/models/.gitkeep b/datahub-web/@datahub/entities/tests/dummy/app/templates/components/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/dummy/app/models/.gitkeep rename to datahub-web/@datahub/entities/tests/dummy/app/templates/components/.gitkeep diff --git a/datahub-web/@datahub/entities/tests/dummy/config/environment.js b/datahub-web/@datahub/entities/tests/dummy/config/environment.js new file mode 100644 index 0000000000000..43938b91a0109 --- /dev/null +++ b/datahub-web/@datahub/entities/tests/dummy/config/environment.js @@ -0,0 +1,54 @@ +'use strict'; + +module.exports = function(environment) { + const ENV = { + modulePrefix: 'dummy', + environment, + rootURL: '/', + locationType: 'auto', + EmberENV: { + FEATURES: { + // Here you can enable experimental features on an ember canary build + // e.g. 'with-controller': true + }, + EXTEND_PROTOTYPES: { + // Prevent Ember Data from overriding Date.parse. + Date: false + } + }, + + APP: { + // Here you can pass flags/options to your application instance + // when it is created + } + }; + + if (environment === 'development') { + // ENV.APP.LOG_RESOLVER = true; + // ENV.APP.LOG_ACTIVE_GENERATION = true; + // ENV.APP.LOG_TRANSITIONS = true; + // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; + // ENV.APP.LOG_VIEW_LOOKUPS = true; + } + + if (environment === 'test') { + // Testem prefers this... + ENV.locationType = 'none'; + + // keep test console output quieter + ENV.APP.LOG_ACTIVE_GENERATION = false; + ENV.APP.LOG_VIEW_LOOKUPS = false; + ENV.RAISE_ON_DEPRECATION = false; + ENV.LOG_STACKTRACE_ON_DEPRECATION = false; + + ENV.APP.rootElement = '#ember-testing'; + ENV.APP.autoboot = false; + ENV.APP.notificationsTimeout = 1; + } + + if (environment === 'production') { + // here you can enable a production-specific feature + } + + return ENV; +}; diff --git a/datahub-web/@datahub/entities/tests/dummy/config/optional-features.json b/datahub-web/@datahub/entities/tests/dummy/config/optional-features.json new file mode 100644 index 0000000000000..b26286e2ecdf3 --- /dev/null +++ b/datahub-web/@datahub/entities/tests/dummy/config/optional-features.json @@ -0,0 +1,6 @@ +{ + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true +} diff --git a/datahub-web/@datahub/entity-header/tests/dummy/config/targets.js b/datahub-web/@datahub/entities/tests/dummy/config/targets.js similarity index 100% rename from datahub-web/@datahub/entity-header/tests/dummy/config/targets.js rename to datahub-web/@datahub/entities/tests/dummy/config/targets.js diff --git a/datahub-web/@datahub/entities/tests/dummy/mirage/config.ts b/datahub-web/@datahub/entities/tests/dummy/mirage/config.ts new file mode 100644 index 0000000000000..e9dc2100c4fb9 --- /dev/null +++ b/datahub-web/@datahub/entities/tests/dummy/mirage/config.ts @@ -0,0 +1,6 @@ +import { Server } from 'ember-cli-mirage'; +import { getApiRoot, ApiVersion } from '@datahub/utils/api/shared'; + +export default function(this: Server): void { + this.namespace = getApiRoot(ApiVersion.v2); +} diff --git a/datahub-web/@datahub/entities/tests/dummy/mirage/scenarios/default.ts b/datahub-web/@datahub/entities/tests/dummy/mirage/scenarios/default.ts new file mode 100644 index 0000000000000..b0b9ad2656e9d --- /dev/null +++ b/datahub-web/@datahub/entities/tests/dummy/mirage/scenarios/default.ts @@ -0,0 +1 @@ +export default function(/* server */): void {} diff --git a/datahub-web/@datahub/entities/tests/dummy/mirage/serializers/application.ts b/datahub-web/@datahub/entities/tests/dummy/mirage/serializers/application.ts new file mode 100644 index 0000000000000..c95616feae69e --- /dev/null +++ b/datahub-web/@datahub/entities/tests/dummy/mirage/serializers/application.ts @@ -0,0 +1,9 @@ +import { Serializer } from 'ember-cli-mirage'; + +export default class extends Serializer { + // Removes the default root key + root = false; + + // Since api's are not side-loaded, allow embed. Also, this is required when root is false + embed = true; +} diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/public/robots.txt b/datahub-web/@datahub/entities/tests/dummy/public/robots.txt similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/dummy/public/robots.txt rename to datahub-web/@datahub/entities/tests/dummy/public/robots.txt diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/app/routes/.gitkeep b/datahub-web/@datahub/entities/tests/helpers/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/dummy/app/routes/.gitkeep rename to datahub-web/@datahub/entities/tests/helpers/.gitkeep diff --git a/datahub-web/@datahub/entity-deprecation/tests/index.html b/datahub-web/@datahub/entities/tests/index.html similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/index.html rename to datahub-web/@datahub/entities/tests/index.html diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/app/templates/components/.gitkeep b/datahub-web/@datahub/entities/tests/integration/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/dummy/app/templates/components/.gitkeep rename to datahub-web/@datahub/entities/tests/integration/.gitkeep diff --git a/datahub-web/@datahub/entities/tests/test-helper.ts b/datahub-web/@datahub/entities/tests/test-helper.ts new file mode 100644 index 0000000000000..8e58a19207ce8 --- /dev/null +++ b/datahub-web/@datahub/entities/tests/test-helper.ts @@ -0,0 +1,8 @@ +import Application from 'dummy/app'; +import config from '../config/environment'; +import { setApplication } from '@ember/test-helpers'; +import { start } from 'ember-qunit'; + +setApplication(Application.create(config.APP)); + +start(); diff --git a/datahub-web/@datahub/entity-deprecation/tests/integration/.gitkeep b/datahub-web/@datahub/entities/tests/unit/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/integration/.gitkeep rename to datahub-web/@datahub/entities/tests/unit/.gitkeep diff --git a/datahub-web/@datahub/entities/tsconfig.json b/datahub-web/@datahub/entities/tsconfig.json new file mode 100644 index 0000000000000..8a7185daad095 --- /dev/null +++ b/datahub-web/@datahub/entities/tsconfig.json @@ -0,0 +1,28 @@ +{ + "extends": "../../configs/tsconfig-base", + "compilerOptions": { + "baseUrl": ".", + "rootDir": "../../", + "paths": { + "dummy/tests/*": ["tests/*"], + "dummy/*": ["tests/dummy/app/*", "app/*"], + "@datahub/entities": ["addon"], + "@datahub/entities/*": ["addon/*"], + "@datahub/entities/test-support": ["addon-test-support"], + "@datahub/entities/test-support/*": ["addon-test-support/*"], + "*": ["types/*"], + "@datahub/utils": ["../../@datahub/utils/addon"], + "@datahub/utils/*": ["../../@datahub/utils/addon/*"], + } + }, + "include": [ + "app/**/*", + "addon/**/*", + "tests/**/*", + "types/**/*", + "test-support/**/*", + "addon-test-support/**/*", + "../../@datahub/utils/addon/**/*", + "../../@datahub/utils/types/**/*" + ] +} diff --git a/datahub-web/@datahub/tracking/types/dummy/index.d.ts b/datahub-web/@datahub/entities/types/dummy/index.d.ts similarity index 100% rename from datahub-web/@datahub/tracking/types/dummy/index.d.ts rename to datahub-web/@datahub/entities/types/dummy/index.d.ts diff --git a/datahub-web/@datahub/entities/types/global.d.ts b/datahub-web/@datahub/entities/types/global.d.ts new file mode 100644 index 0000000000000..bd898035f6b73 --- /dev/null +++ b/datahub-web/@datahub/entities/types/global.d.ts @@ -0,0 +1,6 @@ +// Types for compiled templates +declare module '@datahub/entities/templates/*' { + import { TemplateFactory } from 'htmlbars-inline-precompile'; + const tmpl: TemplateFactory; + export default tmpl; +} diff --git a/datahub-web/@datahub/tracking/types/modules/ember-load-initializers.d.ts b/datahub-web/@datahub/entities/types/modules/ember-load-initializers.d.ts similarity index 100% rename from datahub-web/@datahub/tracking/types/modules/ember-load-initializers.d.ts rename to datahub-web/@datahub/entities/types/modules/ember-load-initializers.d.ts diff --git a/datahub-web/@datahub/entity-deprecation/tests/unit/.gitkeep b/datahub-web/@datahub/entities/vendor/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/tests/unit/.gitkeep rename to datahub-web/@datahub/entities/vendor/.gitkeep diff --git a/datahub-web/@datahub/entity-deprecation/.gitignore b/datahub-web/@datahub/entity-deprecation/.gitignore deleted file mode 100644 index 8fa39a63ca5c8..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# See https://help.github.com/ignore-files/ for more about ignoring files. - -# compiled output -/dist -/tmp - -# dependencies -/node_modules -/bower_components - -# misc -/.sass-cache -/connect.lock -/coverage/* -/libpeerconnection.log -npm-debug.log* -yarn-error.log -testem.log - -# ember-try -.node_modules.ember-try/ -bower.json.ember-try -package.json.ember-try diff --git a/datahub-web/@datahub/entity-deprecation/.npmignore b/datahub-web/@datahub/entity-deprecation/.npmignore deleted file mode 100644 index 135c7b1f27a45..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/.npmignore +++ /dev/null @@ -1,21 +0,0 @@ -/bower_components -/config/ember-try.js -/dist -/tests -/tmp -**/.gitkeep -.bowerrc -.editorconfig -.ember-cli -.eslintrc.js -.gitignore -.watchmanconfig -.travis.yml -bower.json -ember-cli-build.js -testem.js - -# ember-try -.node_modules.ember-try/ -bower.json.ember-try -package.json.ember-try diff --git a/datahub-web/@datahub/entity-deprecation/.travis.yml b/datahub-web/@datahub/entity-deprecation/.travis.yml deleted file mode 100644 index 7ce26828aecbd..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/.travis.yml +++ /dev/null @@ -1,46 +0,0 @@ ---- -language: node_js -node_js: - # we recommend testing addons with the same minimum supported node version as Ember CLI - # so that your addon works for all apps - - "8" - -sudo: false -dist: trusty - -addons: - chrome: stable - -cache: - directories: - - $HOME/.npm - -env: - global: - # See https://git.io/vdao3 for details. - - JOBS=1 - matrix: - # we recommend new addons test the current and previous LTS - # as well as latest stable release (bonus points to beta/canary) - - EMBER_TRY_SCENARIO=ember-lts-2.12 - - EMBER_TRY_SCENARIO=ember-lts-2.16 - - EMBER_TRY_SCENARIO=ember-release - - EMBER_TRY_SCENARIO=ember-beta - - EMBER_TRY_SCENARIO=ember-canary - - EMBER_TRY_SCENARIO=ember-default - -matrix: - fast_finish: true - allow_failures: - - env: EMBER_TRY_SCENARIO=ember-canary - -before_install: - - npm config set spin false - - npm install -g npm@8 - - npm --version - -script: - - npm run lint:js - # Usually, it's ok to finish the test scenario without reverting - # to the addon's original dependency state, skipping "cleanup". - - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO --skip-cleanup diff --git a/datahub-web/@datahub/entity-deprecation/CHANGELOG.md b/datahub-web/@datahub/entity-deprecation/CHANGELOG.md deleted file mode 100644 index 2eabceed4cb07..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/CHANGELOG.md +++ /dev/null @@ -1,13 +0,0 @@ -# Changelog - -All changes to the this project will be documented here. - -### Types of Changes -- `Added` for new features. -- `Changed` for changes in existing functionality. -- `Deprecated` for soon-to-be removed features. -- `Removed` for now removed features. -- `Fixed` for any bug fixes. -- `Security` in case of vulnerabilities. - -The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project *does not adhere* to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). diff --git a/datahub-web/@datahub/entity-deprecation/LICENSE.md b/datahub-web/@datahub/entity-deprecation/LICENSE.md deleted file mode 100644 index 198f6dacf45e7..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/LICENSE.md +++ /dev/null @@ -1,9 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2018 - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/datahub-web/@datahub/entity-deprecation/README.md b/datahub-web/@datahub/entity-deprecation/README.md deleted file mode 100644 index 04d22485d096d..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# entity-deprecation - -The entity-deprecation addon was made as a table to handle the deprecation scenario for entities on -DataHub, but can also be incorporated into general deprecation scenarios. - -### Example usage: -``` -// container.hbs -{{datahub/entity-deprecation - entityName="Pokemon" - deprecated=boolDeprecated - deprecationNote=stringDeprecationNote - decommissionTime=timestampDecommissionTime - entityDecommissionWikiLink=hashWikiLinks.entityDecommission - onUpdateDeprecation=(action functionOrActionUpdateDeprecation)}} -``` - -## Setup - -In order to use this application, import it to the host application and then include the following -line in the host application's app.scss: -``` -// app.scss - -// If you're not already using it in your application, be sure to include these imports before -// entity-deprecation import -@import 'ember-power-calendar'; - -... // other imports -@import 'entity-deprecation'; -... -``` - -## Publishing to NPM - -During development, our addon's `index.js` file looks like this: -``` -module.exports = { - name: '@datahub/entity-deprecation', - isDevelopingAddon: () => true, - ... -}; -``` - -Make sure to modify `isDevelopingAddon` to return false before publishing to npm - -## Development & Installation - -* `git clone ` this repository -* `cd entity-deprecation` -* `npm install` - -## Running - -* `ember serve` -* Visit your app at [http://localhost:4200](http://localhost:4200). - -## Running Tests - -* `npm test` (Runs `ember try:each` to test your addon against multiple Ember versions) -* `ember test` -* `ember test --server` - -## Building - -* `ember build` - -For more information on using ember-cli, visit [https://ember-cli.com/](https://ember-cli.com/). diff --git a/datahub-web/@datahub/entity-deprecation/addon/components/entity-deprecation.ts b/datahub-web/@datahub/entity-deprecation/addon/components/entity-deprecation.ts deleted file mode 100644 index e09c4dfffbc5d..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/addon/components/entity-deprecation.ts +++ /dev/null @@ -1,136 +0,0 @@ -import Component from '@ember/component'; -// @ts-ignore: Ignore import of compiled template -import layout from '../templates/components/entity-deprecation'; -import { action } from '@ember/object'; -import { reads } from '@ember/object/computed'; -import { classNames } from '@ember-decorators/component'; -import moment from 'moment'; -import { set } from '@ember/object'; - -/** - * This component was made as a tab to handle the deprecation scenario for entities on DataHub, but is made generic to - * be usable or extendable for a general deprecation scenarios - * - * @example - * {{datahub/entity-deprecation - * entityName="Pokemon" - * deprecated=boolDeprecated - * deprecationNote=stringDeprecationNote - * decommissionTime=timestampDecommissionTime - * entityDecommissionWikiLink=hashWikiLinks.entityDecommission - * onUpdateDeprecation=functionOrActionUpdateDeprecation}} - */ -@classNames('entity-deprecation') -export default class EntityDeprecation extends Component { - layout = layout; - - /** - * Name of the current entity that we are dealing with. Originally this was "dataset" but is - * now expanding - * @type {string} - */ - entityName!: string; - - /** - * Flag indicating whether the current entity has been deprecated - * @type {boolean} - */ - isDeprecated!: boolean; - - /** - * Text string, intended to indicate the reason for deprecation - * @type {string} - */ - deprecationNote!: string; - - /** - * Time when the dataset will be decommissioned - * @type {number} - */ - decommissionTime!: number; - - /** - * Expected to be passed in from a containing component, will be called to actually update the - * component with the new user input - * @param {boolean} isDeprecated - new deprecation state - * @param {string} note - new deprecation note - * @param {number} time - new deprecation time as unix timestamp - */ - updateDeprecation!: (isDeprecated: boolean, note: string, time: number | null) => Promise; - - /** - * Currently selected date, used in the calendar dropdown component - * @type {Date} - */ - selectedDate: Date = new Date(); - - /** - * Date around which the calendar is centered - * @type {Date} - */ - centeredDate: Date = this.selectedDate; - - /** - * Expected to be passed in if we plan on using the default entity deprecation acknowledgement template, - * leads to a more info link for the user about deprecation of such entity - * @type {string | undefined} - */ - entityDecommissionWikiLink?: string; - - /** - * The earliest date a user can select as a decommission date - * @type {Date} - */ - minSelectableDecommissionDate: Date = new Date( - moment() - .add(1, 'days') - .valueOf() - ); - - /** - * Working reference to the entity's deprecated flag, made to be edited by the user - * @type {ComputedProperty} - */ - @reads('isDeprecated') - isDeprecatedAlias!: EntityDeprecation['isDeprecated']; - - /** - * Working reference to the entity's deprecationNote, made to be edited by the user - * @type {ComputedProperty} - */ - @reads('deprecationNote') - deprecationNoteAlias!: EntityDeprecation['deprecationNote']; - - /** - * Invokes the save action with the updated values for deprecated status, decommission time, and - * deprecation note. The actual save functionality should be handled by - */ - @action - async onUpdateDeprecation(): Promise { - const { isDeprecatedAlias, deprecationNoteAlias, decommissionTime } = this; - - const noteValue = isDeprecatedAlias ? deprecationNoteAlias : ''; - const time = decommissionTime || null; - - await this.updateDeprecation(!!isDeprecatedAlias, noteValue || '', time); - set(this, 'deprecationNoteAlias', noteValue); - } - - /** - * Toggle the boolean value of our deprecated alias. - */ - @action - toggleDeprecatedStatus(): void { - this.toggleProperty('isDeprecatedAlias'); - } - - /** - * Handles updates to the decommission time, triggered by our power calendar component through user - * clicking on the date input - * @param {Date} decommissionTime - date the entity should be decomissioned - */ - @action - onDecommissionDateChange(decommissionTime: Date): void { - set(this, 'decommissionTime', new Date(decommissionTime).getTime()); - } -} diff --git a/datahub-web/@datahub/entity-deprecation/addon/templates/components/entity-deprecation.hbs b/datahub-web/@datahub/entity-deprecation/addon/templates/components/entity-deprecation.hbs deleted file mode 100644 index 04c03666bdb4c..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/addon/templates/components/entity-deprecation.hbs +++ /dev/null @@ -1,96 +0,0 @@ -{{! template-lint-disable }} -{{!-- template lint is running into a strange non-templating error on this file. Temporary measure --}} -
- -
-

- Is this {{entityName}} deprecated? -

- {{input - id=(concat entityName "-is-deprecated") - type="checkbox" - title=(concat "Is this " entityName " deprecated?") - class="toggle-switch toggle-switch--light" - checked=(readonly isDeprecatedAlias) - change=(action "toggleDeprecatedStatus") - }} - -
- - {{#if isDeprecatedAlias}} - - - -

When should this {{entityName}} be decommissioned?

- - {{#basic-dropdown as |dropdown|}} - - - {{#dropdown.content class="entity-deprecation__cal-dropdown"}} - - - - - - - - {{/dropdown.content}} - {{/basic-dropdown}} - -

- {{#unless decommissionTime}} - Please specify a date when this {{entityName}} will be decommissioned - {{/unless}} - - - {{if decommissionTime (concat 'Will be decommissioned on ' (moment-format decommissionTime 'MMMM DD YYYY')) ''}} - -

- {{/if}} - -
- -
- - - -{{yield}} \ No newline at end of file diff --git a/datahub-web/@datahub/entity-deprecation/addon/utils/functions/noop.ts b/datahub-web/@datahub/entity-deprecation/addon/utils/functions/noop.ts deleted file mode 100644 index 453731bcef0e8..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/addon/utils/functions/noop.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Exports a noop that can be used in place of Ember.K which is currently deprecated. - */ -export default <(...args: Array) => any>function noop(): any {}; diff --git a/datahub-web/@datahub/entity-deprecation/app/components/entity-deprecation.js b/datahub-web/@datahub/entity-deprecation/app/components/entity-deprecation.js deleted file mode 100644 index f0c13edee53d9..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/app/components/entity-deprecation.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@datahub/entity-deprecation/components/entity-deprecation'; diff --git a/datahub-web/@datahub/entity-deprecation/app/styles/entity-deprecation.scss b/datahub-web/@datahub/entity-deprecation/app/styles/entity-deprecation.scss deleted file mode 100644 index a5e1820725e29..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/app/styles/entity-deprecation.scss +++ /dev/null @@ -1,109 +0,0 @@ -/// TODO: [META-7082] This styling is common to many addons and should be included in either or artdeco macro -/// components or some kind of DataHub shared styles. -/// Gets the item spacing length value from the map $item-spacings -/// @param {Number} @spacing-unit - the type of spacing to retrieve -@function item-spacing($spacing-unit) { - /// item-spacing maps, defines the spaces between elements in application layout - /// @type Map - /// @prop {String} key - number representing a spacing type - /// @prop {Length} value - pixel length - $item-spacings: ( - 0: 0px, - 1: 4px, - 2: 8px, - 3: 12px, - 4: 16px, - 5: 24px, - 6: 32px, - 7: 48px, - 8: 64px, - 9: 96px - ); - - // If item-spacing is passed a list, for example: - // padding: item-spacing(1 2 3 4) - // map item-spacing onto each element in the list and return it. - @if type-of($spacing-unit) == list { - $result: (); - @each $i in $spacing-unit { - $result: append($result, item-spacing($i)); - } - @return $result; - } - - // negative types - @if ($spacing-unit < 0) { - @return -1 * map-get($item-spacings, -1 * $spacing-unit); - } - - @return map-get($item-spacings, $spacing-unit); -} - -/// TODO: [META-7082] This styling is common to many addons and should be included in either or artdeco macro -/// components or some kind of DataHub shared styles. -@mixin entity-deprecation-nacho-container { - border: 1px solid get-color(black, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); - padding: item-spacing(4); - background-color: get-color(white); - background-clip: padding-box; - border-radius: 2px; - transition: box-shadow 83ms; -} - -.entity-deprecation { - // TODO: [META-7082] Change based on note above - @include entity-deprecation-nacho-container; - margin: item-spacing(3 0); - - &__actions { - margin-top: item-spacing(2); - } - - &__toggle-header { - display: flex; - align-items: center; - justify-content: left; - margin-bottom: item-spacing(3); - - &__label { - margin: item-spacing(0 2 0 0); - } - } - - &__note-editor .ember-medium-editor__container { - min-height: item-spacing(6) * 4; - outline: none; - padding: item-spacing(1); - background-color: set-color(white, base); - box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08); - transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1); - } - - &__header { - margin-top: item-spacing(6); - font-size: 18px; - font-weight: 500; - } - - &__decommission-calendar { - @include ember-power-calendar($cell-size: item-spacing(7), $primary-color: get-color(blue7)); - } - - &__cal-input-trigger { - padding: item-spacing(1); - } - - &__cal-dropdown { - box-shadow: rgba(0, 0, 0, 0.172549) 0 6px 12px 0; - border: 1px solid get-color(black, 0.3); - } -} - -.entity-decommission-date { - margin-top: item-spacing(4); - - &--required { - color: get-color(red5); - } -} diff --git a/datahub-web/@datahub/entity-deprecation/app/templates/partials/entity-deprecation/default-acknowledgement.hbs b/datahub-web/@datahub/entity-deprecation/app/templates/partials/entity-deprecation/default-acknowledgement.hbs deleted file mode 100644 index 70c276a98d3cf..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/app/templates/partials/entity-deprecation/default-acknowledgement.hbs +++ /dev/null @@ -1,6 +0,0 @@ -

- For more information on how to decommission your {{entityName}}, please follow this link: - - {{capitalize entityName}} Decommission - -

diff --git a/datahub-web/@datahub/entity-deprecation/config/ember-try.js b/datahub-web/@datahub/entity-deprecation/config/ember-try.js deleted file mode 100644 index 11a5951379835..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/config/ember-try.js +++ /dev/null @@ -1,74 +0,0 @@ -module.exports = { - scenarios: [ - { - name: 'ember-lts-2.12', - npm: { - devDependencies: { - 'ember-source': '~2.12.0' - } - } - }, - { - name: 'ember-lts-2.16', - npm: { - devDependencies: { - 'ember-source': '~2.16.0' - } - } - }, - { - name: 'ember-release', - bower: { - dependencies: { - ember: 'components/ember#release' - }, - resolutions: { - ember: 'release' - } - }, - npm: { - devDependencies: { - 'ember-source': null - } - } - }, - { - name: 'ember-beta', - bower: { - dependencies: { - ember: 'components/ember#beta' - }, - resolutions: { - ember: 'beta' - } - }, - npm: { - devDependencies: { - 'ember-source': null - } - } - }, - { - name: 'ember-canary', - bower: { - dependencies: { - ember: 'components/ember#canary' - }, - resolutions: { - ember: 'canary' - } - }, - npm: { - devDependencies: { - 'ember-source': null - } - } - }, - { - name: 'ember-default', - npm: { - devDependencies: {} - } - } - ] -}; diff --git a/datahub-web/@datahub/entity-deprecation/ember-cli-build.js b/datahub-web/@datahub/entity-deprecation/ember-cli-build.js deleted file mode 100644 index dc5a39e1b796e..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/ember-cli-build.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); - -module.exports = function(defaults) { - let app = new EmberAddon(defaults, { - // Add options here - }); - - /* - This build file specifies the options for the dummy test app of this - addon, located in `/tests/dummy` - This build file does *not* influence how the addon or the app using it - behave. You most likely want to be modifying `./index.js` or app's build file - */ - - return app.toTree(); -}; diff --git a/datahub-web/@datahub/entity-deprecation/index.js b/datahub-web/@datahub/entity-deprecation/index.js deleted file mode 100644 index 0f8effa72d35d..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/index.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -module.exports = { - name: '@datahub/entity-deprecation', - isDevelopingAddon: () => false -}; diff --git a/datahub-web/@datahub/entity-deprecation/package.json b/datahub-web/@datahub/entity-deprecation/package.json deleted file mode 100644 index 0f1d5c75ee68d..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "@datahub/entity-deprecation", - "version": "0.0.2", - "description": "The default blueprint for ember-cli addons.", - "keywords": [ - "ember-addon" - ], - "repository": "", - "license": "MIT", - "author": "", - "directories": { - "doc": "doc", - "test": "tests" - }, - "scripts": { - "build": "ember build", - "start": "ember serve", - "test": "./node_modules/.bin/ember test --launch Chrome", - "prepublishOnly": "ember ts:precompile", - "postpublish": "ember ts:clean" - }, - "dependencies": { - "@nacho-ui/core": "0.0.34", - "ember-basic-dropdown": "^1.1.3", - "ember-cli-babel": "^7.8.0", - "ember-cli-htmlbars": "^2.0.1", - "ember-cli-moment-shim": "^3.7.1", - "ember-cli-string-helpers": "^2.0.0", - "ember-cli-typescript": "^2.0.2", - "ember-medium-editor-fix": "^0.0.3", - "ember-moment": "^8.0.0", - "ember-power-calendar": "^0.14.0", - "ember-power-calendar-moment": "^0.1.7", - "ember-truth-helpers": "^2.1.0", - "medium-editor": "^5.23.3" - }, - "devDependencies": { - "@babel/core": "^7.4.0", - "@ember/optional-features": "^0.7.0", - "@types/ember": "^3.1.0", - "@types/ember-qunit": "^3.4.6", - "@types/ember-test-helpers": "^1.0.5", - "@types/ember-testing-helpers": "^0.0.3", - "@types/ember__test-helpers": "^0.7.8", - "@types/qunit": "^2.5.4", - "@types/rsvp": "^4.0.2", - "broccoli-asset-rev": "^3.0.0", - "ember-ajax": "^4.0.2", - "ember-cli": "~3.11.0", - "ember-cli-dependency-checker": "^3.1.0", - "ember-cli-htmlbars-inline-precompile": "^2.1.0", - "ember-cli-inject-live-reload": "^2.0.1", - "ember-cli-shims": "^1.2.0", - "ember-cli-sri": "^2.1.0", - "ember-cli-typescript-blueprints": "^2.0.0", - "ember-cli-uglify": "^2.1.0", - "ember-decorators": "^6.0.0", - "ember-disable-prototype-extensions": "^1.1.2", - "ember-export-application-global": "^2.0.0", - "ember-load-initializers": "^2.0.0", - "ember-qunit": "^4.4.0", - "ember-resolver": "^5.0.1", - "ember-source": "~3.11.1", - "loader.js": "^4.2.3", - "qunit-dom": "^0.8.4", - "typescript": "^3.5.3" - }, - "engines": { - "node": "^4.5 || 6.* || >= 7.*" - }, - "ember-addon": { - "configPath": "tests/dummy/config" - } -} diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/app/config/environment.d.ts b/datahub-web/@datahub/entity-deprecation/tests/dummy/app/config/environment.d.ts deleted file mode 100644 index 60c3b7ef4ba05..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/tests/dummy/app/config/environment.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Type declarations for - * import config from './config/environment' - * - * For now these need to be managed by the developer - * since different ember addons can materialize new entries. - */ -declare const config: { - environment: any; - modulePrefix: string; - podModulePrefix: string; - locationType: string; - rootURL: string; -}; - -export default config; diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/config/environment.js b/datahub-web/@datahub/entity-deprecation/tests/dummy/config/environment.js deleted file mode 100644 index 182d3fcbfa04e..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/tests/dummy/config/environment.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -module.exports = function(environment) { - let ENV = { - modulePrefix: 'dummy', - environment, - rootURL: '/', - locationType: 'auto', - EmberENV: { - FEATURES: { - // Here you can enable experimental features on an ember canary build - // e.g. 'with-controller': true - }, - EXTEND_PROTOTYPES: { - // Prevent Ember Data from overriding Date.parse. - Date: false - } - }, - - APP: { - // Here you can pass flags/options to your application instance - // when it is created - } - }; - - if (environment === 'development') { - // ENV.APP.LOG_RESOLVER = true; - // ENV.APP.LOG_ACTIVE_GENERATION = true; - // ENV.APP.LOG_TRANSITIONS = true; - // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; - // ENV.APP.LOG_VIEW_LOOKUPS = true; - } - - if (environment === 'test') { - // Testem prefers this... - ENV.locationType = 'none'; - - // keep test console output quieter - ENV.APP.LOG_ACTIVE_GENERATION = false; - ENV.APP.LOG_VIEW_LOOKUPS = false; - - ENV.APP.rootElement = '#ember-testing'; - ENV.APP.autoboot = false; - } - - if (environment === 'production') { - // here you can enable a production-specific feature - } - - return ENV; -}; diff --git a/datahub-web/@datahub/entity-deprecation/tests/dummy/config/targets.js b/datahub-web/@datahub/entity-deprecation/tests/dummy/config/targets.js deleted file mode 100644 index 64e08b3cc8b1a..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/tests/dummy/config/targets.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - browsers: ['ie 9', 'last 1 Chrome versions', 'last 1 Firefox versions', 'last 1 Safari versions'] -}; diff --git a/datahub-web/@datahub/entity-deprecation/tests/helpers/destroy-app.js b/datahub-web/@datahub/entity-deprecation/tests/helpers/destroy-app.js deleted file mode 100644 index e7f983bd14b7b..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/tests/helpers/destroy-app.js +++ /dev/null @@ -1,5 +0,0 @@ -import { run } from '@ember/runloop'; - -export default function destroyApp(application) { - run(application, 'destroy'); -} diff --git a/datahub-web/@datahub/entity-deprecation/tests/helpers/module-for-acceptance.js b/datahub-web/@datahub/entity-deprecation/tests/helpers/module-for-acceptance.js deleted file mode 100644 index 90a93bac2b479..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/tests/helpers/module-for-acceptance.js +++ /dev/null @@ -1,21 +0,0 @@ -import { module } from 'qunit'; -import { resolve } from 'rsvp'; -import startApp from '../helpers/start-app'; -import destroyApp from '../helpers/destroy-app'; - -export default function(name, options = {}) { - module(name, { - beforeEach() { - this.application = startApp(); - - if (options.beforeEach) { - return options.beforeEach.apply(this, arguments); - } - }, - - afterEach() { - let afterEach = options.afterEach && options.afterEach.apply(this, arguments); - return resolve(afterEach).then(() => destroyApp(this.application)); - } - }); -} diff --git a/datahub-web/@datahub/entity-deprecation/tests/helpers/start-app.js b/datahub-web/@datahub/entity-deprecation/tests/helpers/start-app.js deleted file mode 100644 index 99d35dcf4ebe6..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/tests/helpers/start-app.js +++ /dev/null @@ -1,17 +0,0 @@ -import Application from '../../app'; -import config from '../../config/environment'; -import { merge } from '@ember/polyfills'; -import { run } from '@ember/runloop'; - -export default function startApp(attrs) { - let attributes = merge({}, config.APP); - attributes.autoboot = true; - attributes = merge(attributes, attrs); // use defaults, but you can override; - - return run(() => { - let application = Application.create(attributes); - application.setupForTesting(); - application.injectTestHelpers(); - return application; - }); -} diff --git a/datahub-web/@datahub/entity-deprecation/tests/integration/components/entity-deprecation-test.ts b/datahub-web/@datahub/entity-deprecation/tests/integration/components/entity-deprecation-test.ts deleted file mode 100644 index 95d80a1c51383..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/tests/integration/components/entity-deprecation-test.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { module, test } from 'qunit'; -import { setupRenderingTest } from 'ember-qunit'; -import { render, find, findAll } from '@ember/test-helpers'; -import hbs from 'htmlbars-inline-precompile'; - -const findInput = (selector: string): HTMLInputElement => { - const input: HTMLInputElement = find(selector) as HTMLInputElement; - - if (!input) { - throw new Error(`${selector} element not found`); - } - return input; -}; - -const defaultProperties = { - updateDeprecation(): void {}, - entityName: 'dataset', - deprecationNoteAlias: 'type something', - deprecated: false -}; - -module('Integration | Component | entity-deprecation', function(hooks): void { - setupRenderingTest(hooks); - - test('it renders', async function(assert): Promise { - assert.expect(5); - this.setProperties(defaultProperties); - - await render(hbs`{{entity-deprecation - updateDeprecation=updateDeprecation - entityName=entityName}}`); - - assert.ok(this, 'Tab renders in most default state without errors'); - assert.ok(find('.entity-deprecation__toggle-header__label'), 'it shows the entity deprecation label element'); - assert.equal(findAll('#dataset-is-deprecated').length, 1, 'has one input checkbox with known selector'); - assert.equal( - findInput('#dataset-is-deprecated').getAttribute('type'), - 'checkbox', - 'has an input checkbox to toggle deprecation' - ); - assert.equal(findAll('.entity-deprecation__actions').length, 1, 'has an actions container'); - }); - - test('setting the deprecated property should toggle the checkbox', async function(assert): Promise { - assert.expect(2); - - this.setProperties({ - ...defaultProperties, - deprecated: true - }); - - await render(hbs`{{entity-deprecation - updateDeprecation=updateDeprecation - entityName=entityName - isDeprecated=deprecated}}`); - - assert.ok( - (find('#dataset-is-deprecated') as HTMLInputElement).checked, - 'checkbox is checked when property is set true' - ); - this.set('deprecated', false); - assert.notOk( - (find('#dataset-is-deprecated') as HTMLInputElement).checked, - 'checkbox is unchecked when property is set false' - ); - }); - - test('decommissionTime', async function(assert): Promise { - let isDisabled; - - this.setProperties({ - ...defaultProperties, - decommissionTime: void 0, - deprecated: true - }); - - await render(hbs`{{entity-deprecation - entityName=entityName - isDeprecated=deprecated - decommissionTime=decommissionTime - updateDeprecation=(action updateDeprecation)}}`); - - isDisabled = findInput('.entity-deprecation__actions [type=submit]').disabled; - assert.ok(isDisabled, 'submit button is disabled'); - }); -}); diff --git a/datahub-web/@datahub/entity-deprecation/tests/unit/utils/functions/noop-test.ts b/datahub-web/@datahub/entity-deprecation/tests/unit/utils/functions/noop-test.ts deleted file mode 100644 index 5e9be341b26d7..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/tests/unit/utils/functions/noop-test.ts +++ /dev/null @@ -1,9 +0,0 @@ -import noop from '@datahub/entity-deprecation/utils/functions/noop'; -import { module, test } from 'qunit'; - -module('Unit | Utility | functions/noop', function(/*hooks*/) { - test('it exists', function(assert) { - assert.ok(typeof noop === 'function'); - assert.ok(noop() === undefined, 'Noop function does not return anything'); - }); -}); diff --git a/datahub-web/@datahub/entity-deprecation/tsconfig.json b/datahub-web/@datahub/entity-deprecation/tsconfig.json deleted file mode 100644 index 374afaea86f4d..0000000000000 --- a/datahub-web/@datahub/entity-deprecation/tsconfig.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "extends": "../../configs/tsconfig-base", - "compilerOptions": { - "baseUrl": ".", - "paths": { - "dummy/tests/*": [ - "tests/*" - ], - "dummy/*": [ - "tests/dummy/app/*", - "app/*" - ], - "@datahub/entity-deprecation": [ - "addon" - ], - "@datahub/entity-deprecation/*": [ - "addon/*" - ], - "@datahub/entity-deprecation/test-support": [ - "addon-test-support" - ], - "@datahub/entity-deprecation/test-support/*": [ - "addon-test-support/*" - ], - "*": [ - "types/*" - ] - } - }, - "include": [ - "app/**/*", - "addon/**/*", - "tests/**/*", - "types/**/*", - "test-support/**/*", - "addon-test-support/**/*" - ] -} diff --git a/datahub-web/@datahub/entity-header/CHANGELOG.md b/datahub-web/@datahub/entity-header/CHANGELOG.md deleted file mode 100644 index a3c67a0c5d098..0000000000000 --- a/datahub-web/@datahub/entity-header/CHANGELOG.md +++ /dev/null @@ -1,17 +0,0 @@ -# Changelog - -All changes to the this project will be documented here. - -### Types of Changes -- `Added` for new features. -- `Changed` for changes in existing functionality. -- `Deprecated` for soon-to-be removed features. -- `Removed` for now removed features. -- `Fixed` for any bug fixes. -- `Security` in case of vulnerabilities. - -The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project *does not adhere* to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [2018-11-12] -### Added -- Creates the @datahub/entity-header addon for entity profile pages diff --git a/datahub-web/@datahub/entity-header/LICENSE.md b/datahub-web/@datahub/entity-header/LICENSE.md deleted file mode 100644 index 198f6dacf45e7..0000000000000 --- a/datahub-web/@datahub/entity-header/LICENSE.md +++ /dev/null @@ -1,9 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2018 - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/datahub-web/@datahub/entity-header/README.md b/datahub-web/@datahub/entity-header/README.md deleted file mode 100644 index 9eece20f9fd96..0000000000000 --- a/datahub-web/@datahub/entity-header/README.md +++ /dev/null @@ -1,51 +0,0 @@ -@datahub/entity-header -============================================================================== - -[Short description of the addon.] - -Installation ------------------------------------------------------------------------------- - -``` -ember install @datahub/entity-header -``` - - -Usage ------------------------------------------------------------------------------- - -[Longer description of how to use the addon in apps.] - - -Contributing ------------------------------------------------------------------------------- - -### Installation - -* `git clone ` -* `cd @datahub/entity-header` -* `yarn install` - -### Linting - -* `yarn lint:hbs` -* `yarn lint:js` -* `yarn lint:js --fix` - -### Running tests - -* `ember test` – Runs the test suite on the current Ember version -* `ember test --server` – Runs the test suite in "watch mode" -* `ember try:each` – Runs the test suite against multiple Ember versions - -### Running the dummy application - -* `ember serve` -* Visit the dummy application at [http://localhost:4200](http://localhost:4200). - -For more information on using ember-cli, visit [https://ember-cli.com/](https://ember-cli.com/). - -License ------------------------------------------------------------------------------- - -This project is licensed under the [MIT License](LICENSE.md). diff --git a/datahub-web/@datahub/entity-header/addon/components/entity-header/attribute-callout.ts b/datahub-web/@datahub/entity-header/addon/components/entity-header/attribute-callout.ts deleted file mode 100644 index 13dc4f20e4849..0000000000000 --- a/datahub-web/@datahub/entity-header/addon/components/entity-header/attribute-callout.ts +++ /dev/null @@ -1,7 +0,0 @@ -import Component from '@ember/component'; -// @ts-ignore: Ignore import of compiled template -import layout from '../../templates/components/entity-header/attribute-callout'; - -export default class EntityHeaderAttributeCallout extends Component { - layout = layout; -} diff --git a/datahub-web/@datahub/entity-header/addon/components/entity-header/entity-type.ts b/datahub-web/@datahub/entity-header/addon/components/entity-header/entity-type.ts deleted file mode 100644 index d5c3a1b4c6656..0000000000000 --- a/datahub-web/@datahub/entity-header/addon/components/entity-header/entity-type.ts +++ /dev/null @@ -1,22 +0,0 @@ -import Component from '@ember/component'; -// @ts-ignore: Ignore import of compiled template -import template from '../../templates/components/entity-header/entity-title'; -import { tagName, classNames, layout } from '@ember-decorators/component'; - -/** - * Defines the component which displays the type of entity this header is associated with - * @export - * @class EntityHeaderEntityType - * @extends {Component} - */ -@tagName('h4') -@layout(template) -@classNames('wherehows-entity-header-type') -export default class EntityHeaderEntityType extends Component { - /** - * The type of the entity - * @type {string} - * @memberof EntityHeaderEntityType - */ - type: string = 'UNKNOWN'; -} diff --git a/datahub-web/@datahub/entity-header/addon/components/entity-header/naked-div.ts b/datahub-web/@datahub/entity-header/addon/components/entity-header/naked-div.ts deleted file mode 100644 index 89e114f85fa44..0000000000000 --- a/datahub-web/@datahub/entity-header/addon/components/entity-header/naked-div.ts +++ /dev/null @@ -1,7 +0,0 @@ -import Component from '@ember/component'; -// @ts-ignore: Ignore import of compiled template -import layout from '../../templates/components/entity-header/naked-div'; - -export default class EntityHeaderNakedDiv extends Component { - layout = layout; -} diff --git a/datahub-web/@datahub/entity-header/addon/components/wherehows-entity-header.ts b/datahub-web/@datahub/entity-header/addon/components/wherehows-entity-header.ts deleted file mode 100644 index 7c80406f8d3cd..0000000000000 --- a/datahub-web/@datahub/entity-header/addon/components/wherehows-entity-header.ts +++ /dev/null @@ -1,52 +0,0 @@ -import Component from '@ember/component'; -// @ts-ignore: Ignore import of compiled template -import layout from '../templates/components/wherehows-entity-header'; -import { tagName, classNames } from '@ember-decorators/component'; -import { set } from '@ember/object'; - -@tagName('section') -@classNames('wherehows-entity-header') -export default class WhereHowsEntityHeader extends Component { - layout = layout; - - /** - * References the component name to be used to render the title / name of the entity - * @type {string} - * @memberof WhereHowsEntityHeader - */ - entityTitleComponent!: string; - - /** - * References the component name used to render a key-value pair of entity attributes - * @type {string} - * @memberof WhereHowsEntityHeader - */ - entityPropertyComponent!: string; - - /** - * References the component name used to render an entity attribute / property that - * deserved prominent placement in the entity header component - * @type {string} - * @memberof WhereHowsEntityHeader - */ - entityAttributePillCalloutComponent!: string; - - /** - * References the component name used to render the entity type - * @type {string} - * @memberof WhereHowsEntityHeader - */ - entityTypeComponent!: string; - - constructor() { - super(...arguments); - - // Initialization defaults for expected component attributes - typeof this.entityTitleComponent === 'string' || set(this, 'entityTitleComponent', 'entity-header/entity-title'); - typeof this.entityPropertyComponent === 'string' || - set(this, 'entityPropertyComponent', 'entity-header/entity-property'); - typeof this.entityAttributePillCalloutComponent === 'string' || - set(this, 'entityAttributePillCalloutComponent', 'entity-header/attribute-callout'); - typeof this.entityTypeComponent === 'string' || set(this, 'entityTypeComponent', 'entity-header/entity-type'); - } -} diff --git a/datahub-web/@datahub/entity-header/addon/templates/components/entity-header/entity-property.hbs b/datahub-web/@datahub/entity-header/addon/templates/components/entity-header/entity-property.hbs deleted file mode 100644 index 57f5cfee4b85f..0000000000000 --- a/datahub-web/@datahub/entity-header/addon/templates/components/entity-header/entity-property.hbs +++ /dev/null @@ -1,47 +0,0 @@ -{{#if hasBlock}} - {{yield - (hash - propertyName=(component "entity-header/naked-div" class="wherehows-entity-header-property__name") - propertyValue=(component "entity-header/naked-div" class="wherehows-entity-header-property__value") - ) - }} -{{else}} -
- - {{titleize name}} - -
- -
- {{#if (eq config.displayType "link")}} - - {{#each computedLink as |link|}} - - - {{link.display}} - - - {{/each}} - - {{else}} - - {{#if (eq valueType "string")}} - {{displayValue}} - {{else if (eq valueType "array")}} - {{#each displayValue as |item|}} - {{item}} - {{/each}} - {{else if (eq valueType "boolean")}} - {{if displayValue "Yes" "No"}} - {{else}} - Unrecognized type {{valueType}}: {{displayValue}} - {{/if}} - - {{/if}} - -
-{{/if}} diff --git a/datahub-web/@datahub/entity-header/app/components/entity-header/attribute-callout.js b/datahub-web/@datahub/entity-header/app/components/entity-header/attribute-callout.js deleted file mode 100644 index 3fb8aef6b1813..0000000000000 --- a/datahub-web/@datahub/entity-header/app/components/entity-header/attribute-callout.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@datahub/entity-header/components/entity-header/attribute-callout'; diff --git a/datahub-web/@datahub/entity-header/app/components/entity-header/content-row.js b/datahub-web/@datahub/entity-header/app/components/entity-header/content-row.js deleted file mode 100644 index 4dfc98292c690..0000000000000 --- a/datahub-web/@datahub/entity-header/app/components/entity-header/content-row.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@datahub/entity-header/components/entity-header/content-row'; diff --git a/datahub-web/@datahub/entity-header/app/components/entity-header/entity-property.js b/datahub-web/@datahub/entity-header/app/components/entity-header/entity-property.js deleted file mode 100644 index 5a1f68a50c2c6..0000000000000 --- a/datahub-web/@datahub/entity-header/app/components/entity-header/entity-property.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@datahub/entity-header/components/entity-header/entity-property'; diff --git a/datahub-web/@datahub/entity-header/app/components/entity-header/entity-title.js b/datahub-web/@datahub/entity-header/app/components/entity-header/entity-title.js deleted file mode 100644 index 8ae51583038d2..0000000000000 --- a/datahub-web/@datahub/entity-header/app/components/entity-header/entity-title.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@datahub/entity-header/components/entity-header/entity-title'; diff --git a/datahub-web/@datahub/entity-header/app/components/entity-header/entity-type.js b/datahub-web/@datahub/entity-header/app/components/entity-header/entity-type.js deleted file mode 100644 index 5912e933c77f7..0000000000000 --- a/datahub-web/@datahub/entity-header/app/components/entity-header/entity-type.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@datahub/entity-header/components/entity-header/entity-type'; diff --git a/datahub-web/@datahub/entity-header/app/components/entity-header/naked-div.js b/datahub-web/@datahub/entity-header/app/components/entity-header/naked-div.js deleted file mode 100644 index d78fe94d28a3b..0000000000000 --- a/datahub-web/@datahub/entity-header/app/components/entity-header/naked-div.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@datahub/entity-header/components/entity-header/naked-div'; diff --git a/datahub-web/@datahub/entity-header/app/components/wherehows-entity-header.js b/datahub-web/@datahub/entity-header/app/components/wherehows-entity-header.js deleted file mode 100644 index 89cb8d6a81556..0000000000000 --- a/datahub-web/@datahub/entity-header/app/components/wherehows-entity-header.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@datahub/entity-header/components/wherehows-entity-header'; diff --git a/datahub-web/@datahub/entity-header/app/styles/entity-header-components/_entity-title.scss b/datahub-web/@datahub/entity-header/app/styles/entity-header-components/_entity-title.scss deleted file mode 100644 index eae70c7632df5..0000000000000 --- a/datahub-web/@datahub/entity-header/app/styles/entity-header-components/_entity-title.scss +++ /dev/null @@ -1,8 +0,0 @@ -.wherehows-entity-header-title { - display: inline-flex; - padding: 5px 0; - margin: 0; - font-size: 24px; - font-weight: 400; - margin-right: item-spacing(2); -} diff --git a/datahub-web/@datahub/entity-header/app/styles/entity-header-layout/_entity-header.scss b/datahub-web/@datahub/entity-header/app/styles/entity-header-layout/_entity-header.scss deleted file mode 100644 index e24d411c5fa6a..0000000000000 --- a/datahub-web/@datahub/entity-header/app/styles/entity-header-layout/_entity-header.scss +++ /dev/null @@ -1,19 +0,0 @@ -.wherehows-entity-header { - @include wherehows-container; - position: relative; - display: flex; - width: 100%; - padding: 0; - max-width: 100%; - - &__content { - display: flex; - flex-direction: column; - justify-content: space-between; - width: 100%; - - .entity-pill { - margin-right: item-spacing(2); - } - } -} diff --git a/datahub-web/@datahub/entity-header/app/styles/entity-header.scss b/datahub-web/@datahub/entity-header/app/styles/entity-header.scss deleted file mode 100644 index 91ed2bf985f83..0000000000000 --- a/datahub-web/@datahub/entity-header/app/styles/entity-header.scss +++ /dev/null @@ -1,3 +0,0 @@ -@import 'entity-header-mixins/all'; -@import 'entity-header-layout/all'; -@import 'entity-header-components/all'; diff --git a/datahub-web/@datahub/entity-header/ember-cli-build.js b/datahub-web/@datahub/entity-header/ember-cli-build.js deleted file mode 100644 index dc5a39e1b796e..0000000000000 --- a/datahub-web/@datahub/entity-header/ember-cli-build.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); - -module.exports = function(defaults) { - let app = new EmberAddon(defaults, { - // Add options here - }); - - /* - This build file specifies the options for the dummy test app of this - addon, located in `/tests/dummy` - This build file does *not* influence how the addon or the app using it - behave. You most likely want to be modifying `./index.js` or app's build file - */ - - return app.toTree(); -}; diff --git a/datahub-web/@datahub/entity-header/index.js b/datahub-web/@datahub/entity-header/index.js deleted file mode 100644 index fb3f2e2af6211..0000000000000 --- a/datahub-web/@datahub/entity-header/index.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -module.exports = { - name: require('./package').name, - isDevelopingAddon: () => false -}; diff --git a/datahub-web/@datahub/entity-header/package.json b/datahub-web/@datahub/entity-header/package.json deleted file mode 100644 index 6d03cbe5be7e3..0000000000000 --- a/datahub-web/@datahub/entity-header/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "@datahub/entity-header", - "version": "0.0.0", - "description": "The default blueprint for ember-cli addons.", - "keywords": [ - "ember-addon", - "wherehows", - "entity-header", - "data-entity" - ], - "repository": "", - "license": "MIT", - "author": "", - "directories": { - "doc": "doc", - "test": "tests" - }, - "scripts": { - "build": "ember build", - "start": "ember serve", - "test": "ember test", - "test:all": "ember try:each", - "prepublishOnly": "ember ts:precompile", - "postpublish": "ember ts:clean" - }, - "dependencies": { - "@nacho-ui/core": "0.0.34", - "ember-cli-babel": "^7.8.0", - "ember-cli-htmlbars": "^3.0.1", - "ember-cli-string-helpers": "^2.0.0", - "ember-cli-typescript": "^2.0.2", - "ember-truth-helpers": "^2.1.0" - }, - "devDependencies": { - "@babel/core": "^7.4.0", - "@ember/optional-features": "^0.7.0", - "@types/ember": "^3.1.0", - "@types/ember-qunit": "^3.4.6", - "@types/ember-test-helpers": "^1.0.5", - "@types/ember-testing-helpers": "^0.0.3", - "@types/ember__test-helpers": "^0.7.8", - "@types/qunit": "^2.5.4", - "@types/rsvp": "^4.0.2", - "broccoli-asset-rev": "^3.0.0", - "ember-ajax": "^4.0.2", - "ember-cli": "~3.11.0", - "ember-cli-dependency-checker": "^3.1.0", - "ember-cli-htmlbars-inline-precompile": "^2.1.0", - "ember-cli-inject-live-reload": "^2.0.1", - "ember-cli-sass": "^10.0.0", - "ember-cli-sri": "^2.1.1", - "ember-cli-typescript-blueprints": "^2.0.0", - "ember-cli-uglify": "^2.1.0", - "ember-decorators": "^6.0.0", - "ember-disable-prototype-extensions": "^1.1.3", - "ember-export-application-global": "^2.0.0", - "ember-load-initializers": "^2.0.0", - "ember-maybe-import-regenerator": "^0.1.6", - "ember-qunit": "^4.4.0", - "ember-resolver": "^5.0.1", - "ember-source": "~3.11.1", - "ember-source-channel-url": "^1.1.0", - "ember-try": "^1.0.0", - "loader.js": "^4.7.0", - "qunit-dom": "^0.8.4", - "sass": "^1.21.0", - "typescript": "^3.5.3" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - }, - "ember-addon": { - "configPath": "tests/dummy/config" - } -} diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/config/environment.d.ts b/datahub-web/@datahub/entity-header/tests/dummy/app/config/environment.d.ts deleted file mode 100644 index 60c3b7ef4ba05..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/dummy/app/config/environment.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Type declarations for - * import config from './config/environment' - * - * For now these need to be managed by the developer - * since different ember addons can materialize new entries. - */ -declare const config: { - environment: any; - modulePrefix: string; - podModulePrefix: string; - locationType: string; - rootURL: string; -}; - -export default config; diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/controllers/application.ts b/datahub-web/@datahub/entity-header/tests/dummy/app/controllers/application.ts deleted file mode 100644 index 30bd4bac790c8..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/dummy/app/controllers/application.ts +++ /dev/null @@ -1,16 +0,0 @@ -import Controller from '@ember/controller'; - -export default class Application extends Controller { - entity = { - urn: 'entityUrn', - formula: 'sum(job_apply_click)' - }; -} - -// DO NOT DELETE: this is how TypeScript knows how to look up your controllers. -declare module '@ember/controller' { - // eslint-disable-next-line @typescript-eslint/interface-name-prefix - interface Registry { - application: Application; - } -} diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/styles/app.scss b/datahub-web/@datahub/entity-header/tests/dummy/app/styles/app.scss deleted file mode 100644 index b4099e17b1f67..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/dummy/app/styles/app.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'entity-header'; diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/templates/application.hbs b/datahub-web/@datahub/entity-header/tests/dummy/app/templates/application.hbs deleted file mode 100644 index b80caeb240a23..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/dummy/app/templates/application.hbs +++ /dev/null @@ -1,12 +0,0 @@ -

WhereHows Entity Header Addon

- -{{#wherehows-entity-header entity=entity as |entityHeader|}} - {{#entityHeader.row}} - {{entityHeader.entityTitle}} - {{/entityHeader.row}} - - {{#entityHeader.row}} - {{entityHeader.entityProperty name="formula" value=entity.formula}} - {{/entityHeader.row}} -{{/wherehows-entity-header}} -{{outlet}} \ No newline at end of file diff --git a/datahub-web/@datahub/entity-header/tests/dummy/config/environment.js b/datahub-web/@datahub/entity-header/tests/dummy/config/environment.js deleted file mode 100644 index 182d3fcbfa04e..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/dummy/config/environment.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -module.exports = function(environment) { - let ENV = { - modulePrefix: 'dummy', - environment, - rootURL: '/', - locationType: 'auto', - EmberENV: { - FEATURES: { - // Here you can enable experimental features on an ember canary build - // e.g. 'with-controller': true - }, - EXTEND_PROTOTYPES: { - // Prevent Ember Data from overriding Date.parse. - Date: false - } - }, - - APP: { - // Here you can pass flags/options to your application instance - // when it is created - } - }; - - if (environment === 'development') { - // ENV.APP.LOG_RESOLVER = true; - // ENV.APP.LOG_ACTIVE_GENERATION = true; - // ENV.APP.LOG_TRANSITIONS = true; - // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; - // ENV.APP.LOG_VIEW_LOOKUPS = true; - } - - if (environment === 'test') { - // Testem prefers this... - ENV.locationType = 'none'; - - // keep test console output quieter - ENV.APP.LOG_ACTIVE_GENERATION = false; - ENV.APP.LOG_VIEW_LOOKUPS = false; - - ENV.APP.rootElement = '#ember-testing'; - ENV.APP.autoboot = false; - } - - if (environment === 'production') { - // here you can enable a production-specific feature - } - - return ENV; -}; diff --git a/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/attribute-callout-test.ts b/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/attribute-callout-test.ts deleted file mode 100644 index f66d29c400111..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/attribute-callout-test.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { module, test } from 'qunit'; -import { setupRenderingTest } from 'ember-qunit'; -import { render } from '@ember/test-helpers'; -import hbs from 'htmlbars-inline-precompile'; - -module('Integration | Component | entity-header/attribute-callout', function(hooks) { - setupRenderingTest(hooks); - - test('it renders', async function(assert) { - await render(hbs`{{entity-header/attribute-callout}}`); - - assert.equal(this.element.textContent!.trim(), ''); - - await render(hbs` - {{#entity-header/attribute-callout}} - text - {{/entity-header/attribute-callout}} - `); - - assert.equal(this.element.textContent!.trim(), 'text'); - }); -}); diff --git a/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/content-row-test.ts b/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/content-row-test.ts deleted file mode 100644 index 31d55eea211d1..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/content-row-test.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { module, test } from 'qunit'; -import { setupRenderingTest } from 'ember-qunit'; -import { render, find } from '@ember/test-helpers'; -import hbs from 'htmlbars-inline-precompile'; - -module('Integration | Component | entity-header/content-row', function(hooks) { - setupRenderingTest(hooks); - - test('it renders', async function(assert) { - await render(hbs`{{entity-header/content-row}}`); - - assert.ok(find('.wherehows-entity-header-content-row'), 'it renders the element with the expected class name'); - }); -}); diff --git a/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/entity-property-test.ts b/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/entity-property-test.ts deleted file mode 100644 index 73a994ca8503a..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/entity-property-test.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { module, test } from 'qunit'; -import { setupRenderingTest } from 'ember-qunit'; -import { render, find } from '@ember/test-helpers'; -import hbs from 'htmlbars-inline-precompile'; - -module('Integration | Component | entity-header/entity-property', function(hooks) { - setupRenderingTest(hooks); - - test('it renders', async function(assert) { - await render(hbs`{{entity-header/entity-property}}`); - - assert.ok(find('.wherehows-entity-header-property'), 'it renders the element with expected class name'); - - await render(hbs` - {{#entity-header/entity-property as |ee|}} - {{#ee.propertyName}} - name - {{/ee.propertyName}} - {{#ee.propertyValue}} - value - {{/ee.propertyValue}} - {{/entity-header/entity-property}} - `); - - assert.ok(find('.wherehows-entity-header-property__name'), 'it yields a propertyName component'); - assert.ok(find('.wherehows-entity-header-property__value'), 'it yields a propertyValue component'); - assert.ok(this.element.textContent!.trim().includes('name'), 'expected text "name" is rendered'); - assert.ok(this.element.textContent!.trim().includes('value'), 'expected text "value" is rendered'); - }); -}); diff --git a/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/entity-title-test.ts b/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/entity-title-test.ts deleted file mode 100644 index 56b2c7f741ca0..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/entity-title-test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { module, test } from 'qunit'; -import { setupRenderingTest } from 'ember-qunit'; -import { render } from '@ember/test-helpers'; -import hbs from 'htmlbars-inline-precompile'; - -module('Integration | Component | entity-header/entity-title', function(hooks) { - setupRenderingTest(hooks); - - test('it renders', async function(assert) { - const title = 'title'; - this.set('title', title); - - await render(hbs`{{entity-header/entity-title}}`); - - assert.equal(this.element.textContent!.trim(), 'UNKNOWN'); - - await render(hbs`{{entity-header/entity-title title=title}}`); - - assert.equal(this.element.textContent!.trim(), title); - - await render(hbs` - {{#entity-header/entity-title}} - title - {{/entity-header/entity-title}} - `); - - assert.equal(this.element.textContent!.trim(), 'title'); - }); -}); diff --git a/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/naked-div-test.ts b/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/naked-div-test.ts deleted file mode 100644 index d896632e235ed..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/integration/components/entity-header/naked-div-test.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { module, test } from 'qunit'; -import { setupRenderingTest } from 'ember-qunit'; -import { render } from '@ember/test-helpers'; -import hbs from 'htmlbars-inline-precompile'; - -module('Integration | Component | entity-header/naked-div', function(hooks) { - setupRenderingTest(hooks); - - test('it renders', async function(assert) { - await render(hbs`{{entity-header/naked-div}}`); - - assert.equal(this.element.textContent!.trim(), ''); - - await render(hbs` - {{#entity-header/naked-div}} - div content - {{/entity-header/naked-div}} - `); - - assert.equal(this.element.textContent!.trim(), 'div content'); - }); -}); diff --git a/datahub-web/@datahub/entity-header/tests/integration/components/wherehows-entity-header-test.ts b/datahub-web/@datahub/entity-header/tests/integration/components/wherehows-entity-header-test.ts deleted file mode 100644 index d761528a8953b..0000000000000 --- a/datahub-web/@datahub/entity-header/tests/integration/components/wherehows-entity-header-test.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { module, test } from 'qunit'; -import { setupRenderingTest } from 'ember-qunit'; -import { render, find } from '@ember/test-helpers'; -import hbs from 'htmlbars-inline-precompile'; - -module('Integration | Component | wherehows-entity-header', function(hooks) { - setupRenderingTest(hooks); - - test('entity header rendering', async function(assert) { - await render(hbs`{{wherehows-entity-header}}`); - - assert.ok(find('.wherehows-entity-header__content'), 'it renders a contained element with the expected class'); - - await render(hbs` - {{#wherehows-entity-header as |eh|}} - {{eh.row}} - {{eh.entityProperty}} - {{/wherehows-entity-header}} - `); - - assert.ok(find('.wherehows-entity-header-content-row'), 'it yields the expected row component'); - assert.ok(find('.wherehows-entity-header-property'), 'it yields the expected property component'); - }); - - test('entity header properties', async function(assert) { - const entity = { - urn: 'urn:li:dataset:(urn:li:dataPlatform:ump,api_platform.api_usage,PROD)' - }; - - this.set('entity', entity); - - await render(hbs` - {{#wherehows-entity-header entity=entity as |eh|}} - {{eh.entityTitle title=entity.urn}} - {{/wherehows-entity-header}} - `); - - assert.equal(this.element.textContent!.trim(), entity.urn); - }); -}); diff --git a/datahub-web/@datahub/entity-header/tsconfig.json b/datahub-web/@datahub/entity-header/tsconfig.json deleted file mode 100644 index a6d08c48bf52a..0000000000000 --- a/datahub-web/@datahub/entity-header/tsconfig.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "extends": "../../configs/tsconfig-base", - "compilerOptions": { - "baseUrl": ".", - "paths": { - "dummy/tests/*": [ - "tests/*" - ], - "dummy/*": [ - "tests/dummy/app/*", - "app/*" - ], - "@datahub/entity-header": [ - "addon" - ], - "@datahub/entity-header/*": [ - "addon/*" - ], - "@datahub/entity-header/test-support": [ - "addon-test-support" - ], - "@datahub/entity-header/test-support/*": [ - "addon-test-support/*" - ], - "*": [ - "types/*" - ] - } - }, - "include": [ - "app/**/*", - "addon/**/*", - "tests/**/*", - "types/**/*", - "test-support/**/*", - "addon-test-support/**/*" - ] -} diff --git a/datahub-web/@datahub/entity-header/types/components/entity-header/attribute-callout.d.ts b/datahub-web/@datahub/entity-header/types/components/entity-header/attribute-callout.d.ts deleted file mode 100644 index d326bed2bfa06..0000000000000 --- a/datahub-web/@datahub/entity-header/types/components/entity-header/attribute-callout.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import Component from '@ember/component'; -export default class EntityHeaderAttributeCallout extends Component { - layout: any; -} diff --git a/datahub-web/@datahub/entity-header/types/components/entity-header/content-row.d.ts b/datahub-web/@datahub/entity-header/types/components/entity-header/content-row.d.ts deleted file mode 100644 index a2855a2da52d2..0000000000000 --- a/datahub-web/@datahub/entity-header/types/components/entity-header/content-row.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import Component from '@ember/component'; -export default class EntityHeaderContentRow extends Component { - layout: any; -} diff --git a/datahub-web/@datahub/entity-header/types/components/entity-header/entity-property.d.ts b/datahub-web/@datahub/entity-header/types/components/entity-header/entity-property.d.ts deleted file mode 100644 index f006f58f7f2d2..0000000000000 --- a/datahub-web/@datahub/entity-header/types/components/entity-header/entity-property.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import Component from '@ember/component'; - -/** - * Optional configuration for an entity header property. This will allow us to pass in - * extra functionality to compute certain values for scenarios where what we want to - * display is not a simple string - */ -export interface IEntityHeaderPropertyConfig { - displayType: 'value' | 'link'; - computeLink?: (value: T) => { ref: string; display: string }; -} - -export default class EntityHeaderEntityProperty extends Component { - layout: any; - /** - * The name of the entity property / attribute - * @type {string} - * @memberof EntityHeaderEntityProperty - */ - name: string; - /** - * The value of the previous entity property - * @type {string} - * @memberof EntityHeaderEntityProperty - */ - value: string; - /** - * Creates an instance of EntityHeaderEntityProperty. - * @memberof EntityHeaderEntityProperty - */ - constructor(); -} diff --git a/datahub-web/@datahub/entity-header/types/components/entity-header/entity-title.d.ts b/datahub-web/@datahub/entity-header/types/components/entity-header/entity-title.d.ts deleted file mode 100644 index 14ba72ddc975c..0000000000000 --- a/datahub-web/@datahub/entity-header/types/components/entity-header/entity-title.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import Component from '@ember/component'; -export default class EntityHeaderEntityTitle extends Component { - layout: any; - /** - * Typically the title or name of the entity - * @type {string} - * @memberof EntityHeaderEntityTitle - */ - title: string; - constructor(); -} diff --git a/datahub-web/@datahub/entity-header/types/components/entity-header/naked-div.d.ts b/datahub-web/@datahub/entity-header/types/components/entity-header/naked-div.d.ts deleted file mode 100644 index 6945f00330850..0000000000000 --- a/datahub-web/@datahub/entity-header/types/components/entity-header/naked-div.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import Component from '@ember/component'; -export default class EntityHeaderNakedDiv extends Component { - layout: any; -} diff --git a/datahub-web/@datahub/entity-header/types/components/wherehows-entity-header.d.ts b/datahub-web/@datahub/entity-header/types/components/wherehows-entity-header.d.ts deleted file mode 100644 index dab70e8c13531..0000000000000 --- a/datahub-web/@datahub/entity-header/types/components/wherehows-entity-header.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import Component from '@ember/component'; -export default class WhereHowsEntityHeader extends Component { - layout: any; - /** - * @type {string | undefined} - * @memberof WhereHowsEntityHeader - */ - entityName: string | undefined; - /** - * References the component name to be used to render the title / name of the entity - * @type {string} - * @memberof WhereHowsEntityHeader - */ - entityTitleComponent: string; - /** - * References the component name used to render a key-value pair of entity attributes - * @type {string} - * @memberof WhereHowsEntityHeader - */ - entityPropertyComponent: string; - /** - * References the component name used to render an entity attribute / property that - * deserved prominent placement in the entity header component - * @type {string} - * @memberof WhereHowsEntityHeader - */ - entityAttributePillCalloutComponent: string; - constructor(); -} diff --git a/datahub-web/@datahub/eslint-plugin/.eslintrc.js b/datahub-web/@datahub/eslint-plugin/.eslintrc.js new file mode 100644 index 0000000000000..81dd826d64d71 --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/.eslintrc.js @@ -0,0 +1,5 @@ +module.exports = { + rules: { + '@typescript-eslint/no-var-requires': 'off' + } +}; diff --git a/datahub-web/@datahub/eslint-plugin/.gitignore b/datahub-web/@datahub/eslint-plugin/.gitignore new file mode 100644 index 0000000000000..b512c09d47662 --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/datahub-web/@datahub/eslint-plugin/README.md b/datahub-web/@datahub/eslint-plugin/README.md new file mode 100644 index 0000000000000..59e431a7a5014 --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/README.md @@ -0,0 +1,51 @@ +# @datahub/eslint-plugin + +Custom ES-Lint rules for datahub. + +## Installation + +You should not worry about this, since the scope of this addon is aimed only for @datahub and should be already installed. But just in case you wonder: + +You'll first need to install [ESLint](http://eslint.org): + +```sh +npm i eslint --save-dev +``` + +Next, install `@datahub/eslint-plugin`: + +```sh +npm install @datahub/eslint-plugin --save-dev +``` + +**Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `@datahub/eslint-plugin` globally. + +## Usage + +Add `@datahub` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin` part: + +```json +{ + "plugins": [ + "@datahub" + ] +} +``` + +Then configure the rules you want to use under the rules section. + +```json +{ + "rules": { + "@datahub/no-addon-import": "error" + } +} +``` + +## Supported Rules + +* Fill in provided rules here + +["@datahub/no-addon-import"](docs/rules/no-addon-import.md) + +["@datahub/no-linkedin-import"](docs/rules/no-linkedin-import.md) diff --git a/datahub-web/@datahub/eslint-plugin/docs/rules/no-addon-import.md b/datahub-web/@datahub/eslint-plugin/docs/rules/no-addon-import.md new file mode 100644 index 0000000000000..0f7f23b924311 --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/docs/rules/no-addon-import.md @@ -0,0 +1,26 @@ +# Imports should not containt /addon/ (no-addon-import) + +VScode usually autocompletes the import with `/addon/` which is invalid in ember +and will yield some errors. There are some cases where the import only affect TS (types) +and then it will compile fine, but we want to mantain consistency across code, therefore, +having `/addon/` importing ember addons should not be allowed. + +## Rule Details + +Examples of **incorrect** code for this rule: + +```js +import something from 'someemberaddon/addon/component/something'; + +``` + +Examples of **correct** code for this rule: + +```js +import something from 'someemberaddon/component/something'; + +``` + +## When Not To Use It + +If you are having conflics with naming and you really want to import `/addon/` diff --git a/datahub-web/@datahub/eslint-plugin/docs/rules/no-linkedin-import.md b/datahub-web/@datahub/eslint-plugin/docs/rules/no-linkedin-import.md new file mode 100644 index 0000000000000..9e6a6eb0d8d69 --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/docs/rules/no-linkedin-import.md @@ -0,0 +1,23 @@ +# Imports should not containt /addon/ (no-addon-import) + +On the open source world we should not import files that are internal. This will help us correct that behavior. + +## Rule Details + +Examples of **incorrect** code for this rule: + +```js +import something from '@linkedin/something'; + +``` + +Examples of **correct** code for this rule: + +```js +import something from '@datahub/something'; + +``` + +## When Not To Use It + +This rule should only be applied on open source files diff --git a/datahub-web/@datahub/eslint-plugin/lib/index.js b/datahub-web/@datahub/eslint-plugin/lib/index.js new file mode 100644 index 0000000000000..c446990dcac1f --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/lib/index.js @@ -0,0 +1,18 @@ +/** + * @fileoverview custom eslint rules for datahub + * @author Ignacio + */ +'use strict'; + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const requireIndex = require('requireindex'); + +//------------------------------------------------------------------------------ +// Plugin Definition +//------------------------------------------------------------------------------ + +// import all rules in lib/rules +module.exports.rules = requireIndex(__dirname + '/rules'); diff --git a/datahub-web/@datahub/eslint-plugin/lib/rules/no-addon-import.js b/datahub-web/@datahub/eslint-plugin/lib/rules/no-addon-import.js new file mode 100644 index 0000000000000..d58bbc6e167f9 --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/lib/rules/no-addon-import.js @@ -0,0 +1,29 @@ +/** + * @fileoverview + */ +'use strict'; + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ +module.exports = { + meta: { + docs: { + description: 'Imports should not have /addon/ for ember addons as ember wont compile and it is not needed', + category: 'Addon module import paths should not have /addon/. This can be safely removed', + recommended: true + }, + fixable: null, + schema: [] + }, + + create: function(context) { + return { + ImportDeclaration(node) { + if (node.source.value.indexOf('/addon/') >= 0) { + context.report(node, 'Addon module import paths should not have /addon/. This can be safely removed'); + } + } + }; + } +}; diff --git a/datahub-web/@datahub/eslint-plugin/lib/rules/no-linkedin-import.js b/datahub-web/@datahub/eslint-plugin/lib/rules/no-linkedin-import.js new file mode 100644 index 0000000000000..9da2fdfd6dd56 --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/lib/rules/no-linkedin-import.js @@ -0,0 +1,29 @@ +/** + * @fileoverview + */ +'use strict'; + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ +module.exports = { + meta: { + docs: { + description: 'Open source modules should not import from @linkedin', + category: 'Open source modules should not import from @linkedin', + recommended: true + }, + fixable: null, + schema: [] + }, + + create: function(context) { + return { + ImportDeclaration(node) { + if (node.source.value.indexOf('@linkedin') >= 0) { + context.report(node, 'Open source modules should not import from @linkedin'); + } + } + }; + } +}; diff --git a/datahub-web/@datahub/eslint-plugin/package.json b/datahub-web/@datahub/eslint-plugin/package.json new file mode 100644 index 0000000000000..990ecb2fdf250 --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/package.json @@ -0,0 +1,26 @@ +{ + "name": "@datahub/eslint-plugin", + "version": "0.0.0", + "description": "custom eslint rules for datahub", + "keywords": [ + "eslint", + "eslintplugin", + "eslint-plugin" + ], + "author": "Ignacio", + "main": "lib/index.js", + "scripts": { + "test": "mocha tests --recursive" + }, + "dependencies": { + "requireindex": "~1.2.0" + }, + "devDependencies": { + "eslint": "^6.8.0", + "mocha": "^6.2.0" + }, + "engines": { + "node": "8.* || >= 10.*" + }, + "license": "ISC" +} diff --git a/datahub-web/@datahub/eslint-plugin/tests/lib/rules/no-addon-import.js b/datahub-web/@datahub/eslint-plugin/tests/lib/rules/no-addon-import.js new file mode 100644 index 0000000000000..c401211668276 --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/tests/lib/rules/no-addon-import.js @@ -0,0 +1,40 @@ +/** + * @fileoverview Imports should not containt /addon/ + * @author Ignacio + */ +'use strict'; + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const rule = require('../../../lib/rules/no-addon-import'), + RuleTester = require('eslint').RuleTester; + +RuleTester.setDefaultConfig({ + parser: 'babel-eslint' +}); +//------------------------------------------------------------------------------ +// Tests +//------------------------------------------------------------------------------ + +const ruleTester = new RuleTester(); +ruleTester.run('no-addon-import', rule, { + valid: [ + { + code: "import aa from 'someaddon/somethingelse'" + } + ], + + invalid: [ + { + code: "import aa from 'someaddon/addon/'", + errors: [ + { + message: 'Addon module import paths should not have /addon/. This can be safely removed', + type: 'ImportDeclaration' + } + ] + } + ] +}); diff --git a/datahub-web/@datahub/eslint-plugin/tests/lib/rules/no-linkedin-import.js b/datahub-web/@datahub/eslint-plugin/tests/lib/rules/no-linkedin-import.js new file mode 100644 index 0000000000000..17a28d4b32524 --- /dev/null +++ b/datahub-web/@datahub/eslint-plugin/tests/lib/rules/no-linkedin-import.js @@ -0,0 +1,40 @@ +/** + * @fileoverview Imports should not containt /addon/ + * @author Ignacio + */ +'use strict'; + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const rule = require('../../../lib/rules/no-linkedin-import'), + RuleTester = require('eslint').RuleTester; + +RuleTester.setDefaultConfig({ + parser: 'babel-eslint' +}); +//------------------------------------------------------------------------------ +// Tests +//------------------------------------------------------------------------------ + +const ruleTester = new RuleTester(); +ruleTester.run('no-linkedin-import', rule, { + valid: [ + { + code: "import aa from '@datahub/somethingelse'" + } + ], + + invalid: [ + { + code: "import aa from '@linkedin/something'", + errors: [ + { + message: 'Open source modules should not import from @linkedin', + type: 'ImportDeclaration' + } + ] + } + ] +}); diff --git a/datahub-web/@datahub/institutional-memory/.npmignore b/datahub-web/@datahub/institutional-memory/.npmignore index fba9154569bdc..bd09adff92e08 100644 --- a/datahub-web/@datahub/institutional-memory/.npmignore +++ b/datahub-web/@datahub/institutional-memory/.npmignore @@ -12,6 +12,7 @@ /.env* /.eslintignore /.eslintrc.js +/.git/ /.gitignore /.template-lintrc.js /.travis.yml diff --git a/datahub-web/@datahub/institutional-memory/.travis.yml b/datahub-web/@datahub/institutional-memory/.travis.yml index c8cec1979ed09..d10bed4d288bc 100644 --- a/datahub-web/@datahub/institutional-memory/.travis.yml +++ b/datahub-web/@datahub/institutional-memory/.travis.yml @@ -3,7 +3,7 @@ language: node_js node_js: # we recommend testing addons with the same minimum supported node version as Ember CLI # so that your addon works for all apps - - "6" + - '10' sudo: false dist: trusty @@ -33,8 +33,8 @@ jobs: include: # runs linting and tests with current locked deps - - stage: "Tests" - name: "Tests" + - stage: 'Tests' + name: 'Tests' install: - yarn install --non-interactive script: @@ -42,13 +42,13 @@ jobs: - yarn lint:js - yarn test - - name: "Floating Dependencies" + - name: 'Floating Dependencies' script: - yarn test # we recommend new addons test the current and previous LTS # as well as latest stable release (bonus points to beta/canary) - - stage: "Additional Tests" + - stage: 'Additional Tests' env: EMBER_TRY_SCENARIO=ember-lts-2.18 - env: EMBER_TRY_SCENARIO=ember-lts-3.4 - env: EMBER_TRY_SCENARIO=ember-release diff --git a/datahub-web/@datahub/institutional-memory/LICENSE.md b/datahub-web/@datahub/institutional-memory/LICENSE.md index f8d1edb3b7d6e..0d02ed0266734 100644 --- a/datahub-web/@datahub/institutional-memory/LICENSE.md +++ b/datahub-web/@datahub/institutional-memory/LICENSE.md @@ -1,9 +1,13 @@ -The MIT License (MIT) +Copyright (c) 2020 LinkedIn -Copyright (c) 2019 +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + http://www.apache.org/licenses/LICENSE-2.0 -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/datahub-web/@datahub/institutional-memory/README.md b/datahub-web/@datahub/institutional-memory/README.md index 303c5b2e63105..c0e460cea91cb 100644 --- a/datahub-web/@datahub/institutional-memory/README.md +++ b/datahub-web/@datahub/institutional-memory/README.md @@ -26,4 +26,4 @@ See the [Contributing](CONTRIBUTING.md) guide for details. License ------------------------------------------------------------------------------ -This project is licensed under the [MIT License](LICENSE.md). +This project is licensed under the [Apache License](LICENSE.md). diff --git a/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/containers/tab.ts b/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/containers/tab.ts index 9f2ca3afcf6ef..e42626f0ae765 100644 --- a/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/containers/tab.ts +++ b/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/containers/tab.ts @@ -4,15 +4,16 @@ import template from '../../../templates/components/institutional-memory/contain import { layout } from '@ember-decorators/component'; import { action, computed } from '@ember/object'; import { containerDataSource } from '@datahub/utils/api/data-source'; -import { DataModelEntityInstance } from '@datahub/data-models/entity/entity-factory'; import { isEqual } from 'lodash'; import { InstitutionalMemory, InstitutionalMemories } from '@datahub/data-models/models/aspects/institutional-memory'; import { run, schedule } from '@ember/runloop'; import { task } from 'ember-concurrency'; import { ETaskPromise } from '@datahub/utils/types/concurrency'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { changeManagementEnabledEntityList } from '@datahub/shared/constants/change-management'; @layout(template) -@containerDataSource('getContainerDataTask', ['entity']) +@containerDataSource('getContainerDataTask', ['entity']) export default class InstitutionalMemoryContainersTab extends Component { /** * The entity for which we are instantiating this institutional memory tab. It is our method of @@ -30,6 +31,14 @@ export default class InstitutionalMemoryContainersTab extends Component { return entity && entity.institutionalMemories; } + /** + * Flag that indicates if the current entity belongs to a whitelist that dictates if Change management is enabled or not. + */ + @computed('entity.displayName') + get isChangeManagementEnabled(): boolean { + const { entity } = this; + return changeManagementEnabledEntityList.includes(entity?.displayName || ''); + } /** * This container data task runs when the component is initially rendered or if the entity given * to the component has changed @@ -45,12 +54,15 @@ export default class InstitutionalMemoryContainersTab extends Component { // where a rare timing issue can lead to institutional memory staying undefined and not // updating to the response, which leads to a blank tab. Runloop forces Ember to adhere to our // timing of a runloop start/end - run(() => { - schedule('actions', async () => { - // Assumes that the entity supports institutional memory, otherwise this will throw an error - // for not implemented yet. - await entity.readInstitutionalMemory(); - }); + run((): void => { + schedule( + 'actions', + async (): Promise => { + // Assumes that the entity supports institutional memory, otherwise this will throw an error + // for not implemented yet. + await entity.readInstitutionalMemory(); + } + ); }); }).drop()) getContainerDataTask!: ETaskPromise; @@ -99,7 +111,7 @@ export default class InstitutionalMemoryContainersTab extends Component { removeInstitutionalMemoryLink(linkObject: InstitutionalMemory): void { const { institutionalMemoryList } = this; if (institutionalMemoryList) { - const removalIndex = institutionalMemoryList.findIndex(link => isEqual(link, linkObject)); + const removalIndex = institutionalMemoryList.findIndex((link): boolean => isEqual(link, linkObject)); if (removalIndex > -1) { institutionalMemoryList.removeAt(removalIndex); diff --git a/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/wiki/url-list.ts b/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/wiki/url-list.ts index c4d7e220866e5..4501e7e230d02 100644 --- a/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/wiki/url-list.ts +++ b/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/wiki/url-list.ts @@ -3,7 +3,7 @@ import Component from '@ember/component'; import template from '../../../templates/components/institutional-memory/wiki/url-list'; import { layout, tagName, classNames } from '@ember-decorators/component'; import { action, computed } from '@ember/object'; -import { noop } from '@datahub/utils/function/noop'; +import { noop } from 'lodash'; import { INachoTableConfigs } from '@nacho-ui/table/types/nacho-table'; import { set } from '@ember/object'; import { NotificationEvent } from '@datahub/utils/constants/notifications'; @@ -73,7 +73,7 @@ export default class InstitutionalMemoryWikiUrlList extends Component { * Flag determining whether or not we are going to show the pop up modal related to adding * a link */ - isShowingModal: boolean = false; + isShowingModal = false; /** * If we have a display name given for the entity for which this institutional memory component diff --git a/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/wiki/url-list/add-dialog.ts b/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/wiki/url-list/add-dialog.ts index ba74346dd108c..688a31f2f22b5 100644 --- a/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/wiki/url-list/add-dialog.ts +++ b/datahub-web/@datahub/institutional-memory/addon/components/institutional-memory/wiki/url-list/add-dialog.ts @@ -5,7 +5,7 @@ import { layout, classNames } from '@ember-decorators/component'; import { action } from '@ember/object'; import { baseTableClass } from '@datahub/institutional-memory/components/institutional-memory/wiki/url-list'; import { setProperties } from '@ember/object'; -import { noop } from '@datahub/utils/function/noop'; +import { noop } from 'lodash'; /** * Creates a modal class base string for convenience @@ -40,12 +40,12 @@ export default class WikiUrlListAddDialog extends Component { /** * User input url for the wiki link they want to create */ - url: string = ''; + url = ''; /** * User input description for the wiki link they want to create */ - description: string = ''; + description = ''; /** * Set character limit for the description diff --git a/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/containers/tab.hbs b/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/containers/tab.hbs index b62143dcaf9e1..7487c1c49edef 100644 --- a/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/containers/tab.hbs +++ b/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/containers/tab.hbs @@ -1,8 +1,14 @@ - {{institutional-memory/wiki/url-list - listData=institutionalMemoryList - entityDisplayName=entity.displayName - addInstitutionalMemoryLink=(action "addInstitutionalMemoryLink") - removeInstitutionalMemoryLink=(action "removeInstitutionalMemoryLink") - }} + + +{{#if this.isChangeManagementEnabled}} + +{{/if}} diff --git a/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/wiki/url-list.hbs b/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/wiki/url-list.hbs index 7de00527160db..33a14de5cbdbd 100644 --- a/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/wiki/url-list.hbs +++ b/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/wiki/url-list.hbs @@ -1,77 +1,75 @@ {{#if isShowingModal}} - {{institutional-memory/wiki/url-list/add-dialog - saveLink=(action "onSaveLink") - cancelAddLink=(action (mut isShowingModal) false) - }} + {{/if}} -{{#if listData.length}} - - {{#table.global}} - - {{/table.global}} - {{#table.body as |body|}} - {{#each listData as |docLink|}} - {{#body.row}} - - {{#let docLink.actor as |actor|}} - {{#with actor.entityLink.link as |link|}} - - {{actor.username}} - - {{else}} - {{actor.username}} - {{/with}} - {{/let}} - - - {{moment-format (unix docLink.timestamp) "MM/DD/YYYY"}} - - - - {{docLink.url}} - - - {{docLink.description}} - + + +
+

+ Documentation +

+

+ Note down documentation or wiki link to help the community better leverage the context +

+
+
+ + {{#each listData as |docLink|}} + + + {{#let docLink.actor as |actor|}} + + + + {{/let}} + + + {{moment-format (unix docLink.timestamp) "MM/DD/YYYY"}} + + + + {{docLink.url}} + + + + {{docLink.description}} + + + {{#unless @isReadOnly}} - - {{/body.row}} - {{/each}} - {{/table.body}} -
- -{{else if (eq listData.length 0)}} - - -

Be the first one to add a link.

-

- Note down documentation or wiki link to help the community better leverage the context - {{if entityName (concat "of this " entityName)}} -

- -
- -{{/if}} - + {{/unless}} + + + {{/each}} + + {{#unless @isReadOnly}} + + + + {{/unless}} +
diff --git a/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/wiki/url-list/add-dialog.hbs b/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/wiki/url-list/add-dialog.hbs index d2c44f37d501e..176eb2909484e 100644 --- a/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/wiki/url-list/add-dialog.hbs +++ b/datahub-web/@datahub/institutional-memory/addon/templates/components/institutional-memory/wiki/url-list/add-dialog.hbs @@ -9,6 +9,7 @@ -{{/modal-dialog}} \ No newline at end of file +{{/modal-dialog}} diff --git a/datahub-web/@datahub/institutional-memory/app/styles/institutional-memory/_links.scss b/datahub-web/@datahub/institutional-memory/app/styles/institutional-memory/_links.scss index 13d221217594a..2533a6762915b 100644 --- a/datahub-web/@datahub/institutional-memory/app/styles/institutional-memory/_links.scss +++ b/datahub-web/@datahub/institutional-memory/app/styles/institutional-memory/_links.scss @@ -1,30 +1,44 @@ .institutional-memory-links { $author-column-width: 124px; $date-column-width: 148px; - $url-column-width: 256px; - $description-column-width: 256px; + $url-column-width: 450px; $action-column-width: 96px; - $global-font-size: 14px; - /// TODO [META-7332] Temporary solution pending [META-7332] to fix nacho table styling - .nacho-table th { - background-color: get-color(white); - } + $base-font-size: fs(standard); + $title-font-size: 20px; - &__global { - margin-bottom: item-spacing(3); - margin-top: item-spacing(3); + $border-color: #e0e0e0; - &-button { - margin-left: auto; - display: block; - background: transparent; + font-size: $base-font-size; + border: 1px solid $border-color; + + &__global + div { + border: none; + } + + &__title { + font-weight: bold; + font-size: $title-font-size; + line-height: 28px; + } + &__container { + & { border: none; - cursor: pointer; - color: get-color(blue7); - font-size: $global-font-size; - font-weight: bold; } + thead { + border: none; + } + th.nacho-table__title, + td.nacho-table__cell { + background-color: white; + padding: item-spacing(2 5); + border-bottom: 1px solid $border-color; + font-size: $base-font-size; + } + } + + &__footer { + @include nacho-table-footer(); } &__author { @@ -35,9 +49,13 @@ width: $date-column-width; } + &__link { + width: $url-column-width; + } + &__actions { width: $action-column-width; - + text-align: right; &-button { background: transparent; border: none; @@ -55,7 +73,7 @@ flex-direction: column; border-radius: 2px; overflow: auto; - background-color: set-color(white, base); + background-color: get-color(white); max-height: calc(100vh - 64px); min-height: 48px; width: 732px; diff --git a/datahub-web/@datahub/institutional-memory/ember-cli-build.js b/datahub-web/@datahub/institutional-memory/ember-cli-build.js index dc5a39e1b796e..d9648581d66f8 100644 --- a/datahub-web/@datahub/institutional-memory/ember-cli-build.js +++ b/datahub-web/@datahub/institutional-memory/ember-cli-build.js @@ -3,7 +3,7 @@ const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); module.exports = function(defaults) { - let app = new EmberAddon(defaults, { + const app = new EmberAddon(defaults, { // Add options here }); diff --git a/datahub-web/@datahub/institutional-memory/index.js b/datahub-web/@datahub/institutional-memory/index.js index fb3f2e2af6211..ac65e94b66155 100644 --- a/datahub-web/@datahub/institutional-memory/index.js +++ b/datahub-web/@datahub/institutional-memory/index.js @@ -2,5 +2,5 @@ module.exports = { name: require('./package').name, - isDevelopingAddon: () => false + isDevelopingAddon: () => true }; diff --git a/datahub-web/@datahub/institutional-memory/package.json b/datahub-web/@datahub/institutional-memory/package.json index 110dde7d39e77..c049983333d00 100644 --- a/datahub-web/@datahub/institutional-memory/package.json +++ b/datahub-web/@datahub/institutional-memory/package.json @@ -13,7 +13,7 @@ "test": "tests" }, "scripts": { - "build": "ember build", + "build": "ember build --environment=production", "start": "ember serve", "test": "ember test", "test:all": "ember try:each", @@ -22,52 +22,65 @@ }, "dependencies": { "@datahub/data-models": "0.0.0", + "@datahub/shared": "0.0.0", "@datahub/utils": "0.0.0", "@fortawesome/ember-fontawesome": "^0.1.13", - "@nacho-ui/animations": "^0.0.37", - "@nacho-ui/core": "0.0.34", - "@nacho-ui/table": "^0.0.37", - "ember-cli-babel": "^7.8.0", - "ember-cli-htmlbars": "^3.0.0", - "ember-cli-sass": "^10.0.0", - "ember-cli-typescript": "^2.0.2", - "ember-concurrency": "^1.1.5", + "@nacho-ui/animations": "^0.0.38", + "@nacho-ui/core": "^0.0.38", + "@nacho-ui/table": "^0.0.38", + "@types/ember-resolver": "^5.0.7", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^4.2.2", + "ember-cli-typescript": "^3.1.3", + "ember-concurrency": "^1.1.2", "ember-inflector": "^3.0.0", "ember-modal-dialog": "^3.0.0-beta.0", "ember-moment": "^8.0.0" }, "devDependencies": { - "@babel/core": "^7.4.0", + "@babel/core": "^7.8.4", "@datahub/metadata-types": "0.0.0", - "@ember/optional-features": "^0.6.3", - "broccoli-asset-rev": "^2.7.0", - "dynamic-link": "^0.2.5", - "ember-cli": "~3.11.0", - "ember-cli-dependency-checker": "^3.1.0", - "ember-cli-htmlbars-inline-precompile": "^2.1.0", - "ember-cli-inject-live-reload": "^1.8.2", + "@ember/optional-features": "^1.3.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "@types/ember": "^3.1.1", + "@types/ember-qunit": "^3.4.7", + "@types/ember__test-helpers": "^0.7.9", + "@types/qunit": "^2.9.0", + "@types/rsvp": "^4.0.3", + "babel-eslint": "^10.0.3", + "broccoli-asset-rev": "^3.0.0", + "ember-auto-import": "^1.5.3", + "ember-cli": "~3.16.0", + "ember-cli-dependency-checker": "^3.2.0", + "ember-cli-inject-live-reload": "^2.0.2", "ember-cli-mirage": "^0.4.15", "ember-cli-moment-shim": "^3.7.1", + "ember-cli-sass": "^10.0.0", "ember-cli-sri": "^2.1.1", - "ember-cli-typescript-blueprints": "^2.0.0", - "ember-cli-uglify": "^2.1.0", + "ember-cli-typescript-blueprints": "^3.0.0", + "ember-cli-uglify": "^3.0.0", + "ember-cli-update": "^0.52.1", "ember-decorators": "^6.0.0", - "ember-export-application-global": "^2.0.0", - "ember-load-initializers": "^1.1.0", + "ember-export-application-global": "^2.0.1", + "ember-load-initializers": "^2.1.1", "ember-maybe-import-regenerator": "^0.1.6", - "ember-qunit": "^3.5.0", - "ember-resolver": "^5.0.1", - "ember-source": "~3.11.1", - "ember-source-channel-url": "^1.1.0", - "ember-truth-helpers": "^2.0.0", - "ember-try": "^1.0.0", + "ember-qunit": "^4.6.0", + "ember-resolver": "^7.0.0", + "ember-source": "~3.16.3", + "ember-source-channel-url": "^2.0.1", + "ember-truth-helpers": "^2.1.0", + "ember-try": "^1.4.0", "loader.js": "^4.7.0", - "qunit-dom": "^0.8.0", + "qunit-dom": "^0.9.1", "sass": "^1.21.0", - "typescript": "^3.5.3" + "typescript": "^3.9.3" }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": "10.* || >= 12" + }, + "ember": { + "edition": "octane" }, "ember-addon": { "configPath": "tests/dummy/config" diff --git a/datahub-web/@datahub/institutional-memory/tests/acceptance/tab-test.ts b/datahub-web/@datahub/institutional-memory/tests/acceptance/tab-test.ts index 3eff7577b32e2..881d291785b8e 100644 --- a/datahub-web/@datahub/institutional-memory/tests/acceptance/tab-test.ts +++ b/datahub-web/@datahub/institutional-memory/tests/acceptance/tab-test.ts @@ -7,7 +7,7 @@ import { IMirageTestContext } from '@datahub/utils/types/vendor/ember-cli-mirage import { baseTableClass } from '@datahub/institutional-memory/components/institutional-memory/wiki/url-list'; import { stubService } from '@datahub/utils/test-helpers/stub-service'; -module('Acceptance | tab', function(hooks) { +module('Acceptance | tab', function(hooks): void { setupApplicationTest(hooks); setupMirage(hooks); @@ -47,7 +47,8 @@ module('Acceptance | tab', function(hooks) { 'Remaining author was the second one' ); - await click(`${baseClass}__global-button`); + // Clicking on the "Add link" button + await click(`${baseClass}__footer-button`); await waitFor(modalClass); assert.equal(findAll(modalClass).length, 1, 'Renders a modal upon clicking the add more link'); diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/app/app.js b/datahub-web/@datahub/institutional-memory/tests/dummy/app/app.js index b3b2bd677e090..d8e2088b6b0e5 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/app/app.js +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/app/app.js @@ -1,14 +1,12 @@ import Application from '@ember/application'; -import Resolver from './resolver'; +import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; -const App = Application.extend({ - modulePrefix: config.modulePrefix, - podModulePrefix: config.podModulePrefix, - Resolver -}); +export default class App extends Application { + modulePrefix = config.modulePrefix; + podModulePrefix = config.podModulePrefix; + Resolver = Resolver; +} loadInitializers(App, config.modulePrefix); - -export default App; diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/app/components/change-management/change-log-search-provider.ts b/datahub-web/@datahub/institutional-memory/tests/dummy/app/components/change-management/change-log-search-provider.ts new file mode 100644 index 0000000000000..beffba2c77b9a --- /dev/null +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/app/components/change-management/change-log-search-provider.ts @@ -0,0 +1,4 @@ +import Component from '@ember/component'; + +// Stubbing this component in the dummy for test purposes +export default class ChangeLogSearchProvider extends Component {} diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/app/components/search/containers/entity-task-container.ts b/datahub-web/@datahub/institutional-memory/tests/dummy/app/components/search/containers/entity-task-container.ts new file mode 100644 index 0000000000000..e795701716f2a --- /dev/null +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/app/components/search/containers/entity-task-container.ts @@ -0,0 +1,4 @@ +import Component from '@ember/component'; + +// Stubbing this component in the dummy for test purposes +export default class EntityTaskContainer extends Component {} diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/app/config/environment.d.ts b/datahub-web/@datahub/institutional-memory/tests/dummy/app/config/environment.d.ts index 1c2ef7b26286f..6d84647d2750c 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/app/config/environment.d.ts +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/app/config/environment.d.ts @@ -9,9 +9,13 @@ export default config; * since different ember addons can materialize new entries. */ declare const config: { - environment: any; + environment: 'development' | 'test' | 'production'; modulePrefix: string; podModulePrefix: string; locationType: string; rootURL: string; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; }; diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/app/models/pokemon.ts b/datahub-web/@datahub/institutional-memory/tests/dummy/app/models/pokemon.ts index dc97951053e05..831da6befca07 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/app/models/pokemon.ts +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/app/models/pokemon.ts @@ -3,7 +3,7 @@ import { IBaseEntity } from '@datahub/metadata-types/types/entity'; import { InstitutionalMemories, InstitutionalMemory } from '@datahub/data-models/models/aspects/institutional-memory'; import { getJSON, postJSON } from '@datahub/utils/api/fetcher'; import { set } from '@ember/object'; -import { IInstitutionalMemory } from '@datahub/data-models/types/entity/common/wiki/institutional-memory'; +import { IInstitutionalMemory } from '@datahub/metadata-types/types/aspects/institutional-memory'; export interface IPokemon extends IBaseEntity { urn: string; @@ -17,8 +17,6 @@ const getPokemonIMUrlByUrn = (urn: string): string => `/pokemons/${urn.replace(/ export class Pokemon extends BaseEntity { urn: string; - institutionalMemories?: InstitutionalMemories; - get displayName(): string { return 'pokemons'; } diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/app/router.js b/datahub-web/@datahub/institutional-memory/tests/dummy/app/router.js index df91655f19aaf..e8837b5587ebc 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/app/router.js +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/app/router.js @@ -1,20 +1,20 @@ import EmberRouter from '@ember/routing/router'; import config from './config/environment'; -const Router = EmberRouter.extend({ - location: config.locationType, - rootURL: config.rootURL -}); +export default class Router extends EmberRouter { + location = config.locationType; + rootURL = config.rootURL; +} Router.map(function() { this.route('wiki'); this.route('testcomponents'); - + // TODO: [META-11856] This is here as the acceptance test for the wiki tab throws an error because + // this package has no concept of the user profile page, but the avatar links to such page. Should + // be improved when we revamp how testing is done this.route('user', function() { this.route('profile', { path: '/:user_id' }, function() { this.route('tab', { path: '/:tab_selected' }); }); }); }); - -export default Router; diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/app/routes/testcomponents.ts b/datahub-web/@datahub/institutional-memory/tests/dummy/app/routes/testcomponents.ts index dade2c64911e4..17814e76e3db0 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/app/routes/testcomponents.ts +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/app/routes/testcomponents.ts @@ -1,5 +1,5 @@ import Route from '@ember/routing/route'; -import { IInstitutionalMemory } from '@datahub/data-models/types/entity/common/wiki/institutional-memory'; +import { IInstitutionalMemory } from '@datahub/metadata-types/types/aspects/institutional-memory'; import { InstitutionalMemory } from '@datahub/data-models/models/aspects/institutional-memory'; export default class Testcomponents extends Route { @@ -18,7 +18,7 @@ export default class Testcomponents extends Route { ]; return { - linkList: testInstitutionalMemory.map(link => new InstitutionalMemory(link)) + linkList: testInstitutionalMemory.map((link): InstitutionalMemory => new InstitutionalMemory(link)) }; } } diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/app/routes/user/profile.ts b/datahub-web/@datahub/institutional-memory/tests/dummy/app/routes/user/profile.ts deleted file mode 100644 index 9139bc123f471..0000000000000 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/app/routes/user/profile.ts +++ /dev/null @@ -1,7 +0,0 @@ -import Route from '@ember/routing/route'; - -export default class UserProfile extends Route.extend({ - // anything which *must* be merged to prototype here -}) { - // normal class body definition here -} diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/app/styles/app.scss b/datahub-web/@datahub/institutional-memory/tests/dummy/app/styles/app.scss index 0184dcd3e8b10..16b3d2551026c 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/app/styles/app.scss +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/app/styles/app.scss @@ -1,3 +1,4 @@ +@import 'nacho-core'; @import 'datahub-utils'; @import 'nacho-table'; diff --git a/datahub-web/@datahub/entity-header/addon/templates/components/entity-header/attribute-callout.hbs b/datahub-web/@datahub/institutional-memory/tests/dummy/app/templates/components/search/containers/entity-task-container.hbs similarity index 100% rename from datahub-web/@datahub/entity-header/addon/templates/components/entity-header/attribute-callout.hbs rename to datahub-web/@datahub/institutional-memory/tests/dummy/app/templates/components/search/containers/entity-task-container.hbs diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/config/environment.js b/datahub-web/@datahub/institutional-memory/tests/dummy/config/environment.js index 182d3fcbfa04e..43938b91a0109 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/config/environment.js +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/config/environment.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = function(environment) { - let ENV = { + const ENV = { modulePrefix: 'dummy', environment, rootURL: '/', @@ -38,9 +38,12 @@ module.exports = function(environment) { // keep test console output quieter ENV.APP.LOG_ACTIVE_GENERATION = false; ENV.APP.LOG_VIEW_LOOKUPS = false; + ENV.RAISE_ON_DEPRECATION = false; + ENV.LOG_STACKTRACE_ON_DEPRECATION = false; ENV.APP.rootElement = '#ember-testing'; ENV.APP.autoboot = false; + ENV.APP.notificationsTimeout = 1; } if (environment === 'production') { diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/config/optional-features.json b/datahub-web/@datahub/institutional-memory/tests/dummy/config/optional-features.json index b1902623ae759..b26286e2ecdf3 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/config/optional-features.json +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/config/optional-features.json @@ -1,3 +1,6 @@ { - "jquery-integration": false + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true } diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/config.ts b/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/config.ts index c368adbe008e2..253b2ca9c0c61 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/config.ts +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/config.ts @@ -1,7 +1,19 @@ import { IMirageServer } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; import { getInstitutionalMemory, postInstitutionalMemory } from 'dummy/mirage/helpers/institutional-memory'; +import { IFollowsAspect } from '@datahub/metadata-types/types/aspects/social-actions'; -export default function(this: IMirageServer) { +export default function(this: IMirageServer): void { this.get('/pokemons/:urn/institutionalmemory', getInstitutionalMemory); this.post('/pokemons/:urn/institutionalmemory', postInstitutionalMemory); + // TODO Mirage for follows: https://jira01.corp.linkedin.com:8443/browse/META-11926 + this.get( + '/api/v2/pokemons/pikachu:urn/follows', + (): IFollowsAspect => ({ + followers: [ + { follower: { corpUser: 'aketchum' } }, + { follower: { corpUser: 'misty' } }, + { follower: { corpUser: 'brock' } } + ] + }) + ); } diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/helpers/institutional-memory.ts b/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/helpers/institutional-memory.ts index 45ae6bd1602b5..5e744541e1e87 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/helpers/institutional-memory.ts +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/helpers/institutional-memory.ts @@ -1,6 +1,6 @@ import { IFunctionRouteHandler, IMirageRequest } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; import { IMirageInstitutionalMemorySchema } from '../types/schema'; -import { IInstitutionalMemory } from '@datahub/data-models/types/entity/common/wiki/institutional-memory'; +import { IInstitutionalMemory } from '@datahub/metadata-types/types/aspects/institutional-memory'; /** * Gets all the institutional memory objects available diff --git a/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/types/schema.ts b/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/types/schema.ts index 427749b4323db..73b3350d4ee09 100644 --- a/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/types/schema.ts +++ b/datahub-web/@datahub/institutional-memory/tests/dummy/mirage/types/schema.ts @@ -1,4 +1,4 @@ -import { IInstitutionalMemory } from '@datahub/data-models/types/entity/common/wiki/institutional-memory'; +import { IInstitutionalMemory } from '@datahub/metadata-types/types/aspects/institutional-memory'; type SchemaDb = Array & { where: (query: Partial) => Array; diff --git a/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/containers/tab-test.ts b/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/containers/tab-test.ts index a1f6120315ab1..4a8ead53e9482 100644 --- a/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/containers/tab-test.ts +++ b/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/containers/tab-test.ts @@ -3,11 +3,11 @@ import { setupRenderingTest } from 'ember-qunit'; import { render } from '@ember/test-helpers'; import hbs from 'htmlbars-inline-precompile'; -module('Integration | Component | institutional-memory/containers/tab', function(hooks) { +module('Integration | Component | institutional-memory/containers/tab', function(hooks): void { setupRenderingTest(hooks); // THis component is tested more deeply in acceptance testing since as a container it is // very data interaction dependent - test('it renders', async function(assert) { + test('it renders', async function(assert): Promise { await render(hbs`{{institutional-memory/containers/tab}}`); assert.ok(this.element, 'Initial render is without errors'); }); diff --git a/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/wiki/url-list-test.ts b/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/wiki/url-list-test.ts index b4ffa43c20b99..f1594a6c8d369 100644 --- a/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/wiki/url-list-test.ts +++ b/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/wiki/url-list-test.ts @@ -2,17 +2,17 @@ import { module, test } from 'qunit'; import { setupRenderingTest } from 'ember-qunit'; import { render, find, findAll, click } from '@ember/test-helpers'; import hbs from 'htmlbars-inline-precompile'; -import { IInstitutionalMemory } from '@datahub/data-models/types/entity/common/wiki/institutional-memory'; +import { IInstitutionalMemory } from '@datahub/metadata-types/types/aspects/institutional-memory'; import { baseTableClass } from '@datahub/institutional-memory/components/institutional-memory/wiki/url-list'; import { InstitutionalMemory } from '@datahub/data-models/models/aspects/institutional-memory'; import { stubService } from '@datahub/utils/test-helpers/stub-service'; -module('Integration | Component | institutional-memory/wiki/url-list', function(hooks) { +module('Integration | Component | institutional-memory/wiki/url-list', function(hooks): void { setupRenderingTest(hooks); const baseClass = `.${baseTableClass}`; - test('it renders data as intended', async function(assert) { + test('it renders data as intended', async function(assert): Promise { assert.expect(5); stubService('notifications', { notify: null @@ -34,7 +34,10 @@ module('Integration | Component | institutional-memory/wiki/url-list', function( } ]; - this.set('listData', listData.map(item => new InstitutionalMemory(item))); + this.set( + 'listData', + listData.map(item => new InstitutionalMemory(item)) + ); await render(hbs`{{institutional-memory/wiki/url-list listData=listData }}`); diff --git a/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/wiki/url-list/add-dialog-test.ts b/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/wiki/url-list/add-dialog-test.ts index ef203b39a1ef7..dd3a88b6a3fb6 100644 --- a/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/wiki/url-list/add-dialog-test.ts +++ b/datahub-web/@datahub/institutional-memory/tests/integration/components/institutional-memory/wiki/url-list/add-dialog-test.ts @@ -3,10 +3,10 @@ import { setupRenderingTest } from 'ember-qunit'; import { render } from '@ember/test-helpers'; import hbs from 'htmlbars-inline-precompile'; -module('Integration | Component | institutional-memory/wiki/url-list/add-dialog', function(hooks) { +module('Integration | Component | institutional-memory/wiki/url-list/add-dialog', function(hooks): void { setupRenderingTest(hooks); - test('it renders', async function(assert) { + test('it renders', async function(assert): Promise { await render(hbs`{{institutional-memory/wiki/url-list/add-dialog}}`); assert.ok(this.element, 'Initial render is without errors'); }); diff --git a/datahub-web/@datahub/institutional-memory/tsconfig.json b/datahub-web/@datahub/institutional-memory/tsconfig.json index 7e2a82d6d5004..e5295adcfad94 100644 --- a/datahub-web/@datahub/institutional-memory/tsconfig.json +++ b/datahub-web/@datahub/institutional-memory/tsconfig.json @@ -5,9 +5,14 @@ "rootDir": "../../", "alwaysStrict": false, "paths": { - "dummy/mirage/*": ["tests/dummy/mirage/*"], - "dummy/tests/*": ["tests/*"], - "dummy/*": ["tests/dummy/app/*", "app/*"], + "dummy/mirage/*": ["tests/dummy/mirage/*", "../../@datahub/data-models/tests/dummy/mirage/*"], + "dummy/tests/*": ["tests/*", "../../@datahub/data-models/tests/*"], + "dummy/*": [ + "tests/dummy/app/*", + "app/*", + "../../@datahub/data-models/tests/dummy/app/*", + "../../@datahub/data-models/tests/app/*" + ], "@datahub/institutional-memory": ["addon"], "@datahub/institutional-memory/*": ["addon/*"], "@datahub/institutional-memory/test-support": ["addon-test-support"], @@ -16,6 +21,8 @@ "@datahub/utils/*": ["../../@datahub/utils/addon/*"], "@datahub/data-models": ["../../@datahub/data-models/addon"], "@datahub/data-models/*": ["../../@datahub/data-models/addon/*"], + "@datahub/shared": ["../../@datahub/shared/addon"], + "@datahub/shared/*": ["../../@datahub/shared/addon/*"], "@datahub/metadata-types": ["../../@datahub/metadata-types/addon"], "@datahub/metadata-types/*": ["../../@datahub/metadata-types/addon/*"], "*": ["types/*"] @@ -30,9 +37,13 @@ "addon-test-support/**/*", "../../@datahub/data-models/addon/**/*", "../../@datahub/data-models/types/**/*", + "../../@datahub/data-models/tests/**/*", "../../@datahub/metadata-types/addon/**/*", "../../@datahub/metadata-types/types/**/*", "../../@datahub/utils/addon/**/*", - "../../@datahub/utils/types/**/*" + "../../@datahub/utils/types/**/*", + "../../@datahub/shared/addon/**/*", + "../../@datahub/shared/types/**/*", + "../../@datahub/shared/tests/**/*" ] } diff --git a/datahub-web/@datahub/institutional-memory/types/dummy/vendor/ember-cli-mirage.d.ts b/datahub-web/@datahub/institutional-memory/types/dummy/vendor/ember-cli-mirage.d.ts deleted file mode 100644 index 873ee5d56f1f6..0000000000000 --- a/datahub-web/@datahub/institutional-memory/types/dummy/vendor/ember-cli-mirage.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module 'ember-cli-mirage'; -declare module 'ember-cli-mirage/test-support/setup-mirage'; -declare module 'dummy/initializers/ember-cli-mirage'; diff --git a/datahub-web/@datahub/institutional-memory/types/global.d.ts b/datahub-web/@datahub/institutional-memory/types/global.d.ts new file mode 100644 index 0000000000000..99d83c4bad66a --- /dev/null +++ b/datahub-web/@datahub/institutional-memory/types/global.d.ts @@ -0,0 +1,6 @@ +// Types for compiled templates +declare module '@datahub/institutional-memory/templates/*' { + import { TemplateFactory } from 'htmlbars-inline-precompile'; + const tmpl: TemplateFactory; + export default tmpl; +} diff --git a/datahub-web/@datahub/lists/.npmignore b/datahub-web/@datahub/lists/.npmignore index fba9154569bdc..bd09adff92e08 100644 --- a/datahub-web/@datahub/lists/.npmignore +++ b/datahub-web/@datahub/lists/.npmignore @@ -12,6 +12,7 @@ /.env* /.eslintignore /.eslintrc.js +/.git/ /.gitignore /.template-lintrc.js /.travis.yml diff --git a/datahub-web/@datahub/lists/README.md b/datahub-web/@datahub/lists/README.md index 6a119fb8b50bc..e57e5b74ce708 100644 --- a/datahub-web/@datahub/lists/README.md +++ b/datahub-web/@datahub/lists/README.md @@ -1,10 +1,10 @@ @datahub/lists ============================================================================== -This hosts the service, application components, utilities, and application type definitions for Data Hub's Entity Lists feature. +This hosts the service, application components, utilities, and application type definitions for DataHub's Entity Lists feature. The goal of the the addon is to provide the EntityList service and list components that make it easier share functionality and data across Entity List use cases. -An Entity List is a list of Data Hub entities (Entities) that map to metadata-models data entities. +An Entity List is a list of DataHub entities (Entities) that map to metadata-models data entities. Compatibility @@ -32,4 +32,4 @@ See the [Contributing](CONTRIBUTING.md) guide for details. License ------------------------------------------------------------------------------ -This project is licensed under the [MIT License](LICENSE.md). +This project is licensed under the [Apache License](LICENSE.md). diff --git a/datahub-web/@datahub/lists/addon/components/entity-list-container-content.ts b/datahub-web/@datahub/lists/addon/components/entity-list-container-content.ts new file mode 100644 index 0000000000000..8f0d97be99bd1 --- /dev/null +++ b/datahub-web/@datahub/lists/addon/components/entity-list-container-content.ts @@ -0,0 +1,11 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../templates/components/entity-list-container-content'; +import { layout } from '@ember-decorators/component'; + +/** + * This component is the content wrapper for the entity-list-container to be used with the + * generalized content + */ +@layout(template) +export default class EntityListContainerContent extends Component {} diff --git a/datahub-web/@datahub/lists/addon/components/entity-list-container.ts b/datahub-web/@datahub/lists/addon/components/entity-list-container.ts index 50b55e9e4de04..25ce1ee43e261 100644 --- a/datahub-web/@datahub/lists/addon/components/entity-list-container.ts +++ b/datahub-web/@datahub/lists/addon/components/entity-list-container.ts @@ -212,13 +212,13 @@ export default class EntityListContainer extends WithEntityLists { ): IterableIterator> | Promise>> { const { entity } = this; // Extract urns from the serialization list - const urns = this.list.map(({ urn }): string => urn); + const urns = (this.list || []).map(({ urn }): string => urn); if (entity && urns.length) { // Hydrate entity instances with Snapshot and IBaseEntity attributes - const snapshots: Array = yield entity.readSnapshots(urns); + const snapshots = ((yield entity.readSnapshots(urns)) as unknown) as Array; // IBaseEntity property (entity) hydration happens in an async iteration because attributes batch GET endpoint for entities is N/A currently - const instances: Array = yield Promise.all( + const instances = ((yield Promise.all( snapshots.map( async (snapshot): Promise => { const listEntity = new entity(snapshot.urn); @@ -227,7 +227,7 @@ export default class EntityListContainer extends WithEntityLists { return listEntity; } ) - ); + )) as unknown) as Array; return set(this, 'instances', instances); } diff --git a/datahub-web/@datahub/lists/addon/components/toggle-on-list.ts b/datahub-web/@datahub/lists/addon/components/toggle-on-list.ts index 9ab23c1121527..a6231dcb38879 100644 --- a/datahub-web/@datahub/lists/addon/components/toggle-on-list.ts +++ b/datahub-web/@datahub/lists/addon/components/toggle-on-list.ts @@ -5,8 +5,8 @@ import { layout, tagName, classNames, className } from '@ember-decorators/compon import { computed } from '@ember/object'; import { findEntityInList } from '@datahub/lists/utils'; import { ListToggleCta } from '@datahub/lists/constants/entity/shared'; -import { noop } from '@datahub/utils/function/noop'; -import { DataModelEntityInstance } from '@datahub/data-models/addon/constants/entity'; +import { noop } from 'lodash'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; export const baseComponentClass = 'entity-list-toggle'; const buttonClass = 'nacho-button nacho-button--secondary nacho-button--small'; diff --git a/datahub-web/@datahub/lists/addon/constants/entity/shared.ts b/datahub-web/@datahub/lists/addon/constants/entity/shared.ts index e3928480b7bff..779823d2d7d54 100644 --- a/datahub-web/@datahub/lists/addon/constants/entity/shared.ts +++ b/datahub-web/@datahub/lists/addon/constants/entity/shared.ts @@ -1,15 +1,12 @@ -import { DataModelEntity } from '@datahub/data-models/constants/entity'; -import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; -import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; - -// Alias for a DataModelEntity type in the list of supportedListEntities -export type SupportedListEntity = Exclude; +import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity'; +import { DataModelName } from '@datahub/data-models/constants/entity/index'; +import { MockEntity } from '@datahub/data-models/entity/mock/mock-entity'; /** * Lists entities that have Entity List support * note: DatasetEntity is excluded from type pending mid-tier support for urn attribute, support for uri would be throw away */ -export const supportedListEntities: Array = [PersonEntity]; +export const supportedListEntities: Array = [FeatureEntity.displayName]; /** * Enumerates the cta text for toggling an Entity off or onto a list for action triggers where List toggle actions are called diff --git a/datahub-web/@datahub/lists/addon/services/entity-lists-manager.ts b/datahub-web/@datahub/lists/addon/services/entity-lists-manager.ts index 90d3a8a04d763..0c8650a715a1f 100644 --- a/datahub-web/@datahub/lists/addon/services/entity-lists-manager.ts +++ b/datahub-web/@datahub/lists/addon/services/entity-lists-manager.ts @@ -3,14 +3,14 @@ import StorageArray from 'ember-local-storage/local/array'; import { findEntityInList, serializeForStorage } from '@datahub/lists/utils'; import { storageFor } from 'ember-local-storage'; import { computed } from '@ember/object'; -import { supportedListEntities, SupportedListEntity } from '@datahub/lists/constants/entity/shared'; -import { noop } from '@datahub/utils/function/noop'; +import { supportedListEntities } from '@datahub/lists/constants/entity/shared'; +import { noop } from 'lodash'; import { IStoredEntityAttrs } from '@datahub/lists/types/list'; -import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; -import { DataModelEntityInstance } from '@datahub/data-models/addon/constants/entity'; - +import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity/index'; +import { Many } from '@datahub/utils/types/array'; // Map of List Entity displayName to list of instances -type ManagedListEntities = Record>; +type ManagedListEntities = Record>; /** * Entity Lists Management service, handles operations, state management and shares state of Entity lists @@ -42,17 +42,17 @@ export default class EntityListsManager extends Service { get entities(): ManagedListEntities { // Initialize with empty lists, these will be overridden in the reduction over supportedListEntities const entityMap = { - [PersonEntity.displayName]: [] + [FeatureEntity.displayName]: [] }; const entityList = this.entityStorageProxy; - return this.supportedListEntities.reduce((entityMap, EntityType: SupportedListEntity): ManagedListEntities => { + return this.supportedListEntities.reduce((entityMap, entityTypeDisplayName: string): ManagedListEntities => { // entityList is a single list of all supported entity instances // Filter out entities that match the EntityType // Create a new instance to hydrate with the saved snapshot and baseEntity - const storedEntities = entityList.filter((storedEntity): boolean => storedEntity.type === EntityType.displayName); + const storedEntities = entityList.filter((storedEntity): boolean => storedEntity.type === entityTypeDisplayName); - return { ...entityMap, [EntityType.displayName]: Object.freeze(storedEntities) }; + return { ...entityMap, [entityTypeDisplayName]: Object.freeze(storedEntities) }; }, entityMap); } @@ -61,10 +61,8 @@ export default class EntityListsManager extends Service { * @private * @memberof EntityListsManager */ - private updateList( - updateType: 'add' | 'remove' - ): (entities: DataModelEntityInstance | Array) => this { - return (entities: DataModelEntityInstance | Array): this => { + private updateList(updateType: 'add' | 'remove'): (entities: Many) => this { + return (entities: Many): this => { const entitiesToUpdate: Array = [].concat.apply(entities); const storageProxy = this.entityStorageProxy; @@ -72,7 +70,10 @@ export default class EntityListsManager extends Service { let updateStrategy: { filterMap: (arg: Array) => Array; updater: (objects: Array) => StorageArray; - } = { filterMap: noop, updater: noop }; + } = { + filterMap: () => [], + updater: noop as () => StorageArray + }; if (updateType === 'add') { updateStrategy = { @@ -104,7 +105,7 @@ export default class EntityListsManager extends Service { * A list of contained / found entities is returned, if match(es) is/are found, if the list is empty then * no match or matches exist or a storage list does not exist */ - findInList(entities: DataModelEntityInstance | Array): Array { + findInList(entities: Many): Array { const entitiesToFind: Array = [].concat.apply(entities); const storageProxy = this.entityStorageProxy; @@ -120,15 +121,13 @@ export default class EntityListsManager extends Service { * Adds one or more DataModelEntityInstances to the DataModel list with a matching type * @memberof EntityListsManager */ - addToList: (entities: DataModelEntityInstance | Array) => this = this.updateList('add'); + addToList: (entities: Many) => this = this.updateList('add'); /** * Removes one or more DataModelEntityInstances from the related DataModel list * @memberof EntityListsManager */ - removeFromList: (entities: DataModelEntityInstance | Array) => this = this.updateList( - 'remove' - ); + removeFromList: (entities: Many) => this = this.updateList('remove'); } declare module '@ember/service' { diff --git a/datahub-web/@datahub/lists/addon/templates/components/entity-list-container-content.hbs b/datahub-web/@datahub/lists/addon/templates/components/entity-list-container-content.hbs new file mode 100644 index 0000000000000..d602af804d896 --- /dev/null +++ b/datahub-web/@datahub/lists/addon/templates/components/entity-list-container-content.hbs @@ -0,0 +1,130 @@ + + +
+
+

+ + + {{entityList.listName}} + +

+ + {{! indicator for number of items selected in the list }} + {{#if (and entityList.count entityList.selectedEntities.length)}} + + {{pluralize entityList.selectedEntities.length entityList.name}} selected + + {{/if}} + +

+ {{! Hides the group cta buttons if more than one item is selected }} + {{#if entityList.hasMultipleSelected}} + {{! Implemented as native button elements since handlers are implemented on container }} + + + {{#if (eq entityList.dataModel.displayName "ml-features")}} + + {{/if}} + {{else}} + {{#if entityList.count}} + Showing {{entityList.count}} of {{entityList.count}} {{pluralize entityList.count entityList.name without-count=true}} + {{/if}} + {{/if}} +

+
+ + {{#each entityList.list as |item|}} + {{! TODO: META-8451 this should be a component that search composes instead of a search/search-result component}} + + + + + {{! links to the entity page for this entity }} + + + {{item.entity.entity.name}} + + + + {{! contains cta components for the list item }} + + + {{else}} + +

+ + You haven't added any {{entityList.dataModel.displayName}} to this list + +

+ +

+ You can add a {{entityList.name}} by clicking the Add to list button on the {{entityList.name}}'s entity (detail) page, or via search results +

+ + + Browse all {{entityList.dataModel.displayName}} + +
+ {{/each}} +
+
+
diff --git a/datahub-web/@datahub/lists/addon/utils/index.ts b/datahub-web/@datahub/lists/addon/utils/index.ts index 088130d0bbe94..e90eb208a2862 100644 --- a/datahub-web/@datahub/lists/addon/utils/index.ts +++ b/datahub-web/@datahub/lists/addon/utils/index.ts @@ -1,6 +1,6 @@ import StorageArray from 'ember-local-storage/local/array'; import { IStoredEntityAttrs } from '@datahub/lists/types/list'; -import { DataModelEntityInstance } from '@datahub/data-models/addon/constants/entity'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity/index'; /** * Finds a DataModelEntity's stored attributes in a list of IStoredEntityAttrs or vice-versa, using the urn for equality comparison diff --git a/datahub-web/@datahub/lists/app/components/entity-list-container-content.js b/datahub-web/@datahub/lists/app/components/entity-list-container-content.js new file mode 100644 index 0000000000000..f28e3276d7225 --- /dev/null +++ b/datahub-web/@datahub/lists/app/components/entity-list-container-content.js @@ -0,0 +1 @@ +export { default } from '@datahub/lists/components/entity-list-container-content'; diff --git a/datahub-web/@datahub/lists/app/styles/list-actions/_button-action.scss b/datahub-web/@datahub/lists/app/styles/list-actions/_button-action.scss index 1ff3815f587f4..a23931e8861e3 100644 --- a/datahub-web/@datahub/lists/app/styles/list-actions/_button-action.scss +++ b/datahub-web/@datahub/lists/app/styles/list-actions/_button-action.scss @@ -2,7 +2,7 @@ &#{&} { display: flex; align-items: center; - font-size: 14px; + font-size: fs(standard); line-height: 20px; // create space between text content in span and element diff --git a/datahub-web/@datahub/lists/config/environment.d.ts b/datahub-web/@datahub/lists/config/environment.d.ts index ae0e32f927e78..3951075c5e2d9 100644 --- a/datahub-web/@datahub/lists/config/environment.d.ts +++ b/datahub-web/@datahub/lists/config/environment.d.ts @@ -4,7 +4,10 @@ declare const config: { podModulePrefix: string; locationType: string; rootURL: string; - APP: unknown; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; }; export default config; diff --git a/datahub-web/@datahub/lists/ember-cli-build.js b/datahub-web/@datahub/lists/ember-cli-build.js index dc5a39e1b796e..d9648581d66f8 100644 --- a/datahub-web/@datahub/lists/ember-cli-build.js +++ b/datahub-web/@datahub/lists/ember-cli-build.js @@ -3,7 +3,7 @@ const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); module.exports = function(defaults) { - let app = new EmberAddon(defaults, { + const app = new EmberAddon(defaults, { // Add options here }); diff --git a/datahub-web/@datahub/lists/index.js b/datahub-web/@datahub/lists/index.js index fb3f2e2af6211..ac65e94b66155 100644 --- a/datahub-web/@datahub/lists/index.js +++ b/datahub-web/@datahub/lists/index.js @@ -2,5 +2,5 @@ module.exports = { name: require('./package').name, - isDevelopingAddon: () => false + isDevelopingAddon: () => true }; diff --git a/datahub-web/@datahub/lists/package.json b/datahub-web/@datahub/lists/package.json index aa63e571ff302..18ce7e3147165 100644 --- a/datahub-web/@datahub/lists/package.json +++ b/datahub-web/@datahub/lists/package.json @@ -16,7 +16,7 @@ "test": "tests" }, "scripts": { - "build": "ember build", + "build": "ember build --environment=production", "start": "ember serve", "test": "ember test", "test:all": "ember try:each", @@ -27,57 +27,65 @@ "@datahub/data-models": "0.0.0", "@datahub/utils": "0.0.0", "@fortawesome/ember-fontawesome": "^0.1.13", - "@fortawesome/free-regular-svg-icons": "^5.7.2", - "@fortawesome/free-solid-svg-icons": "^5.7.2", - "@nacho-ui/animations": "^0.0.37", - "@nacho-ui/core": "0.0.34", - "ember-cli-babel": "^7.8.0", - "ember-cli-htmlbars": "^3.0.1", - "ember-cli-typescript": "^2.0.2", - "ember-composable-helpers": "^2.1.0", + "@fortawesome/free-regular-svg-icons": "^5.9.0", + "@fortawesome/free-solid-svg-icons": "^5.9.0", + "@nacho-ui/animations": "^0.0.38", + "@nacho-ui/core": "^0.0.38", + "@types/ember-resolver": "^5.0.7", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^4.2.2", + "ember-cli-typescript": "^3.1.3", + "ember-composable-helpers": "^3.0.3", + "ember-concurrency": "^1.1.2", "ember-inflector": "^3.0.0", "ember-local-storage": "^1.7.0" }, "devDependencies": { "@datahub/metadata-types": "0.0.0", - "@ember/optional-features": "^0.7.0", - "@types/ember": "^3.1.0", - "@types/ember-qunit": "^3.4.6", + "@ember/optional-features": "^1.3.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "@types/ember": "^3.1.1", + "@types/ember-qunit": "^3.4.7", "@types/ember-test-helpers": "^1.0.5", "@types/ember-testing-helpers": "^0.0.3", - "@types/ember__test-helpers": "^0.7.8", - "@types/qunit": "^2.5.4", - "@types/rsvp": "^4.0.2", + "@types/ember__test-helpers": "^0.7.9", + "@types/qunit": "^2.9.0", + "@types/rsvp": "^4.0.3", "@types/sinon": "^7.0.3", + "babel-eslint": "^10.0.3", "broccoli-asset-rev": "^3.0.0", - "ember-cli": "~3.11.0", - "ember-cli-dependency-checker": "^3.1.0", - "ember-cli-htmlbars-inline-precompile": "^2.1.0", - "ember-cli-inject-live-reload": "^2.0.1", + "ember-auto-import": "^1.5.3", + "ember-cli": "~3.16.0", + "ember-cli-dependency-checker": "^3.2.0", + "ember-cli-inject-live-reload": "^2.0.2", "ember-cli-mirage": "^0.4.15", "ember-cli-sass": "^10.0.0", "ember-cli-sri": "^2.1.1", - "ember-cli-typescript-blueprints": "^2.0.0", - "ember-cli-uglify": "^2.1.0", - "ember-concurrency": "^1.1.5", + "ember-cli-typescript-blueprints": "^3.0.0", + "ember-cli-uglify": "^3.0.0", + "ember-cli-update": "^0.52.1", "ember-decorators": "^6.0.0", - "ember-export-application-global": "^2.0.0", - "ember-load-initializers": "^2.0.0", + "ember-export-application-global": "^2.0.1", + "ember-load-initializers": "^2.1.1", "ember-maybe-import-regenerator": "^0.1.6", - "ember-qunit": "^4.4.0", - "ember-resolver": "^5.0.1", + "ember-qunit": "^4.6.0", + "ember-resolver": "^7.0.0", "ember-sinon": "^3.1.0", "ember-sinon-qunit": "^3.4.0", - "ember-source": "~3.11.1", - "ember-source-channel-url": "^1.1.0", - "ember-try": "^1.0.0", + "ember-source": "~3.16.3", + "ember-source-channel-url": "^2.0.1", + "ember-try": "^1.4.0", "loader.js": "^4.7.0", - "qunit-dom": "^0.8.4", + "qunit-dom": "^0.9.1", "sass": "^1.21.0", - "typescript": "^3.5.3" + "typescript": "^3.9.3" }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": "10.* || >= 12" + }, + "ember": { + "edition": "octane" }, "ember-addon": { "configPath": "tests/dummy/config" diff --git a/datahub-web/@datahub/lists/tests/dummy/app/app.js b/datahub-web/@datahub/lists/tests/dummy/app/app.js index b3b2bd677e090..d8e2088b6b0e5 100644 --- a/datahub-web/@datahub/lists/tests/dummy/app/app.js +++ b/datahub-web/@datahub/lists/tests/dummy/app/app.js @@ -1,14 +1,12 @@ import Application from '@ember/application'; -import Resolver from './resolver'; +import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; -const App = Application.extend({ - modulePrefix: config.modulePrefix, - podModulePrefix: config.podModulePrefix, - Resolver -}); +export default class App extends Application { + modulePrefix = config.modulePrefix; + podModulePrefix = config.podModulePrefix; + Resolver = Resolver; +} loadInitializers(App, config.modulePrefix); - -export default App; diff --git a/datahub-web/@datahub/lists/tests/dummy/app/config/environment.d.ts b/datahub-web/@datahub/lists/tests/dummy/app/config/environment.d.ts index f456095a3dc93..2014540e2c07e 100644 --- a/datahub-web/@datahub/lists/tests/dummy/app/config/environment.d.ts +++ b/datahub-web/@datahub/lists/tests/dummy/app/config/environment.d.ts @@ -7,11 +7,15 @@ */ declare const config: { // eslint-disable-next-line @typescript-eslint/no-explicit-any - environment: any; + environment: 'development' | 'test' | 'production'; modulePrefix: string; podModulePrefix: string; locationType: string; rootURL: string; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; }; export default config; diff --git a/datahub-web/@datahub/lists/tests/dummy/app/router.js b/datahub-web/@datahub/lists/tests/dummy/app/router.js index 53c53c6c07590..3c68e32dd992d 100644 --- a/datahub-web/@datahub/lists/tests/dummy/app/router.js +++ b/datahub-web/@datahub/lists/tests/dummy/app/router.js @@ -1,11 +1,9 @@ import EmberRouter from '@ember/routing/router'; import config from './config/environment'; -const Router = EmberRouter.extend({ - location: config.locationType, - rootURL: config.rootURL -}); +export default class Router extends EmberRouter { + location = config.locationType; + rootURL = config.rootURL; +} Router.map(function() {}); - -export default Router; diff --git a/datahub-web/@datahub/lists/tests/dummy/app/styles/app.scss b/datahub-web/@datahub/lists/tests/dummy/app/styles/app.scss index d169b93608406..9e027e7fbf146 100644 --- a/datahub-web/@datahub/lists/tests/dummy/app/styles/app.scss +++ b/datahub-web/@datahub/lists/tests/dummy/app/styles/app.scss @@ -1,3 +1,3 @@ +@import 'nacho-core'; @import 'datahub-utils'; - @import 'entity-lists'; diff --git a/datahub-web/@datahub/lists/tests/dummy/config/environment.js b/datahub-web/@datahub/lists/tests/dummy/config/environment.js index 182d3fcbfa04e..43938b91a0109 100644 --- a/datahub-web/@datahub/lists/tests/dummy/config/environment.js +++ b/datahub-web/@datahub/lists/tests/dummy/config/environment.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = function(environment) { - let ENV = { + const ENV = { modulePrefix: 'dummy', environment, rootURL: '/', @@ -38,9 +38,12 @@ module.exports = function(environment) { // keep test console output quieter ENV.APP.LOG_ACTIVE_GENERATION = false; ENV.APP.LOG_VIEW_LOOKUPS = false; + ENV.RAISE_ON_DEPRECATION = false; + ENV.LOG_STACKTRACE_ON_DEPRECATION = false; ENV.APP.rootElement = '#ember-testing'; ENV.APP.autoboot = false; + ENV.APP.notificationsTimeout = 1; } if (environment === 'production') { diff --git a/datahub-web/@datahub/lists/tests/dummy/config/optional-features.json b/datahub-web/@datahub/lists/tests/dummy/config/optional-features.json index b1902623ae759..b26286e2ecdf3 100644 --- a/datahub-web/@datahub/lists/tests/dummy/config/optional-features.json +++ b/datahub-web/@datahub/lists/tests/dummy/config/optional-features.json @@ -1,3 +1,6 @@ { - "jquery-integration": false + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true } diff --git a/datahub-web/@datahub/lists/tests/dummy/mirage/serializers/application.ts b/datahub-web/@datahub/lists/tests/dummy/mirage/serializers/application.ts index 06097aed3e62d..c95616feae69e 100644 --- a/datahub-web/@datahub/lists/tests/dummy/mirage/serializers/application.ts +++ b/datahub-web/@datahub/lists/tests/dummy/mirage/serializers/application.ts @@ -1,9 +1,9 @@ import { Serializer } from 'ember-cli-mirage'; -export default Serializer.extend({ +export default class extends Serializer { // Removes the default root key - root: false, + root = false; // Since api's are not side-loaded, allow embed. Also, this is required when root is false - embed: true -}); + embed = true; +} diff --git a/datahub-web/@datahub/lists/tests/integration/components/entity-list-container-test.ts b/datahub-web/@datahub/lists/tests/integration/components/entity-list-container-test.ts new file mode 100644 index 0000000000000..f9d01379769a6 --- /dev/null +++ b/datahub-web/@datahub/lists/tests/integration/components/entity-list-container-test.ts @@ -0,0 +1,201 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; +import { stubService } from '@datahub/utils/test-helpers/stub-service'; +import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity'; +import { getRenderedComponent } from '@datahub/utils/test-helpers/register-component'; +import EntityListContainer from '@datahub/lists/components/entity-list-container'; +import { singularize } from 'ember-inflector'; +import { TestContext } from 'ember-test-helpers'; +import { startMirage } from 'dummy/initializers/ember-cli-mirage'; +import { IStoredEntityAttrs } from '@datahub/lists/types/list'; +import { DataModelName } from '@datahub/data-models/constants/entity'; + +module('Integration | Component | entity-list-container', function(hooks): void { + setupRenderingTest(hooks); + + const storage: Array = []; + + hooks.beforeEach(function(this: TestContext): void { + this.set('server', startMirage()); + this.set('entityType', FeatureEntity.displayName); + + stubService( + 'entity-lists-manager', + (() => { + storage.setObjects([]); + + return { + addToList(instance: IStoredEntityAttrs) { + storage.addObject(instance); + }, + removeFromList(instance: IStoredEntityAttrs) { + storage.removeObjects([instance]); + }, + get entities() { + return { + ['ml-features']: storage + }; + } + }; + })() + ); + }); + + hooks.afterEach(function(this: TestContext): void { + this.get('server').shutdown(); + }); + + test('container component attributes', async function(assert): Promise { + const component = await getRenderedComponent({ + ComponentToRender: EntityListContainer, + testContext: this, + template: hbs`` + }); + + assert.equal( + component.name, + singularize(FeatureEntity.displayName), + 'Expected component name property to be singular inflection of test entity' + ); + assert.equal(component.entity, FeatureEntity, 'Expected entity to refer to a DataModeEntity'); + assert.ok( + component.listName.includes(' list'), + 'Expected the listName property to exist on the component and have a "list" string' + ); + assert.notOk(component.hasMultipleSelected, 'Expected selection flag to be false'); + assert.notOk(component.selectedAll, 'Expected selectedAll flag to be false'); + assert.equal( + component.list, + this.owner.lookup('service:entity-lists-manager').entities['ml-features'], + 'Expected the list property be the same reference as the entity lists manager service' + ); + assert.ok( + Array.isArray(component.entityListWithLinkAttrs) && !component.entityListWithLinkAttrs.length, + 'Expected component property entityListWithLinkAttrs to be an empty array' + ); + assert.equal(component.tagName, '', 'Expected container component to be a Fragment'); + }); + + test('component behavior', async function(assert): Promise { + // Add two serialized entities to storage list + storage.addObjects([ + { urn: 'feature-a', type: 'ml-features' as DataModelName }, + { urn: 'feature-b', type: 'ml-features' as DataModelName } + ]); + + const component = await getRenderedComponent({ + ComponentToRender: EntityListContainer, + testContext: this, + template: hbs`` + }); + + assert.equal( + component.instances.length, + storage.length, + 'Expected component to be instantiated with an equal number of entities from storage' + ); + + // Selected first entity + component.onSelectEntity(component.instances[0]); + + assert.equal( + component.listCount, + storage.length, + 'Expected component property listCount to match length of entity list' + ); + assert.notOk( + component.hasMultipleSelected, + 'Expected hasMultipleSelected flag to be false when only one entity is selected' + ); + assert.equal( + component.selectedEntities.length, + 1, + 'Expected the component property selectedEntities to have a length equal to the number of selected entities (1)' + ); + + assert.equal( + component.selectedEntities[0], + component.instances[0], + 'Expected the entity in the component selectedEntities list to refer to the selected entity instance' + ); + + // Select second entity + component.onSelectEntity(component.instances[1]); + + assert.ok( + component.hasMultipleSelected, + 'Expected hasMultipleSelected flag to be true when more than one entity is selected' + ); + assert.equal(component.selectedEntities.length, 2, 'Expected the component property selectedEntities to be two'); + + assert.ok( + component.selectedAll, + 'Expected selectedAll flag to be true when the selectedEntities length is equal to length of entities' + ); + + // Deselect first entity + component.onSelectEntity(component.instances[0]); + + assert.notOk( + component.hasMultipleSelected, + 'Expected hasMultipleSelected flag to be false when only one entity is selected after deselection of entity' + ); + assert.equal( + component.selectedEntities.length, + 1, + 'Expected the component property selectedEntities to have a length equal to the number of selected entities (1) after deselection of entity' + ); + + assert.equal( + component.selectedEntities[0], + component.instances[1], + 'Expected the entity in the component selectedEntities list to refer to the selected entity instance, after deselection of first entity' + ); + + // Remove all selected entities + component.removeAllSelected(); + + await component.hydrateEntitiesTask.last; + + assert.notOk(component.selectedAll, 'Expected the selectedAll flag to be false when all entities are deselected'); + assert.ok( + component.selectedEntities.length === 0, + 'Expected the selectedEntities length to be zero when all entities are deselected' + ); + + component.onSelectEntityList(); + + assert.ok(component.selectedAll, 'Expected the selectedAll flag to be true when onSelectEntityList is called'); + assert.equal( + component.selectedEntities.length, + storage.length, + 'Expected the selectedEntities length to match the storage length when onSelectEntityList is called' + ); + }); + + test('component yield values', async function(assert): Promise { + const component = await getRenderedComponent({ + ComponentToRender: EntityListContainer, + testContext: this, + template: hbs` + +
+ {{container.name}} + {{container.count}} + {{container.dataModel.displayName}} + {{container.listName}} + {{container.selectedAll}} + {{container.hasMultipleSelected}} +
+
+ ` + }); + + assert + .dom('div.test-div') + .hasText( + `${component.name} ${component.listCount} ${FeatureEntity.displayName} ${component.listName} false false` + ); + }); +}); diff --git a/datahub-web/@datahub/lists/tests/integration/components/list-count-test.ts b/datahub-web/@datahub/lists/tests/integration/components/list-count-test.ts new file mode 100644 index 0000000000000..e6c3b761d807c --- /dev/null +++ b/datahub-web/@datahub/lists/tests/integration/components/list-count-test.ts @@ -0,0 +1,63 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render, waitFor } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; +import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity'; +import ListCount, { baseComponentClass } from '@datahub/lists/components/list-count'; +import { getRenderedComponent } from '@datahub/utils/test-helpers/register-component'; +import { stubService } from '@datahub/utils/test-helpers/stub-service'; +import { TestContext } from 'ember-test-helpers'; + +const className = `.${baseComponentClass}`; +const features: Array = []; + +module('Integration | Component | list-count', function(hooks): void { + setupRenderingTest(hooks); + + hooks.beforeEach(function(this: TestContext) { + this.set('entityType', FeatureEntity); + + stubService('entity-lists-manager', { + get entities() { + return { + 'ml-features': features + }; + } + }); + }); + + test('ListCount rendering', async function(assert): Promise { + const component = await getRenderedComponent({ + ComponentToRender: ListCount, + testContext: this, + template: hbs`` + }); + + assert.ok(typeof baseComponentClass === 'string', 'Expected ListCount module to export a baseComponentClass'); + assert.dom(className).exists(); + assert.dom(className).isNotVisible(); + + assert.dom(className).hasText('Ml-feature List (0)'); + + assert.dom(className).hasClass(`${baseComponentClass}--dismiss`); + + assert.equal(component.entity, FeatureEntity, 'Expected computed property entity to be the instance entityType'); + }); + + test('ListCount component behavior', async function(assert): Promise { + assert.expect(3); + + features.pushObject('One'); + + await render(hbs``); + + assert.dom(className).isVisible(); + + assert.dom(className).hasText('Ml-feature List (1)'); + + features.popObject(); + + await waitFor('.entity-list-count--dismiss'); + assert.dom(className).hasText('Ml-feature List (0)'); + }); +}); diff --git a/datahub-web/@datahub/lists/tests/integration/components/toggle-on-list-test.ts b/datahub-web/@datahub/lists/tests/integration/components/toggle-on-list-test.ts new file mode 100644 index 0000000000000..f8531888e0686 --- /dev/null +++ b/datahub-web/@datahub/lists/tests/integration/components/toggle-on-list-test.ts @@ -0,0 +1,84 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render, click } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; +import ToggleOnList, { baseComponentClass } from '@datahub/lists/components/toggle-on-list'; +import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity'; +import { getRenderedComponent } from '@datahub/utils/test-helpers/register-component'; +import { stubService } from '@datahub/utils/test-helpers/stub-service'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { setupErrorHandler } from '@datahub/utils/test-helpers/setup-error'; +import EntityListsManager from '@datahub/lists/services/entity-lists-manager'; +import { IStoredEntityAttrs } from '@datahub/lists/types/list'; + +const className = `.${baseComponentClass}`; +const dataModelInstance = new FeatureEntity('urn'); + +module('Integration | Component | toggle-on-list', function(hooks): void { + setupRenderingTest(hooks); + setupErrorHandler(hooks); + + hooks.beforeEach(function(): void { + stubService( + 'entity-lists-manager', + ((): Partial => { + const features: Array = []; + + return { + addToList(instance: DataModelEntityInstance): ReturnType { + features.addObject(instance); + return this as EntityListsManager; + }, + removeFromList(instance: DataModelEntityInstance): ReturnType { + features.removeObjects([instance]); + return this as EntityListsManager; + }, + get entities(): Record> { + return ({ + 'ml-features': features + } as unknown) as Record>; + } + }; + })() + ); + }); + + test('ToggleOnList rendering', async function(assert): Promise { + assert.expect(2); + this.set('entity', dataModelInstance); + + await render(hbs``); + + assert.dom(className).exists(); + assert.dom(className).hasText('Add to list'); + }); + + test('ToggleOnList toggle behavior', async function(assert): Promise { + this.setProperties({ entity: dataModelInstance }); + + const component = await getRenderedComponent({ + ComponentToRender: ToggleOnList, + testContext: this, + template: hbs`` + }); + + assert.equal( + component.entity, + dataModelInstance, + 'Expected ToggleOnList entity property to be the same instance as dataModelInstance' + ); + + assert.dom(className).hasText('Add to list'); + + assert.notOk(component.entityExistsInList, 'Expected property entityExistsInList to be falsey'); + + await click(className); + + assert.dom(className).hasText('Remove from list'); + assert.ok(component.entityExistsInList, 'Expected property entityExistsInList to be truthy'); + + await click(className); + + assert.dom(className).hasText('Add to list'); + }); +}); diff --git a/datahub-web/@datahub/lists/tests/unit/services/entity-lists-manager-test.ts b/datahub-web/@datahub/lists/tests/unit/services/entity-lists-manager-test.ts new file mode 100644 index 0000000000000..337ef252e5db4 --- /dev/null +++ b/datahub-web/@datahub/lists/tests/unit/services/entity-lists-manager-test.ts @@ -0,0 +1,87 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; +import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity'; +import EntityListsManager from '@datahub/lists/services/entity-lists-manager'; +import { MockEntity } from '@datahub/data-models/entity/mock/mock-entity'; + +module('Unit | Service | entity-lists-manager', function(hooks): void { + setupTest(hooks); + + test('it adds and removes an entity', function(assert): void { + const service: EntityListsManager = this.owner.lookup('service:entity-lists-manager'); + const testEntity = new FeatureEntity('urn'); + + assert.ok(service, 'Expected entity-lists-manager to be a service'); + + // Add an entity to list + service.addToList(testEntity); + + assert.ok(Array.isArray(service.entities[FeatureEntity.displayName]), 'Expected entity list name to be an Array'); + assert.ok(service.entities[FeatureEntity.displayName].length === 1, 'Expected entity list to contain 1 entity'); + + // Add same entity to list + service.addToList(testEntity); + + assert.ok( + service.entities[FeatureEntity.displayName].length === 1, + 'Expected adding pre-existing entity to be a noop, list length should still be 1' + ); + + // Remove entity from list + service.removeFromList(testEntity); + + assert.ok( + service.entities[FeatureEntity.displayName].length === 0, + 'Expected entity list to be empty when removeFromList is called with sole entity' + ); + }); + + test('it adds multiple entities and correctly groups entities', function(assert): void { + const service: EntityListsManager = this.owner.lookup('service:entity-lists-manager'); + const testFeatures = [new FeatureEntity('feature-urn-a'), new FeatureEntity('feature-urn-b')]; + const testMetrics = [new MockEntity('metric-urn-a'), new MockEntity('metric-urn-b')]; + + service.supportedListEntities = [MockEntity.displayName, FeatureEntity.displayName]; + + // Add multiple entity types to list + service.addToList([...testFeatures, ...testMetrics]); + + assert.equal( + service.entities[FeatureEntity.displayName].length, + testMetrics.length, + `Expected test features to be grouped under ${FeatureEntity.displayName}` + ); + assert.equal( + service.entities[MockEntity.displayName].length, + testFeatures.length, + `Expected testMetrics to be grouped under ${MockEntity.displayName}` + ); + + // Remove a single entity from list + service.removeFromList(testMetrics[1]); + + assert.equal( + service.entities[MockEntity.displayName].length, + testMetrics.length - 1, + `Expected stored entities for ${MockEntity.displayName} to be reduced by 1` + ); + + // Re-add removed entity from list + service.addToList(testMetrics[1]); + + assert.equal( + service.entities[MockEntity.displayName].length, + testMetrics.length, + 'Expected a previously removed entity to be eligible for re-addition' + ); + + // Remove multiple entities from list + service.removeFromList(testFeatures); + + assert.equal( + service.entities[FeatureEntity.displayName].length, + 0, + 'Expected removeFromList to remove all entities in argument list' + ); + }); +}); diff --git a/datahub-web/@datahub/lists/tsconfig.json b/datahub-web/@datahub/lists/tsconfig.json index 513f1acedb27d..765d359f0fbbe 100644 --- a/datahub-web/@datahub/lists/tsconfig.json +++ b/datahub-web/@datahub/lists/tsconfig.json @@ -4,8 +4,14 @@ "baseUrl": ".", "rootDir": "../../", "paths": { - "dummy/tests/*": ["tests/*"], - "dummy/*": ["tests/dummy/app/*", "app/*"], + "dummy/mirage/*": ["tests/dummy/mirage/*", "../../@datahub/data-models/tests/dummy/mirage/*"], + "dummy/tests/*": ["tests/*", "../../@datahub/data-models/tests/*"], + "dummy/*": [ + "tests/dummy/app/*", + "app/*", + "../../@datahub/data-models/tests/dummy/app/*", + "../../@datahub/data-models/tests/app/*" + ], "@datahub/lists": ["addon"], "@datahub/lists/*": ["addon/*"], "@datahub/lists/test-support": ["addon-test-support"], @@ -28,6 +34,7 @@ "addon-test-support/**/*", "../../@datahub/data-models/addon/**/*", "../../@datahub/data-models/types/**/*", + "../../@datahub/data-models/tests/**/*", "../../@datahub/metadata-types/addon/**/*", "../../@datahub/metadata-types/types/**/*", "../../@datahub/utils/addon/**/*", diff --git a/datahub-web/@datahub/lists/types/dummy/index.d.ts b/datahub-web/@datahub/lists/types/dummy/index.d.ts index 5f5573f8da32f..bfa534e702782 100644 --- a/datahub-web/@datahub/lists/types/dummy/index.d.ts +++ b/datahub-web/@datahub/lists/types/dummy/index.d.ts @@ -1,8 +1 @@ declare module 'dummy/app'; -declare module 'ember-cli-mirage'; - -declare module 'dummy/initializers/ember-cli-mirage' { - import { IMirageServer } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated'; - - export const startMirage: (env?: string) => IMirageServer; -} diff --git a/datahub-web/@datahub/lists/types/global.d.ts b/datahub-web/@datahub/lists/types/global.d.ts new file mode 100644 index 0000000000000..fb43fe7e1c71b --- /dev/null +++ b/datahub-web/@datahub/lists/types/global.d.ts @@ -0,0 +1,6 @@ +// Types for compiled templates +declare module '@datahub/lists/templates/*' { + import { TemplateFactory } from 'htmlbars-inline-precompile'; + const tmpl: TemplateFactory; + export default tmpl; +} diff --git a/datahub-web/@datahub/lists/types/list.d.ts b/datahub-web/@datahub/lists/types/list.d.ts index aac62b7e5247d..3e19e6849b23f 100644 --- a/datahub-web/@datahub/lists/types/list.d.ts +++ b/datahub-web/@datahub/lists/types/list.d.ts @@ -1,6 +1,6 @@ import EntityListsManager from '@datahub/lists/services/entity-lists-manager'; import EmberObject from '@ember/object'; -import { DataModelEntityInstance } from '@datahub/data-models/entity/entity-factory'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; /** * Return type for the Computed Property EntityListTrampoline diff --git a/datahub-web/@datahub/metadata-types/.npmignore b/datahub-web/@datahub/metadata-types/.npmignore index 2f20afe3bf827..410da08fbf3f7 100644 --- a/datahub-web/@datahub/metadata-types/.npmignore +++ b/datahub-web/@datahub/metadata-types/.npmignore @@ -11,6 +11,7 @@ /.ember-cli /.eslintignore /.eslintrc.js +/.git/ /.gitignore /.watchmanconfig /.travis.yml diff --git a/datahub-web/@datahub/metadata-types/.travis.yml b/datahub-web/@datahub/metadata-types/.travis.yml index 00af6f0e1b690..44e5c6c920f29 100644 --- a/datahub-web/@datahub/metadata-types/.travis.yml +++ b/datahub-web/@datahub/metadata-types/.travis.yml @@ -3,7 +3,7 @@ language: node_js node_js: # we recommend testing addons with the same minimum supported node version as Ember CLI # so that your addon works for all apps - - "6" + - '10' sudo: false dist: trusty @@ -27,8 +27,8 @@ jobs: include: # runs linting and tests with current locked deps - - stage: "Tests" - name: "Tests" + - stage: 'Tests' + name: 'Tests' install: - yarn install --non-interactive script: @@ -36,13 +36,13 @@ jobs: - yarn lint:js - yarn test - - name: "Floating Dependencies" + - name: 'Floating Dependencies' script: - yarn test # we recommend new addons test the current and previous LTS # as well as latest stable release (bonus points to beta/canary) - - stage: "Additional Tests" + - stage: 'Additional Tests' env: EMBER_TRY_SCENARIO=ember-lts-2.16 - env: EMBER_TRY_SCENARIO=ember-lts-2.18 - env: EMBER_TRY_SCENARIO=ember-release diff --git a/datahub-web/@datahub/metadata-types/LICENSE.md b/datahub-web/@datahub/metadata-types/LICENSE.md index f8d1edb3b7d6e..0d02ed0266734 100644 --- a/datahub-web/@datahub/metadata-types/LICENSE.md +++ b/datahub-web/@datahub/metadata-types/LICENSE.md @@ -1,9 +1,13 @@ -The MIT License (MIT) +Copyright (c) 2020 LinkedIn -Copyright (c) 2019 +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + http://www.apache.org/licenses/LICENSE-2.0 -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/datahub-web/@datahub/metadata-types/README.md b/datahub-web/@datahub/metadata-types/README.md index d4101aa2b511d..a638a12c4e340 100644 --- a/datahub-web/@datahub/metadata-types/README.md +++ b/datahub-web/@datahub/metadata-types/README.md @@ -13,7 +13,7 @@ ember install @datahub/metadata-types Once installed you may include types for the namespace that you are interested in consuming in your application. ```ts -import { IDatasetView } from '@datahub/metadata-types/entity/dataset'; +import { IDatasetApiView } from '@datahub/metadata-types/entity/dataset'; ``` ## Contributing @@ -22,7 +22,7 @@ import { IDatasetView } from '@datahub/metadata-types/entity/dataset'; The folder structure is laid out similarly to how psdc models are namespaced. This is to aid in familiarity and ease of mental mapping between the TypeScript types defined here and the respective MP models. -Please adhere to similar namespace and path structure when creating new types that are representative of PDL models. +Please adhere to similar namespace and path structure when creating new types that are representative of pdsc models. For cases where a type is needed, for example, an alias for convenience, that is not a corollary with a MP defined model, these types should be defined in local-types if there is no js emit. @@ -57,4 +57,4 @@ For more information on using ember-cli, visit [https://ember-cli.com/](https:// ## License -This project is licensed under the [MIT License](LICENSE.md). +This project is licensed under the [Apache License](LICENSE.md). diff --git a/datahub-web/@datahub/metadata-types/addon/constants/chart/protocol-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/chart/protocol-type.ts new file mode 100644 index 0000000000000..81842dc52002a --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/chart/protocol-type.ts @@ -0,0 +1,14 @@ +/** + * https://jarvis.corp.linkedin.com/codesearch/result/?name=InchartsChartQuery.pdsc&path=metadata-models%2Fmetadata-models%2Fsrc%2Fmain%2Fpegasus%2Fcom%2Flinkedin%2Fchart&reponame=multiproducts%2Fmetadata-models#InchartsChartQuery + * The type of protocol for the chart query. + */ +export enum ProtocolType { + // Use Raptor query language for the chart query. + 'RQL' = 'RQL', + // Use Prism for the chart query. + 'PRISM' = 'PRISM', + // Use Rshiny iframe spec for the chart query. + 'RSHINY' = 'RSHINY', + // Use Vizpack spec for the chart query. + 'VIZPACK' = 'VIZPACK' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/common/fabric-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/common/fabric-type.ts index fe1b0b28fc7a5..0c01d1bfcb1b0 100644 --- a/datahub-web/@datahub/metadata-types/addon/constants/common/fabric-type.ts +++ b/datahub-web/@datahub/metadata-types/addon/constants/common/fabric-type.ts @@ -5,12 +5,24 @@ * @enum {string} */ export enum FabricType { - // Designates development fabrics + // Designates DEV fabrics, although it could be machines in EI physical fabric like EI1 DEV = 'DEV', - // Designates early-integration (staging) fabrics + // Designates Early-Integration fabrics, such EI1, EI2 etc. EI = 'EI', - // Designates production fabrics + // Designates production fabrics, such as prod-ltx1, prod-lva1 etc. PROD = 'PROD', - // Designates corporation fabrics - CORP = 'CORP' + // Designates corporation fabrics, such as corp-eat1, corp-lca1 etc. + CORP = 'CORP', + // Designates infrastructure testing fabrics, such as lit-lca1-1. + LIT = 'LIT', + // Designates Prime fabric group for project Einstein within Linkedin. + PRIME = 'PRIME', + // Designates production fabrics deployed in the Mergers and Acquisitions network (MANDA). + MANDA = 'MANDA', + // Designates production fabrics deployed in the Azure control plane. + AZURECONTROL = 'AZURECONTROL', + // Designates production fabrics deployed in the Azure. + AZUREPROD = 'AZUREPROD', + // Designates Early-Integration fabrics deployed in Azure + AZUREEI = 'AZUREEI' } diff --git a/datahub-web/@datahub/metadata-types/addon/constants/common/ownership-source-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/common/ownership-source-type.ts deleted file mode 100644 index 443e7c833fa2a..0000000000000 --- a/datahub-web/@datahub/metadata-types/addon/constants/common/ownership-source-type.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * The type of the source - * @namespace common - * @export - * @enum {number} - */ -export enum OwnershipSourceType { - // Auditing system or audit logs - Audit = 'AUDIT', - // Database, e.g. GRANTS table - Database = 'DATABASE', - // File system, e.g. file/directory owner - FileSystem = 'FILE_SYSTEM', - // Issue tracking system, e.g. Jira - IssueTrackingSystem = 'ISSUE_TRACKING_SYSTEM', - // Manually provided by a user - Manual = 'MANUAL', - // Other ownership-like service, e.g. Nuage, ACL service etc - Service = 'SERVICE', - // SCM system, e.g. GIT, SVN - SourceControl = 'SOURCE_CONTROL', - // Other sources - Other = 'OTHER' -} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/common/ownership-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/common/ownership-type.ts deleted file mode 100644 index 27fafc148f5b3..0000000000000 --- a/datahub-web/@datahub/metadata-types/addon/constants/common/ownership-type.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Owner category or owner role - * @export - * @enum {string} - */ -export enum OwnershipType { - // A person or group that is in charge of developing the code - Developer = 'DEVELOPER', - // A person who has the most knowledge. Oftentimes also the lead developer. - SubjectMatterExpert = 'SUBJECT_MATTER_EXPERT', - // A person or a group that overseas the operation, e.g. a DBA or SRE. - Delegate = 'DELEGATE', - // A person, group, or service that produces/generates the data - Producer = 'PRODUCER', - // A person, group, or service that consumes the data - Consumer = 'CONSUMER', - // A person or a group that has direct business interest - Stakeholder = 'STAKEHOLDER' -} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/dashboard/access-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/dashboard/access-type.ts new file mode 100644 index 0000000000000..02086656e0168 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/dashboard/access-type.ts @@ -0,0 +1,9 @@ +// Access level of the dashboard. It has impact on visibility in search results +export enum AccessType { + // Team certified dashboard, which is visible from search results. + CERTIFIED = 'CERTIFIED', + // Public accessible dashboard, which is visible from search results. + PUBLIC = 'PUBLIC', + // Private accessible dashboard, which is not visible from search results. + PRIVATE = 'PRIVATE' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-data-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-data-type.ts new file mode 100644 index 0000000000000..120485a7a1877 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-data-type.ts @@ -0,0 +1,110 @@ +/** + * The business / semantic meaning or data type of data fields. http://go/gdpr-taxonomy + * @export + * @namespace Dataset + * @enum {string} + */ +export enum ComplianceDataType { + // "Personal physical address" + Address = 'ADDRESS', + // "ID for an LMS advertiser" + AdvertiserId = 'ADVERTISER_ID', + // "ID for a shared URL (deprecated version of INGESTED_CONTENT_ID)" + ArticleId = 'ARTICLE_ID', + // "Authentication token, including third party tokens" + AuthenticationToken = 'AUTHENTICATION_TOKEN', + // "City, State, Region, etc" + CityStateRegion = 'CITY_STATE_REGION', + // "ID for companies or organizations that created content at LinkedIn" + CompanyId = 'COMPANY_ID', + // "ID for a content topic. See go/contenttopic for more details" + ContentTopicId = 'CONTENT_TOPIC_ID', + // "id for a contract, a grouping of enterprise users for an lts product" + ContractId = 'CONTRACT_ID', + // "Cookies, beacons, browser ID" + CookieBeaconBrowserId = 'COOKIE_BEACON_BROWSER_ID', + // "[Deprecated]: Use CUSTOM FieldFormat instead" + CustomId = 'CUSTOM_ID', + // "Date of birth of a person" + DateOfBirth = 'DATE_OF_BIRTH', + // "Device ID, Advertising ID" + DeviceIdAdvertisingId = 'DEVICE_ID_ADVERTISING_ID', + // "ID for a contract within Elevate (LEAP). Corresponds to a LeapContractUrn." + ElevateContractId = 'ELEVATE_CONTRACT_ID', + // "ID for a user on a contract within Elevate (LEAP). Corresponds to a LeapSeatV2Urn" + ElevateSeatId = 'ELEVATE_SEAT_ID', + // "Personal email address" + Email = 'EMAIL', + // "ID for enterprise account" + EnterpriseAccountId = 'ENTERPRISE_ACCOUNT_ID', + // "ID for enterprise profile" + EnterpriseProfileId = 'ENTERPRISE_PROFILE_ID', + // "Time of an event, e.g. header.time" + EventTime = 'EVENT_TIME', + // "Financial number: order amount, payment amount, etc" + FinancialNumber = 'FINANCIAL_NUMBER', + // "To capture free-formed user generated content. See go/Metadata/UGC" + FreeformedUgc = 'FREEFORMED_UGC', + // "ID for LinkedIn groups" + GroupId = 'GROUP_ID', + // "ID that is standard protocol-based, verifiable, globally unique, and allow communication with members. See https://iwww.corp.linkedin.com/wiki/cf/pages/viewpage.action?pageId=102778068 for more details" + Handles = 'HANDLES', + // "ID for a HireStream in AutomatedSourcing. Note: this is a legacy ID which is now derived from a SourcingChannelUrn. It is used to ensure that legacy data is compliant." + HireStreamId = 'HIRE_STREAM_ID', + // "ID for a shared URL. See go/contentingestion for more details" + IngestedContentId = 'INGESTED_CONTENT_ID', + // "ID for an interest. See go/interesttagging for more details" + InterestId = 'INTEREST_ID', + // "IPv4 or IPv6 address", + IpAddress = 'IP_ADDRESS', + // "ID for a job posting" + JobId = 'JOB_ID', + // "Latitude and Longitude" + LatitudeLongitude = 'LATITUDE_LONGITUDE', + // "Logs that can potentially contain PII" + LogsPii = 'LOGS_PII', + // "Lynda User ID of the Lynda Enterprise Account Master Admin" + LyndaMasterAdminId = 'LYNDA_MASTER_ADMIN_ID', + // "User ID of Lynda.com user" + LyndaUserId = 'LYNDA_USER_ID', + // "ID for LinkedIn members" + MemberId = 'MEMBER_ID', + // "Member's photo" + MemberPhoto = 'MEMBER_PHOTO', + // "Private message content" + Message = 'MESSAGE', + // "[Deprecated] Specify all IDs explicitly" + MixedId = 'MIXED_ID', + // "Name: first name, last name, full name" + Name = 'NAME', + // "National ID number, SSN, driver license" + NationalId = 'NATIONAL_ID', + // "None of the other types apply" + None = 'NONE', + // "[Deprecated] Use LOGS_PII for logs containing PII and UNSTRUCTURED_PII for other unstructured data" + OtherPii = 'OTHER_PII', + // "Password and credentials" + PasswordCredential = 'PASSWORD_CREDENTIAL', + // "Payment info: credit card, bank account" + PaymentInfo = 'PAYMENT_INFO', + // "Phone numbers, phone number URN" + Phone = 'PHONE', + // "Member Profile url" + ProfileUrl = 'PROFILE_URL', + // "Salary data" + Salary = 'SALARY', + // "ID for a user of an LTS enterprise product" + SeatId = 'SEAT_ID', + // "ID for a slideshare user" + SlideshareUserId = 'SLIDESHARE_USER_ID', + // "Social network ID: facebook ID, WeChat ID" + SocialNetworkId = 'SOCIAL_NETWORK_ID', + // "Transaction time, e.g. CREATED_DATE, RECONCILED_DATE, ORDER_DATE" + TransactionTime = 'TRANSACTION_TIME', + // "ID for an ugc post. UGC stands for User Generated Content aka sharing on LinkedIn, publishing articles, image/video shares. See go/ugcbackend for more details" + UgcId = 'UGC_ID', + // "Unstructured data, e.g. serialized blob, that can contain PII" + UnstructuredPii = 'UNSTRUCTURED_PII', + // "Account ID in Zuora for Lynda.com users + ZuoraAccountId = 'ZUORA_ACCOUNT_ID' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-field-annotation.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-field-annotation.ts new file mode 100644 index 0000000000000..374d12f980019 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-field-annotation.ts @@ -0,0 +1,23 @@ +import { + ComplianceFieldIdValue, + NonMemberIdLogicalType, + MemberIdLogicalType +} from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; + +/** + * The basic interface level definition for a compliance annotation tag. This should primarily be used only be the + * DatasetComplianceAnnotation class and that is used externally to determine interface. + * TODO: META-10942 Relocate to @linkedin/metadata-types + * @export + * @namespace Dataset + */ +export interface IComplianceFieldAnnotation { + identifierField: string; + identifierType?: ComplianceFieldIdValue | NonMemberIdLogicalType | string | null; + logicalType?: MemberIdLogicalType | null; + nonOwner?: boolean | null; + pii: boolean; + readonly?: boolean; + securityClassification: string | null; + valuePattern?: string | null; +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-field-types.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-field-types.ts new file mode 100644 index 0000000000000..408f4863fdba2 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-field-types.ts @@ -0,0 +1,97 @@ +/** + * Defines the string values that are allowed for a classification + * @export + * @namespace Dataset + * @enum {string} + */ +export enum Classification { + Confidential = 'CONFIDENTIAL', + LimitedDistribution = 'LIMITED_DISTRIBUTION', + HighlyConfidential = 'HIGHLY_CONFIDENTIAL', + Internal = 'GENERAL', + Public = 'PUBLIC' +} + +/** + * Defines the string values for a logical type that is a member ID + * @export + * @namespace Dataset + * @enum {string} + */ +export enum MemberIdLogicalType { + // Numerical format, 12345 + Numeric = 'NUMERIC', + // URN format, urn:li:member:12345 + Urn = 'URN', + // Reversed URN format, 12345:member:li:urn + ReversedUrn = 'REVERSED_URN', + // [Deprecated] Use CUSTOM format + pattern instead + CompositeUrn = 'COMPOSITE_URN', + // Any other non-standard format. A pattern for the value is expected to be provided + Custom = 'CUSTOM', + // Data is stored in reversible encoded/serialized/encrypted format + Encoded = 'ENCODED', + // Data is stored in irreversible hashed format + Hashed = 'HASHED' +} + +/** + * Enum of values for non-member id / generic logical types + * @export + * @namespace Dataset + * @enum {string} + */ +export enum NonMemberIdLogicalType { + Name = 'NAME', + Email = 'EMAIL', + Phone = 'PHONE', + Address = 'ADDRESS', + LatitudeLongitude = 'LATITUDE_LONGITUDE', + CityStateRegion = 'CITY_STATE_REGION', + IpAddress = 'IP_ADDRESS', + FinancialNumber = 'FINANCIAL_NUMBER', + PaymentInfo = 'PAYMENT_INFO', + PasswordCredential = 'PASSWORD_CREDENTIAL', + AuthenticationToken = 'AUTHENTICATION_TOKEN', + Message = 'MESSAGE', + NationalId = 'NATIONAL_ID', + SocialNetworkId = 'SOCIAL_NETWORK_ID', + EventTime = 'EVENT_TIME', + TransactionTime = 'TRANSACTION_TIME', + CookieBeaconBrowserId = 'COOKIE_BEACON_BROWSER_ID', + DeviceIdAdvertisingId = 'DEVICE_ID_ADVERTISING_ID' +} + +/** + * Possible string values for field Identifier type in compliance + * @export + * @namespace Dataset + * @enum {string} + */ +export enum ComplianceFieldIdValue { + None = 'NONE', + MemberId = 'MEMBER_ID', + SubjectMemberId = 'SUBJECT_MEMBER_ID', + GroupId = 'GROUP_ID', + CompanyId = 'COMPANY_ID', + MixedId = 'MIXED_ID', + CustomId = 'CUSTOM_ID', + EnterpriseProfileId = 'ENTERPRISE_PROFILE_ID', + EnterpriseAccountId = 'ENTERPRISE_ACCOUNT_ID', + ContractId = 'CONTRACT_ID', + SeatId = 'SEAT_ID', + AdvertiserId = 'ADVERTISER_ID', + SlideshareUserId = 'SLIDESHARE_USER_ID' +} + +/** + * String values for the keys in the export policy data types + * @export + * @namespace Dataset + * @enum {string} + */ +export enum ExportPolicyKeys { + UGC = 'containsUserGeneratedContent', + UAGC = 'containsUserActionGeneratedContent', + UDC = 'containsUserDerivedContent' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-suggestion.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-suggestion.ts new file mode 100644 index 0000000000000..18ad9cc594260 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance-suggestion.ts @@ -0,0 +1,23 @@ +import { IComplianceFieldAnnotation } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-annotation'; + +/** + * Raw data format of a compliance suggestion for an entity, in this case a dataset + * @export + * @namespace Dataset + */ +export interface IEntityComplianceSuggestion { + confidenceLevel: number; + suggestion: IComplianceFieldAnnotation; + uid: string; +} + +/** + * Possible sources for a suggestion to originate from. Currently we only support and worry + * about system suggestions + * @export + * @namespace Dataset + * @enum {string} + */ +export enum SuggestionSource { + system = 'system' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance/classifiers.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance/classifiers.ts new file mode 100644 index 0000000000000..4b0c6ec79ebff --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance/classifiers.ts @@ -0,0 +1,34 @@ +/** + * List of string values for every dataset classifier + * @enum {string} + */ +export enum DatasetClassifiers { + CONNECTIONS_FOLLOWERS_FOLLOWING = 'Connections + Followers + Following', + PROFILE_DATA = 'Profile Data', + MESSAGING_DATA = 'Messaging Data (Metadata + Content)', + THIRD_PARTY_INTEGRATIONS = 'Third Party Integrations In Use', + ACTIVITY = 'Activity (Newsfeed Posts + Shares + Likes)', + SETTINGS = 'Settings (Mail Settings, All psettings values)', + JOB_APPLICATION_FLOW_DATA = 'Job Application Flow Data (Job Application + AWLI + Resumes + Application Answers)', + ENTERPRISE_PRODUCT_DATA = 'Enterprise Product Data', + ACCOUNT_STATUS = 'Account Status', + ADDRESS_BOOK_IMPORT_DATA = 'Address Book Import Data', + MICROSOFT_DATA = 'Data from Microsoft', + SUBSIDIARY_DATA = 'Data from companies LinkedIn acquired (Lynda, Slideshare, Connectifier, Bizo, etcetera)', + THIRD_PARTY_DATA = 'Data from other Third-party Integrations', + DEVICE_DATA = 'Device Data', + SEARCH_HISTORY = 'Search History', + COURSE_VIEWING_HISTORY = 'Course Viewing History', + WVMP = "Who's Viewed My Profile", + PROFILE_VIEWS_BY_ME = 'Profile Views (by me)', + ADVERTISING_DATA = 'Advertising related (LMS) Data', + USAGE_ERROR_CONNECTIVITY_DATA = 'Usage, Error Reporting, Connectivity Data', + OTHER_CLICKSTREAM_BROWSING_DATA = 'Other Clickstream Data + Browsing history', + EMPLOYEE_DATA = 'Employee Data' +} + +/** + * Defines a type alias for a DatasetClassification interface, constrains the keys as attributes on DatasetClassifiers + * and specifies value types + */ +export type DatasetClassification = { [K in keyof typeof DatasetClassifiers]: boolean | void }; diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance/purge-policy.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance/purge-policy.ts new file mode 100644 index 0000000000000..b5da19c83ea9f --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/compliance/purge-policy.ts @@ -0,0 +1,13 @@ +/** + * Available values for the purge policy + * @enum {string} + */ +export enum PurgePolicy { + AutoPurge = 'AUTO_PURGE', + ManualPurge = 'MANUAL_PURGE', + AutoLimitedRetention = 'LIMITED_RETENTION', + AutoLimitedWithLocking = 'LIMITED_RETENTION_WITH_LOCKING', + ManualLimitedRetention = 'MANUAL_LIMITED_RETENTION', + PurgeExempt = 'PURGE_EXEMPTED', + NotApplicable = 'PURGE_NOT_APPLICABLE' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/field-format.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/field-format.ts new file mode 100644 index 0000000000000..287488be898a3 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/field-format.ts @@ -0,0 +1,24 @@ +/** + * The field format that ties back to what kind of PII is found in the identifierType for a compliance annotation + * @export + * @namespace dataset + * @enum {number} + */ +export enum FieldFormat { + // Numerical format, 12345 + Numeric = 'NUMERIC', + // URN format, urn:li:member:12345 + Urn = 'URN', + // Reversed URN format, 12345:member:li:urn + ReversedUrn = 'REVERSED_URN', + // [Deprecated] Use CUSTOM format + pattern instead + CompositeUrn = 'COMPOSITE_URN', + // Any other non-standard format. A pattern for the value is expected to be provided + Custom = 'CUSTOM', + // Data is stored in reversible encoded/serialized/encrypted format + Encoded = 'ENCODED', + // Data is stored in irreversible hashed format + Hashed = 'HASHED', + // Any unencoded string-based field that is neither numeric nor a URN, e.g. alphanumeric strings, GUID etc. + Raw = 'RAW' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/ump-dataset-azkaban-flow-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/ump-dataset-azkaban-flow-type.ts new file mode 100644 index 0000000000000..3c431a5570e10 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/ump-dataset-azkaban-flow-type.ts @@ -0,0 +1,12 @@ +/** + * Azkaban flow type + * @export + * @namespace Dataset + * @enum {string} + */ +export enum UMPDatasetAzkabanFlowType { + // Choose this option if Azkaban project is in production + Production = 'PRODUCTION', + // Choose this option if Azkaban project is in backfill + BackFill = 'BACKFILL' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/ump-flows.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/ump-flows.ts new file mode 100644 index 0000000000000..30908db71ffbd --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/dataset/ump-flows.ts @@ -0,0 +1,9 @@ +/** + * Available UMP flow frequencies + */ +export enum UMPFlowFrequency { + DAILY, + HOURLY, + WEEKLY, + MONTHLY +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/availability-environment-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/availability-environment-type.ts new file mode 100644 index 0000000000000..49d865af551f4 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/availability-environment-type.ts @@ -0,0 +1,12 @@ +/** + * Availability of the feature in different environments + * @enum {string} + */ +export enum AvailabilityEnvironmentType { + // Feature is available in online environment + Online = 'ONLINE', + // Feature is available offline + Offline = 'OFFLINE', + // Feature is available nearline + Nearline = 'NEARLINE' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-aggregation-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-aggregation-type.ts new file mode 100644 index 0000000000000..68cb9d9cbb5e3 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-aggregation-type.ts @@ -0,0 +1,20 @@ +/** + * Frame feature aggregation functions used for sliding window aggregation. + * See https://iwww.corp.linkedin.com/wiki/cf/display/ENGS/Frame+User+Manual for more details + * @export + * @enum {string} + */ +export enum FeatureAggregationType { + // Represents the SUM aggregation function to be applied on the data + Sum = 'SUM', + // Represents the COUNT aggregation function to be applied on the data + Count = 'COUNT', + // Represents the MAX aggregation function to be applied on the data + Max = 'MAX', + // Represents the TIMESINCE aggregation function to be applied on the data + TimeSince = 'TIMESINCE', + // Represents the AVG aggregation function to be applied on the data + Avg = 'AVG', + // Represents the LATEST aggregation function to be applied on the data + Latest = 'LATEST' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-infer-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-infer-type.ts new file mode 100644 index 0000000000000..d5a65e492da1b --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-infer-type.ts @@ -0,0 +1,11 @@ +/** + * Infer type of the feature. Indicates whether the feature is derived directly from fact data or inferred + * @export + * @enum {string} + */ +export enum FeatureInferType { + // Feature is fact type + Fact = 'FACT', + // Feature is inferred type + Inferred = 'INFERRED' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-status-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-status-type.ts new file mode 100644 index 0000000000000..5b4b9fa4c0108 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-status-type.ts @@ -0,0 +1,17 @@ +/** + * Status of the feature. Used to define the status of the feature (whether it is published) + * @export + * @enum {string} + */ +export enum FeatureStatusType { + // Feature owner approved the feature. It should be viewed and used by all feature users + Published = 'PUBLISHED', + // Feature owner is editing the feature or not yet published the feature + Unpublished = 'UNPUBLISHED', + // Feature owner already deleted feature in frame MP + Deleted = 'DELETED', + // Feature as not suitable to show, either deprecated, being marked as not healthy or other reasons determined by owner + Hidden = 'HIDDEN', + // Feature information is not completed by owner + Incomplete = 'INCOMPLETE' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-tier-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-tier-type.ts new file mode 100644 index 0000000000000..af94e49974a54 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/feature-tier-type.ts @@ -0,0 +1,19 @@ +/** + * Tier of a machine learning feature. See go/datahub/proml/ml-feature-tiers for more info + * @export + * @enum {string} + */ +export enum FeatureTierType { + // The feature is deprecated and is not recommended for external adoption + Deprecated = 'DEPRECATED', + // The feature producer would like to keep the feature used by the people listed as owners. The feature might or might not be production ready + // Commenting PRIVATE Tier out so that it is hidden from the user. We want to make everything PUBLIC Tier since all the features are already in frame + // Uncomment below if PRIVATE option for Tier needs to be re-enabled for user selection + //Private = 'PRIVATE', + // The feature is published for use by other teams. However there is no commitment for feature maintenance and monitoring by the feature owner. + // The feature user should contact the feature owner for maintenance contract", + Public = 'PUBLIC', + // This feature is supposed to be a Horizontal Feature. The feature is published for use by other teams. + // And the feature producer is committed to maintain and monitor the feature in the whole feature life cycle before deprecation. + PublicProduction = 'PUBLIC_PRODUCTION' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/frame-feature-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/frame-feature-type.ts new file mode 100644 index 0000000000000..ad7f01dba8de4 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/frame-feature-type.ts @@ -0,0 +1,17 @@ +/** + * Frame feature type + * @export + * @enum {number} + */ +export enum FrameFeatureType { + // Term name is the category, value is 1.0, or a real number + Categorical = 'CATEGORICAL', + // Term name is the category, value is 1.0, or a real number, Term vector may contains multiple values + CategoricalSet = 'CATEGORICAL_SET', + // Term name is a string, value is a real number, general form + TermVector = 'TERM_VECTOR', + // Term name is empty, value is a real number + Numeric = 'NUMERIC', + // Term name is index of the vector, value is a real number + DenseVector = 'DENSE_VECTOR' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/frame-source-type.ts b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/frame-source-type.ts new file mode 100644 index 0000000000000..467b4b6556386 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/entity/feature/frame/frame-source-type.ts @@ -0,0 +1,19 @@ +/** + * Frame feature source type + * @export + * @enum {number} + */ +export enum FrameSourceType { + // Features that are generated from a HDFS source dataset + Hdfs = 'HDFS', + // Features that are generated from an Espresso source + Espresso = 'ESPRESSO', + // Features that are generated from a Voldemort source + Voldemort = 'VOLDEMORT', + // Features that are generated from a Restli source + RestLi = 'RESTLI', + // Features that are generated from a Venice source + Venice = 'VENICE', + // Features that are generated using a passthrough source + Passthrough = 'PASSTHROUGH' +} diff --git a/datahub-web/@datahub/metadata-types/addon/constants/metadata/aspect.ts b/datahub-web/@datahub/metadata-types/addon/constants/metadata/aspect.ts index e0dc0a25e91eb..b87b26bee7251 100644 --- a/datahub-web/@datahub/metadata-types/addon/constants/metadata/aspect.ts +++ b/datahub-web/@datahub/metadata-types/addon/constants/metadata/aspect.ts @@ -8,6 +8,9 @@ import { Snapshot } from '@datahub/metadata-types/types/metadata/snapshot'; * @type Record */ export const SnapshotMetadataAspectKey: Record = { + UmpDatasetProperties: 'com.linkedin.dataset.ump.UMPDatasetProperties', + RetentionPolicy: 'com.linkedin.dataset.RetentionPolicy', + ComplianceInfo: 'com.linkedin.dataset.ComplianceInfo', Ownership: 'com.linkedin.common.Ownership' }; @@ -18,7 +21,7 @@ export const SnapshotMetadataAspectKey: Record = { * essentially Object.values(SnapshotMetadataAspectKey) as a type * @type {string} */ -export type SnapshotMetadataAspectKeyName = (typeof SnapshotMetadataAspectKey)[string]; +export type SnapshotMetadataAspectKeyName = typeof SnapshotMetadataAspectKey[string]; /** * Takes a lookup key on the aspects metadata object, and returns an iteratee function that is truthy when it's argument @@ -26,9 +29,10 @@ export type SnapshotMetadataAspectKeyName = (typeof SnapshotMetadataAspectKey)[s * @param {SnapshotMetadataAspectKeyName} metadataAspectKey the metadata aspect key to find on the aspect's metadata object * @returns {((aspect: ArrayElement) => boolean)} */ -const getMetadataAspectWithMetadataAspectKey = (metadataAspectKey: SnapshotMetadataAspectKeyName) => ( - aspect: MetadataAspect -): boolean => aspect.hasOwnProperty(metadataAspectKey); +const getMetadataAspectWithMetadataAspectKey = ( + metadataAspectKey: SnapshotMetadataAspectKeyName +): ((aspect: MetadataAspect) => boolean) => (aspect: MetadataAspect): boolean => + aspect.hasOwnProperty(metadataAspectKey); /** * Get the value of the specific metadata keyed by metadataAspectKey from the provided metadata aspect @@ -48,12 +52,14 @@ const getMetadataAspectValue = ( * aspects. * A snapshot's aspects list can contain multiple metadata aspects, but each can only have one of the keys in SnapshotMetadataAspectKeyName * @param {Snapshot} snapshot the metadata snapshot to read from - * @returns {(metadataAspectKey:SnapshotMetadataAspectKeyName) => MetadataAspect['metadata'][SnapshotMetadataAspectKeyName]} + * @returns {(metadataAspectKey:SnapshotMetadataAspectKeyName) => MetadataAspect[SnapshotMetadataAspectKeyName]} */ -export const getMetadataAspect = (snapshot: Snapshot = {} as Snapshot) => ( +export const getMetadataAspect = ( + snapshot?: Snapshot +): ((key: SnapshotMetadataAspectKeyName) => MetadataAspect[SnapshotMetadataAspectKeyName]) => ( metadataAspectKey: SnapshotMetadataAspectKeyName -) => { - const { aspects = [] } = snapshot; +): MetadataAspect[SnapshotMetadataAspectKeyName] => { + const { aspects = [] } = snapshot || {}; // Find the aspect with the metadata key that matches the passed in metadataAspectKey const [relevantAspect] = aspects.filter(getMetadataAspectWithMetadataAspectKey(metadataAspectKey)); diff --git a/datahub-web/@datahub/metadata-types/addon/constants/metadata/top-consumers.ts b/datahub-web/@datahub/metadata-types/addon/constants/metadata/top-consumers.ts new file mode 100644 index 0000000000000..7d0dda1b4da3b --- /dev/null +++ b/datahub-web/@datahub/metadata-types/addon/constants/metadata/top-consumers.ts @@ -0,0 +1,7 @@ +/** + * The expected types of top consumers that consume an entity. + */ +export enum TopConsumer { + USER = 'user', + GROUP = 'group' +} diff --git a/datahub-web/@datahub/metadata-types/addon/utils/common/ownership/owner.ts b/datahub-web/@datahub/metadata-types/addon/utils/common/ownership/owner.ts index 77dfabe2f5d32..4b660729e250a 100644 --- a/datahub-web/@datahub/metadata-types/addon/utils/common/ownership/owner.ts +++ b/datahub-web/@datahub/metadata-types/addon/utils/common/ownership/owner.ts @@ -1,4 +1,3 @@ -import { IOwner } from '@datahub/metadata-types/types/common/owner'; import { getOwnerUrnParts } from '@datahub/metadata-types/utils/common/ownership/urn'; /** @@ -6,4 +5,5 @@ import { getOwnerUrnParts } from '@datahub/metadata-types/utils/common/ownership * @param {IOwner} { owner } an instance of an IOwner * @returns {(string | undefined)} */ -export const getOwnerUserName = ({ owner }: IOwner): string | undefined => getOwnerUrnParts(owner).name; +export const getOwnerUserName = ({ owner }: Com.Linkedin.Common.Owner): string | undefined => + getOwnerUrnParts(owner).name; diff --git a/datahub-web/@datahub/metadata-types/addon/utils/common/ownership/urn.ts b/datahub-web/@datahub/metadata-types/addon/utils/common/ownership/urn.ts index 1d3875bba88b3..8a2d362a046fa 100644 --- a/datahub-web/@datahub/metadata-types/addon/utils/common/ownership/urn.ts +++ b/datahub-web/@datahub/metadata-types/addon/utils/common/ownership/urn.ts @@ -18,7 +18,7 @@ export const ownerUrnRegExp = new RegExp(ownerUrnPattern); * @param {string} [ownerUrn=''] the urn for the urn to extracts into parts * @returns {OwnerUrnObject} */ -export const getOwnerUrnParts = (ownerUrn: string = ''): OwnerUrnObject => { +export const getOwnerUrnParts = (ownerUrn = ''): OwnerUrnObject => { const urnParts: OwnerUrnObject = { type: undefined, name: undefined, diff --git a/datahub-web/@datahub/metadata-types/addon/utils/entity/dataset/platform/index.ts b/datahub-web/@datahub/metadata-types/addon/utils/entity/dataset/platform/index.ts index b618be98e3a0d..9d17e69159028 100644 --- a/datahub-web/@datahub/metadata-types/addon/utils/entity/dataset/platform/index.ts +++ b/datahub-web/@datahub/metadata-types/addon/utils/entity/dataset/platform/index.ts @@ -6,7 +6,7 @@ import { datasetPlatformRegExp } from '@datahub/metadata-types/utils/entity/data * @param {string} platform Standardized platform urn where a dataset is defined * @return string */ -export const getPlatformNameFromPlatformUrn = (platform: string = ''): string => { +export const getPlatformNameFromPlatformUrn = (platform = ''): string => { const matchOrNull = datasetPlatformRegExp.exec(platform); if (matchOrNull) { diff --git a/datahub-web/@datahub/metadata-types/ember-cli-build.js b/datahub-web/@datahub/metadata-types/ember-cli-build.js index dc5a39e1b796e..d9648581d66f8 100644 --- a/datahub-web/@datahub/metadata-types/ember-cli-build.js +++ b/datahub-web/@datahub/metadata-types/ember-cli-build.js @@ -3,7 +3,7 @@ const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); module.exports = function(defaults) { - let app = new EmberAddon(defaults, { + const app = new EmberAddon(defaults, { // Add options here }); diff --git a/datahub-web/@datahub/metadata-types/index.js b/datahub-web/@datahub/metadata-types/index.js index fb3f2e2af6211..ac65e94b66155 100644 --- a/datahub-web/@datahub/metadata-types/index.js +++ b/datahub-web/@datahub/metadata-types/index.js @@ -2,5 +2,5 @@ module.exports = { name: require('./package').name, - isDevelopingAddon: () => false + isDevelopingAddon: () => true }; diff --git a/datahub-web/@datahub/metadata-types/package.json b/datahub-web/@datahub/metadata-types/package.json index 48ce2445893d1..d033947071135 100644 --- a/datahub-web/@datahub/metadata-types/package.json +++ b/datahub-web/@datahub/metadata-types/package.json @@ -13,7 +13,7 @@ "test": "tests" }, "scripts": { - "build": "ember build", + "build": "ember build --environment=production", "start": "ember serve", "test": "ember test", "test:all": "ember try:each", @@ -22,45 +22,52 @@ }, "dependencies": { "@datahub/utils": "0.0.0", - "ember-cli-babel": "^7.8.0", - "ember-cli-typescript": "^2.0.2" + "@types/ember-resolver": "^5.0.7", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^4.2.2", + "ember-cli-typescript": "^3.1.3" }, "devDependencies": { - "@babel/core": "^7.4.0", - "@ember/optional-features": "^0.7.0", - "@types/ember": "^3.1.0", - "@types/ember-qunit": "^3.4.6", + "@babel/core": "^7.8.4", + "@ember/optional-features": "^1.3.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "@types/ember": "^3.1.1", + "@types/ember-qunit": "^3.4.7", "@types/ember-test-helpers": "^1.0.5", "@types/ember-testing-helpers": "^0.0.3", - "@types/ember__test-helpers": "^0.7.8", - "@types/qunit": "^2.5.4", - "@types/rsvp": "^4.0.2", + "@types/ember__test-helpers": "^0.7.9", + "@types/qunit": "^2.9.0", + "@types/rsvp": "^4.0.3", + "babel-eslint": "^10.0.3", "broccoli-asset-rev": "^3.0.0", - "ember-ajax": "^4.0.2", - "ember-cli": "~3.11.0", - "ember-cli-dependency-checker": "^3.1.0", - "ember-cli-htmlbars": "^3.0.0", - "ember-cli-htmlbars-inline-precompile": "^2.1.0", - "ember-cli-inject-live-reload": "^2.0.1", + "ember-auto-import": "^1.5.3", + "ember-cli": "~3.16.0", + "ember-cli-dependency-checker": "^3.2.0", + "ember-cli-inject-live-reload": "^2.0.2", "ember-cli-sri": "^2.1.1", - "ember-cli-typescript-blueprints": "^2.0.0", - "ember-cli-uglify": "^2.1.0", + "ember-cli-typescript-blueprints": "^3.0.0", + "ember-cli-uglify": "^3.0.0", + "ember-cli-update": "^0.52.1", "ember-decorators": "^6.0.0", "ember-disable-prototype-extensions": "^1.1.3", - "ember-export-application-global": "^2.0.0", - "ember-load-initializers": "^2.0.0", + "ember-export-application-global": "^2.0.1", + "ember-load-initializers": "^2.1.1", "ember-maybe-import-regenerator": "^0.1.6", - "ember-qunit": "^4.4.0", - "ember-resolver": "^5.0.1", - "ember-source": "~3.11.1", - "ember-source-channel-url": "^1.1.0", - "ember-try": "^1.0.0", + "ember-qunit": "^4.6.0", + "ember-resolver": "^7.0.0", + "ember-source": "~3.16.3", + "ember-source-channel-url": "^2.0.1", + "ember-try": "^1.4.0", "loader.js": "^4.7.0", - "qunit-dom": "^0.8.4", - "typescript": "^3.5.3" + "qunit-dom": "^0.9.1", + "typescript": "^3.9.3" }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": "10.* || >= 12" + }, + "ember": { + "edition": "octane" }, "ember-addon": { "configPath": "tests/dummy/config" diff --git a/datahub-web/@datahub/metadata-types/restli-types-config.json b/datahub-web/@datahub/metadata-types/restli-types-config.json new file mode 100644 index 0000000000000..99cd5b77069df --- /dev/null +++ b/datahub-web/@datahub/metadata-types/restli-types-config.json @@ -0,0 +1,5 @@ +{ + "cacheFolder": "tmp/codegen", + "output": "types/codegen", + "collectionType": "Restli.Common.CollectionResponse" +} diff --git a/datahub-web/@datahub/metadata-types/tests/dummy/app/app.js b/datahub-web/@datahub/metadata-types/tests/dummy/app/app.js index b3b2bd677e090..d8e2088b6b0e5 100644 --- a/datahub-web/@datahub/metadata-types/tests/dummy/app/app.js +++ b/datahub-web/@datahub/metadata-types/tests/dummy/app/app.js @@ -1,14 +1,12 @@ import Application from '@ember/application'; -import Resolver from './resolver'; +import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; -const App = Application.extend({ - modulePrefix: config.modulePrefix, - podModulePrefix: config.podModulePrefix, - Resolver -}); +export default class App extends Application { + modulePrefix = config.modulePrefix; + podModulePrefix = config.podModulePrefix; + Resolver = Resolver; +} loadInitializers(App, config.modulePrefix); - -export default App; diff --git a/datahub-web/@datahub/metadata-types/tests/dummy/app/config/environment.d.ts b/datahub-web/@datahub/metadata-types/tests/dummy/app/config/environment.d.ts index 60c3b7ef4ba05..b5a45a3d93efd 100644 --- a/datahub-web/@datahub/metadata-types/tests/dummy/app/config/environment.d.ts +++ b/datahub-web/@datahub/metadata-types/tests/dummy/app/config/environment.d.ts @@ -6,11 +6,15 @@ * since different ember addons can materialize new entries. */ declare const config: { - environment: any; + environment: 'development' | 'test' | 'production'; modulePrefix: string; podModulePrefix: string; locationType: string; rootURL: string; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; }; export default config; diff --git a/datahub-web/@datahub/metadata-types/tests/dummy/app/router.js b/datahub-web/@datahub/metadata-types/tests/dummy/app/router.js index 53c53c6c07590..3c68e32dd992d 100644 --- a/datahub-web/@datahub/metadata-types/tests/dummy/app/router.js +++ b/datahub-web/@datahub/metadata-types/tests/dummy/app/router.js @@ -1,11 +1,9 @@ import EmberRouter from '@ember/routing/router'; import config from './config/environment'; -const Router = EmberRouter.extend({ - location: config.locationType, - rootURL: config.rootURL -}); +export default class Router extends EmberRouter { + location = config.locationType; + rootURL = config.rootURL; +} Router.map(function() {}); - -export default Router; diff --git a/datahub-web/@datahub/metadata-types/tests/dummy/config/environment.js b/datahub-web/@datahub/metadata-types/tests/dummy/config/environment.js index 182d3fcbfa04e..43938b91a0109 100644 --- a/datahub-web/@datahub/metadata-types/tests/dummy/config/environment.js +++ b/datahub-web/@datahub/metadata-types/tests/dummy/config/environment.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = function(environment) { - let ENV = { + const ENV = { modulePrefix: 'dummy', environment, rootURL: '/', @@ -38,9 +38,12 @@ module.exports = function(environment) { // keep test console output quieter ENV.APP.LOG_ACTIVE_GENERATION = false; ENV.APP.LOG_VIEW_LOOKUPS = false; + ENV.RAISE_ON_DEPRECATION = false; + ENV.LOG_STACKTRACE_ON_DEPRECATION = false; ENV.APP.rootElement = '#ember-testing'; ENV.APP.autoboot = false; + ENV.APP.notificationsTimeout = 1; } if (environment === 'production') { diff --git a/datahub-web/@datahub/metadata-types/tests/dummy/config/optional-features.json b/datahub-web/@datahub/metadata-types/tests/dummy/config/optional-features.json index b1902623ae759..b26286e2ecdf3 100644 --- a/datahub-web/@datahub/metadata-types/tests/dummy/config/optional-features.json +++ b/datahub-web/@datahub/metadata-types/tests/dummy/config/optional-features.json @@ -1,3 +1,6 @@ { - "jquery-integration": false + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true } diff --git a/datahub-web/@datahub/metadata-types/tsconfig.json b/datahub-web/@datahub/metadata-types/tsconfig.json index 3fb8fafece9c6..1bf5c6c601a1e 100644 --- a/datahub-web/@datahub/metadata-types/tsconfig.json +++ b/datahub-web/@datahub/metadata-types/tsconfig.json @@ -23,6 +23,6 @@ "test-support/**/*", "addon-test-support/**/*", "../../@datahub/utils/addon/**/*", - "../../@datahub/utils/types/**/*" + "../../@datahub/utils/types/**/*", ] } diff --git a/datahub-web/@datahub/data-models/types/entity/common/wiki/institutional-memory.d.ts b/datahub-web/@datahub/metadata-types/types/aspects/institutional-memory.d.ts similarity index 100% rename from datahub-web/@datahub/data-models/types/entity/common/wiki/institutional-memory.d.ts rename to datahub-web/@datahub/metadata-types/types/aspects/institutional-memory.d.ts diff --git a/datahub-web/@datahub/metadata-types/types/aspects/social-actions.d.ts b/datahub-web/@datahub/metadata-types/types/aspects/social-actions.d.ts new file mode 100644 index 0000000000000..bb02a0e292d2e --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/aspects/social-actions.d.ts @@ -0,0 +1,48 @@ +/** + * Represents a Like aspect on an entity, each ILikeAction represents an upvote from a specific + * user for a specific entity to which the aspect would be attached + */ +export interface ILikeAction { + // urn of the user who has liked a specified entity + likedBy: string; + // information on the audit stamp of the like action + lastModified?: Com.Linkedin.Common.AuditStamp; +} + +/** + * The actual aspect object that would be attached to an entity. + */ +export interface ILikesAspect { + // The list of like actions connected to the list of users who have liked a particular entity + actions: Array; +} + +// TODO: [META-11091] Retrieve these from Com.Linkedin.Common instead, once PDSC to TS is updated + +/** + * An identifier for the entity that has decided to follow a particular entity + */ +export interface IFollowerType { + // A single user entity + corpUser?: string; + // A group entity, consisting of multiple users + corpGroup?: string; +} + +/** + * A follow action that represents the subscription of a user or group to this entity for + * notifications + */ +export interface IFollowAction { + // Object identifying the information for the follower entity + follower: IFollowerType; +} + +/** + * The actual aspect object for follows attached to an entity + */ +export interface IFollowsAspect { + // A list of follow actions related to the entity, each follow action is associated with a single + // user or group that has subscribed to notfications + followers: Array; +} diff --git a/datahub-web/@datahub/metadata-types/types/codegen/index.d.ts b/datahub-web/@datahub/metadata-types/types/codegen/index.d.ts new file mode 100644 index 0000000000000..eeec60a35b6bd --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/codegen/index.d.ts @@ -0,0 +1,84260 @@ +declare namespace Com { + namespace Linkedin { + namespace Avro2pegasus { + namespace Anet { + namespace Adjuster { + // Generated from: com/linkedin/avro2pegasus/anet/adjuster/GroupMembershipAdjustmentMessage.pdsc + + export interface GroupMembershipAdjustmentMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + anetId: number; + contactEmail: string; + primaryEmail: string; + } + } + namespace Gamification { + // Generated from: com/linkedin/avro2pegasus/anet/gamification/GroupMemberGamificationMessage.pdsc + + export interface GroupMemberGamificationMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + anetId: number; + groupName: string; + newLevel: string; + } + } + } + namespace Cap2 { + namespace Dm { + namespace Pub { + namespace Avro { + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/Address.pdsc + + export interface Address { + country: string; + zip?: string; + state?: string; + city?: string; + street?: string; + type: AddressType; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/AddressType.pdsc + + export type AddressType = 'HOME' | 'SCHOOL' | 'WORK' | 'MAILING'; + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/CapProspectInfo.pdsc + + export interface CapProspectInfo { + jobs: Job[]; + emails: Email[]; + primary_email: string; + phones: Phone[]; + addresses: Address[]; + location?: string; + websites?: Website[]; + socialHandles?: SocialHandle[]; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/Email.pdsc + + export interface Email { + email: string; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/Job.pdsc + + export interface Job { + title: string; + company: string; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/Phone.pdsc + + export interface Phone { + number: string; + type: PhoneType; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/PhoneType.pdsc + + export type PhoneType = 'HOME' | 'MOBILE' | 'WORK' | 'FAX'; + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/SocialHandle.pdsc + + export interface SocialHandle { + name: string; + type: SocialHandleType; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/SocialHandleType.pdsc + + export type SocialHandleType = + | 'AIM' + | 'HANGOUTS' + | 'ICQ' + | 'QQ' + | 'SKYPE' + | 'TWITTER' + | 'WECHAT' + | 'YAHOO'; + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/Website.pdsc + + export interface Website { + url: string; + type: WebsiteType; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/WebsiteType.pdsc + + export type WebsiteType = 'BLOG' | 'COMPANY' | 'PERSONAL' | 'PORTFOLIO' | 'RSSFEED' | 'OTHER'; + namespace Prospect { + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/CheckInEvent.pdsc + + export interface CheckInEvent { + contractId: number; + eventId: number; + responses?: CheckInResponse[]; + active: boolean; + lastUpdated: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/CheckInResponse.pdsc + + export interface CheckInResponse { + checkInQuestionId: number; + type: string; + response: string; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/CustomFieldData.pdsc + + export interface CustomFieldData { + scn: number; + contractId: number; + fieldId: number; + fieldData: string; + active: string; + indexColumnNumber: number; + type: string; + lastUpdated?: number; + parentFieldId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Email.pdsc + + export interface Email { + scn: number; + emailId: number; + seatId: number; + createdDate: number; + active: boolean; + email: string; + lastUpdated?: number; + contractId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Follow.pdsc + + export interface Follow { + scn: number; + seatId: number; + createdDate: number; + active: boolean; + attributes: number; + lastUpdated: number; + contractId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/JobApplication.pdsc + + export interface JobApplication { + scn: number; + jobId: number; + applicationId: number; + dateApplied: number; + lastUpdated?: number; + contractId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Note.pdsc + + export interface Note { + scn: number; + noteId: number; + seatId: number; + createdDate: number; + active: boolean; + note: string; + lastUpdated?: number; + version: number; + contractId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Opinion.pdsc + + export interface Opinion { + scn: number; + referenceRequestId: number; + referenceResponseId: number; + requesterSeatId: number; + referenceMemberId: number; + createdDate: number; + responseStatus: number; + active: boolean; + opinionText: string; + lastUpdated?: number; + contractId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Project.pdsc + + export interface Project { + scn: number; + seatId: number; + createdDate: number; + active: boolean; + projectId: number; + name: string; + lastUpdated?: number; + version?: number; + project_state?: string; + entry_active?: boolean; + contractId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Prospect.pdsc + + export interface Prospect { + scn: number; + active: boolean; + memberId?: number; + firstName?: string; + lastName?: string; + source?: Source; + prospectInfo?: Com.Linkedin.Avro2pegasus.Cap2.Dm.Pub.Avro.CapProspectInfo; + lastUpdated?: number; + authType?: string; + authToken?: string; + atsId?: string; + closedMemberId?: number; + virtualProspectId?: number | number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/ProspectData.pdsc + + export interface ProspectData { + prospectId: number | number; + contractId: number; + prospect?: Prospect; + resumes?: Resume[]; + notes?: Note[]; + reviews?: Review[]; + projects?: Project[]; + tags?: Tag[]; + emails?: Email[]; + reminders?: Reminder[]; + statuses?: Status[]; + followers?: Follow[]; + customFieldData?: CustomFieldData[]; + jobApplications?: JobApplication[]; + opinions?: Opinion[]; + checkInEvents?: CheckInEvent[]; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Reminder.pdsc + + export interface Reminder { + scn: number; + reminderId: number; + seatId: number; + createdDate: number; + dueDate: number; + active: boolean; + note: string; + lastUpdated?: number; + version: number; + contractId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Resume.pdsc + + export interface Resume { + scn: number; + resumeId: number; + uploadedDate: number; + active: boolean; + resume: string; + source?: Source; + contractId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Review.pdsc + + export interface Review { + scn: number; + reviewId: number; + reviewerId: number; + createdDate: number; + selectedValue?: string; + active: boolean; + reviewNote?: string; + lastUpdated?: number; + projectId: number; + jobId?: number; + contractId?: number; + hiringProjectId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Source.pdsc + + export interface Source { + sourceId: number; + name: string; + parentSourceId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Status.pdsc + + export interface Status { + scn: number; + entityId: number; + entityType: number; + statusId: number; + seatId: number; + createdDate: number; + active: boolean; + attributes: number; + status: string; + lastUpdated?: number; + contractId?: number; + parentStatusId?: number; + } + // Generated from: com/linkedin/avro2pegasus/cap2/dm/pub/avro/prospect/Tag.pdsc + + export interface Tag { + scn: number; + tagId: number; + seatId: number; + createdDate: number; + active: boolean; + attributes: number; + tag: string; + lastUpdated?: number; + contractId?: number; + parentTagId?: number; + } + } + } + } + } + } + namespace Comm { + namespace Digestadjuster { + // Generated from: com/linkedin/avro2pegasus/comm/digestadjuster/DigestSettingAdjustmentMessage.pdsc + + export interface DigestSettingAdjustmentMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberId: number; + settingID: number; + newSetting: string; + } + } + namespace Dto { + namespace Delivery { + namespace Avro { + // Generated from: com/linkedin/avro2pegasus/comm/dto/delivery/avro/TickleMessage.pdsc + + export interface TickleMessage { + expectedDeliveryDate: number; + recipientID: number; + gmtOffset: number; + categoryID: number; + priority: number; + emailKey: string; + contentID: string; + body: string; + } + } + } + } + namespace Incoming { + namespace Mail { + // Generated from: com/linkedin/avro2pegasus/comm/incoming/mail/EmailUnsubscribeRequest.pdsc + + export interface EmailUnsubscribeRequest { + emailIds: string[]; + recipientMemberUrn: string; + settingId: number; + settingName?: string; + unsubscribeMethod?: UnsubscribeMethod; + } + // Generated from: com/linkedin/avro2pegasus/comm/incoming/mail/IncomingMailMessageError.pdsc + + export type IncomingMailMessageError = 'REQUEST_LIMIT'; + // Generated from: com/linkedin/avro2pegasus/comm/incoming/mail/IncomingMailRelayMessage.pdsc + + export interface IncomingMailRelayMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + emailBody?: string; + envelopeTo: string[]; + envelopeFrom?: string; + requestParameters: { [id: string]: string }; + feedbackReason?: string; + error?: IncomingMailMessageError; + } + // Generated from: com/linkedin/avro2pegasus/comm/incoming/mail/UnsubscribeMethod.pdsc + + export type UnsubscribeMethod = + | 'EMAIL_SPAM_COMPLAINT' + | 'RESPONSYS_EMAIL_SPAM_COMPLAINT' + | 'RESPONSYS_EMAIL_LIST_UNSUBSCRIBE' + | 'ELOQUA_EMAIL_LIST_UNSUBSCRIBE' + | 'CRM_EMAIL_MANUAL_UNSUBSCRIBE' + | 'CRM_EMAIL_LIST_UNSUBSCRIBE'; + } + } + namespace Nusdigest { + // Generated from: com/linkedin/avro2pegasus/comm/nusdigest/NusBackfillMessage.pdsc + + export interface NusBackfillMessage { + recipientID: number; + firstName: string; + lastName: string; + email: string; + interfaceLocale: string; + headline: string; + recoveryAction: RecoveryAction; + frequencyAdjuster: string; + } + // Generated from: com/linkedin/avro2pegasus/comm/nusdigest/RecoveryAction.pdsc + + export type RecoveryAction = 'DROP_DUPLICATE' | 'NOT_DROP_DUPLICATE'; + } + } + namespace Common { + // Generated from: com/linkedin/avro2pegasus/common/AdTargetIdType.pdsc + + export type AdTargetIdType = + | 'LINKEDIN' + | 'UBID' + | 'IDFA' + | 'IDFA_SHA1' + | 'IDFA_MD5' + | 'ANDROID' + | 'ANDROID_SHA1' + | 'ANDROID_MD5' + | 'BIZO' + | 'APPNEXUS' + | 'EMAIL' + | 'EMAIL_SHA1' + | 'EMAIL_SHA256' + | 'EMAIL_SHA512' + | 'EMAIL_MD5' + | 'POWERLINKS' + | 'TRIPLELIFT' + | 'GOOGLE_UID' + | 'TEADS'; + // Generated from: com/linkedin/avro2pegasus/common/ApplicationLayerProtocol.pdsc + + export type ApplicationLayerProtocol = 'HTTP' | 'HTTPS'; + // Generated from: com/linkedin/avro2pegasus/common/EndorsementProfileData.pdsc + + export interface EndorsementProfileData { + id: number; + firstName: string; + lastName: string; + fullName: string; + pictureId?: string; + headline?: string; + endorsementEmailSetting?: string; + locale?: string; + email?: string; + pictureUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/PushDeviceType.pdsc + + export type PushDeviceType = + | 'IPHONE' + | 'IPAD' + | 'ANDROID' + | 'OSX' + | 'GETUI_ANDROID' + | 'CHROME' + | 'UWP' + | 'XIAOMI_ANDROID' + | 'HUAWEI_ANDROID' + | 'BROWSER'; + namespace Abook { + // Generated from: com/linkedin/avro2pegasus/common/abook/InvitationCountPerChannel.pdsc + + export interface InvitationCountPerChannel { + emailCount: number; + smsCount: number; + memberCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/common/abook/InvitationCountPerContext.pdsc + + export interface InvitationCountPerContext { + contextUrn?: string; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/common/abook/InvitationImpressionInterruptReason.pdsc + + export type InvitationImpressionInterruptReason = + | 'CONTACTS_UPLOAD' + | 'BACKGROUND_CONTACTS_UPLOAD' + | 'CONTACTS_FETCH' + | 'NO_CONTACTS_RECEIVED' + | 'NO_ELIGIBLE_CONTACTS'; + } + namespace Avro { + // Generated from: com/linkedin/avro2pegasus/common/avro/AvroAnyRecord.pdsc + + export interface AvroAnyRecord { + type: string; + value: string; + } + } + namespace Azkaban { + namespace Plugins { + // Generated from: com/linkedin/avro2pegasus/common/azkaban/plugins/ExecutorStatus.pdsc + + export type ExecutorStatus = + | 'READY' + | 'PREPARING' + | 'RUNNING' + | 'PAUSED' + | 'SUCCEEDED' + | 'KILLING' + | 'KILLED' + | 'FAILED' + | 'FAILED_FINISHING' + | 'SKIPPED' + | 'DISABLED' + | 'QUEUED' + | 'FAILED_SUCCEEDED' + | 'CANCELLED' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/common/azkaban/plugins/FlowLifeCycleEventType.pdsc + + export type FlowLifeCycleEventType = 'FLOW_STARTED' | 'FLOW_FINISHED'; + // Generated from: com/linkedin/avro2pegasus/common/azkaban/plugins/JobLifeCycleEventType.pdsc + + export type JobLifeCycleEventType = 'JOB_STARTED' | 'JOB_FINISHED' | 'JOB_STATUS_CHANGED'; + // Generated from: com/linkedin/avro2pegasus/common/azkaban/plugins/LifeCycleCommonProperties.pdsc + + export interface LifeCycleCommonProperties { + flowName: string; + host: string; + projectName: string; + executionId: string; + lifeCycleEventCreationTime: number; + azkabanWebServerHostName?: string; + } + } + } + namespace Badge { + // Generated from: com/linkedin/avro2pegasus/common/badge/AppTabType.pdsc + + export type AppTabType = 'FEED' | 'MY_NETWORK' | 'MESSAGING' | 'NOTIFICATIONS' | 'ME' | 'JOBS'; + // Generated from: com/linkedin/avro2pegasus/common/badge/TabBadgeDetails.pdsc + + export interface TabBadgeDetails { + feedTabBadgeCount: number; + myNetworkTabBadgeCount: number; + messagingTabBadgeCount: number; + notificationTabBadgeCount: number; + meTabBadgeCount: number; + jobsTabBadgeCount?: number; + messagingUnreadTabBadgeCount?: number; + } + } + namespace Businessentitiesgraph { + // Generated from: com/linkedin/avro2pegasus/common/businessentitiesgraph/OperationType.pdsc + + export type OperationType = 'CREATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/common/businessentitiesgraph/Relationship.pdsc + + export interface Relationship { + relationshipKey: RelationshipKey; + parentRelationshipKeys: RelationshipKey[]; + ancestorRelationshipKeys: RelationshipKey[]; + } + // Generated from: com/linkedin/avro2pegasus/common/businessentitiesgraph/RelationshipKey.pdsc + + export interface RelationshipKey { + subjectUrn: string; + businessEntitiesRelationshipTypeUrn: string; + objectUrn: string; + version: RelationshipVersion; + } + // Generated from: com/linkedin/avro2pegasus/common/businessentitiesgraph/RelationshipVersion.pdsc + + export interface RelationshipVersion { + creationTime: number; + machineName: string; + } + // Generated from: com/linkedin/avro2pegasus/common/businessentitiesgraph/RelationshipWriteRequest.pdsc + + export interface RelationshipWriteRequest { + relationship: Relationship; + operation: OperationType; + writeId: string; + } + } + namespace Chameleon { + // Generated from: com/linkedin/avro2pegasus/common/chameleon/ConfigType.pdsc + + export type ConfigType = 'COPY'; + } + namespace Codesearch { + // Generated from: com/linkedin/avro2pegasus/common/codesearch/SourceFileChangeOperation.pdsc + + export type SourceFileChangeOperation = 'ADDED' | 'DELETED' | 'MODIFIED'; + // Generated from: com/linkedin/avro2pegasus/common/codesearch/SourceFileRepoType.pdsc + + export type SourceFileRepoType = 'GIT' | 'SVN'; + // Generated from: com/linkedin/avro2pegasus/common/codesearch/SourceFileSourceControl.pdsc + + export type SourceFileSourceControl = 'GITHUB' | 'GITORIOUS' | 'GERRIT' | 'SVN' | 'GERRIT_BETA'; + } + namespace Cohorts { + // Generated from: com/linkedin/avro2pegasus/common/cohorts/Cohort.pdsc + + export interface Cohort { + cohortTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + score: number; + position: number; + relatedReason?: CohortRelatedReason; + relatedReasonEntity?: string; + entityType: CohortEntityType; + onlineFeatures: CohortOnlineFeature[]; + recommendedEntitiesServedDetails: RecommendedEntityServedDetails[]; + relatedReasonEntities: string[]; + isRandomized?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/common/cohorts/CohortEntityType.pdsc + + export type CohortEntityType = 'MEMBER_CONNECT' | 'FOLLOW_HASHTAGS' | 'PENDING_INVITATIONS' | 'EVENTS'; + // Generated from: com/linkedin/avro2pegasus/common/cohorts/CohortOnlineFeature.pdsc + + export interface CohortOnlineFeature { + featureName: string; + featureValue: number; + } + // Generated from: com/linkedin/avro2pegasus/common/cohorts/CohortRelatedReason.pdsc + + export type CohortRelatedReason = + | 'SCHOOL' + | 'SAME_SCHOOL_AS_VIEWER' + | 'COMPANY' + | 'SAME_COMPANY_AS_VIEWER' + | 'RECENT_SECOND_DEGREE_CONNECTION' + | 'MANY_COMMON_CONNECTIONS_WITH_VIEWER' + | 'INDUSTRY' + | 'TITLE' + | 'SKILL' + | 'VIEWING_ENTITY_CONNECTIONS' + | 'GEOGRAPHIC_AREA' + | 'SAME_REGION_AS_VIEWER' + | 'SAME_OCCUPATION_AS_VIEWER' + | 'SAME_REGION_AND_OCCUPATION_AS_VIEWER' + | 'SAME_COUNTRY_AND_OCCUPATION_AS_VIEWER' + | 'SAME_COMPANY_AND_OCCUPATION_AS_VIEWER' + | 'REGION' + | 'SCHOOL_AND_LOCATION' + | 'SCHOOL_AND_INDUSTRY' + | 'COMPANY_AND_SCHOOL' + | 'OCCUPATION_AND_SCHOOL' + | 'IOM_AND_SAME_COUNTRY_AS_VIEWER' + | 'GROUP' + | 'ORGANIZATION_FOLLOWED_AND_REGION' + | 'ORGANIZATION_FOLLOWED_AND_COUNTRY' + | 'RELATED_COLLEAGUES' + | 'UNCONTEXTUALIZED'; + // Generated from: com/linkedin/avro2pegasus/common/cohorts/FirstPassScore.pdsc + + export interface FirstPassScore { + name: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/common/cohorts/OnlineFeature.pdsc + + export interface OnlineFeature { + featureName: string; + featureValue: number; + } + // Generated from: com/linkedin/avro2pegasus/common/cohorts/recommendationSource.pdsc + + export interface recommendationSource { + source: source; + } + // Generated from: com/linkedin/avro2pegasus/common/cohorts/RecommendedEntityServedDetails.pdsc + + export interface RecommendedEntityServedDetails { + recommendedEntityTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + onlineModelScore: number; + position: number; + recommendationSourceProperties: recommendationSource[]; + onlineFeatures: OnlineFeature[]; + firstPassScores?: FirstPassScore[]; + scoredPosition?: number; + } + // Generated from: com/linkedin/avro2pegasus/common/cohorts/source.pdsc + + export type source = + | 'PYMK' + | 'GYMK' + | 'PYMK_NUX' + | 'PYMK_NUX_BACKFILL' + | 'DIGITS_UNDER_CONNECTED' + | 'INVITER_CONNECTIONS' + | 'SEARCH_BACKFILL' + | 'GAIA' + | 'OFFLINE' + | 'SEARCH_BACKFILL_V2' + | 'ALLSPARK' + | 'CCYMK' + | 'LIQUID'; + } + namespace Compliance { + // Generated from: com/linkedin/avro2pegasus/common/compliance/GrantAuthorizationAction.pdsc + + export type GrantAuthorizationAction = 'AUTHORIZE' | 'DEAUTHORIZE'; + // Generated from: com/linkedin/avro2pegasus/common/compliance/GrantAuthorizationActionErrorType.pdsc + + export type GrantAuthorizationActionErrorType = 'DATA_INCONSISTENT' | 'ASYNC_ACTION_FAILED' | 'MINOR'; + } + namespace Contentfilter { + // Generated from: com/linkedin/avro2pegasus/common/contentfilter/ContentMetaInformation.pdsc + + export interface ContentMetaInformation { + mentionedUrns?: string[]; + ucfContextUrn?: string; + contentHash?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentHash; + } + } + namespace Datasift { + // Generated from: com/linkedin/avro2pegasus/common/datasift/DatasiftPlatform.pdsc + + export type DatasiftPlatform = 'MOBILE' | 'DESKTOP' | 'TABLET'; + } + namespace Entities { + // Generated from: com/linkedin/avro2pegasus/common/entities/FlagshipOrganizationModuleType.pdsc + + export type FlagshipOrganizationModuleType = + | 'COMPANY_OVERVIEW_PAGE' + | 'COMPANY_JOBS_PAGE' + | 'COMPANY_LIFE_PAGE' + | 'COMPANY_TOPCARD' + | 'COMPANY_OVERVIEW_ABOUT_US' + | 'COMPANY_OVERVIEW_CONNECTIONS' + | 'COMPANY_OVERVIEW_SHOWCASE_PAGES' + | 'COMPANY_OVERVIEW_UPDATES' + | 'COMPANY_OVERVIEW_JOBS' + | 'COMPANY_OVERVIEW_INSIGHTS' + | 'COMPANY_OVERVIEW_PHOTOS' + | 'COMPANY_OVERVIEW_SIMILAR_COMPANIES' + | 'COMPANY_OVERVIEW_RIGHT_RAIL_AD' + | 'COMPANY_JOBS_JOBS_THAT_MATCH_YOUR_SKILLS' + | 'COMPANY_JOBS_RECENTLY_POSTED_JOBS' + | 'COMPANY_JOBS_JOB_SEARCH' + | 'COMPANY_JOBS_MEET_THE_TEAM' + | 'COMPANY_JOBS_INSIGHTS' + | 'COMPANY_LIFE_HERO' + | 'COMPANY_LIFE_FEATURED_LEADERS' + | 'COMPANY_LIFE_CUSTOM_MODULES' + | 'COMPANY_LIFE_COMPANY_PHOTOS' + | 'COMPANY_LIFE_EMPLOYEE_PERSPECTIVES' + | 'COMPANY_LIFE_CULTURAL_INSIGHTS' + | 'COMPANY_LIFE_SEE_LATEST_JOBS' + | 'UNIVERSITY_OVERVIEW_PAGE' + | 'UNIVERSITY_ALUMNI_PAGE' + | 'UNIVERSITY_OVERVIEW_TOP_CARD' + | 'UNIVERSITY_OVERVIEW_ABOUT_US' + | 'UNIVERSITY_OVERVIEW_CAREER_INSIGHTS' + | 'UNIVERSITY_OVERVIEW_CONNECTIONS' + | 'UNIVERSITY_OVERVIEW_JOBS' + | 'UNIVERSITY_OVERVIEW_RIGHT_RAIL_AD' + | 'UNIVERSITY_OVERVIEW_SIMILAR_UNIVERSITIES' + | 'UNIVERSITY_ALUMNI_CAREER_INSIGHTS' + | 'UNIVERSITY_ALUMNI_PROFILES' + | 'BRAND_PAGE' + | 'BRAND_TOP_CARD' + | 'BRAND_ABOUT_US' + | 'BRAND_OTHER_BRAND_PAGES' + | 'BRAND_PARENT_PAGE' + | 'BRAND_RIGHT_RAIL_AD' + | 'BRAND_FEATURED_GROUPS' + | 'COMPANY_ADMIN_UPDATES' + | 'COMPANY_ADMIN_CAREERS' + | 'COMPANY_ADMIN_OVERVIEW' + | 'COMPANY_ADMIN_CAREERS_CONTENT_TARGETING' + | 'COMPANY_ADMIN_CAREERS_CONTENT_JOBS' + | 'COMPANY_ADMIN_CAREERS_CONTENT_LIFE' + | 'SECONDARY_COMPANY_JOBS_ALL' + | 'SECONDARY_COMPANY_JOBS_MATCHED' + | 'SECONDARY_COMPANY_CONNECTIONS' + | 'SECONDARY_COMPANY_SHOWCASES' + | 'SECONDARY_COMPANY_ALUM_AT_COMPANY' + | 'SECONDARY_COMPANY_ABOUT' + | 'UNIVERSITY_JOBS_PAGE' + | 'UNIVERSITY_LIFE_PAGE' + | 'UNIVERSITY_OVERVIEW_UPDATES' + | 'COMPANY_LIFE_EMPLOYEE_TESTIMONIALS' + | 'BRAND_PAGE_UPDATES' + | 'COMPANY_OVERVIEW_STOCK_QUOTES' + | 'COMPANY_OVERVIEW_RELATED_COMPANIES' + | 'COMPANY_LIFE_CONTACT_US' + | 'COMPANY_LIFE_CLIENT_TESTIMONIALS' + | 'COMPANY_LIFE_CANDIDATE_TESTIMONIALS' + | 'COMPANY_RATINGS' + | 'COMPANY_ADMIN_NOTIFICATIONS_ALL' + | 'COMPANY_ADMIN_NOTIFICATIONS_LIKES' + | 'COMPANY_ADMIN_NOTIFICATIONS_SHARES' + | 'COMPANY_ADMIN_NOTIFICATIONS_COMMENTS' + | 'COMPANY_ADMIN_NOTIFICATIONS_MENTIONS' + | 'COMPANY_ADMIN_ANALYTICS_VISITORS' + | 'COMPANY_ADMIN_ANALYTICS_UPDATES' + | 'COMPANY_ADMIN_ANALYTICS_FOLLOWERS' + | 'COMPANY_ADMIN_ANALYTICS_TALENT_BRAND' + | 'COMPANY_ADMIN_CAREERS_JOBS' + | 'COMPANY_STAFFING_CONTACT' + | 'COMPANY_STAFFING_CONTACT_FORM' + | 'COMPANY_LIFE_PAGE_TOGGLE' + | 'COMPANY_INFO_FEEDBACK_SURVEY' + | 'AFFILIATED_PAGES_MODAL' + | 'AFFILIATED_PAGES' + | 'EDITABLE_TOPCARD' + | 'FEATURED_GROUPS' + | 'COMPANY_ABOUT_PAGE' + | 'BRAND_ABOUT_PAGE' + | 'UNIVERSITY_ABOUT_PAGE' + | 'COMPANY_INSIGHTS_PAGE' + | 'BRAND_INSIGHTS_PAGE' + | 'UNIVERSITY_INSIGHTS_PAGE' + | 'COMPANY_PEOPLE_PAGE' + | 'UNIVERSITY_PEOPLE_PAGE' + | 'COMPANY_ADMIN_ONBOARDING_EDIT_BANNER' + | 'COMPANY_ADMIN_ONBOARDING_WELCOME_BANNER' + | 'COMPANY_ADMIN_ONBOARDING_COMPLETION_BANNER' + | 'SIMILAR_PAGES' + | 'EMPTY_UPDATES_FEED' + | 'PAGE_DETAILS' + | 'LOCATIONS' + | 'FUNDING' + | 'FEATURED_GROUPS_MODAL' + | 'MEMBER_NAVIGATION' + | 'ORGANIZATION_DATA_ATTRIBUTION' + | 'CONTENT_SUGGESTIONS' + | 'COMPANY_JOBS_SAVED_JOB_ALERT' + | 'COMPANY_JOBS_DISCOVER_COMPANY_CAROUSEL' + | 'COMPANY_LIFE_DISCOVER_COMPANY_CAROUSEL' + | 'COMPANY_JOBS_RECOMMENDED_JOBS' + | 'COMPANY_JOBS_RECOMMENDED_JOBS_JOB_CARD' + | 'COMPANY_JOBS_RECOMMENDED_JOBS_EMPLOYEE_CARD' + | 'COMPANY_JOBS_RECENTLY_POSTED_JOBS_JOB_CARD' + | 'COMPANY_JOBS_SAVED_JOB_ALERT_OVERLAY' + | 'COMPANY_COMMUNITIES' + | 'COMPANY_LIFE_CTA' + | 'PRODUCT_REVIEW' + | 'COMPANY_ADMIN_CAREERS_CONTENT_LIFE_VANITY_NAME' + | 'COMPANY_ADS_PAGE' + | 'UNIVERSITY_ADS_PAGE' + | 'BRAND_ADS_PAGE' + | 'PEOPLE_EXPLORER_PREMIUM_UPSELL_CARD' + | 'COMPANY_SPONSORED_UPDATES' + | 'UNIVERSITY_SPONSORED_UPDATES' + | 'BRAND_SPONSORED_UPDATES' + | 'EMPTY_SPONSORED_UPDATES' + | 'COMPANY_LIFE_EMPLOYEE_MEDIA_FEED_CAROUSEL' + | 'COMPANY_LIFE_EMPLOYEE_MEDIA_FEED_ITEM' + | 'COMPANY_ADMIN_CAREERS_CONTENT_NEW_USER_GUIDE' + | 'ORGANIZATION_JOBS_POST_A_JOB_BANNER' + | 'COMPANY_ADMIN_CONTENT_SUGGESTIONS' + | 'HIGHLIGHT_REEL' + | 'COMPANY_FEED_FILTERS' + | 'COMPANY_SEE_ALL' + | 'UNIVERSITY_PEOPLE_SEE_ALL' + | 'COMPANY_PEOPLE_NETWORK' + | 'COMPANY_PEOPLE_SCHOOL' + | 'COMPANY_PEOPLE_CURRENT_FUNCTION' + | 'COMPANY_PEOPLE_FIELD_OF_STUDY' + | 'COMPANY_PEOPLE_GEO_REGION' + | 'COMPANY_PEOPLE_SKILL_EXPLICIT' + | 'UNIVERSITY_PEOPLE_NETWORK' + | 'UNIVERSITY_PEOPLE_CURRENT_COMPANY' + | 'UNIVERSITY_PEOPLE_CURRENT_FUNCTION' + | 'UNIVERSITY_PEOPLE_FIELD_OF_STUDY' + | 'UNIVERSITY_PEOPLE_GEO_REGION' + | 'UNIVERSITY_PEOPLE_SKILL_EXPLICIT' + | 'UNIVERSITY_PEOPLE_END_YEAR' + | 'ALL_EMPLOYEES' + | 'ALL_ALUMNI' + | 'PEOPLE_SEE_ALL' + | 'PEOPLE_NETWORK' + | 'PEOPLE_SCHOOL' + | 'PEOPLE_CURRENT_FUNCTION' + | 'PEOPLE_FIELD_OF_STUDY' + | 'PEOPLE_GEO_REGION' + | 'PEOPLE_SKILL_EXPLICIT' + | 'PEOPLE_CURRENT_COMPANY' + | 'PEOPLE_END_YEAR' + | 'ALL_PEOPLE' + | 'LOCATIONS_DETAIL_PAGE' + | 'COMPANY_LIFE_EMPLOYEE_MEDIA_FEED_ITEM_LIGHTBOX' + | 'SALARY_HOME_PAGE' + | 'SALARY_HOME_SUBMIT' + | 'SALARY_HOME_TYPEAHEAD' + | 'SALARY_HOME_LIST' + | 'SALARY_HOME_BROWSEMAP' + | 'SALARY_DETAILS_PAGE' + | 'SALARY_DETAILS_INSIGHTS' + | 'SALARY_DETAILS_BROWSEMAP' + | 'SALARY_DETAILS_OPEN_JOBS' + | 'SALARY_DETAILS_OTHER_SIMILAR_TITLES' + | 'HIGHLIGHT_REEL_PEOPLE_JOB_FUNCTION' + | 'HIGHLIGHT_REEL_PEOPLE_FIELD_OF_STUDY' + | 'HIGHLIGHT_REEL_PEOPLE_GEO_REGION' + | 'HIGHLIGHT_REEL_PEOPLE_SKILLS' + | 'HIGHLIGHT_REEL_PEOPLE_GRADUATION_YEAR' + | 'HIGHLIGHT_REEL_JOBS_RECENT' + | 'HIGHLIGHT_REEL_JOBS_RECOMMENDED' + | 'HIGHLIGHT_REEL_LIFE_DEFAULT' + | 'HIGHLIGHT_REEL_LIFE_NON_DEFAULT' + | 'HIGHLIGHT_REEL_TRENDING_CONTENT' + | 'COMPLETION_METER' + | 'INVITE_TO_FOLLOW' + | 'HIGHLIGHT_PEOPLE' + | 'HIGHLIGHT_HASHTAG' + | 'HIGHLIGHT_PHOTO_DEFAULT' + | 'HIGHLIGHT_PHOTO_NON_DEFAULT' + | 'EMPLOYEE_HOME_PAGE' + | 'ORGANIZATION_ELIGIBLE_CLAIM' + | 'ORGANIZATION_NON_ELIGIBLE_CLAIM' + | 'PAGE_ABOUT_CARD' + | 'COMPANY_LEAD_GEN_SUBMITTED_MODAL' + | 'ADMIN_EMPLOYEE_CONTENT' + | 'AFFILIATED_PAGES_PAGE' + | 'SIMILAR_PAGES_PAGE' + | 'LEAD_GEN_FORM_MODAL' + | 'ADMIN_CONTENT_SUGGESTIONS_TRENDING_ARTICLES_PAGE' + | 'ADMIN_CONTENT_SUGGESTIONS_EMPLOYEE_MILESTONES_PAGE' + | 'ADMIN_CONTENT_SUGGESTIONS_COMPANY_NEWS_PAGE' + | 'ADMIN_CONTENT_SUGGESTIONS_TAB_CONTAINER' + | 'ADMIN_CONTENT_SUGGESTIONS_INFO_BANNER' + | 'ADMIN_CONTENT_SUGGESTIONS_EMPLOYEE_CARD' + | 'ADMIN_CONTENT_SUGGESTIONS_CELEBRATION_MODAL' + | 'STICKY_TOP_CARD' + | 'LEAD_CAPTURE_CAMPAIGN_MEMBER' + | 'COMPANY_ADMIN_HASHTAG' + | 'RANKED_BADGE' + | 'VIDEOS_PAGE' + | 'VIDEOS_HERO' + | 'VIDEOS_ALL' + | 'ADMIN_PRODUCT_PAGE' + | 'PRODUCTS_LIST_PAGE' + | 'PRODUCTS_DETAIL_PAGE' + | 'PRODUCTS_MINI_PRODUCT' + | 'PRODUCTS_TOP_CARD' + | 'PRODUCTS_SURVEY_ENTRANCE' + | 'PRODUCTS_SURVEY_RESULT' + | 'PRODUCTS_DESCRIPTION' + | 'PRODUCTS_MEDIA' + | 'PRODUCTS_COMPANIES' + | 'PRODUCTS_SIMILAR_PRODUCTS' + | 'PRODUCTS_CONNECTIONS' + | 'PRODUCTS_OVERFLOW_MENU' + | 'PRODUCTS_COMPANIES_SEE_ALL' + | 'PRODUCTS_SIMILAR_PRODUCTS_SEE_ALL' + | 'HIGHLIGHT_VIDEO'; + // Generated from: com/linkedin/avro2pegasus/common/entities/FlagshipOrganizationTargetedContent.pdsc + + export interface FlagshipOrganizationTargetedContent { + id: string; + reportingId?: string; + name: string; + isDefaultView: boolean; + } + } + namespace Events { + namespace Ucv { + // Generated from: com/linkedin/avro2pegasus/common/events/ucv/AccountManagementScenario.pdsc + + export type AccountManagementScenario = 'HANDLE_CHANGE'; + // Generated from: com/linkedin/avro2pegasus/common/events/ucv/CountryMismatchReputation.pdsc + + export interface CountryMismatchReputation { + score: number; + isAbusive: boolean; + goodMemberCount: number; + restrictedMemberCount: number; + profileCountryCode: string; + ipAddressCountryCode: string; + accountAge: number; + } + // Generated from: com/linkedin/avro2pegasus/common/events/ucv/HandleChangeData.pdsc + + export interface HandleChangeData { + userAction: HandlesChangeAction; + handleUrn?: string; + handleString?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/events/ucv/HandlesChangeAction.pdsc + + export type HandlesChangeAction = 'ADD_HANDLE' | 'REMOVE_HANDLE' | 'MAKE_PRIMARY'; + // Generated from: com/linkedin/avro2pegasus/common/events/ucv/ScoreDecisionReason.pdsc + + export type ScoreDecisionReason = + | 'NO_TRUSTED_HANDLE' + | 'CONFIRMED_HANDLES_PRESENT' + | 'PHONE_PASSWORD_RESET_NOT_ENABLED' + | 'TWO_STEP_VERIFICATION_HANDLE_TAKEN_OVER'; + } + } + namespace Gaap { + // Generated from: com/linkedin/avro2pegasus/common/gaap/FormField.pdsc + + export interface FormField { + tag: string; + name?: string; + id?: string; + type?: string; + className?: string; + possibleValues: string[]; + label?: string; + url: string; + } + // Generated from: com/linkedin/avro2pegasus/common/gaap/ScriptError.pdsc + + export interface ScriptError { + type: ScriptErrorType; + code?: number; + details?: string; + stackTrace?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/gaap/ScriptErrorType.pdsc + + export type ScriptErrorType = + | 'AUTHENTICATION' + | 'API_FAILURE' + | 'RATE_LIMIT' + | 'NAVIGATION' + | 'EXTRACTION' + | 'CAPTCHA' + | 'MISSING_SCRIPT' + | 'EXCEPTION' + | 'INVALID_INPUT' + | 'INVALID_RESULT' + | 'TIMEOUT' + | 'SCRIPT_ACCESS_DENIED' + | 'MISSING_PLUGIN' + | 'AUTH_INFO_ACCESS_DENIED' + | 'BLACKLISTED'; + } + namespace Guidededit { + // Generated from: com/linkedin/avro2pegasus/common/guidededit/GuidedEditCategoryName.pdsc + + export type GuidedEditCategoryName = + | 'ADD_CURRENT_POSITION' + | 'ADD_PAST_POSITION' + | 'ADD_EDUCATION' + | 'UPDATE_EDUCATION' + | 'ADD_CERTIFICATION' + | 'ADD_SUGGESTED_SKILLS' + | 'ADD_SUGGESTED_CERTIFICATIONS' + | 'ADD_SUGGESTED_PATENTS' + | 'ADD_SUGGESTED_PUBLICATIONS' + | 'ADD_INDUSTRY' + | 'ADD_LOCATION' + | 'ADD_PHOTO' + | 'UPDATE_POSITION' + | 'CONFIRM_CURRENT_POSITION' + | 'ADD_SELECTED_CONTACT_INTERESTS' + | 'ADD_SKILLS' + | 'ADD_SUMMARY' + | 'STANDARDIZE_CURRENT_POSITION' + | 'STANDARDIZE_EDUCATION' + | 'UPDATE_HEADLINE' + | 'UPDATE_CERTIFICATION'; + // Generated from: com/linkedin/avro2pegasus/common/guidededit/GuidedEditContextType.pdsc + + export type GuidedEditContextType = + | 'PROFILE_VIEW' + | 'PYMK' + | 'MESSAGING' + | 'JOB' + | 'SEARCH' + | 'MY_NETWORK' + | 'NOTIFICATIONS' + | 'FEED' + | 'THERMOMETER_CARD' + | 'PROFILE_COMPLETION_METER' + | 'NON_SELF_PROFILE_VIEW' + | 'DEEP_LINK' + | 'EMAIL_PYMK' + | 'PROFILE_VIEW_TOOLTIP' + | 'JYMBII' + | 'EMAIL_JYMBII' + | 'SEARCH_APPEARANCE' + | 'LAUNCHPAD_FEED' + | 'ALTERNATIVE_GUIDED_EDIT' + | 'PROFILE_HUB' + | 'WHO_VIEWED_MY_PROFILE' + | 'JOBS_INDEX' + | 'JOBS_CAREER_INTERESTS'; + // Generated from: com/linkedin/avro2pegasus/common/guidededit/GuidedEditEducationsField.pdsc + + export interface GuidedEditEducationsField { + educations: string[]; + } + // Generated from: com/linkedin/avro2pegasus/common/guidededit/GuidedEditEntryAction.pdsc + + export type GuidedEditEntryAction = 'DISMISS' | 'ENTER' | 'NOT_MINE' | 'SKIP' | 'DO_NOT_APPLY'; + // Generated from: com/linkedin/avro2pegasus/common/guidededit/GuidedEditFlowNavAction.pdsc + + export type GuidedEditFlowNavAction = 'DISMISS' | 'SKIP' | 'START_OVER' | 'EXIT'; + // Generated from: com/linkedin/avro2pegasus/common/guidededit/GuidedEditPositionsField.pdsc + + export interface GuidedEditPositionsField { + positions: string[]; + } + // Generated from: com/linkedin/avro2pegasus/common/guidededit/IsbFieldName.pdsc + + export type IsbFieldName = + | 'POSITIONS' + | 'EDUCATIONS' + | 'SKILLS' + | 'COMPANY' + | 'TITLE' + | 'STARTMONTHYEAR' + | 'ENDMONTHYEAR' + | 'STANDARDIZEDLOCATIONURN' + | 'SCHOOL' + | 'DEGREE' + | 'FIELDSOFSTUDY' + | 'CERTIFICATIONS' + | 'PATENTS' + | 'PUBLICATIONS' + | 'CROPPEDIMAGE' + | 'INDUSTRYID' + | 'INVENTORS' + | 'AUTHORS' + | 'SELECTEDCONTACTINTERESTS' + | 'SUMMARY' + | 'HEADLINE'; + // Generated from: com/linkedin/avro2pegasus/common/guidededit/SearchAppearancesModuleType.pdsc + + export type SearchAppearancesModuleType = 'COMPANY' | 'TITLE' | 'KEYWORD'; + } + namespace Hadoop { + // Generated from: com/linkedin/avro2pegasus/common/hadoop/AzkabanContext.pdsc + + export interface AzkabanContext { + projectName: string; + projectVersion: string; + lastChangedTimeSeconds: number; + hostName: string; + flowName: string; + jobName: string; + executionId: number; + executionEngine?: ExecutionEngine; + } + // Generated from: com/linkedin/avro2pegasus/common/hadoop/ExecutionEngine.pdsc + + export type ExecutionEngine = 'AZKABAN' | 'OOZIE'; + } + namespace Holden { + // Generated from: com/linkedin/avro2pegasus/common/holden/CatchpointNode.pdsc + + export interface CatchpointNode { + id: number; + name: string; + continentName: string; + countryName: string; + regionName: string; + cityName: string; + ispName: string; + networkType: string; + ipVersion: string; + asn: Com.Linkedin.Avro2pegasus.Events.Holden.AutonomousSystemNumber; + machineLearningResults: Com.Linkedin.Avro2pegasus.Events.Holden.CatchpointMachineLearningResults; + } + // Generated from: com/linkedin/avro2pegasus/common/holden/CatchpointTracepoint.pdsc + + export interface CatchpointTracepoint { + id: number; + name: string; + value: string; + } + } + namespace Identity { + // Generated from: com/linkedin/avro2pegasus/common/identity/ProfileDashboardCardType.pdsc + + export type ProfileDashboardCardType = + | 'ANALYTICS' + | 'PROFILE_COMPLETION_METER' + | 'GUIDED_EDIT' + | 'CAREER_TOOLS' + | 'PROMOS' + | 'PENDING_ITEMS' + | 'SAVED_ITEMS' + | 'PROMO_BREADCRUMBS'; + // Generated from: com/linkedin/avro2pegasus/common/identity/ProfileDashboardSectionType.pdsc + + export type ProfileDashboardSectionType = 'ANALYTICS' | 'BUILD_PROFILE' | 'CAREER_TOOLS' | 'NEXT_STEPS'; + } + namespace Jobs { + // Generated from: com/linkedin/avro2pegasus/common/jobs/PeopleRecommendation.pdsc + + export interface PeopleRecommendation { + memberUrn: string; + memberNetworkDistance: Com.Linkedin.Avro2pegasus.Events.Common.NetworkDistance; + mutualConnectionCount?: number; + sprinkleType?: PeopleRecommendationSprinkleType; + isJobPoster: boolean; + } + // Generated from: com/linkedin/avro2pegasus/common/jobs/PeopleRecommendationSprinkleType.pdsc + + export type PeopleRecommendationSprinkleType = 'MUTUAL_SCHOOL' | 'MUTUAL_COMPANY' | 'MUTUAL_CONNECTION'; + } + namespace Jobseeker { + // Generated from: com/linkedin/avro2pegasus/common/jobseeker/JobSeekerEventHeader.pdsc + + export interface JobSeekerEventHeader { + jobSeekerSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/common/jobseeker/JobSeekerTrackingItem.pdsc + + export interface JobSeekerTrackingItem { + objectValue: string; + objectId?: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + } + namespace Learning { + // Generated from: com/linkedin/avro2pegasus/common/learning/LearnerLoginType.pdsc + + export type LearnerLoginType = + | 'MEMBER' + | 'ENTERPRISE_BOUND_SSO' + | 'ENTERPRISE_BOUND_NON_SSO' + | 'ENTERPRISE_UNBOUND_SSO' + | 'ENTERPRISE_UNBOUND_NON_SSO'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningActionCategory.pdsc + + export type LearningActionCategory = + | 'VIEW' + | 'BOOKMARK' + | 'UNBOOKMARK' + | 'SEE_MORE' + | 'DISMISS' + | 'ADD_TO_PROFILE' + | 'MARK_AS_DONE' + | 'SHARE_TO_LI' + | 'SHARE_TO_OTHER' + | 'ADD_TO_COLLECTION' + | 'REMOVE_FROM_COLLECTION' + | 'SEARCH' + | 'UNDO' + | 'SNOOZE' + | 'COLLAPSE' + | 'EXPAND' + | 'PLAY' + | 'PAUSE' + | 'LIKE' + | 'FOLLOW' + | 'UNFOLLOW' + | 'DOWNLOAD' + | 'JOIN' + | 'WITHDRAW' + | 'TRANSFER_ACTIVITY' + | 'VIEW_CERTIFICATE' + | 'DELETE' + | 'EDIT' + | 'COMPLETE' + | 'LAUNCH'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningActivityGroup.pdsc + + export interface LearningActivityGroup { + groupPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + groupActivityType: LearningActivityType; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningActivityType.pdsc + + export type LearningActivityType = 'SAVED' | 'IN_PROGRESS' | 'ASSIGNED' | 'HISTORY' | 'DOWNLOADED'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningCommonAction.pdsc + + export interface LearningCommonAction { + trackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: LearningActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningCommonImpression.pdsc + + export interface LearningCommonImpression { + trackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleTime: number; + visibleDuration: number; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningContentPlacement.pdsc + + export type LearningContentPlacement = + | 'IN_PROGRESS' + | 'SAVED' + | 'COLLECTIONS' + | 'ADDED_BY_ORGANIZATION' + | 'LEARNING_HISTORY' + | 'ONBOARDING_FIRST_SAVE' + | 'PURCHASED' + | 'CONSUMPTION'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningContentRecommendation.pdsc + + export interface LearningContentRecommendation { + contentUrn: string; + position?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + contextType?: LearningFeedContextType; + pivotEntityUrn?: string; + modelId?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningFeedContextType.pdsc + + export type LearningFeedContextType = + | 'POPULAR' + | 'SIMILAR_COURSE' + | 'SIMILAR_TO_BOOKMARKED_COURSES' + | 'BECAUSE_YOU_WATCHED' + | 'TRENDING_TITLE' + | 'TRENDING_COMPANY' + | 'TRENDING_INDUSTRY' + | 'TRENDING_GLOBAL' + | 'SKILLS_EXISTING' + | 'SKILLS_NEW' + | 'SHARED_BY_NW' + | 'SHORT_RELEVANT' + | 'EDITORS_PICKS' + | 'TITLE_RECOMMENDATIONS' + | 'NEW_COURSES' + | 'INFLUENCER_RECOMMENDATIONS' + | 'FEATURED_LEARNING_PATHS' + | 'WEEKLY_SERIES' + | 'BREAKING_NEWS' + | 'LEARN_SKILLS_FOR_JOB' + | 'JOB_SEEKER_EDITOR_PICK'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningLoginMethod.pdsc + + export interface LearningLoginMethod { + accountUrn: string; + authModeName?: string; + isMemberLoginRequired: boolean; + isEnterpriseLoginRequired: boolean; + loginType: LearnerLoginType; + isSignupRequired?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningLoginRequest.pdsc + + export interface LearningLoginRequest { + loggedInMemberUrn?: string; + availableLoginMethods: LearningLoginMethod[]; + primaryLoginMethod?: LearningLoginMethod; + loginErrorMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningRecommendationGroup.pdsc + + export interface LearningRecommendationGroup { + groupPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + groupContextType: string; + groupContextUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchActionType.pdsc + + export type LearningSearchActionType = + | 'SEARCH' + | 'VIEW' + | 'BOOKMARK' + | 'REMOVE_BOOKMARK' + | 'ADD_TO_COLLECTION' + | 'REMOVE_FROM_COLLECTION'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchBrowseResult.pdsc + + export interface LearningSearchBrowseResult { + resultId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + resultUrn?: string; + resultType: LearningSearchBrowseResultType; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchBrowseResultType.pdsc + + export type LearningSearchBrowseResultType = + | 'COURSE' + | 'VIDEO' + | 'CATEGORY' + | 'QUERY_SUGGESTION' + | 'SEARCH_QUERY_HISTORY' + | 'LEARNING_PATH' + | 'AUTHOR' + | 'WEBLINK' + | 'SOFTWARE' + | 'TECHNOLOGY' + | 'COLLECTION' + | 'ESCAPE_HATCH' + | 'DOCUMENT' + | 'ARTICLE'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchFilterContentBy.pdsc + + export type LearningSearchFilterContentBy = 'ALL' | 'LYNDA' | 'COMPANY'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchFilterEntity.pdsc + + export type LearningSearchFilterEntity = + | 'ALL' + | 'COURSES' + | 'VIDEOS' + | 'LEARNING_PATHS' + | 'WEBLINKS' + | 'COLLECTIONS'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchFilterLevel.pdsc + + export type LearningSearchFilterLevel = 'ALL' | 'BEGINNER' | 'ADVANCED'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchFilterName.pdsc + + export type LearningSearchFilterName = + | 'SORT_ORDER' + | 'LEVEL' + | 'ENTITY' + | 'SOFTWARE' + | 'TIME' + | 'CONTENT_BY' + | 'TOPICS' + | 'LEARNING_CATEGORIES' + | 'CONTINUING_EDUCATION_UNITS'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchFilterOrder.pdsc + + export type LearningSearchFilterOrder = 'MOST_POPULAR' | 'MOST_RELEVANT' | 'NEWEST'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchPlatformType.pdsc + + export type LearningSearchPlatformType = 'TYPEAHEAD' | 'SEARCH_RESULT_PAGE' | 'RELATED_COURSES'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchResultHit.pdsc + + export interface LearningSearchResultHit { + resultObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + resultType: LearningSearchResultType; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchResultPageOrigin.pdsc + + export type LearningSearchResultPageOrigin = + | 'SUGGESTION' + | 'GLOBAL_SEARCH_HEADER' + | 'HISTORY' + | 'CATEGORY_BROWSE' + | 'CATEGORY_SUGGESTION' + | 'URL' + | 'SKILL' + | 'FILTER_SEARCH' + | 'TOPICS_BROWSE' + | 'SOFTWARE_BROWSE' + | 'VOICE_SEARCH' + | 'SPELLCHECK_SUGGESTION' + | 'SPELLCHECK_REWRITE' + | 'ESCAPE_HATCH' + | 'GLOBAL_BROWSE_HEADER' + | 'ONBOARDING_FIRST_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchResultSource.pdsc + + export type LearningSearchResultSource = 'FEDERATED_LEARNING_TYPEAHEAD' | 'FEDERATED_LEARNING_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchResultType.pdsc + + export type LearningSearchResultType = + | 'COURSE' + | 'VIDEO' + | 'CATEGORY' + | 'LYNDA_SEARCH_HISTORY' + | 'CATEGORIES_AUTOCOMPLETE' + | 'SEARCH_QUERY_HISTORY' + | 'LEARNING_PATH' + | 'AUTHOR' + | 'WEBLINK' + | 'COLLECTION' + | 'DOCUMENT' + | 'ARTICLE'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchSpellcheckPrompt.pdsc + + export interface LearningSearchSpellcheckPrompt { + originalQuery: string; + spellcheckedQuery: string; + spellcheckType: LearningSearchSpellcheckType; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSearchSpellcheckType.pdsc + + export type LearningSearchSpellcheckType = 'SUGGESTION' | 'REWRITE'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSkillUpdateContext.pdsc + + export type LearningSkillUpdateContext = 'LEARNING_ME' | 'LEARNING_ONBOARDING'; + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningSocialProofReason.pdsc + + export interface LearningSocialProofReason { + reasonType: string; + pivotUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/LearningUpsellTrackingObject.pdsc + + export interface LearningUpsellTrackingObject { + trackingCode: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/MyPremiumCourseRecommendation.pdsc + + export interface MyPremiumCourseRecommendation { + courseUrn: string; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + contextType: LearningFeedContextType; + pivotEntityUrn?: string; + modelId: string; + } + // Generated from: com/linkedin/avro2pegasus/common/learning/ProfileCourseRecommendation.pdsc + + export interface ProfileCourseRecommendation { + courseUrn: string; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + contextType: LearningFeedContextType; + pivotEntityUrn?: string; + isHero: boolean; + modelId: string; + } + } + namespace Login { + // Generated from: com/linkedin/avro2pegasus/common/login/LoginTokenType.pdsc + + export type LoginTokenType = 'SINGLE_DEVICE_LINK' | 'PARENT_SESSION'; + } + namespace Lps { + // Generated from: com/linkedin/avro2pegasus/common/lps/DeploymentFailureCategory.pdsc + + export type DeploymentFailureCategory = + | 'UNKNOWN' + | 'APP' + | 'BUG' + | 'CANCELED' + | 'ORCA' + | 'SETUP' + | 'TRANSIENT' + | 'VALIDATION'; + // Generated from: com/linkedin/avro2pegasus/common/lps/MaestroEventEndData.pdsc + + export interface MaestroEventEndData { + releaseId: string; + blueprintVersion?: number; + productUrn: string; + productVersion: string; + productTag?: string; + fabricUrn: string; + requestType: RequestType; + startedAt: number; + actorUrn: string; + impersonatorUrn?: string; + endedAt: number; + status: ReleaseResultStatus; + displayName?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/lps/MaestroEventStartData.pdsc + + export interface MaestroEventStartData { + releaseId: string; + blueprintVersion?: number; + productUrn: string; + productVersion: string; + productTag?: string; + fabricUrn: string; + requestType: RequestType; + startedAt: number; + actorUrn: string; + impersonatorUrn?: string; + displayName?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/lps/ReleaseResultStatus.pdsc + + export type ReleaseResultStatus = 'SUCCESS' | 'FAIL'; + // Generated from: com/linkedin/avro2pegasus/common/lps/RequestType.pdsc + + export type RequestType = + | 'DEPLOY_PRODUCT' + | 'ROLLBACK_PRODUCT' + | 'UNDEPLOY_PRODUCT' + | 'DEPLOY_CONFIG' + | 'DEPLOY_CANARY' + | 'PROMOTE_PRODUCT_CANARY' + | 'ROLLBACK_CANARY' + | 'ENVIRONMENT_PUSH' + | 'ROLLBACK_PRODUCT_CANARY'; + // Generated from: com/linkedin/avro2pegasus/common/lps/TaskType.pdsc + + export type TaskType = + | 'DEPLOYMENT' + | 'DYNAMIC_DISCOVERY' + | 'RESOURCE_ALLOCATION' + | 'SCALING' + | 'CLUSTER_SIZE' + | 'MAESTRO_INTERNAL'; + } + namespace Marketplaceplatform { + // Generated from: com/linkedin/avro2pegasus/common/marketplaceplatform/MarketplaceType.pdsc + + export type MarketplaceType = 'CAREER_ADVICE' | 'SERVICE_MARKETPLACE' | 'CAREER_EXPERTS'; + } + namespace Messages { + // Generated from: com/linkedin/avro2pegasus/common/messages/ContentLink.pdsc + + export interface ContentLink { + controlUrn?: string; + linkId?: number; + } + // Generated from: com/linkedin/avro2pegasus/common/messages/ContentRelevance.pdsc + + export interface ContentRelevance { + contentScore: number; + modelId: string; + } + // Generated from: com/linkedin/avro2pegasus/common/messages/MessageContent.pdsc + + export interface MessageContent { + contentRelevance?: ContentRelevance; + contentUrn?: string; + module?: string; + modulePosition?: number; + intraModulePosition?: number; + contentLinks?: ContentLink[]; + } + // Generated from: com/linkedin/avro2pegasus/common/messages/PushUnregistrationFeedbackChannel.pdsc + + export type PushUnregistrationFeedbackChannel = + | 'APNS_FEEDBACK' + | 'APNS_DELIVERY' + | 'GCM_DELIVERY' + | 'GETUI_DELIVERY' + | 'UWP_DELIVERY' + | 'XIAOMI_DELIVERY' + | 'WEB_PUSH_DELIVERY'; + namespace Flock { + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/CarrierLookupProvider.pdsc + + export type CarrierLookupProvider = 'GOOGLE_PHONELIB' | 'NEUSTAR' | 'INFOBIP' | 'SYNIVERSE'; + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/DeliveryProvider.pdsc + + export type DeliveryProvider = + | 'TATA' + | 'TELESIGN' + | 'TWILIO' + | 'GOOGLE' + | 'APPLE' + | 'OPENMARKET' + | 'NETSIZE' + | 'INFOBIP' + | 'MOVILE' + | 'TYNTEC' + | 'MONTNET' + | 'GUPSHUP' + | 'CLX_NETWORKS' + | 'NEXMO' + | 'CHINA_MOBILE' + | 'TANLA' + | 'AIRTEL' + | 'MITTO' + | 'VODAFONE' + | 'SPARKLE' + | 'WINDOWS' + | 'GETUI' + | 'HUAWEI' + | 'XIAOMI' + | 'CHROME' + | 'BROWSER'; + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/EmailAddressInfo.pdsc + + export interface EmailAddressInfo { + emailAccountUrn?: string; + handleUrn?: string; + hashedGuestEmailAddress?: string; + emailDomain: string; + hashedEmailAddress?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/EmailInfo.pdsc + + export interface EmailInfo { + hasViewEvent: boolean; + linkedinClassHeader?: LinkedinClassHeader; + linkedinClassHeaderStr?: string; + feedbackLoopHeaderValue: string; + bounceAddress: string; + hashedSenderEmailAddress?: string; + hashedRecipientEmailAddress: string; + recipientEmailAddressInfo?: EmailAddressInfo; + subject: string; + hasTextVersion: boolean; + } + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/LinkedinClassHeader.pdsc + + export type LinkedinClassHeader = + | 'ACCT_ADMIN' + | 'GROUP_TO_MBR' + | 'INVITE_REPLY' + | 'BILLING' + | 'JOBS_TO_MBR' + | 'MBR_TO_MBR' + | 'INVITE_ACCEPT' + | 'INVITE_MBR' + | 'INMAIL' + | 'INVITE_REMIND_MEMBER' + | 'CED' + | 'GROUPDIGEST' + | 'SVCANNOUNCE' + | 'INVITE_REMIND_GUEST' + | 'SAVEDSEARCH' + | 'PID' + | 'LIN_NEWS' + | 'INVITE_GUEST' + | 'TIK' + | 'NETWORKDIGEST' + | 'LEGAL_NOTICE' + | 'GROUP_INVITE_MBR' + | 'EMAIL_DEFAULT' + | 'INVITE_REMINDER_MEMBER' + | 'MENTIONS_MBR' + | 'TIK_CLASS'; + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/PhoneNumberInfo.pdsc + + export interface PhoneNumberInfo { + countryDialingCode?: number; + serviceProviderName?: string; + mobileCountryCode?: string; + mobileNetworkCode?: string; + source?: CarrierLookupProvider; + phoneNumberType?: PhoneNumberType; + } + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/PhoneNumberType.pdsc + + export type PhoneNumberType = 'FIXED_LINE' | 'MOBILE' | 'INVALID'; + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/PushInfo.pdsc + + export interface PushInfo { + pushDeviceType: Com.Linkedin.Avro2pegasus.Common.PushDeviceType; + } + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/SmsDeliveryReceiptInfo.pdsc + + export interface SmsDeliveryReceiptInfo { + smsTextDeliveryChannelType?: SmsTextDeliveryChannelType; + } + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/SmsDroppedInfo.pdsc + + export interface SmsDroppedInfo { + smsMessageType?: SmsMessageType; + } + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/SmsEncodingType.pdsc + + export type SmsEncodingType = 'ASCII' | 'GSM_0338' | 'UTF_8'; + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/SmsInfo.pdsc + + export interface SmsInfo { + smsEncodingType: SmsEncodingType; + smsLength: number; + recipientPhoneNumberInfo?: PhoneNumberInfo; + smsMessageType?: SmsMessageType; + } + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/SmsMessageType.pdsc + + export type SmsMessageType = 'TEXT' | 'VOICE_2FA' | 'MULTICHANNEL'; + // Generated from: com/linkedin/avro2pegasus/common/messages/flock/SmsTextDeliveryChannelType.pdsc + + export type SmsTextDeliveryChannelType = 'SMS' | 'VIBER'; + } + } + namespace Ml { + // Generated from: com/linkedin/avro2pegasus/common/ml/DataValidation.pdsc + + export type DataValidation = 'FULL' | 'SAMPLE'; + // Generated from: com/linkedin/avro2pegasus/common/ml/EvaluationMetric.pdsc + + export interface EvaluationMetric { + evaluatorName: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/FeatureShard.pdsc + + export interface FeatureShard { + name: string; + featureSets: string[]; + isInterceptAdded: boolean; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/FixedEffectDataParameters.pdsc + + export interface FixedEffectDataParameters { + featureShardName: string; + minimumPartitions: number; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/FixedEffectOptimizationParameters.pdsc + + export interface FixedEffectOptimizationParameters { + optimizer: Optimizer; + convergenceTolerance: number; + maximumIterations: number; + regularizationType?: Regularization; + elasticNetAlpha?: number; + initialRegularizationWeight: number; + downSamplingRate: number; + isValidatedPerIteration: boolean; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/FixedEffectRegressionTrainingLog.pdsc + + export interface FixedEffectRegressionTrainingLog { + regularizationWeight: number; + terminationReason?: TerminationReason; + evaluationMetrics: EvaluationMetric[]; + optimizationStates: OptimizationState[]; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/InputFormat.pdsc + + export type InputFormat = 'AVRO' | 'LIBSVM'; + // Generated from: com/linkedin/avro2pegasus/common/ml/ModelOutputMode.pdsc + + export type ModelOutputMode = 'NONE' | 'BEST' | 'ALL'; + // Generated from: com/linkedin/avro2pegasus/common/ml/Normalization.pdsc + + export type Normalization = 'SCALE_WITH_STANDARD_DEVIATION' | 'SCALE_WITH_MAX_MAGNITUDE' | 'STANDARDIZATION'; + // Generated from: com/linkedin/avro2pegasus/common/ml/OptimizationState.pdsc + + export interface OptimizationState { + iteration: number; + optimizationDuration: number; + objectiveValue: number; + objectiveGradientNorm: number; + evaluationMetricValues: EvaluationMetric[]; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/Optimizer.pdsc + + export type Optimizer = 'LBFGS' | 'TRON'; + // Generated from: com/linkedin/avro2pegasus/common/ml/RegressionTrainingParameters.pdsc + + export interface RegressionTrainingParameters { + trainingDataDirectories: string[]; + trainingDataDateRange: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + inputFormat: InputFormat; + validationDataDirectories: string[]; + validationDataDateRange: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + minimumValidationPartitions?: number; + evaluators: string[]; + outputDirectory: string; + modelOutputMode: ModelOutputMode; + maximumOutputFiles?: number; + offHeapIndexMapDirectory?: string; + offHeapIndexMapPartitions?: number; + featureSetDirectory: string; + featureShards: FeatureShard[]; + trainingTask: TrainingTask; + outerIterations: number; + updateSequence: string[]; + normalization?: Normalization; + summarizationOutputDirectory?: string; + dataValidation?: DataValidation; + treeAggregateDepth: number; + isVarianceComputed: boolean; + isOptimizationStateTrackerEnabled: boolean; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/Regularization.pdsc + + export type Regularization = 'L1' | 'L2' | 'ELASTIC_NET'; + // Generated from: com/linkedin/avro2pegasus/common/ml/SparkHeader.pdsc + + export interface SparkHeader { + yarnApplicationId: string; + corpuserUrn: string; + workflowUrl: string; + executionUrl: string; + jobUrl: string; + jobId: string; + driverMemory: number; + numberOfExecutors: number; + executorMemory: number; + executorCores: number; + startTime: number; + submitterCorpuserUrn?: string; + endTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/TerminationReason.pdsc + + export type TerminationReason = + | 'MAX_ITERATIONS' + | 'FUNCTION_VALUES_CONVERGED' + | 'GRADIENT_CONVERGED' + | 'OBJECTIVE_NOT_IMPROVING'; + // Generated from: com/linkedin/avro2pegasus/common/ml/TrainingTask.pdsc + + export type TrainingTask = + | 'LOGISTIC_REGRESSION' + | 'LINEAR_REGRESSION' + | 'POISSON_REGRESSION' + | 'SMOOTHED_HINGE_LOSS_LINEAR_SVM'; + namespace Xgboost { + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/Booster.pdsc + + export type Booster = 'DART' | 'GBLINEAR' | 'GBTREE'; + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/DartBoosterOptimizationParameters.pdsc + + export interface DartBoosterOptimizationParameters { + treeBoostParameters: TreeBoosterOptimizationParameters; + sampleType?: SampleType; + normalizeType?: NormalizeType; + rateDrop?: number; + oneDrop?: number; + skipDrop?: number; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/EvaluationMetricsEntry.pdsc + + export interface EvaluationMetricsEntry { + evaluator: Evaluator; + evaluationMetricsSequence: string[]; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/Evaluator.pdsc + + export type Evaluator = 'ACCURACY' | 'AUPR' | 'AUROC' | 'CONFUSIONMATRIX' | 'MSE' | 'MAE' | 'NDCG_K'; + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/LinearBoosterOptimizationParameters.pdsc + + export interface LinearBoosterOptimizationParameters { + lambda?: number; + alpha?: number; + lambdaBias?: number; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/ModelSummary.pdsc + + export interface ModelSummary { + featureImportanceScores: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/NormalizeType.pdsc + + export type NormalizeType = 'TREE' | 'FOREST'; + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/ProcessType.pdsc + + export type ProcessType = 'DEFAULT' | 'UPDATE'; + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/RankingParameters.pdsc + + export interface RankingParameters { + groupDataDirectory: string; + truncateAtK: number; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/SampleType.pdsc + + export type SampleType = 'UNIFORM' | 'WEIGHTED'; + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/TrainingTask.pdsc + + export type TrainingTask = + | 'REG_LINEAR' + | 'REG_LOGISTIC' + | 'BINARY_LOGISTIC' + | 'BINARY_LOGITRAW' + | 'COUNT_POISSON' + | 'MULTI_SOFTMAX' + | 'MULTI_SOFTPROB' + | 'RANK_PAIRWISE' + | 'REG_GAMMA' + | 'REG_TWEEDIE'; + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/TreeBoosterOptimizationParameters.pdsc + + export interface TreeBoosterOptimizationParameters { + eta?: number; + gamma?: number; + maxDepth?: number; + minChildWeight?: number; + maxDeltaStep?: number; + subSample?: number; + colSampleByTree?: number; + colSampleByLevel?: number; + lambda?: number; + alpha?: number; + sketchEps?: number; + scalePosWeight?: number; + refreshLeaf?: number; + processType?: ProcessType; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/XGBoostTrainingLog.pdsc + + export interface XGBoostTrainingLog { + modelSummary: ModelSummary; + evaluationIterations: number[]; + evaluationMetrics: EvaluationMetricsEntry[]; + } + // Generated from: com/linkedin/avro2pegasus/common/ml/xgboost/XGBoostTrainingParameters.pdsc + + export interface XGBoostTrainingParameters { + trainingDataDirectory: string; + validationDataDirectory: string; + featureIndexDirectory: string; + outputDirectory: string; + trainingTask: TrainingTask; + minimumInputPartitions: number; + numberOfTrees: number; + numberOfXGBoostWorkers: number; + booster: Booster; + stepIncrement: number; + validationSamplingRate: number; + tweedieVariancePower?: number; + nThread?: number; + silent?: number; + numClass?: number; + seed?: number; + rankingParameters?: RankingParameters; + } + } + } + namespace Mlmodellifecycle { + // Generated from: com/linkedin/avro2pegasus/common/mlmodellifecycle/ApplicationType.pdsc + + export type ApplicationType = 'RAIN' | 'SAMZA'; + // Generated from: com/linkedin/avro2pegasus/common/mlmodellifecycle/ErrorType.pdsc + + export type ErrorType = 'APP_ERROR' | 'SETUP_ERROR' | 'INFRASTRUCTURE_ERROR'; + // Generated from: com/linkedin/avro2pegasus/common/mlmodellifecycle/FailureStatistic.pdsc + + export interface FailureStatistic { + errorCode: ErrorType; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/common/mlmodellifecycle/MLModelDeploymentStats.pdsc + + export interface MLModelDeploymentStats { + applicationName: string; + numberOfSuccessfulMREs: number; + numberOfFailedMREs: number; + applicationType: ApplicationType; + failureStatistics?: FailureStatistic[]; + } + // Generated from: com/linkedin/avro2pegasus/common/mlmodellifecycle/MLModelDeploymentStatus.pdsc + + export type MLModelDeploymentStatus = 'CANCELED' | 'SUCCESS' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/common/mlmodellifecycle/MlModelPublishState.pdsc + + export type MlModelPublishState = 'QUEUED' | 'IN_PROGRESS' | 'SUCCEEDED' | 'FAILED'; + } + namespace Opportunitymarketplace { + // Generated from: com/linkedin/avro2pegasus/common/opportunitymarketplace/MarketplaceRole.pdsc + + export type MarketplaceRole = 'MENTOR' | 'MENTEE' | 'ENTREPRENEUR' | 'INVESTOR'; + // Generated from: com/linkedin/avro2pegasus/common/opportunitymarketplace/MarketplaceType.pdsc + + export type MarketplaceType = 'CAREER_ADVICE' | 'INVESTOR'; + } + namespace Pie { + // Generated from: com/linkedin/avro2pegasus/common/pie/DeviceCPUUsage.pdsc + + export interface DeviceCPUUsage { + nic: number; + sirq: number; + irq: number; + idle: number; + usr: number; + sys: number; + io: number; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/DeviceMemoryUsage.pdsc + + export interface DeviceMemoryUsage { + freeMemory: number; + totalMemory: number; + availableMemory: number; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/DeviceOperationalStatus.pdsc + + export type DeviceOperationalStatus = 'ON' | 'OFF' | 'NOT_PRESENT' | 'NO_AC_INPUT'; + // Generated from: com/linkedin/avro2pegasus/common/pie/EFuse.pdsc + + export interface EFuse { + inputCurrent: number; + inputVoltage: number; + outputVoltage: number; + inputPower: number; + temperature: number; + state: DeviceOperationalStatus; + tripState: boolean; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/FanDetails.pdsc + + export interface FanDetails { + temperature: number; + speed: number; + fanStatus: DeviceOperationalStatus; + fanWarning?: string; + fanFail?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/HostDetails.pdsc + + export interface HostDetails { + macAddress: string; + ipAddress: string; + portNumber: number; + hostSite?: string; + hostCage?: string; + hostCabinet?: string; + hostCoreType?: string; + hostCoreName?: string; + hostServiceName?: string; + hostName?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/Incident.pdsc + + export interface Incident { + incidentId: number; + dedupKey: string; + message: string; + state: Com.Linkedin.Avro2pegasus.Events.Common.Pie.IncidentState; + infoTag?: Com.Linkedin.Avro2pegasus.Events.Common.Pie.IncidentInfoTag; + infoTagComment?: string; + severity: Com.Linkedin.Avro2pegasus.Events.Pie.EventSeverity; + creationTime: number; + modifiedTime: number; + eventLastRecordedTime: number; + eventCount: number; + claimerUrn?: string; + resolverUrn?: string; + ownerTeamUrn: string; + affectedDevices: string[]; + eventSubTypes: string[]; + triageInfo?: IncidentTriageInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/IncidentTriageInfo.pdsc + + export interface IncidentTriageInfo { + id: number; + type: Com.Linkedin.Avro2pegasus.Events.Common.Pie.TriageRecordType; + triageRefId?: string; + triageStatus: Com.Linkedin.Avro2pegasus.Events.Common.Pie.TriageRecordStatus; + creationTime: number; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/InterfaceDetails.pdsc + + export interface InterfaceDetails { + interfaceIndex: number; + interfaceName?: string; + interfaceDescription?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/NetworkDeviceDetails.pdsc + + export interface NetworkDeviceDetails { + deviceName: string; + systemDescription: string; + systemModel?: string; + platform?: string; + vendor?: string; + osVersion?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/NetworkInterfaceDetails.pdsc + + export interface NetworkInterfaceDetails { + name: string; + interfaceIndex: string; + ipAddress?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + description?: string; + lldpNeighborDevice?: string; + lldpNeighborInterface?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/PhaseMetric.pdsc + + export interface PhaseMetric { + outputCurrent?: number; + outputVoltage?: number; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/PowerDeviceMetricDetails.pdsc + + export interface PowerDeviceMetricDetails { + name: string; + inopsId: number; + phaseMetrices?: { [id: string]: PhaseMetric }; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/PowerShelfDetails.pdsc + + export interface PowerShelfDetails { + psuDetails: PowerSupplyUnitDetails[]; + sideATotalPower: number; + sideBTotalPower: number; + totalPower: number; + totalCurrent: number; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/PowerSupplyUnitDetails.pdsc + + export interface PowerSupplyUnitDetails { + fanSpeed: number; + operationalState: DeviceOperationalStatus; + inputCurrent: number; + inputVoltage: number; + outputVoltage: number; + inputPower: number; + temperatureSensorReadings: TemperatureSensorReadings; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/RduEntityMetric.pdsc + + export interface RduEntityMetric { + switchingState?: boolean; + rmsCurrent: number; + unbalancedCurrent?: number; + rmsVoltage?: number; + activePower?: number; + apparentPower?: number; + powerFactor?: number; + activeEnergy?: number; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/RduSensor.pdsc + + export interface RduSensor { + temperature?: number; + humidity?: number; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/SystemUsage.pdsc + + export interface SystemUsage { + cpuUsage: DeviceCPUUsage; + memoryUsage: DeviceMemoryUsage; + } + // Generated from: com/linkedin/avro2pegasus/common/pie/TemperatureSensorReadings.pdsc + + export interface TemperatureSensorReadings { + sensor1Reading: number; + sensor2Reading: number; + sensor3Reading: number; + } + } + namespace Premium { + // Generated from: com/linkedin/avro2pegasus/common/premium/PremiumPaywallRestrictionType.pdsc + + export type PremiumPaywallRestrictionType = 'DROP' | 'WARN'; + // Generated from: com/linkedin/avro2pegasus/common/premium/PremiumPaywallType.pdsc + + export type PremiumPaywallType = 'AASAAN' | 'BROWSEMAPS' | 'XRAY'; + } + namespace Profileedit { + // Generated from: com/linkedin/avro2pegasus/common/profileedit/ProfileEditMemberFeedbackTopic.pdsc + + export type ProfileEditMemberFeedbackTopic = 'ADD_PHOTO_DISMISS'; + // Generated from: com/linkedin/avro2pegasus/common/profileedit/ProfileEditMemberFeedbackType.pdsc + + export type ProfileEditMemberFeedbackType = + | 'PHOTO_NOT_PROFESSIONAL' + | 'PHOTO_AUDIENCE' + | 'PHOTO_PERCEPTION' + | 'PHOTO_EXAMPLES'; + } + namespace Profinder { + // Generated from: com/linkedin/avro2pegasus/common/profinder/ServiceProviderProfileData.pdsc + + export interface ServiceProviderProfileData { + resultIndex: number; + serviceProviderMemberUrn: string; + recommendationsCount: number; + commonConnectionsCount: number; + } + } + namespace Race { + // Generated from: com/linkedin/avro2pegasus/common/race/ScaleUnit.pdsc + + export type ScaleUnit = 'NODE_COUNT' | 'PERCENTAGE'; + // Generated from: com/linkedin/avro2pegasus/common/race/TriggeredScalingType.pdsc + + export type TriggeredScalingType = 'SCALE_OUT' | 'SCALE_IN'; + } + namespace Tracking { + // Generated from: com/linkedin/avro2pegasus/common/tracking/InProgressDetailStep.pdsc + + export type InProgressDetailStep = + | 'UPL_BUNDLE_FETCHED' + | 'VAL_BUNDLE_FETCHED' + | 'UPL_UPLOADED' + | 'VALIDATE_STARTED' + | 'VALIDATE_FINISHED'; + // Generated from: com/linkedin/avro2pegasus/common/tracking/SchemaLifecycleAppIdRecord.pdsc + + export interface SchemaLifecycleAppIdRecord { + appId: string; + } + // Generated from: com/linkedin/avro2pegasus/common/tracking/SchemaLifecycleTopicRecord.pdsc + + export interface SchemaLifecycleTopicRecord { + topic: string; + } + // Generated from: com/linkedin/avro2pegasus/common/tracking/UmpDevLifeCycleFailureDetail.pdsc + + export interface UmpDevLifeCycleFailureDetail { + failureDetail: string; + } + // Generated from: com/linkedin/avro2pegasus/common/tracking/UmpDevLifeCycleInProgressDetail.pdsc + + export interface UmpDevLifeCycleInProgressDetail { + inProgressDetail: InProgressDetailStep; + } + // Generated from: com/linkedin/avro2pegasus/common/tracking/UmpDevLifeCycleStartedDetail.pdsc + + export interface UmpDevLifeCycleStartedDetail { + processCommand: string; + } + // Generated from: com/linkedin/avro2pegasus/common/tracking/UmpDevLifeCycleSucceededDetail.pdsc + + export interface UmpDevLifeCycleSucceededDetail { + destinationUrl: string; + } + } + namespace Ucv { + // Generated from: com/linkedin/avro2pegasus/common/ucv/FalsePositivesControllerData.pdsc + + export interface FalsePositivesControllerData { + shortedRuleIds: string[]; + } + } + namespace Webcrawling { + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/CompanyWebSearchRequest.pdsc + + export interface CompanyWebSearchRequest { + query: string; + market: Com.Linkedin.Avro2pegasus.Events.Locale; + startOffset: number; + resultCount: number; + userAgent: string; + clientId?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/CompressedRawWebDocument.pdsc + + export interface CompressedRawWebDocument { + sequenceUuid: string; + sequenceIndex: number; + sequenceTotal: number; + originalSeedUrl: string; + actualSeedUrl: string; + documentUrl: string; + documentAccessTime: number; + crawlerTopologyId: string; + compressedContent: number; + httpRequestHeaders: { [id: string]: string }; + httpResponseHeaders: { [id: string]: string }; + error?: IngestionError; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/DocumentUrlErrorCause.pdsc + + export type DocumentUrlErrorCause = + | 'NONE' + | 'UNAVAILABLE' + | 'ROBOTS_RULE' + | 'CONTENT_PARSING' + | 'INVALID_URL'; + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/ErrorType.pdsc + + export type ErrorType = + | 'HTTP' + | 'APPLICATION_SERVICE' + | 'DNS' + | 'CONNECTION_TIMEOUT' + | 'SITE_POLICY_RESTRICTION' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/HomepageUrl.pdsc + + export interface HomepageUrl { + url: string; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/HomepageUrls.pdsc + + export interface HomepageUrls { + homepageUrls: HomepageUrl[]; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/IngestedUrlStatus.pdsc + + export interface IngestedUrlStatus { + correlatorId: string; + requestedUrl: string; + documentUrl: string; + documentAccessTime: number; + requestedUrlStatus: RequestedUrlStatus; + documentUrlStatusCode: number; + documentUrlErrorCause: DocumentUrlErrorCause; + redirectionSequence: Array; + redirectionAnalysis?: RedirectionAnalysis; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/IngestionError.pdsc + + export interface IngestionError { + type: ErrorType; + code?: number; + message?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/OrganizationWebSearchRequest.pdsc + + export interface OrganizationWebSearchRequest { + organizationUrn: string; + request: WebSearchRequest; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/RawJobWebSearchRequest.pdsc + + export interface RawJobWebSearchRequest { + query: string; + market: Com.Linkedin.Avro2pegasus.Events.Locale; + startOffset: number; + resultCount: number; + clientId?: string; + rawJobId: number; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/RawWebDocument.pdsc + + export interface RawWebDocument { + originalSeedUrl?: string; + actualSeedUrl?: string; + documentUrl: string; + documentAccessTime: number; + content: number; + httpRequestHeaders: { [id: string]: string }; + httpResponseHeaders: { [id: string]: string }; + error?: IngestionError; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/RedirectionAnalysis.pdsc + + export interface RedirectionAnalysis { + isSchemeDifferent: boolean; + isHostDifferent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/RedirectionItem.pdsc + + export interface RedirectionItem { + url: string; + statusCode: number; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/RequestedUrlStatus.pdsc + + export type RequestedUrlStatus = 'SUCCESS' | 'REDIRECT' | 'ERROR' | 'REDIRECT_THEN_ERROR'; + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/SearchResultUrl.pdsc + + export interface SearchResultUrl { + url: string; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/SearchResultUrls.pdsc + + export interface SearchResultUrls { + searchResultUrls: SearchResultUrl[]; + SearchPhrase: string; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/SeedUrl.pdsc + + export interface SeedUrl { + url: string; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/SeedUrls.pdsc + + export interface SeedUrls { + seedUrls: SeedUrl[]; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/WebHit.pdsc + + export interface WebHit { + title: string; + displayUrl: string; + snippet: string; + clientId?: string; + traceId?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/WebSearchQuerySuggestion.pdsc + + export interface WebSearchQuerySuggestion { + displayQuerySuggestion: string; + querySuggestion: string; + webSearchUrl: string; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/WebSearchRequest.pdsc + + export interface WebSearchRequest { + query: string; + market: Com.Linkedin.Avro2pegasus.Events.Locale; + startOffset: number; + resultCount: number; + userAgent: string; + clientId?: string; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/WebSearchResponse.pdsc + + export interface WebSearchResponse { + totalResultCount: number; + hits: WebHit[]; + spellingCorrectionContext?: WebSearchSpellingSuggestions; + } + // Generated from: com/linkedin/avro2pegasus/common/webcrawling/WebSearchSpellingSuggestions.pdsc + + export interface WebSearchSpellingSuggestions { + id: string; + value: WebSearchQuerySuggestion[]; + } + } + } + namespace Company { + namespace Bizprofile { + namespace Ds { + namespace Api { + namespace Espresso { + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizCallToAction.pdsc + + export interface BizCallToAction { + ctaType: BizCallToActionType; + redirectUrl?: string; + active: boolean; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizCallToActionType.pdsc + + export type BizCallToActionType = + | 'VIEW_WEBSITE' + | 'SEE_JOBS' + | 'VIEW_CONTACT_INFO' + | 'LEARN_MORE' + | 'SIGN_UP' + | 'SUBSCRIBE' + | 'REGISTER' + | 'EMAIL_US' + | 'CALL_US' + | 'REQUEST_DEMO' + | 'DONATE' + | 'VOLUNTEER'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizCompany.pdsc + + export interface BizCompany { + universalName: string; + active?: boolean; + allEmployeesAsAdmins?: boolean; + attributes: number; + blogRssUrl?: string; + creationDate: number; + creatorId?: number; + employeeCount?: number; + endYear?: number; + foundedYear?: number; + largeGraphicId?: string; + lastEditorId?: number; + lastModifiedDate: number; + logoId?: string; + dataVersion: number; + schemaVersion: number; + squareLogoId?: string; + stockSymbol?: string; + twitterId?: string; + websiteUrl?: string; + administratorIds?: number[]; + metaData?: { [id: string]: string }; + specialities?: string[]; + status?: BizCompanyStatus; + companyType?: BizCompanyType; + descriptions?: BizDescription[]; + employeeCountRange?: BizEmployeeCountRange; + exchangeSymbol?: BizExchangeSymbol; + industries?: BizIndustry[]; + locations?: BizLocation[]; + names?: BizName[]; + relationships?: BizRelationship[]; + revenues?: BizRevenue[]; + heroImage?: BizCroppedImage; + featuredUpdates?: string[]; + groups?: number[]; + slideshares?: BizSlideshareCategory[]; + images?: BizImage[]; + ContentCertToken?: string; + versionTag?: string; + schoolAttributes?: BizSchoolAttributes; + phone?: BizPhoneNumber; + emailAddress?: string; + partnerSourceCode?: string; + partnerCompanyUrl?: string; + tagline?: MultiLocaleString; + associatedHashtags?: string[]; + callToAction?: BizCallToAction; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizCompanyStatus.pdsc + + export type BizCompanyStatus = 'OPR' | 'OPS' | 'RRG' | 'OOB' | 'ACQ'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizCompanyType.pdsc + + export type BizCompanyType = 'C' | 'D' | 'E' | 'G' | 'N' | 'O' | 'P' | 'S' | 'A'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizCropInfo.pdsc + + export interface BizCropInfo { + height?: number; + width?: number; + x?: number; + y?: number; + angle?: number; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizCroppedImage.pdsc + + export interface BizCroppedImage { + imageId?: string; + uncroppedImageId?: string; + url?: string; + height?: number; + width?: number; + cropHeight?: number; + cropWidth?: number; + cropXPosition?: number; + cropYPosition?: number; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizDescription.pdsc + + export interface BizDescription { + id: number; + description?: string; + locale?: string; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizEmployeeCountRange.pdsc + + export type BizEmployeeCountRange = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizExchangeSymbol.pdsc + + export type BizExchangeSymbol = 'ASE' | 'NYS' | 'NMS' | 'LSE' | 'FRA' | 'GER' | 'PAR'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizHierarchyClassification.pdsc + + export type BizHierarchyClassification = + | 'CONSORTIUM_SYSTEM' + | 'UNIVERSITY' + | 'INDEPENDENT_SCHOOL_COLLEGE_PROVIDER' + | 'REMOTE_CAMPUS' + | 'DISTANCE_LEARNING'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizImage.pdsc + + export interface BizImage { + mediaUrn: string; + type: BizImageType; + croppedMediaUrn?: string; + cropInfo?: BizCropInfo; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizImageType.pdsc + + export type BizImageType = + | 'SQUARE_LOGO' + | 'LOGO_LEGACY' + | 'SQUARE_LOGO_LEGACY' + | 'OVERVIEW' + | 'BACKGROUND_COVER' + | 'SQUARE_LOGO_V2' + | 'OVERVIEW_V2' + | 'BACKGROUND_COVER_V2'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizIndustry.pdsc + + export type BizIndustry = + | 'ACCOUNTING' + | 'AIRLINES_AVIATION' + | 'ALTERNATIVE_DISPUTE_RESOLUTION' + | 'ALTERNATIVE_MEDICINE' + | 'ANIMATION' + | 'APPAREL_AND_FASHION' + | 'ARCHITECTURE_AND_PLANNING' + | 'ARTS_AND_CRAFTS' + | 'AUTOMOTIVE' + | 'AVIATION_AND_AEROSPACE' + | 'BANKING' + | 'BIOTECHNOLOGY' + | 'BROADCAST_MEDIA' + | 'BUILDING_MATERIALS' + | 'BUSINESS_SUPPLIES_AND_EQUIPMENT' + | 'CAPITAL_MARKETS' + | 'CHEMICALS' + | 'CIVIC_AND_SOCIAL_ORGANIZATION' + | 'CIVIL_ENGINEERING' + | 'COMMERCIAL_REAL_ESTATE' + | 'COMPUTER_AND_NETWORK_SECURITY' + | 'COMPUTER_GAMES' + | 'COMPUTER_HARDWARE' + | 'COMPUTER_NETWORKING' + | 'COMPUTER_SOFTWARE' + | 'CONSTRUCTION' + | 'CONSUMER_ELECTRONICS' + | 'CONSUMER_GOODS' + | 'CONSUMER_SERVICES' + | 'COSMETICS' + | 'DAIRY' + | 'DEFENSE_AND_SPACE' + | 'DESIGN' + | 'EDUCATION_MANAGEMENT' + | 'ELECTRICAL_AND_ELECTRONIC_MANUFACTURING' + | 'ENTERTAINMENT' + | 'ENVIRONMENTAL_SERVICES' + | 'EVENTS_SERVICES' + | 'EXECUTIVE_OFFICE' + | 'E_LEARNING' + | 'FACILITIES_SERVICES' + | 'FARMING' + | 'FINANCIAL_SERVICES' + | 'FINE_ART' + | 'FISHERY' + | 'FOOD_AND_BEVERAGES' + | 'FOOD_PRODUCTION' + | 'FUNDRAISING' + | 'FURNITURE' + | 'GAMBLING_AND_CASINOS' + | 'GLASS_CERAMICS_AND_CONCRETE' + | 'GOVERNMENT_ADMINISTRATION' + | 'GOVERNMENT_RELATIONS' + | 'GRAPHIC_DESIGN' + | 'HEALTH_WELLNESS_AND_FITNESS' + | 'HIGHER_EDUCATION' + | 'HOSPITALITY' + | 'HOSPITAL_AND_HEALTH_CARE' + | 'HUMAN_RESOURCES' + | 'IMPORT_AND_EXPORT' + | 'INDIVIDUAL_AND_FAMILY_SERVICES' + | 'INDUSTRIAL_AUTOMATION' + | 'INFORMATION_SERVICES' + | 'INFORMATION_TECHNOLOGY_AND_SERVICES' + | 'INSURANCE' + | 'INTERNATIONAL_AFFAIRS' + | 'INTERNATIONAL_TRADE_AND_DEVELOPMENT' + | 'INTERNET' + | 'INVESTMENT_BANKING_AND_VENTURE' + | 'INVESTMENT_MANAGEMENT' + | 'JUDICIARY' + | 'LAW_ENFORCEMENT' + | 'LAW_PRACTICE' + | 'LEGAL_SERVICES' + | 'LEGISLATIVE_OFFICE' + | 'LEISURE_AND_TRAVEL' + | 'LIBRARIES' + | 'LOGISTICS_AND_SUPPLY_CHAIN' + | 'LUXURY_GOODS_AND_JEWELRY' + | 'MACHINERY' + | 'MANAGEMENT_CONSULTING' + | 'MARITIME' + | 'MARKETING_AND_ADVERTISING' + | 'MARKET_RESEARCH' + | 'MECHANICAL_OR_INDUSTRIAL_ENGINEERING' + | 'MEDIA_PRODUCTION' + | 'MEDICAL_DEVICE' + | 'MEDICAL_PRACTICE' + | 'MENTAL_HEALTH_CARE' + | 'MILITARY' + | 'MINING_AND_METALS' + | 'MOTION_PICTURES_AND_FILM' + | 'MUSEUMS_AND_INSTITUTIONS' + | 'MUSIC' + | 'NANOTECHNOLOGY' + | 'NEWSPAPERS' + | 'NON_PROFIT_ORGANIZATION_MANAGEMENT' + | 'OIL_AND_ENERGY' + | 'ONLINE_PUBLISHING' + | 'OUTSOURCING_OFFSHORING' + | 'PACKAGE_AND_FREIGHT_DELIVERY' + | 'PACKAGING_AND_CONTAINERS' + | 'PAPER_AND_FOREST_PRODUCTS' + | 'PERFORMING_ARTS' + | 'PHARMACEUTICALS' + | 'PHILANTHROPY' + | 'PHOTOGRAPHY' + | 'PLASTICS' + | 'POLITICAL_ORGANIZATION' + | 'PRIMARY_SECONDARY' + | 'PRINTING' + | 'PROFESSIONAL_TRAINING' + | 'PROGRAM_DEVELOPMENT' + | 'PUBLIC_POLICY' + | 'PUBLIC_RELATIONS' + | 'PUBLIC_SAFETY' + | 'PUBLISHING' + | 'RAILROAD_MANUFACTURE' + | 'RANCHING' + | 'REAL_ESTATE' + | 'RECREATIONAL_FACILITIES_AND_SERVICES' + | 'RELIGIOUS_INSTITUTIONS' + | 'RENEWABLES_AND_ENVIRONMENT' + | 'RESEARCH' + | 'RESTAURANTS' + | 'RETAIL' + | 'SECURITY_AND_INVESTIGATIONS' + | 'SEMICONDUCTORS' + | 'SHIPBUILDING' + | 'SPORTING_GOODS' + | 'SPORTS' + | 'STAFFING_AND_RECRUITING' + | 'SUPERMARKETS' + | 'TELECOMMUNICATIONS' + | 'TEXTILES' + | 'THINK_TANKS' + | 'TOBACCO' + | 'TRANSLATION_AND_LOCALIZATION' + | 'TRANSPORTATION_TRUCKING_AND_RAILROAD' + | 'UTILITIES' + | 'VENTURE_CAPITAL' + | 'VETERINARY' + | 'WAREHOUSING' + | 'WHOLESALE' + | 'WINE_AND_SPIRITS' + | 'WIRELESS' + | 'WRITING_AND_EDITING'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizLocation.pdsc + + export interface BizLocation { + id: number; + attributes: number; + street1?: string; + street2?: string; + city?: string; + state?: string; + postalCode?: string; + countryCode?: string; + regionCode?: number; + phone1?: string; + phone2?: string; + fax?: string; + description?: string; + employeeCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizName.pdsc + + export interface BizName { + attributes: number; + id: number; + name?: string; + locale?: string; + type?: BizNameType; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizNameType.pdsc + + export type BizNameType = 'UNVR' | 'CNCL' | 'ALTR'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizPhoneNumber.pdsc + + export interface BizPhoneNumber { + number: string; + extension?: string; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizRelationship.pdsc + + export interface BizRelationship { + id: number; + attributes: number; + relatedCompanyId: number; + startDate: number; + endDate: number; + state: string; + type?: BizRelationshipType; + relationshipWithParent?: BizRelationshipWithParent; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizRelationshipType.pdsc + + export type BizRelationshipType = 'DVSN' | 'SBSD' | 'PRNT' | 'ACQN' | 'MRGR' | 'BRND' | 'SCHL'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizRelationshipWithParent.pdsc + + export type BizRelationshipWithParent = + | 'DIVISION' + | 'SUBSIDIARY' + | 'ACQUISITION' + | 'MERGER' + | 'BRAND' + | 'SCHOOL'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizRevenue.pdsc + + export interface BizRevenue { + id: number; + amount?: number; + rangeAmount?: Com.Linkedin.Avro2pegasus.Events.Common.ClosedDoubleRange; + currencyCode?: string; + year?: number; + month?: number; + day?: number; + period?: BizRevenuePeriod; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizRevenuePeriod.pdsc + + export type BizRevenuePeriod = 'Q1' | 'Q2' | 'Q3' | 'Q4' | 'ANNUAL'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizSchoolAttributes.pdsc + + export interface BizSchoolAttributes { + schoolUrn: string; + yearLevel?: BizSchoolYearLevel; + type?: BizSchoolType; + hierarchyClassification: BizHierarchyClassification; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizSchoolType.pdsc + + export type BizSchoolType = 'PUBLIC' | 'PRIVATE' | 'PROFIT'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizSchoolYearLevel.pdsc + + export type BizSchoolYearLevel = 'UNDER_TWO_YEAR' | 'TWO_TO_FOUR_YEAR' | 'FOUR_OR_MORE_YEAR'; + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/BizSlideshareCategory.pdsc + + export interface BizSlideshareCategory { + name?: string; + description?: string; + slideshareCodes?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/company/bizprofile/ds/api/espresso/MultiLocaleString.pdsc + + export interface MultiLocaleString { + localized: { [id: string]: string }; + } + } + } + } + } + } + namespace Contacts { + // Generated from: com/linkedin/avro2pegasus/contacts/ConnectionsWithBirthdaysMessage.pdsc + + export interface ConnectionsWithBirthdaysMessage { + memberId: number; + month: number; + day: number; + connectionIds: number[]; + } + } + namespace Content { + // Generated from: com/linkedin/avro2pegasus/content/OrphanContentDeletionMessage.pdsc + + export interface OrphanContentDeletionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentType: string; + contentUrn: string; + } + } + namespace Data { + namespace Espresso { + // Generated from: com/linkedin/avro2pegasus/data/espresso/EspressoEvent.pdsc + + export interface EspressoEvent { + partition: string; + table: string; + tableGenerationId?: number; + scn: number; + commitTime?: number; + produceTime: number; + partNum: number; + partPosition: EspressoTransactionMarker; + operation: EspressoEventOperation; + key: Array; + beforeImage?: + | EspressoRowImage + | EspressoLuceneIndexRowImage + | EspressoLuceneMetaDataRowImage + | EspressoNativeIndexRowImage; + afterImage?: + | EspressoRowImage + | EspressoLuceneIndexRowImage + | EspressoLuceneMetaDataRowImage + | EspressoNativeIndexRowImage; + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + } + // Generated from: com/linkedin/avro2pegasus/data/espresso/EspressoEventOperation.pdsc + + export type EspressoEventOperation = 'INSERT' | 'UPDATE' | 'DELETE' | 'TRANSITION'; + // Generated from: com/linkedin/avro2pegasus/data/espresso/EspressoLuceneIndexRowImage.pdsc + + export interface EspressoLuceneIndexRowImage { + fileLength?: number; + createdTime?: number; + content?: number; + } + // Generated from: com/linkedin/avro2pegasus/data/espresso/EspressoLuceneMetaDataRowImage.pdsc + + export interface EspressoLuceneMetaDataRowImage { + endTime: number; + } + // Generated from: com/linkedin/avro2pegasus/data/espresso/EspressoNativeIndexRowImage.pdsc + + export interface EspressoNativeIndexRowImage { + index?: boolean | number | number | number | string; + createdTime: number; + modifiedTime: number; + metadata?: number; + } + // Generated from: com/linkedin/avro2pegasus/data/espresso/EspressoRowImage.pdsc + + export interface EspressoRowImage { + value?: number; + modifiedTime: number; + etag: string; + flags?: number; + rstate?: string; + expires?: number; + schemaVersion: number; + } + // Generated from: com/linkedin/avro2pegasus/data/espresso/EspressoTransactionMarker.pdsc + + export type EspressoTransactionMarker = 'START' | 'MIDDLE' | 'END'; + } + namespace Perseus { + // Generated from: com/linkedin/avro2pegasus/data/perseus/TypeValuePair.pdsc + + export interface TypeValuePair { + value?: string; + type: string; + } + // Generated from: com/linkedin/avro2pegasus/data/perseus/WorkflowMessage.pdsc + + export interface WorkflowMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messageName: string; + businessKey?: string; + correlationKeys: { [id: string]: TypeValuePair }; + processVariables: { [id: string]: TypeValuePair }; + isAll?: boolean; + } + } + } + namespace Datamonitormetadata { + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/ColumnAssertion.pdsc + + export interface ColumnAssertion { + columnDefinition: ColumnDefinition; + constraints?: DataAssertion[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/ColumnDefinition.pdsc + + export interface ColumnDefinition { + columnDefinitionName: string; + fieldPath?: string; + qualifiedUdfClassName?: string; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/ColumnGroupByDefinition.pdsc + + export interface ColumnGroupByDefinition { + columnDefinition: ColumnDefinition; + groupByInfo?: GroupByDefinition[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DataAssertion.pdsc + + export interface DataAssertion { + dataAssertionType: DatasetAssertionType; + dataAssertionParameters: DataAssertionParameter[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DataAssertionFailureAction.pdsc + + export type DataAssertionFailureAction = 'SAMPLE_ON_FAILURE' | 'ABORT_ON_FAILURE' | 'ALERT_ON_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DataAssertionOutcome.pdsc + + export type DataAssertionOutcome = 'FAILED' | 'PASSED' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DataAssertionParameter.pdsc + + export interface DataAssertionParameter { + dataAssertionParameterType: DataAssertionParameterType; + dataAssertionParameterValues: string[]; + groupByInfo: GroupByDefinition[]; + definitionMetricInfos: DefinitionMetricInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DataAssertionParameterType.pdsc + + export type DataAssertionParameterType = + | 'DEFINITION_NAME' + | 'DEFINITION_METRIC' + | 'DEFINITION_METRIC_INFO' + | 'DEFINITION_VALUES' + | 'REGEX' + | 'SIGNIFICANCE_LEVEL' + | 'LOWER_BOUND_FRACTION' + | 'UPPER_BOUND_FRACTION' + | 'LOWER_BOUND_OF_RANGE' + | 'UPPER_BOUND_OF_RANGE' + | 'DURATION_DAYS' + | 'DURATION_HOURS' + | 'NEGATE_ASSERTION' + | 'DISABLE_ASSERTION' + | 'DISABLE_ASSERTION_ON_VERSION_CHANGE' + | 'ABORT_ON_FAILURE' + | 'ALERT_ON_FAILURE' + | 'MAX_FAILURE_COUNT' + | 'MAX_FAILURE_FRACTION' + | 'SAMPLE_ON_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DataAssertionResult.pdsc + + export interface DataAssertionResult { + name: string; + dataAssertion?: DataAssertion; + recordsAgainstAssertion?: number; + recordsInFavourOfAssertion?: number; + outcome: DataAssertionOutcome; + outcomeFailureActions?: DataAssertionFailureAction[]; + outcomeStatistics: Metric[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DataAssertionResultsSummary.pdsc + + export interface DataAssertionResultsSummary { + numberAssertionsPassed: number; + numberAssertionsFailed: number; + numberAssertionsFailedWithSampleOnFailure: number; + numberAssertionsFailedWithAbortOnFailure: number; + numberAssertionsFailedWithAlertOnFailure: number; + numberAssertionsUnknown: number; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DataFormat.pdsc + + export type DataFormat = 'AVRO' | 'ORC' | 'DALI'; + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DatasetAssertionConfiguration.pdsc + + export interface DatasetAssertionConfiguration { + name: string; + version: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.SoftwareLibrary; + columnAssertions: ColumnAssertion[]; + columnGroupByDefinitions: ColumnGroupByDefinition[]; + dataAssertions?: DataAssertion[]; + sliceDefinitions?: SliceDefinition[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DatasetAssertionType.pdsc + + export type DatasetAssertionType = + | 'DEFINITION_ALL_TRUE' + | 'DEFINITION_NOT_ALL_TRUE' + | 'DEFINITION_ALL_FALSE' + | 'DEFINITION_NOT_ALL_FALSE' + | 'DEFINITION_ALL_NULLS' + | 'DEFINITION_NOT_ALL_NULLS' + | 'DEFINITION_EXCLUDE_NULLS' + | 'DEFINITION_VALUES_ARE_NUMERIC' + | 'DEFINITION_NOT_ALL_ZEROS' + | 'DEFINITION_NOT_ALL_POSITIVES' + | 'DEFINITION_NOT_ALL_NEGATIVES' + | 'DEFINITION_VALUES_IN_RANGE' + | 'DEFINITION_METRIC_IN_RANGE' + | 'DEFINITION_METRICS_RATIO_BOUNDED' + | 'DEFINITION_VALUES_ARE_DISTINCT' + | 'DEFINITION_VALUES_NOT_IDENTICAL' + | 'DEFINITION_MATCHES_REGEX' + | 'DEFINITION_DOES_NOT_MATCH_REGEX' + | 'DEFINITION_NOT_EMPTY' + | 'DEFINITION_EXCLUDE_VALUES' + | 'DEFINITION_INCLUDE_VALUES' + | 'DEFINITION_ENUMERATE_VALUES' + | 'CHECK_DATASET_TIMESTAMP' + | 'COMPARE_SCHEMAS' + | 'COMPARE_RECORD_COUNTS' + | 'COMPARE_DATA_VOLUMES' + | 'COMPARE_DEFINITION_METRICS' + | 'COMPARE_DISTRIBUTIONS'; + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DatasetMetrics.pdsc + + export interface DatasetMetrics { + datasetMetrics: DatasetPartitionStandardMetric[]; + definitionMetrics: DefinitionMetric[]; + definitionValuesMetrics: DefinitionValuesMetric[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DatasetPartitionAttribute.pdsc + + export interface DatasetPartitionAttribute { + schema?: string; + dataFormat?: DataFormat; + complianceMetadataVersion?: string; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DatasetPartitionMetadata.pdsc + + export interface DatasetPartitionMetadata { + platform: string; + dataFlow?: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.DataFlow; + softwareLibraries: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.SoftwareLibrary[]; + dataSpecificationConfiguration?: DataSpecificationConfiguration; + dataAssertionConfiguration?: DatasetAssertionConfiguration; + attributes?: DatasetPartitionAttribute; + dataMetrics?: DatasetMetrics; + dataValidationReport?: DataValidationReport; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DatasetPartitionStandardMetric.pdsc + + export interface DatasetPartitionStandardMetric { + numberOfRecords?: number; + size?: number; + otherMetrics: Metric[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DataSpecificationConfiguration.pdsc + + export interface DataSpecificationConfiguration { + samplingPercentage: number; + sampleSeed?: number; + filterExpression?: string; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DataValidationReport.pdsc + + export interface DataValidationReport { + reportSummary: DataAssertionResultsSummary; + groupBySummary: GroupBySummary[]; + dataAssertionResults: DataAssertionResult[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DefinitionMetric.pdsc + + export interface DefinitionMetric { + columnDefinitionName: string; + metricType: DefinitionMetricType; + metricValue: number; + tags: string[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DefinitionMetricInfo.pdsc + + export interface DefinitionMetricInfo { + definitionName: string; + definitionMetric: DefinitionMetricType; + groupByInfo: GroupByDefinition[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DefinitionMetricType.pdsc + + export type DefinitionMetricType = + | 'COUNT_DISTINCT' + | 'COUNT_FALSE' + | 'COUNT_NEGATIVE' + | 'COUNT_NOTNULL' + | 'COUNT_NULL' + | 'COUNT_NUMERIC' + | 'COUNT_POSITIVE' + | 'COUNT_TOTAL' + | 'COUNT_TRUE' + | 'COUNT_ZERO' + | 'MIN' + | 'MAX' + | 'MEAN' + | 'STD_DEV' + | 'SKEWNESS' + | 'KURTOSIS' + | 'MEDIAN' + | 'PERCENTILE_99_5' + | 'PERCENTILE_99' + | 'PERCENTILE_95' + | 'PERCENTILE_90' + | 'PERCENTILE_75' + | 'PERCENTILE_25' + | 'IQR' + | 'MAD'; + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DefinitionMultiValuedMetricType.pdsc + + export type DefinitionMultiValuedMetricType = 'TOP_VALUES_BY_COUNT' | 'QUANTILES'; + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/DefinitionValuesMetric.pdsc + + export interface DefinitionValuesMetric { + columnName: string; + metricType: DefinitionMultiValuedMetricType; + metricValues: Metric[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/GroupByDefinition.pdsc + + export interface GroupByDefinition { + columnDefinition: ColumnDefinition; + values: string[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/GroupBySummary.pdsc + + export interface GroupBySummary { + columnDefinition: ColumnDefinition; + groupByInfo: GroupByDefinition[]; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/Metric.pdsc + + export interface Metric { + name: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/datamonitormetadata/SliceDefinition.pdsc + + export interface SliceDefinition { + name: string; + qualifiedUdfClassName: string; + } + } + namespace Event { + namespace Mlmodellifecycle { + // Generated from: com/linkedin/avro2pegasus/event/mlmodellifecycle/MlModelTrainingCluster.pdsc + + export type MlModelTrainingCluster = + | 'FARO' + | 'HOLDEM' + | 'HOLDEM3' + | 'HOLDEM4' + | 'HOLDEM5' + | 'WAR' + | 'OTHER' + | 'MLEARNALPHA'; + // Generated from: com/linkedin/avro2pegasus/event/mlmodellifecycle/MlModelTrainingFramework.pdsc + + export type MlModelTrainingFramework = 'PHOTON_CONNECT' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/event/mlmodellifecycle/MlModelTrainingOrigin.pdsc + + export type MlModelTrainingOrigin = 'FELLOWSHIP' | 'TRAINING_CODE_MP' | 'OTHER'; + } + } + namespace Events { + // Generated from: com/linkedin/avro2pegasus/events/AccessControlAction.pdsc + + export type AccessControlAction = 'RESTRICTION' | 'PASSWORD_INVALIDATION'; + // Generated from: com/linkedin/avro2pegasus/events/AccessTokenDeleteEvent.pdsc + + export interface AccessTokenDeleteEvent { + header: EventHeader; + memberId?: number; + appId?: number; + result: ActionResult; + failureReason?: OAuth2GetOrDeleteAccessTokenFailureReason; + } + // Generated from: com/linkedin/avro2pegasus/events/AccessTokenFindEvent.pdsc + + export interface AccessTokenFindEvent { + header: EventHeader; + memberID: number; + result: ActionResult; + failureReason?: OAuth2FindAccessTokenFailureReason; + } + // Generated from: com/linkedin/avro2pegasus/events/AccessTokenGenerateEvent.pdsc + + export interface AccessTokenGenerateEvent { + header: EventHeader; + memberID?: number; + appID?: number; + redirectURI?: string; + tokenTTL?: number; + sessionID?: number; + scopeID?: number; + created?: number; + lastSeen?: number; + result: ActionResult; + failureReason?: OAuth2GenAccessTokenFailureReason; + successScenario?: OAuth2GenAccessTokenSuccessScenario; + deviceId?: string; + grantTTL?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/AccessTokenGetEvent.pdsc + + export interface AccessTokenGetEvent { + header: EventHeader; + memberID?: number; + appID?: number; + result: ActionResult; + failureReason?: OAuth2GetOrDeleteAccessTokenFailureReason; + } + // Generated from: com/linkedin/avro2pegasus/events/AccessTokenVerifyEvent.pdsc + + export interface AccessTokenVerifyEvent { + header: EventHeader; + memberID?: number; + appID?: number; + sessionID?: number; + scopeID?: number; + result: ActionResult; + failureReason?: OAuth2VerifyAccessTokenFailureReason; + } + // Generated from: com/linkedin/avro2pegasus/events/AccountLabel.pdsc + + export type AccountLabel = 'REAL' | 'FAKE' | 'ATO'; + // Generated from: com/linkedin/avro2pegasus/events/AccountManagementAction.pdsc + + export type AccountManagementAction = + | 'CLOSE_ACCOUNT' + | 'REACTIVATE_ACCOUNT' + | 'MERGE_ACCOUNT' + | 'PURGE_ACCOUNT' + | 'DELETE_ACCOUNT' + | 'INVALIDATE_SPAM_ACCOUNT' + | 'SEND_REMINDER_EMAIL' + | 'CAP_SEAT_TRANSFER' + | 'RESET_PAYMENT' + | 'SUSPEND_ACCOUNT' + | 'UNSUSPEND_ACCOUNT' + | 'EXPORT_DATA' + | 'ARCHIVE_DATA' + | 'PURGE_ARCHIVED_DATA' + | 'HIBERNATE_ACCOUNT' + | 'UNHIBERNATE_ACCOUNT' + | 'OFFLINE_PURGE_DATA' + | 'SELECTIVE_DOMAIN_PURGE' + | 'MEMORIALIZE_ACCOUNT' + | 'UNMEMORIALIZE_ACCOUNT' + | 'PURGE_MEMORIALIZED_USER_DATA'; + // Generated from: com/linkedin/avro2pegasus/events/AccountManagementEvent.pdsc + + export interface AccountManagementEvent { + header: EventHeader; + isSuccessful: boolean; + state: AccountManagementState; + source: AccountManagementSource; + sourceInfo: AccountManagementSourceInfo; + action: AccountManagementAction; + closeReason?: AccountManagementReason; + userNotes?: string; + sourceEventAction?: string; + failedStepNumber?: number; + failedStepStartTime?: number; + processStartTime: number; + requestTime: number; + numAttempts: number; + requeueCount?: number; + failedReason?: AccountManagementPreconditionChecks; + requestTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + isBackfillRequest?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/AccountManagementPreconditionChecks.pdsc + + export type AccountManagementPreconditionChecks = + | 'IS_GROUP_OWNER' + | 'HAS_ACTIVE_JOBS' + | 'HAS_ACTIVE_OR_SUSPENDED_PREMIUM_SERVICE' + | 'HAS_ACTIVE_RECRUITER_SEAT' + | 'HAS_ACTIVE_SAS_ADS' + | 'HAS_NON_ZERO_ACCOUNT_BALANCE' + | 'HAS_TOO_MANY_CONNECTIONS' + | 'NO_SUCH_MEMBER_EXISTS' + | 'IS_NOT_RESTRICTED' + | 'IS_MARKED_FOR_PURGE' + | 'HAS_CONFIRMED_EMAIL' + | 'EMAIL_NOT_CLAIMED_BY_ACCOUNT' + | 'ACCOUNT_IS_ACTIVE' + | 'HANDLE_IS_IN_USE' + | 'REACTIVATION_IN_PROGRESS' + | 'CLOSE_IN_PROGRESS' + | 'ACCOUNT_SPAM_RESTRICTED' + | 'FAST_EXPORT_IN_PROGRESS' + | 'FULL_EXPORT_IN_PROGRESS' + | 'DATA_EXPORT_REQUEST_COOL_DOWN' + | 'WAS_CLOSED_BY_MERGE_FLOW' + | 'MERGE_IN_PROGRESS' + | 'PRIMARY_EMAIL_MISSING_IN_TARGET_ACCOUNT' + | 'INELIGIBLE_FOR_ACCOUNT_CLOSURE' + | 'INELIGIBLE_FOR_ACCOUNT_PURGE' + | 'IS_APPLICATION_ADMIN' + | 'HAS_ENTERPRISE_DEPENDENCY' + | 'HIBERNATED_IN_LAST_ONE_DAY' + | 'HAS_OPEN_OR_RECENTLY_CLOSED_EVENTS' + | 'SELECTIVE_DOMAIN_PURGE_IN_PROGRESS' + | 'MEMBER_IS_HIBERNATED' + | 'MEMBER_IS_MEMORIALIZED'; + // Generated from: com/linkedin/avro2pegasus/events/AccountManagementReason.pdsc + + export type AccountManagementReason = + | 'DUPLICATE_ACCOUNT' + | 'EMAIL_SPAM' + | 'NO_VALUE_FROM_NETWORK' + | 'USING_COMPETITOR_NETWORK' + | 'OTHER' + | 'USER_INITIATED_REQUEST' + | 'RECONNECT_ABUSE' + | 'INAPPROPRIATE_PROFILE' + | 'INVITATION_ABUSE' + | 'DECEASED' + | 'QUICK_CLOSE_DID_NOT_CREATE_THIS_ACCOUNT' + | 'QUICK_CLOSE_DO_NOT_WANT_ACCOUNT' + | 'QUICK_CLOSE_OTHER' + | 'PRIVACY_CONCERN' + | 'ACCOUNT_MERGED'; + // Generated from: com/linkedin/avro2pegasus/events/AccountManagementSource.pdsc + + export type AccountManagementSource = 'CSTOOL_REP' | 'MEMBER'; + // Generated from: com/linkedin/avro2pegasus/events/AccountManagementSourceInfo.pdsc + + export interface AccountManagementSourceInfo { + csUserId?: number; + batchId?: string; + memberId?: number; + sourceMemberId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/AccountManagementState.pdsc + + export type AccountManagementState = 'RETRY' | 'REQUEUE' | 'ABORTED' | 'DONE' | 'PRECONDITION_CHECK_FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/AccountTakeOverLabelOverrideEvent.pdsc + + export interface AccountTakeOverLabelOverrideEvent { + header: EventHeader; + oldAccountTakeOverLabel: OldAccountTakeOverLabel; + } + // Generated from: com/linkedin/avro2pegasus/events/ActionResult.pdsc + + export type ActionResult = 'SUCCESS' | 'FAILURE' | 'NOT_FOUND'; + // Generated from: com/linkedin/avro2pegasus/events/actionType.pdsc + + export type actionType = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/ActivityFeedImpressionEvent.pdsc + + export interface ActivityFeedImpressionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + feedId: string; + isShowMoreModal: boolean; + pageNum?: number; + activities?: RecruiterActivity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ActivityType.pdsc + + export type ActivityType = 'view' | 'click' | 'expand' | 'collapse' | 'hover' | 'leave'; + // Generated from: com/linkedin/avro2pegasus/events/ActivityVerb.pdsc + + export type ActivityVerb = + | 'LINKEDIN_POST' + | 'LINKEDIN_SHARE' + | 'CAP_POST' + | 'CAP_SHARE' + | 'UNKNOWN' + | 'LINKEDIN_PULSE_PUBLISH'; + // Generated from: com/linkedin/avro2pegasus/events/ActivityVisibility.pdsc + + export type ActivityVisibility = 'ANYONE' | 'DARK'; + // Generated from: com/linkedin/avro2pegasus/events/AdAdvertiserActionEvent.pdsc + + export interface AdAdvertiserActionEvent { + header: EventHeader; + trackingId: string; + type: string; + campaignId: number; + creativeId: number; + advertiserId: number; + parameters: { [id: string]: string }; + campaignGroupUrn?: string; + adFormUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/AdBroadMatchStatus.pdsc + + export type AdBroadMatchStatus = 'NOT_ENABLED' | 'ENABLED' | 'BROAD_MATCHED'; + // Generated from: com/linkedin/avro2pegasus/events/AdCampaignCategory.pdsc + + export type AdCampaignCategory = + | 'jobs' + | 'ads' + | 'polls' + | 'wps' + | 'custom' + | 'subs' + | 'sjymbii' + | 'sponsored' + | 'unknown' + | 'social' + | 'dynamic'; + // Generated from: com/linkedin/avro2pegasus/events/AdCampaignType.pdsc + + export type AdCampaignType = + | 'DirectAds_V1' + | 'Polls_V1' + | 'FreeJobs' + | 'PaidJobs_V1' + | 'PaidJobs_V2' + | 'DirectAds_V2' + | 'Ads_V2' + | 'Polls_V2' + | 'WhitePaper' + | 'Custom' + | 'Jymbii' + | 'Subscriptions' + | 'SponsoredJymbii' + | 'SponsoredStatusUpdates' + | 'SelfServeDownload' + | 'SponsoredStatusUpdates_V2' + | 'SponsoredInMail' + | 'Other' + | 'PictureYourself' + | 'WorkWithUs' + | 'Spotlight' + | 'JoinGroup' + | 'Dynamic' + | 'SlideshareLeadgen' + | 'LeadCapture' + | 'SponsoredVideo' + | 'InAppPromotion'; + // Generated from: com/linkedin/avro2pegasus/events/AdClickEvent.pdsc + + export interface AdClickEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + trackingId: string; + publisherId: number; + channelId: number; + format: string; + impressionId: string; + campaignId: number; + advertiserId: number; + creativeId: number; + campaignType: AdCampaignType; + campaignTypeInt: number; + pack: string; + flavor: string; + clickTag: string; + status: number; + clickType: number; + cost: number; + parameters: { [id: string]: string }; + costInCurrency: number; + currency: string; + exchangeRate: number; + mobileHeader?: MobileHeader; + broadMatchStatus?: AdBroadMatchStatus; + feedTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + conceptType: Com.Linkedin.Avro2pegasus.Events.Common.AdCreativeConceptType; + adZone?: Com.Linkedin.Avro2pegasus.Events.Common.AdZone; + validationFailures: { [id: string]: string }; + campaignGroupUrn?: string; + requestId?: string; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.CampaignAdFormat; + hashedLandingPageUrl?: string; + adCardInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdCardInfo; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + requestClickDelay?: number; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + runningBid?: number; + advertiserBidType?: Com.Linkedin.Avro2pegasus.Events.Ads.AdBidType; + chargeType?: Com.Linkedin.Avro2pegasus.Events.Ads.AdPricingType; + action?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdClientAction; + target?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdClientTarget; + clientTrackingTime?: number; + adExperimentUrn?: string; + sponsoredMessageInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.SponsoredMessageInfo; + originalCost?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + isObjectiveBasedPricingLogic?: boolean; + swapContext?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdSwapContext; + } + // Generated from: com/linkedin/avro2pegasus/events/AdClientType.pdsc + + export type AdClientType = 'CspClient' | 'GoogleRtbBid' | 'GoogleRtbFetch' | 'PersistentAd' | 'Other'; + // Generated from: com/linkedin/avro2pegasus/events/AdConversionEvent.pdsc + + export interface AdConversionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + trackingId: string; + impressionId: string; + campaignType: AdCampaignType; + campaignTypeInt: number; + campaignId: number; + advertiserId: number; + creativeId: number; + cost: number; + publisherId: number; + channelId: number; + status: AdEventStatus; + statusInt: number; + format: string; + parameters: { [id: string]: string }; + pack: string; + flavor: string; + costInCurrency: number; + currency: string; + exchangeRate: number; + campaignGroupUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/AdDtagRequestEvent.pdsc + + export interface AdDtagRequestEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + requestId: string; + publisherId: number; + channelId: number; + redirectUrl?: string; + size?: string; + queryString?: string; + parameters: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/AdEventStatus.pdsc + + export type AdEventStatus = + | 'INVALID' + | 'VALID' + | 'INTERNAL' + | 'BANNED' + | 'UNCHARGEABLE' + | 'OTHER' + | 'FRAUD' + | 'CRAWLER' + | 'CARD_VALID' + | 'VALID_BUT_UNCHARGEABLE'; + // Generated from: com/linkedin/avro2pegasus/events/AdImpressionEvent.pdsc + + export interface AdImpressionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + trackingId: string; + impressionId: string; + campaignType: AdCampaignType; + campaignTypeInt: number; + requestTypeInt: number; + seeMoreCount: number; + frequencyCap: number; + campaignId: number; + advertiserId: number; + creativeId: number; + cost: number; + publisherId: number; + channelId: number; + status: AdEventStatus; + statusInt: number; + format: string; + parameters: { [id: string]: string }; + pack: string; + flavor: string; + requestId: string; + costInCurrency: number; + currency: string; + exchangeRate: number; + mobileHeader?: MobileHeader; + broadMatchStatus?: AdBroadMatchStatus; + feedTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + conceptType: Com.Linkedin.Avro2pegasus.Events.Common.AdCreativeConceptType; + adZone?: Com.Linkedin.Avro2pegasus.Events.Common.AdZone; + validationFailures: { [id: string]: string }; + campaignGroupUrn?: string; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.CampaignAdFormat; + adCardInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdCardInfo; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + requestImpressionDelay?: number; + impressionType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdImpressionType; + impressionDuration?: number; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + runningBid?: number; + advertiserBidType?: Com.Linkedin.Avro2pegasus.Events.Ads.AdBidType; + chargeType?: Com.Linkedin.Avro2pegasus.Events.Ads.AdPricingType; + adExperimentUrn?: string; + auctionPosition?: number; + originalPctr?: number; + positionCorrectionFactor?: number; + impressionDiscountFactor?: number; + pctr?: number; + originalCost?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + isObjectiveBasedPricingLogic?: boolean; + swapContext?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdSwapContext; + } + // Generated from: com/linkedin/avro2pegasus/events/AdImpressionMetrics.pdsc + + export interface AdImpressionMetrics { + adId: string; + tileId: string; + isLinkedin?: boolean; + adLoadStartTimeMs?: number; + adLoadEndTimeMs?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/AdIndexMatchValidationEvent.pdsc + + export interface AdIndexMatchValidationEvent { + header: EventHeader; + trackingId: string; + campaignIdArray: number[]; + partitionId?: number; + campaignTypes?: AdCampaignType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/AdLeadCreationActionType.pdsc + + export type AdLeadCreationActionType = 'START' | 'SUBMIT'; + // Generated from: com/linkedin/avro2pegasus/events/AdLeadCreationEvent.pdsc + + export interface AdLeadCreationEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + actionType: AdLeadCreationActionType; + leadExists?: boolean; + leadType: AdLeadType; + leadBucket: number; + } + // Generated from: com/linkedin/avro2pegasus/events/AdLeadEvent.pdsc + + export interface AdLeadEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + leadEventTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelId: number; + impressionId?: string; + campaignUrn: string; + accountUrn: string; + creativeUrn: string; + activityUrn?: string; + leadReferenceUrn: string; + callToActionLabel: string; + feedTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + campaignType: AdCampaignType; + actionType?: Com.Linkedin.Avro2pegasus.Events.Common.AdLeadActionType; + isViral: boolean; + status: AdEventStatus; + validationFailures: { [id: string]: string }; + isFrequencyCapEnabled: boolean; + campaignGroupUrn?: string; + adFormResponseUrn?: string; + requestLeadDelay?: number; + campaignAdFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.CampaignAdFormat; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + runningBid?: number; + advertiserBidType?: Com.Linkedin.Avro2pegasus.Events.Ads.AdBidType; + chargeType?: Com.Linkedin.Avro2pegasus.Events.Ads.AdPricingType; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + adExperimentUrn?: string; + sponsoredMessageInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.SponsoredMessageInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/AdLeadType.pdsc + + export type AdLeadType = 'INMAIL' | 'SLIDESHARE'; + // Generated from: com/linkedin/avro2pegasus/events/AdRecommendationSelectionEvent.pdsc + + export interface AdRecommendationSelectionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + sessionId: string; + campaignId: number; + criterion: string; + text_entered: string; + id_entered: number; + recommendations: number[]; + accepted: number[]; + recommendationCount: number; + acceptedCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/AdRecommendationTargetingCriteriaEvent.pdsc + + export interface AdRecommendationTargetingCriteriaEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + sessionId: string; + targeting: string; + enteredVsAccepted: AdRecommendationTargetingCriteriaRecord[]; + memberCountWithoutAccepted: number; + memberCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/AdRecommendationTargetingCriteriaRecord.pdsc + + export interface AdRecommendationTargetingCriteriaRecord { + criterion: string; + entered: number[]; + accepted: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/AdRequestEvent.pdsc + + export interface AdRequestEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + trackingId: string; + campaignType: AdCampaignType; + format: string; + campaignTypeInt: number; + requestTypeInt: number; + seeMoreCount: number; + frequencyCap: number; + campaignCount: number; + publisherId: number; + channelId: number; + backfill: string; + parameters: { [id: string]: string }; + clientType: AdClientType; + requestId: string; + visibility: AdSlotVisibility; + requestedCategories?: AdCampaignCategory[]; + campaignTypeIntArray?: number[]; + mobileHeader?: MobileHeader; + contextualTargets?: Com.Linkedin.Avro2pegasus.Events.Common.AdContextualTargets; + useCase?: string; + funnelFilters: CampaignFilterCount[]; + filterChain?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdRequestFilterChainType; + } + // Generated from: com/linkedin/avro2pegasus/events/AdRtbImpressionEvent.pdsc + + export interface AdRtbImpressionEvent { + header: EventHeader; + trackingId: string; + ip: string; + impressionId: string; + memberId: number; + campaignType: number; + campaignId: number; + advertiserId: number; + creativeId: number; + cost: number; + publisherId: number; + channelId: number; + status: number; + format: string; + parameters: { [id: string]: string }; + pack: string; + flavor: string; + requestId: string; + domain: string; + costInCurrency: number; + currency: string; + exchangeRate: number; + entityUrn?: string; + bidAmount?: number; + originalBid?: number; + originalBidType?: Com.Linkedin.Avro2pegasus.Events.Ads.AdBidType; + winningPrice?: number; + chargeType?: Com.Linkedin.Avro2pegasus.Events.Ads.AdChargeType; + chargeFloor?: number; + pctr?: number; + pcvr?: number; + exchangeUrn?: string; + mobileAppUrn?: string; + laxCategory?: string; + margin?: number; + mobileHeader?: MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/AdRtbRequestEvent.pdsc + + export interface AdRtbRequestEvent { + header: EventHeader; + trackingId: string; + requestId: string; + laxRequestId?: string; + exchangeRequestId?: string; + exchangeUrn?: string; + mobileAppUrn?: string; + campaignType: number; + publisherId: number; + channelId: number; + laxCategory?: string; + userAgent?: string; + url?: string; + visibility: number; + parameters: { [id: string]: string }; + campaignCount: number; + puntReason?: PuntReason; + margin?: number; + backfill: string; + memberId: number; + clientType: number; + bidWeight: number; + formatWeight: number; + rtbParameters: { [id: string]: string }; + microAmount: number; + format: string; + bidResponse?: Bid[]; + } + // Generated from: com/linkedin/avro2pegasus/events/AdSlotVisibility.pdsc + + export type AdSlotVisibility = 'Unknown' | 'NoDetection' | 'AboveTheFold' | 'BelowTheFold'; + // Generated from: com/linkedin/avro2pegasus/events/AdStatsEvent.pdsc + + export interface AdStatsEvent { + header: EventHeader; + trackingId: string; + subType: string; + channelId: number; + key: string; + parameters: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/AdSurveyEvent.pdsc + + export interface AdSurveyEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + messageId: string; + contentId: string; + actionType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/AdTargetId.pdsc + + export interface AdTargetId { + type: Com.Linkedin.Avro2pegasus.Common.AdTargetIdType; + idValue: string; + } + // Generated from: com/linkedin/avro2pegasus/events/AntivirusScannedEvent.pdsc + + export interface AntivirusScannedEvent { + header: EventHeader; + mediaId: string; + fileHash: string; + scanResult: AntivirusScanResult; + detectedEngineList: string[]; + engineDefinitionHash: string; + fileSize: number; + firstScan: boolean; + scanTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/AntivirusScanResult.pdsc + + export type AntivirusScanResult = 'VIRUS_DETECTED' | 'VIRUS_NOT_DETECTED' | 'NOT_SCANNED'; + // Generated from: com/linkedin/avro2pegasus/events/ApiErrorTrackingEvent.pdsc + + export interface ApiErrorTrackingEvent { + header: EventHeader; + developerApplicationUrn?: string; + multiProductUrn?: string; + restLiEndpoint: string; + finderOrAction?: string; + resourceMethod: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + exceptionType: string; + errorMessage: string; + internalErrorMessage: string; + errorCode?: string; + httpStatus: number; + errorDetails?: Com.Linkedin.Avro2pegasus.Events.Common.AnyRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/ApiEventType.pdsc + + export type ApiEventType = + | 'Normal' + | 'Throttle' + | 'AccessDenied' + | 'NotFound' + | 'OtherError' + | 'Unauthorized' + | 'UncaughtException'; + // Generated from: com/linkedin/avro2pegasus/events/AppLaunchMode.pdsc + + export type AppLaunchMode = 'COLD' | 'WARM' | 'HOT'; + // Generated from: com/linkedin/avro2pegasus/events/AppLaunchSource.pdsc + + export type AppLaunchSource = 'APP_ICON' | 'PUSH_NOTIFICATION' | 'DEEPLINK'; + // Generated from: com/linkedin/avro2pegasus/events/AppLaunchType.pdsc + + export type AppLaunchType = 'WARM' | 'COLD' | 'HOT'; + // Generated from: com/linkedin/avro2pegasus/events/ApplicationBuildType.pdsc + + export type ApplicationBuildType = 'PRODUCTION' | 'INTERNAL' | 'DEVELOPMENT' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/ApplicationSizeReportEvent.pdsc + + export interface ApplicationSizeReportEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + totalSize: number; + modelCacheSize: number; + imageCacheSize: number; + videoCacheSize: number; + localDiskSize: number; + customStoreSizes: CustomStoreSize[]; + } + // Generated from: com/linkedin/avro2pegasus/events/AppRenderMode.pdsc + + export type AppRenderMode = 'VANILLA' | 'BIG_PIPE' | 'SSR' | 'SSRSEO' | 'SSRPIPE'; + // Generated from: com/linkedin/avro2pegasus/events/ArticleViewEvent.pdsc + + export interface ArticleViewEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + articleId: number; + authorId?: number; + trackablePulseObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + totalLikes?: number; + totalComments?: number; + totalShares?: number; + mobileHeader?: MobileHeader; + linkedInArticleUrn?: string; + viewSource?: ViewSource; + } + // Generated from: com/linkedin/avro2pegasus/events/AuthenticationSchemeAvro.pdsc + + export type AuthenticationSchemeAvro = + | 'INTERNAL' + | 'EXTERNAL' + | 'SUBJECT' + | 'OAUTH' + | 'CONNECT' + | 'LEO' + | 'NULL' + | 'OAUTH2_SERVER' + | 'MIT' + | 'XAUTH' + | 'OAUTH_EXT' + | 'OAUTH2_MOBILE_SDK'; + // Generated from: com/linkedin/avro2pegasus/events/AuthorizationCodeGenerateEvent.pdsc + + export interface AuthorizationCodeGenerateEvent { + header: EventHeader; + memberID: number; + appID: number; + sessionID: number; + scopeID: number; + redirectURI: string; + result: ActionResult; + failureReason?: OAuth2GenAuthorizationCodeFailureReason; + } + // Generated from: com/linkedin/avro2pegasus/events/AuthStateTimeout.pdsc + + export type AuthStateTimeout = 'NONE' | 'REQUEST' | 'DEFAULT'; + // Generated from: com/linkedin/avro2pegasus/events/AuthTokenFailedDeletionEvent.pdsc + + export interface AuthTokenFailedDeletionEvent { + header: EventHeader; + newSessionId?: number; + oldSessionId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/AuthTokenReplaceEvent.pdsc + + export interface AuthTokenReplaceEvent { + header: EventHeader; + newSessionId?: number; + oldSessionId?: number; + result: ActionResult; + } + // Generated from: com/linkedin/avro2pegasus/events/AuthTokenType.pdsc + + export type AuthTokenType = + | 'OAT' + | 'OAU' + | 'OSM' + | 'PTM' + | 'PTR' + | 'CONN' + | 'INT' + | 'LIM' + | 'CAP' + | 'CSA' + | 'CSM' + | 'MML' + | 'REM' + | 'LSC' + | 'CSC' + | 'NULL' + | 'OAT2'; + // Generated from: com/linkedin/avro2pegasus/events/AutoFormFillClickEvent.pdsc + + export interface AutoFormFillClickEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + apiKey: string; + fieldsFilled: string[]; + uuid: string; + } + // Generated from: com/linkedin/avro2pegasus/events/AutoFormFillImpressionEvent.pdsc + + export interface AutoFormFillImpressionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + uuid: string; + apiKey: string; + loggedIn: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/AutoFormFillSubmitEvent.pdsc + + export interface AutoFormFillSubmitEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + apiKey: string; + uuid: string; + } + // Generated from: com/linkedin/avro2pegasus/events/AutoJobAlertsCreationEvent.pdsc + + export interface AutoJobAlertsCreationEvent { + header: EventHeader; + savedSearchIds: number[]; + status: CareersPreferencesJobAlertsCreationStatus; + source?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobSearchAlertTransitionSourceType; + } + // Generated from: com/linkedin/avro2pegasus/events/AYNSearchEvent.pdsc + + export interface AYNSearchEvent { + header: EventHeader; + requestHeader?: UserRequestHeader; + pageSeq: number; + keywords?: string; + searchScope: AYNSearchEventSearchScope; + categoryId?: string; + questionStatus: AYNSearchEventQuestionStatus; + sortType: AYNSearchEventSortType; + discussionScope: string; + discussionType: AYNSearchEventDiscussionType; + numResults: number; + computationTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/AYNSearchEventDiscussionType.pdsc + + export type AYNSearchEventDiscussionType = 'PUBLIC' | 'ANET' | 'MEMBER' | 'COMPANY' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/AYNSearchEventQuestionStatus.pdsc + + export type AYNSearchEventQuestionStatus = 'all' | 'open' | 'openNoAnswers' | 'unknown'; + // Generated from: com/linkedin/avro2pegasus/events/AYNSearchEventSearchScope.pdsc + + export type AYNSearchEventSearchScope = 'questionsAndAnswers' | 'questions'; + // Generated from: com/linkedin/avro2pegasus/events/AYNSearchEventSortType.pdsc + + export type AYNSearchEventSortType = 'distanceThenRelevance' | 'relevance' | 'date'; + // Generated from: com/linkedin/avro2pegasus/events/BadgeSettingChangeEvent.pdsc + + export interface BadgeSettingChangeEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + hasInBadge: boolean; + hasJobSeekerBadge: boolean; + hasOpenLinkBadge: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/beaconLatencies.pdsc + + export interface beaconLatencies { + domain: string; + latency?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/Bid.pdsc + + export interface Bid { + impressionId: string; + campaignUrn: string; + creativeUrn: string; + entityUrn?: string; + bidAmount: number; + originalBid: number; + originalBidType: BidType; + chargeType: ChargeType; + chargeFloor: number; + pctr: number; + pcvr: number; + pctrFeatures: PctrFeature[]; + pcvrFeatures: PcvrFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/BidType.pdsc + + export type BidType = 'CPM' | 'CPC' | 'CPA'; + // Generated from: com/linkedin/avro2pegasus/events/BlockedAccountState.pdsc + + export type BlockedAccountState = + | 'DEFAULT' + | 'GEO_BLOCKED' + | 'REVIEW_AUTO_BLOCKING' + | 'CLEARED' + | 'REVIEW_FOR_BLOCKING' + | 'REVIEW_FOR_UNBLOCKING' + | 'BLOCKED' + | 'UNBLOCKED' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/BlockedAccountStateChangeEvent.pdsc + + export interface BlockedAccountStateChangeEvent { + header: EventHeader; + context: string; + urn: string; + userIdModified: string; + modifiedAt: number; + oldState: BlockedAccountState; + newState: BlockedAccountState; + } + // Generated from: com/linkedin/avro2pegasus/events/BrowsemapEntityType.pdsc + + export type BrowsemapEntityType = + | 'MEMBER' + | 'JOB' + | 'NEWS' + | 'ANET' + | 'HIRING' + | 'UNKNOWN' + | 'COMP' + | 'PRODUCT' + | 'BIZFOLLOW' + | 'INFLUENCER' + | 'MEGAPHONE' + | 'TREASURY' + | 'JOBAPPLY' + | 'DEPRECATED'; + // Generated from: com/linkedin/avro2pegasus/events/BrowsemapImpressionEvent.pdsc + + export interface BrowsemapImpressionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + sourceId?: number; + sourceType: BrowsemapEntityType; + targetId?: number; + targetType: BrowsemapEntityType; + score?: number; + impressionVersion: number; + impressionPosition: number; + totalCount?: number; + impressionType: string; + sourceUrn?: string; + targetUrn?: string; + requestType?: string; + referenceId?: string; + mooParameters?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.MooParameters; + } + // Generated from: com/linkedin/avro2pegasus/events/BsCookieInfo.pdsc + + export interface BsCookieInfo { + issueTime: number; + browserId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/CampaignFilterCount.pdsc + + export interface CampaignFilterCount { + campaignType: AdCampaignType; + campaignFilterReason: Com.Linkedin.Avro2pegasus.Events.Common.Ads.CampaignFilterReason; + includedCampaignCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/CaptchaChallengeType.pdsc + + export interface CaptchaChallengeType { + errMsg: string; + callLatency: number; + ignoreRatio: number; + noscript: boolean; + version?: CaptchaVersion; + difficultyLevel?: CaptchaDifficultyLevel; + provider?: CaptchaProvider; + } + // Generated from: com/linkedin/avro2pegasus/events/CaptchaDifficultyLevel.pdsc + + export type CaptchaDifficultyLevel = 'LOW' | 'MEDIUM' | 'HIGH'; + // Generated from: com/linkedin/avro2pegasus/events/CaptchaEvent.pdsc + + export interface CaptchaEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + allow: boolean; + errMsg: string; + timeSinceDisplay: number; + callLatency: number; + noscript: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/CaptchaProvider.pdsc + + export type CaptchaProvider = 'GOOGLE' | 'ARKOSE_LABS'; + // Generated from: com/linkedin/avro2pegasus/events/CaptchaVersion.pdsc + + export type CaptchaVersion = 'RECAPTCHA_V1_0' | 'RECAPTCHA_V2_0'; + // Generated from: com/linkedin/avro2pegasus/events/CareercenterPathChooserDataEvent.pdsc + + export interface CareercenterPathChooserDataEvent { + header: EventHeader; + memberId: number; + pathId: number; + stepIndex: number; + stepTitle?: string; + stepProbability: number; + filterCriteria?: string; + filterValue?: string; + nodesCount: number; + predictedTitles: CareercenterPredictedStep[]; + } + // Generated from: com/linkedin/avro2pegasus/events/CareercenterPredictedStep.pdsc + + export interface CareercenterPredictedStep { + predictedTitle?: string; + predictedProbability: number; + } + // Generated from: com/linkedin/avro2pegasus/events/CareersPreferencesJobAlertsCreationStatus.pdsc + + export type CareersPreferencesJobAlertsCreationStatus = + | 'JOB_ALERT_CREATE_SUCCEEDED' + | 'JOB_ALERT_CREATE_FAILED' + | 'NO_VALID_JOB_ALERT_TO_CREATE'; + // Generated from: com/linkedin/avro2pegasus/events/ChangeType.pdsc + + export type ChangeType = 'CREATE' | 'UPDATE' | 'DELETE' | 'UNKOWN_MODIFY' | 'UNKNOWN_MODIFY'; + // Generated from: com/linkedin/avro2pegasus/events/ChargeType.pdsc + + export type ChargeType = 'CPM' | 'CPC' | 'CPA' | 'OCPM'; + // Generated from: com/linkedin/avro2pegasus/events/CidrNotationIPAddress.pdsc + + export interface CidrNotationIPAddress { + ip: IPAddress; + routingPrefixSize?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ClickStatus.pdsc + + export type ClickStatus = + | 'ALLOW' + | 'BLOCK' + | 'UPGRADE_FAILED' + | 'NEED_LOGIN_FOR_ACTION' + | 'FORCE_LOGIN' + | 'FAILURE_ROUTE' + | 'CSRF_MISMATCH'; + // Generated from: com/linkedin/avro2pegasus/events/CoContributorNudgeEvent.pdsc + + export interface CoContributorNudgeEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + entityView: EntityView; + nudgee?: number; + sectionType: string; + nudgeId?: number; + elementId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/CollectionMetadata.pdsc + + export interface CollectionMetadata { + start: number; + count: number; + total?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ComlMessageRecipient.pdsc + + export interface ComlMessageRecipient { + entityID: number; + entityType: Entity; + } + // Generated from: com/linkedin/avro2pegasus/events/ComlMessageSendEvent.pdsc + + export interface ComlMessageSendEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + messageID: string; + contentID?: string; + trackingCode?: string; + actionType: string; + messageType: ComlMessageType; + items: ComlMessageRecipient[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ComlMessageType.pdsc + + export type ComlMessageType = 'COMINM' | 'LRNSRV'; + // Generated from: com/linkedin/avro2pegasus/events/CommGenericMessageSendEvent.pdsc + + export interface CommGenericMessageSendEvent { + header: EventHeader; + sourceContractId?: number; + recipientMemberId?: number; + recipientContractId?: number; + recipientEmail?: string; + messageType?: CommMessageType; + mailboxItemType?: string; + messageId?: string; + contentId?: string; + contentType?: string; + actionType?: CommMessageActionType; + anetIds?: string; + relatedToId?: number; + actualRelatedToId?: number; + extra?: { [id: string]: string }; + extensionContents?: string[]; + attachmentIds?: string[]; + stateChangeType?: StateChangeType; + isMediaMessage?: boolean; + isSyntheticCGMSE?: boolean; + messagingMessageUrn?: string; + messagingThreadUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/CommMessageActionType.pdsc + + export type CommMessageActionType = + | 'archive' + | 'decline' + | 'accept' + | 'notInterested' + | 'forward' + | 'reply' + | 'send' + | 'view' + | 'withdraw' + | 'deliver'; + // Generated from: com/linkedin/avro2pegasus/events/CommMessageType.pdsc + + export type CommMessageType = + | 'inMail' + | 'openLink' + | 'introduction' + | 'oneToOneMessage' + | 'groupOneToOneMessage' + | 'groupApplicantMgrCorrespondance' + | 'externalEmail'; + // Generated from: com/linkedin/avro2pegasus/events/CompanySize.pdsc + + export type CompanySize = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I'; + // Generated from: com/linkedin/avro2pegasus/events/CompanyStandardizationEvent.pdsc + + export interface CompanyStandardizationEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + standardizationSource: StandardizationSource; + standardizationOutcome: StandardizationOutcome; + companyName?: string; + companyId: number; + positionId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/CompanyStatusUpdateActivityEvent.pdsc + + export interface CompanyStatusUpdateActivityEvent { + header: EventHeader; + companyId: number; + memberId: number; + daysSinceEpoch: number; + monthsSinceEpoch: number; + activityId: number; + activityVerb: ActivityVerb; + memberIndustries?: number[]; + memberFunctions?: number[]; + memberSeniorities?: number[]; + memberSchools?: number[]; + memberGender?: Gender; + memberCompanySizes?: CompanySize[]; + memberDistance?: number; + viral: number; + impressionCount: number; + clickCount: number; + likeCount: number; + commentCount: number; + shareCount: number; + followCount: number; + unlikeCount: number; + deleteCommentCount: number; + deleteShareCount: number; + unfollowCount: number; + distinctMemberCount: number; + commentMentionsCount: number; + shareMentionsCount: number; + videoInteractionsCount?: number; + hashedMemberUrn?: string; + weeksSinceEpoch?: number; + countryCode?: string; + regionId?: number; + feedTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/CompanyURLTrackEvent.pdsc + + export interface CompanyURLTrackEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + pageKey?: string; + inputDesc?: string; + companyUrl?: string; + companyId: number; + positionId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ConnectFrameworkImpressionEvent.pdsc + + export interface ConnectFrameworkImpressionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + errorMessageKey?: string; + frameworkType: string; + environmentInfo?: Com.Linkedin.Avro2pegasus.Events.Connect.ConnectFrameworkEnvironmentInfo; + profilerInfo?: Com.Linkedin.Avro2pegasus.Events.Connect.ConnectFrameworkProfilerInfo; + apisInfo?: Com.Linkedin.Avro2pegasus.Events.Connect.ConnectFrameworkApiInfo[]; + tagsInfo?: Com.Linkedin.Avro2pegasus.Events.Connect.ConnectFrameworkTagInfo[]; + memberInfo?: Com.Linkedin.Avro2pegasus.Events.Connect.ConnectFrameworkMemberInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/Contact.pdsc + + export interface Contact { + contactMemberId?: number; + contactEmail?: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ContactsDailyEmailEvent.pdsc + + export interface ContactsDailyEmailEvent { + header: EventHeader; + agendaItems?: number; + agendaContacts?: number; + jobChange?: number; + birthday?: number; + upcomingTrip?: number; + locationChange?: number; + workAnniversary?: number; + newsAboutNetwork?: number; + reminder?: number; + yesterdaysAcquaintance?: number; + ponchoPost?: number; + meetingToday?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ContactsImportEvent.pdsc + + export interface ContactsImportEvent { + header: EventHeader; + abookImportTransactionId?: string; + email?: string; + providerName: string; + emailDomain?: string; + success: boolean; + errorStatus?: string; + errorCode: number; + timeElapsed?: number; + folderMatchSets?: FolderImportMatch[]; + folderContents?: FolderImportContents[]; + errorMessage?: string; + httpErrorCode?: string; + badUrl?: string; + failedLoginAttempts?: ImportFailedLoginAttempt[]; + importId?: string; + endpointURL?: string; + urlConfirmed?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ContactsRecommendationImpressionEvent.pdsc + + export interface ContactsRecommendationImpressionEvent { + header: EventHeader; + location: string; + model: string; + timeoutMS: number; + durationMS: number; + requestType: RequestType; + numContactsEvaluated: number; + recommendations: Contact[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ContentClassificationScorerType.pdsc + + export type ContentClassificationScorerType = + | 'CONTENT_CLASSIFICATION_ACTIVE_SCORER' + | 'CONTENT_CLASSIFICATION_PASSIVE_SCORER' + | 'CONTENT_CLASSIFICATION_USER_FLAGGING_SCORER'; + // Generated from: com/linkedin/avro2pegasus/events/ContentFilteringEvent.pdsc + + export interface ContentFilteringEvent { + header: EventHeader; + system: string; + version: string; + context?: string[]; + authorId?: number; + authorUrn?: string; + viewerMemberId: number; + contentUrn?: string; + viewerTraits?: string[]; + contentTraits?: string[]; + isDryRunMode: boolean; + content?: string[]; + filteringCriteria?: FilteringCriteria[]; + foundStopwords?: string[]; + filterAction?: FilterAction; + } + // Generated from: com/linkedin/avro2pegasus/events/ContentRecommendationReviewEvent.pdsc + + export interface ContentRecommendationReviewEvent { + header: EventHeader; + contentUrn: string; + reviewerUrn: string; + isSpam: boolean; + isLowQuality: boolean; + classificationTypes: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + contentRecommendationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/ContentSecurityPolicyViolationEvent.pdsc + + export interface ContentSecurityPolicyViolationEvent { + requestHeader?: UserRequestHeader; + header?: EventHeader; + request?: string; + documentUri?: string; + referrer?: string; + originalPolicy?: string; + effectiveDirective?: string; + blockedUri?: string; + violatedDiretive?: string; + violationType?: ViolationType; + httpsViolationInfo?: HttpsViolationInfo; + scrapingViolationInfo?: ScrapingViolationInfo; + scrapingMitigationInfo?: ScrapingMitigationInfo; + disposition?: DispositionType; + scriptSample?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ContentShareEvent.pdsc + + export interface ContentShareEvent { + header: EventHeader; + sourceContractId: number; + recipientMemberId: number; + recipientEmail: string; + recipientContractId: number; + contentId1: string; + contentId2: string; + action: ShareActionType; + type: ContentShareType; + } + // Generated from: com/linkedin/avro2pegasus/events/ContentShareType.pdsc + + export type ContentShareType = + | 'group_share' + | 'job_share' + | 'news_share' + | 'question_share' + | 'profile_forward'; + // Generated from: com/linkedin/avro2pegasus/events/ContentSource.pdsc + + export type ContentSource = + | 'INBOX_NEW_MESSAGE' + | 'INBOX_REPLY' + | 'INBOX_FORWARD' + | 'INBOX_PROFILE_UPDATE' + | 'INBOX_JOB_FORWARD' + | 'INBOX_RECOMMENDATION_MESSAGE' + | 'INBOX_RECOMMENDATION_UPDATE' + | 'INBOX_COMMERCIAL_INMAIL' + | 'INBOX_LINKEDIN_ANSWERS' + | 'INBOX_INVITATION_MESSAGE' + | 'INBOX_PROFILE_FORWARD' + | 'INBOX_PROPOSAL' + | 'INBOX_MESSAGE_BETWEEN_CONNECTIONS' + | 'INBOX_GROUP' + | 'INBOX_GROUP_INVITATION' + | 'INBOX_SHARE' + | 'INBOX_GENERIC_EMAIL' + | 'INBOX_SYSTEM_MESSAGE' + | 'INBOX_REPORT_SPAM' + | 'INBOX_COMPANY_MESSAGE' + | 'INBOX_CAP_MESSAGE' + | 'GROUPS_UPLOAD_CONTACTS' + | 'GROUPS_NEW_GROUP' + | 'GROUPS_NEW_COMMENT' + | 'GROUPS_NEW_DISCUSSION' + | 'GROUPS_NEW_UNIQUE_INTRO' + | 'GROUPS_NEW_POLL' + | 'GROUPS_NEW_PROMOTION' + | 'GROUPS_REPORT_SPAM_COMMENT' + | 'GROUPS_REPORT_SPAM_DISCUSSION' + | 'GROUPS_REPLY' + | 'GROUPS_UPDATE_GROUP' + | 'REGISTRATION_JOIN' + | 'REGISTRATION_PROFILE_UPDATE' + | 'USCP' + | 'USCP_ACTIVITY' + | 'USCP_COMMENT' + | 'USCP_USER_REPORT_SPAM' + | 'USCP_ADMIN_REPORT_SPAM' + | 'USCP_USER_UNDO_REPORT_SPAM' + | 'USCP_ADMIN_UNDO_REPORT_SPAM' + | 'INVITATIONS_CONNECT' + | 'INVITATIONS_REPORT_SPAM' + | 'INVITATIONS_DECLINE' + | 'INVITATIONS_IGNORE' + | 'INVITATIONS_REPLY' + | 'PROFILE' + | 'PROFILE_BASIC_INFO' + | 'PROFILE_PATENT_UPDATE' + | 'PROFILE_SUMMARY_UPDATE' + | 'PROFILE_EDUCATION_UPDATE' + | 'PROFILE_PERSONAL_INFO_UPDATE' + | 'PROFILE_PROJECT_UPDATE' + | 'PROFILE_COURSE_UPDATE' + | 'PROFILE_EXPERIENCE_UPDATE' + | 'PROFILE_CERTIFICATION_UPDATE' + | 'PROFILE_LANGUAGE_UPDATE' + | 'PROFILE_PUBLICATION_UPDATE' + | 'PROFILE_ADDITIONAL_INFO_UPDATE' + | 'PROFILE_SKILL_UPDATE' + | 'PROFILE_VOLUNTEER_UPDATE' + | 'PROFILE_REPORT_SPAM' + | 'PROFILE_TREASURY_REPORT_SPAM' + | 'PROFILE_TREASURY_POST_NEW' + | 'PROFILE_TREASURY_POST_UPDATE' + | 'PROFILE_TREASURY_VIEW_CONTENT' + | 'PROFILE_PICTURE_REPORT_INAPPROPRIATE' + | 'PROFILE_ORGANIZATIONS' + | 'PROFILE_OCCUPATIONS' + | 'PROFILE_TEST_SCORES' + | 'PROFILE_HONORS_AND_AWARDS' + | 'PROFILE_PICTURE_INFO' + | 'PROFILE_BACKGROUND_IMAGE' + | 'SCHOOL_TREASURY_POST_NEW' + | 'SCHOOL_TREASURY_POST_UPDATE' + | 'SCHOOL_TREASURY_VIEW_CONTENT' + | 'DECISION_BOARD' + | 'DECISION_BOARD_CARD' + | 'DECISION_BOARD_ENTITY_SUGGESTION' + | 'PAL_PROFILE_IMAGE_UPLOAD' + | 'NUS_REDIRECT' + | 'NUS_REPORT_SPAM_COMMENT' + | 'NUS_REPORT_SPAM_SHARE' + | 'NUS_RICH_MEDIA_REPORT_SPAM' + | 'NUS_RICH_MEDIA_POST_NEW' + | 'NUS_RICH_MEDIA_POST_UPDATE' + | 'COMPANY_REPORT_SPAM_DESCRIPTION' + | 'COMPANY_REPORT_SPAM_RECOMMENDATION' + | 'PAYMENTS_PURCHASE' + | 'TSCP_CAMPAIGN' + | 'TSCP_CREATIVE' + | 'JOBS_CREATE' + | 'JOBS_VIEW' + | 'JOBS_APPLY' + | 'JOBS_REPORT_SPAM' + | 'PONCHO_ARTICLE' + | 'INFLUENCER_ARTICLE' + | 'INFLUENCER_REPORT_SPAM_COMMENT' + | 'TODAY_REPORT_SPAM_COMMENT' + | 'LOGIN_COOKIE_RENEWAL' + | 'RAPPORTIVE_LOGIN' + | 'PASSWORD_RESET' + | 'MEMBER_LOGIN' + | 'BOOTSTRAP' + | 'BAM_LEGACY_CLIENT' + | 'BABYLONIA_ARTICLE' + | 'BABYLONIA_VIDEO' + | 'BABYLONIA_IMAGE' + | 'BABYLONIA_RICH_MEDIA' + | 'SLIDESHARE_UGC_UPLOAD' + | 'MEDIA_SERVER_UPLOAD' + | 'MEDIA_SERVER_DOWNLOAD' + | 'USCP_USER_FLAG_ACTIVITY_SPAM' + | 'USCP_USER_UNDO_FLAG_ACTIVITY_SPAM' + | 'USCP_USER_FLAG_COMMENT_SPAM' + | 'USCP_USER_UNDO_FLAG_COMMENT_SPAM' + | 'USCP_ADMIN_FLAG_COMMENT_SPAM' + | 'USCP_ADMIN_UNDO_FLAG_COMMENT_SPAM' + | 'USCP_ADMIN_FLAG_ACTIVITY_SPAM' + | 'USCP_ADMIN_UNDO_FLAG_ACTIVITY_SPAM' + | 'PURCHASE_AUTH' + | 'MOBILE_DETECT_URLS' + | 'SHORTLINK_CREATE_LINK' + | 'SHORTLINK_RESOLVE_LINK' + | 'REDIRECT_RESOLVE_LINK' + | 'DEPO_REGISTER_REDIRECT_URL' + | 'LEO_REDIRECT' + | 'NABOOK_ACCEPT_INVITATION' + | 'UNKNOWN' + | 'SHARE_CREATE_LINK' + | 'SAS_SPONSORED_UPDATE' + | 'SAS_ADS_CREATIVE' + | 'ANTI_AUTOMATION' + | 'INBOX_MEDIA_DOWNLOAD' + | 'INBOX_MEDIA_DOWNLOAD_MOBILE' + | 'MEMBER_FILTERING' + | 'ADDRESS_BOOK' + | 'CONTACTS' + | 'SECURITY_ACCOUNT_ACTION' + | 'CSP_REDIRECT' + | 'DECISION_BOARD_SHARE' + | 'DIRECTORY_PROFILE' + | 'FIND_SPAM_IN_TEXT_TOOL' + | 'COMPANIES' + | 'JOBS_GUEST_SEARCH_KEYWORDS' + | 'CF_TOOLS_FIND_SPAM_IN_TEXT' + | 'VOYAGER_API_DETECT_URLS' + | 'SCHOOL_PROGRAM' + | 'DEPO_CREATE_APPLICATION' + | 'DEPO_UPDATE_APPLICATION' + | 'OSCAR_VIDEO' + | 'CONTENT_CREATION_PROMPT' + | 'CONTENT_CREATION_PROMPT_CAMPAIGN' + | 'ARTICLE_COMMENT' + | 'SPONSORED_INMAIL' + | 'INBOX_PROPOSAL_OPENLINK' + | 'RICH_MEDIA_IMAGE' + | 'JOBS_PREMIUM' + | 'PROFINDER_REQUEST_FOR_PROPOSALS' + | 'DIRECTORY_PROJECT' + | 'SAS_AD_FORM' + | 'VIDEO_SHARE' + | 'DIGITALMEDIA_ASSET' + | 'UGC_POST' + | 'QUESTA_QUESTION' + | 'QUESTA_ANSWER' + | 'LEARNING_CUSTOM_CONTENT' + | 'MENTORSHIP_MARKETPLACE_INTRO' + | 'MENTORSHIP_MARKETPLACE_PURPOSE' + | 'OUTLOOK_PEOPLE_CARD' + | 'SLIDESHARE_SLIDESHOW' + | 'HELP_CENTER_CONTACT_US_PAGE' + | 'SAS_SPONSORED_UPDATE_CAROUSEL' + | 'SAS_SPONSORED_UPDATE_VIDEO' + | 'SAS_DYNAMIC_AD_FOLLOW_COMPANY' + | 'SAS_DYNAMIC_AD_JOBS' + | 'SAS_DYNAMIC_AD_SPOTLIGHT' + | 'SAS_DYNAMIC_AD_WHITEPAPER_DOWNLOAD' + | 'JOBS_FREEMIUM' + | 'LEARNING_CATEGORY' + | 'DIGITALMEDIA_STATIC_ASSET' + | 'APP_ADS_PUBLISHER' + | 'WEB_ADS_PUBLISHER' + | 'JOBS_MINI' + | 'GROUPS_DEFINITION' + | 'GROUPS_POST' + | 'GROUPS_COMMENT' + | 'GROUPS_MEDIA' + | 'LYNDA_LEARNING_COLLECTION' + | 'LYNDA_LEARNING_PATH' + | 'HASHTAG' + | 'NATIVE_DOCUMENT_POST' + | 'NATIVE_DOCUMENT_TRANSCRIPT' + | 'CUSTOM_INVITATION_MESSAGE' + | 'CONTENT_SERIES' + | 'REVIEWS' + | 'INBOX_NEW_THREAD' + | 'EVENT_CONTENT' + | 'DIGITALMEDIA_STATIC_ASSET_RENDER_TIME_SCAN' + | 'JOBS_PREMIUM_OFFLINE' + | 'MARKETPLACE_OPPORTUNITY_SERVICE_MARKETPLACE' + | 'MARKETPLACE_OPPORTUNITY_CAREER_ADVICE' + | 'DIGITALMEDIA_STATIC_ASSET_GENERATED' + | 'DIGITALMEDIA_STATIC_ASSET_EXTRACTED' + | 'ADS_TRANSPARENCY_SPONSORED_UPDATE' + | 'ADS_TRANSPARENCY_SPONSORED_UPDATE_CAROUSEL' + | 'ADS_TRANSPARENCY_SPONSORED_UPDATE_VIDEO' + | 'ASSESSMENTS_TEXT_RESPONSE' + | 'MARKETPLACE_PROVIDER_SERVICE_MARKETPLACE' + | 'MARKETPLACE_PROVIDER_CAREER_ADVICE' + | 'MARKETPLACE_ENGAGEMENT_SERVICE_MARKETPLACE' + | 'MARKETPLACE_ENGAGEMENT_CAREER_ADVICE' + | 'JOB_HIRING_TEAM_MEMBER_NOTE' + | 'JOBS_PRIVATE' + | 'DIGITALMEDIA_ASSET_RENDER_TIME_SCAN' + | 'SPECTROSCOPY' + | 'SPONSORED_MESSAGE' + | 'CARE_COMMUNITY_CONTENT' + | 'CAREER_PAGES' + | 'CONTENT_SOURCE_MIGRATION' + | 'ADS_LAN' + | 'THIRD_PARTY_APPLICATION_WEBHOOK_URL' + | 'BABYLONIA_FIRST_PARTY_ARTICLE' + | 'BABYLONIA_FIRST_PARTY_VIDEO' + | 'BABYLONIA_FIRST_PARTY_IMAGE' + | 'BABYLONIA_FIRST_PARTY_RICH_MEDIA' + | 'SAS_SPONSORED_UPDATE_JOB_POSTING' + | 'ADS_TRANSPARENCY_SPONSORED_UPDATE_JOB_POSTING' + | 'FINGERPRINT_FILE_FOR_CP_DETECTION' + | 'VIDEO_ASSESSMENT_TO_CANDIDATE' + | 'VIDEO_ASSESSMENT_FROM_CANDIDATE' + | 'ZEPHYR_QUESTION' + | 'ZEPHYR_ANSWER' + | 'LEARNING_ENTERPRISE_API_DETECT_URLS' + | 'LEARNING_EMAIL_TEMPLATE' + | 'LEARNING_SERVING_VERSIONED_ARTICLE' + | 'LEARNING_SERVING_VERSIONED_AUTHOR' + | 'LEARNING_SERVING_VERSIONED_CAPTION' + | 'LEARNING_SERVING_VERSIONED_CLASSIFICATION' + | 'LEARNING_SERVING_VERSIONED_CLASSIFICATION_TYPE' + | 'LEARNING_SERVING_VERSIONED_COLLECTION' + | 'LEARNING_SERVING_VERSIONED_COURSE' + | 'LEARNING_SERVING_VERSIONED_DOCUMENT' + | 'LEARNING_SERVING_VERSIONED_EXTERNAL_IDENTITY' + | 'LEARNING_SERVING_VERSIONED_PATH' + | 'LEARNING_SERVING_VERSIONED_VIDEO' + | 'USER_POLL' + | 'SALES_ASSET_BUNDLE_CONTENT' + | 'SALES_ASSET_BUNDLE_VIEWER_PROFILE' + | 'CONTENT_GROUP_MULTI_PHOTO' + | 'CONTENT_GROUP_CAROUSEL' + | 'LIVE_VIDEO' + | 'EVENT_POST'; + // Generated from: com/linkedin/avro2pegasus/events/ContentSpamResponseEvent.pdsc + + export interface ContentSpamResponseEvent { + header: EventHeader; + contentURN: string; + contentCreator?: string; + isSpam: boolean; + category?: string[]; + confidence?: string[]; + system?: string; + metaInfo?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/ContinentCode.pdsc + + export type ContinentCode = 'AF' | 'AQ' | 'AS' | 'EU' | 'LA' | 'ME' | 'NA' | 'OC'; + // Generated from: com/linkedin/avro2pegasus/events/ControlInteractionEvent.pdsc + + export interface ControlInteractionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + controlUrn: string; + interactionType: Com.Linkedin.Avro2pegasus.Events.Common.ControlInteractionType; + controlTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/CoppaComplianceTrackingEvent.pdsc + + export interface CoppaComplianceTrackingEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + entityView: EntityView; + enteredDay?: number; + enteredMonth?: number; + enteredYear?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/CostType.pdsc + + export type CostType = 'CPC' | 'CPM' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/Country.pdsc + + export interface Country { + continentCode: ContinentCode; + countryCode: string; + } + // Generated from: com/linkedin/avro2pegasus/events/CreationMethod.pdsc + + export type CreationMethod = + | 'CSV_UPLOAD' + | 'SFTP_UPLOAD' + | 'HTTPS_POST' + | 'JIT_PROVISIONING' + | 'COLD_SIGNUP' + | 'ADMIN_ASSIGNMENT' + | 'SCIM_PROVISIONING' + | 'LICENSE_SWAP' + | 'APPLICATION_INSTANCE_MOVE'; + // Generated from: com/linkedin/avro2pegasus/events/CrossLinkValue.pdsc + + export type CrossLinkValue = 'TRUE' | 'FALSE' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/CubeCountsEvent.pdsc + + export interface CubeCountsEvent { + header: EventHeader; + version: number; + application: string; + granularity: number; + cubeName: string; + key: DimensionValue[]; + value: Com.Linkedin.Avro2pegasus.Events.Stats.ItemStats[]; + } + // Generated from: com/linkedin/avro2pegasus/events/customGranularPhaseTimingEntry.pdsc + + export interface customGranularPhaseTimingEntry { + customGranularPhase: string; + startTimestamp: number; + duration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/CustomStoreSize.pdsc + + export interface CustomStoreSize { + sizeName: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/DailyMemberAccessTimeEvent.pdsc + + export interface DailyMemberAccessTimeEvent { + header: EventHeader; + firstAccessTime: number; + previousFirstAccessTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/dataTypeChoices.pdsc + + export type dataTypeChoices = 'RICH' | 'LINK' | 'VIDEO' | 'IMAGE'; + // Generated from: com/linkedin/avro2pegasus/events/DayOfWeek.pdsc + + export type DayOfWeek = 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY'; + // Generated from: com/linkedin/avro2pegasus/events/DeepLinkValue.pdsc + + export type DeepLinkValue = 'TRUE' | 'FALSE' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/DeliveryPreference.pdsc + + export type DeliveryPreference = 'off' | 'weekly'; + // Generated from: com/linkedin/avro2pegasus/events/DenialEntityType.pdsc + + export type DenialEntityType = 'INDIVIDUAL_IP' | 'CLASS_C' | 'ORG'; + // Generated from: com/linkedin/avro2pegasus/events/DenialInfo.pdsc + + export interface DenialInfo { + finalAction: FinalAction; + isDenialEnforced: boolean; + filterType: FilterType; + denialEntityType?: DenialEntityType; + orgName?: string; + isDenialSourceManual: boolean; + blockFilterRuleName?: string; + qcsCounterId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/DetailedRenderTimingEntry.pdsc + + export interface DetailedRenderTimingEntry { + renderName: string; + renderStart?: number; + renderEnd?: number; + viewId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/DeviceUnregistrationEvent.pdsc + + export interface DeviceUnregistrationEvent { + header: EventHeader; + messageId?: Com.Linkedin.Avro2pegasus.Events.Messages.MessageId; + mobileHeader?: MobileHeader; + appId: string; + deviceToken: string; + feedbackReceivedTime: number; + pushUnregistrationFeedbackChannel: Com.Linkedin.Avro2pegasus.Common.Messages.PushUnregistrationFeedbackChannel; + } + // Generated from: com/linkedin/avro2pegasus/events/DimensionValue.pdsc + + export interface DimensionValue { + dimension: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/DispositionType.pdsc + + export type DispositionType = 'ENFORCE' | 'REPORT'; + // Generated from: com/linkedin/avro2pegasus/events/DtoEvent.pdsc + + export interface DtoEvent { + header: EventHeader; + messageId?: number; + contentId?: string; + numReminded?: number; + clickTime?: number; + clickHourOfWeek?: number; + messageType?: string; + zoneId?: number; + reminderInterval?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/EdgeScoreImpression.pdsc + + export interface EdgeScoreImpression { + header: EventHeader; + location: string; + offset: number; + limit: number; + model: string; + edges: EdgeWeight[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EdgeWeight.pdsc + + export interface EdgeWeight { + memberId: number; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/EditEntityInProjectEvent.pdsc + + export interface EditEntityInProjectEvent { + header: EventHeader; + contractId?: number; + seatId?: number; + operation: EntityInProjectOpName; + entityId?: number; + entityType?: Entity; + projectId: number; + statusId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/EmailBlockedReason.pdsc + + export type EmailBlockedReason = 'BOUNCED' | 'REDLISTED' | 'INACTIVE' | 'ROLE_ACCOUNT' | 'SENDER_IS_SPAMMER'; + // Generated from: com/linkedin/avro2pegasus/events/EmailBounceEvent.pdsc + + export interface EmailBounceEvent { + header: EventHeader; + recipientEmail: string; + recipientId?: number; + senderId?: number; + senderEmail?: string; + bounceKey?: string; + batchKey?: string; + notification: EmailBounceEventNotificationType; + emailId?: string; + bounceClassification?: number; + bounceReason?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/EmailBounceEventNotificationType.pdsc + + export type EmailBounceEventNotificationType = 'batch' | 'email' | 'member'; + // Generated from: com/linkedin/avro2pegasus/events/EmailClickEvent.pdsc + + export interface EmailClickEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + emailId?: string; + tag: string; + clickParameters?: string; + pageTrackingCode?: string; + trackingInfo?: { [id: string]: string }; + emailKey?: string; + linkId?: number; + trackingSuffix?: string; + module?: string; + legoShortToken?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/EmailClickThroughEvent.pdsc + + export interface EmailClickThroughEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + tag: string; + timeout: AuthStateTimeout; + clickStatus: ClickStatus; + tokenStatus: TokenStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/EmailFeedbackEvent.pdsc + + export interface EmailFeedbackEvent { + header: EventHeader; + reason: EmailFeedbackReason; + reporter?: string; + reportingEntity?: string; + payloadId: string; + messageId?: string; + fblId?: string; + emailId?: string; + liTemplate?: string; + liClass?: string; + recipientId?: number; + recipientEmail?: string; + headers?: { [id: string]: string }; + outgoingIP?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/EmailFeedbackReason.pdsc + + export type EmailFeedbackReason = 'SPAM_COMPLAINT' | 'ABUSE_COMPLAINT'; + // Generated from: com/linkedin/avro2pegasus/events/emailHash.pdsc + + export type emailHash = 'NONE' | 'MD5'; + // Generated from: com/linkedin/avro2pegasus/events/EmailLinkInfo.pdsc + + export interface EmailLinkInfo { + module?: string; + modulePosition: number; + contentUrn?: string; + contentPosition: number; + linkPosition: number; + linkAlias: string; + isExternal: boolean; + trackingSuffix?: string; + linkId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/EmailLinksSendEvent.pdsc + + export interface EmailLinksSendEvent { + header: EventHeader; + emailId: string; + emailKey: string; + includedLinks: EmailLinkInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EmailSendBlockedEvent.pdsc + + export interface EmailSendBlockedEvent { + header: EventHeader; + emailKey: string; + recipientMemberId?: number; + recipientEmailAddress: string; + blockedReasons: EmailBlockedReason[]; + locale: string; + linkedinClassHeader?: string; + extra?: { + [id: string]: boolean | number | number | number | number | number | string | null; + }; + } + // Generated from: com/linkedin/avro2pegasus/events/EmailSendEvent.pdsc + + export interface EmailSendEvent { + header: EventHeader; + emailId?: string; + emailKey: string; + recipientMemberId?: number; + recipientEmailAddress: string; + locale: string; + hasViewEvent: boolean; + linkedinClassHeader?: string; + extra?: { + [id: string]: boolean | number | number | number | number | number | string | null; + }; + feedbackLoopHeaderValue?: string; + senderMemberId?: number; + senderEmailAddress?: string; + subject: string; + messageIdHeader?: string; + hasTextVersion: boolean; + lixTreatments?: { [id: string]: string }; + lixTreatmentRecords?: Com.Linkedin.Avro2pegasus.Events.Lix.LixTreatment[]; + } + // Generated from: com/linkedin/avro2pegasus/events/emailToHashTypeMap.pdsc + + export interface emailToHashTypeMap { + email: string; + hashType: emailHash; + } + // Generated from: com/linkedin/avro2pegasus/events/emailToMemberMap.pdsc + + export interface emailToMemberMap { + emailInfo: emailToHashTypeMap; + memberId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/EmailUnsubscribeEvent.pdsc + + export interface EmailUnsubscribeEvent { + header: EventHeader; + emailId?: string; + recipientMemberId?: number; + recipientEmailAddress: string; + context?: { [id: string]: string }; + settingId?: number; + source?: UnsubscribeSourceType; + settingName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/EmailViewEvent.pdsc + + export interface EmailViewEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + emailId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/EmployeeMigrationRequestEvent.pdsc + + export interface EmployeeMigrationRequestEvent { + header: EventHeader; + fromCompanyId: number; + toCompanyId?: number; + isBulkMigration: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/EmploymentPositionChangeEvent.pdsc + + export interface EmploymentPositionChangeEvent { + header: EventHeader; + changeType: ChangeType; + positionId: number; + companyId?: number; + startTime?: number; + endTime?: number; + originalCompanyId?: number; + industryId?: number; + titles: StandardizedPositionTitle[]; + } + // Generated from: com/linkedin/avro2pegasus/events/Endorsement.pdsc + + export interface Endorsement { + id?: number; + endorser?: IdentifiableEntity; + recipient: IdentifiableEntity; + endorsedItem?: NamedEntity; + endorsementStatus: EndorsementStatus; + locale?: Locale; + model?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/EndorsementsApprovalEvent.pdsc + + export interface EndorsementsApprovalEvent { + header: EventHeader; + location?: string; + acceptedEndorsements: Endorsement[]; + rejectedEndorsements: Endorsement[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EndorsementsEndorseEvent.pdsc + + export interface EndorsementsEndorseEvent { + header: EventHeader; + location: string; + model?: string; + endorsements: Endorsement[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EndorsementsPendingImpressionEndorsement.pdsc + + export interface EndorsementsPendingImpressionEndorsement { + endorsement: Endorsement; + index?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/EndorsementsPendingImpressionEvent.pdsc + + export interface EndorsementsPendingImpressionEvent { + header: EventHeader; + location: string; + endorsements: EndorsementsPendingImpressionEndorsement[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EndorsementsSuggestionDismissalEvent.pdsc + + export interface EndorsementsSuggestionDismissalEvent { + header: EventHeader; + location: string; + model: string; + endorsements: Endorsement[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EndorsementsSuggestionImpressionEndorsement.pdsc + + export interface EndorsementsSuggestionImpressionEndorsement { + endorsement: Endorsement; + score: number; + index?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/EndorsementsSuggestionImpressionEvent.pdsc + + export interface EndorsementsSuggestionImpressionEvent { + header: EventHeader; + location: string; + model: string; + deferred?: boolean; + endorsements: EndorsementsSuggestionImpressionEndorsement[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EndorsementsSuggestionRequestEndorsement.pdsc + + export interface EndorsementsSuggestionRequestEndorsement { + endorsement: Endorsement; + score: number; + index?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/EndorsementsSuggestionRequestEvent.pdsc + + export interface EndorsementsSuggestionRequestEvent { + header: EventHeader; + requestType: EndorsementSuggestionRequestType; + location: string; + deferred?: boolean; + requestForceOverride?: boolean; + blocked?: EndorsementSuggestionBlockReason; + memberRestrictionsModel: string; + suggestionModel?: string; + endorsements?: EndorsementsSuggestionRequestEndorsement[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EndorsementStatus.pdsc + + export type EndorsementStatus = + | 'UNKNOWN' + | 'ACCEPTED' + | 'REJECTED' + | 'HIDDEN' + | 'PENDING' + | 'DELETED' + | 'CLOSED'; + // Generated from: com/linkedin/avro2pegasus/events/EndorsementSuggestionBlockReason.pdsc + + export type EndorsementSuggestionBlockReason = 'INDISCRIMINATE' | 'PROPENSITY' | 'FUSE'; + // Generated from: com/linkedin/avro2pegasus/events/EndorsementSuggestionRequestType.pdsc + + export type EndorsementSuggestionRequestType = 'SINGLE' | 'MULTIPLE'; + // Generated from: com/linkedin/avro2pegasus/events/EndorsementsUnendorseEvent.pdsc + + export interface EndorsementsUnendorseEvent { + header: EventHeader; + location?: string; + endorsements: Endorsement[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseLicenseAssignmentEvent.pdsc + + export interface EnterpriseLicenseAssignmentEvent { + header: EventHeader; + requestHeader?: UserRequestHeader; + mobileHeader?: MobileHeader; + accountUrn: string; + subscriptionUrn: string; + profileUrn: string; + applicationUrn: string; + licenseTypeUrn: string; + isRevoked: boolean; + actor: string; + contractUrn?: string; + creationMethod?: CreationMethod; + applicationInstanceUrn?: string; + isUnlimitedAllocationMode?: boolean; + creatorJobUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseProfileImportApplicationResult.pdsc + + export interface EnterpriseProfileImportApplicationResult { + enterpriseApplicationUrn: string; + status: EnterpriseProfileImportApplicationResultStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseProfileImportApplicationResultStatus.pdsc + + export type EnterpriseProfileImportApplicationResultStatus = 'SUCCESS' | 'ERROR' | 'WARNING'; + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseProfileImportEvent.pdsc + + export interface EnterpriseProfileImportEvent { + header: EventHeader; + requestHeader?: UserRequestHeader; + mobileHeader?: MobileHeader; + type: EnterpriseProfileImportOperation; + profileUrn: string; + memberUrn?: string; + enterpriseApplicationResults: EnterpriseProfileImportApplicationResult[]; + messages: EnterpriseProfileImportMessage[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseProfileImportMessage.pdsc + + export interface EnterpriseProfileImportMessage { + enterpriseApplicationUrn: string; + type: EnterpriseProfileImportMessageType; + code: string; + message: string; + key?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseProfileImportMessageType.pdsc + + export type EnterpriseProfileImportMessageType = 'CRITICAL' | 'ERROR' | 'WARNING'; + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseProfileImportOperation.pdsc + + export type EnterpriseProfileImportOperation = 'DELETE' | 'PUT'; + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseProfileUploadJobStats.pdsc + + export interface EnterpriseProfileUploadJobStats { + updatedCount: number; + deletedCount: number; + errorCount: number; + warningCount: number; + totalCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseProfileUploadJobStatus.pdsc + + export type EnterpriseProfileUploadJobStatus = 'DONE' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseProfileUploadJobSummaryEvent.pdsc + + export interface EnterpriseProfileUploadJobSummaryEvent { + header: EventHeader; + enterpriseProfileUploadJobUrn: string; + mediaUrn: string; + accountUrn: string; + uploadedByUrn: string; + uploadType: EnterpriseProfileUploadType; + contextUrn?: string; + uploadedFromUrn: string; + status: EnterpriseProfileUploadJobStatus; + resultStats: EnterpriseProfileUploadJobStats; + } + // Generated from: com/linkedin/avro2pegasus/events/EnterpriseProfileUploadType.pdsc + + export type EnterpriseProfileUploadType = 'FULL' | 'PARTIAL'; + // Generated from: com/linkedin/avro2pegasus/events/Entity.pdsc + + export type Entity = + | 'member' + | 'question' + | 'group' + | 'article' + | 'job' + | 'company' + | 'prospect' + | 'skill' + | 'school'; + // Generated from: com/linkedin/avro2pegasus/events/EntityActivityEvent.pdsc + + export interface EntityActivityEvent { + header: EventHeader; + requestHeader?: UserRequestHeader; + entityId?: number; + entityType?: Entity; + activityType: ActivityType; + actionType?: string; + pageKey: string; + componentKey?: string; + attributes: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/EntityID.pdsc + + export interface EntityID { + type: EntityType; + id: string; + } + // Generated from: com/linkedin/avro2pegasus/events/EntityInProjectOpName.pdsc + + export type EntityInProjectOpName = 'ADD' | 'EDIT' | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/EntityMentionEvent.pdsc + + export interface EntityMentionEvent { + header: EventHeader; + sourceType: MentionEventSourceType; + originator?: string; + mentionsTimeStamp: number; + mentions: EntityID[]; + updateId?: string; + shareId?: string; + discussionId?: number; + commentId?: number; + content: { [id: string]: string }; + requestHeader?: UserRequestHeader; + objectUrn?: string; + actorUrn?: string; + mentionUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EntityRecommendationActionEvent.pdsc + + export interface EntityRecommendationActionEvent { + recommendationId?: string; + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + sourceId: number; + algorithmId: number; + targetId: number; + position: number; + recommendationType: Com.Linkedin.Avro2pegasus.Events.Impression.EntityRecommendationType; + sourceUrn?: string; + targetUrn?: string; + actionType: RecommendationActionType; + subActionType?: string; + attributes?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/EntityRecommendationClickEvent.pdsc + + export interface EntityRecommendationClickEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + recordId: number; + algorithmId: number; + targetId: number; + position: number; + recommendationType: Com.Linkedin.Avro2pegasus.Events.Impression.EntityRecommendationType; + attributes?: { [id: string]: string }; + items: Com.Linkedin.Avro2pegasus.Events.Impression.EntityRecommendationImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/EntityRecommendationImpressionEvent.pdsc + + export interface EntityRecommendationImpressionEvent { + recommendationId?: string; + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + sourceId: number; + recordId: number; + algorithmId: number; + recommendationType: Com.Linkedin.Avro2pegasus.Events.Impression.EntityRecommendationType; + attributes?: { [id: string]: string }; + items?: Com.Linkedin.Avro2pegasus.Events.Impression.EntityRecommendationImpression[]; + moduleId?: string; + sourceUrn?: string; + viewerUrn?: string; + modelId?: string; + startOffset: number; + recommendations?: ScoredEntity[]; + recommendationsWithMetadata?: Recommendation[]; + facetResults?: Com.Linkedin.Avro2pegasus.Events.Search.GenericFacetResults; + searchRequest?: Com.Linkedin.Avro2pegasus.Events.Search.GenericSearchRequest; + } + // Generated from: com/linkedin/avro2pegasus/events/EntityType.pdsc + + export type EntityType = + | 'ANET' + | 'ARTC' + | 'CMPY' + | 'EVNT' + | 'JOB' + | 'MBR' + | 'QSTN' + | 'SHAR' + | 'LART' + | 'CMTS' + | 'CMTA' + | 'NUDG' + | 'PDCT' + | 'REVW' + | 'PMOD' + | 'INDY' + | 'CSRC' + | 'STTL' + | 'ANSW' + | 'APP' + | 'AD'; + // Generated from: com/linkedin/avro2pegasus/events/EntityView.pdsc + + export interface EntityView { + viewType: string; + viewerId?: number; + targetId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ErrorType.pdsc + + export type ErrorType = 'CRASH' | 'LOGGED_ERROR' | 'UI_FREEZE'; + // Generated from: com/linkedin/avro2pegasus/events/EventHeader.pdsc + + export interface EventHeader { + memberId: number; + viewerUrn?: string; + applicationViewerUrn?: string; + csUserUrn?: string; + time: number; + server: string; + service: string; + environment?: string; + guid: Guid; + treeId?: fixed_16; + requestId?: number; + impersonatorId?: string; + version?: string; + instance?: string; + appName?: string; + testId?: string; + testSegmentId?: string; + auditHeader?: KafkaAuditHeader; + pageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + clientApplicationInstance?: Com.Linkedin.Avro2pegasus.Events.Common.ApplicationInstance; + originSource?: OriginSource; + sessionUrn?: string; + traceData?: TraceData; + } + // Generated from: com/linkedin/avro2pegasus/events/EventSource.pdsc + + export type EventSource = 'CAP' | 'SUB'; + // Generated from: com/linkedin/avro2pegasus/events/ExperimentSetting.pdsc + + export interface ExperimentSetting { + name: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ExternalAPIAccessEvent.pdsc + + export interface ExternalAPIAccessEvent { + header: EventHeader; + apiEventType: ApiEventType; + throttleAction?: ThrottleAction; + ipAddress?: string; + ipAsBytes?: IPAddress; + url?: string; + consumerKey?: string; + accessToken?: string; + applicationId: number; + query?: string; + path?: string; + memberId: number; + authenticationToken?: string; + authTokenType?: AuthTokenType; + authenticationScheme?: AuthenticationSchemeAvro; + authenticationHeader?: string; + responseCode: number; + requestIDToken?: string; + requestContentType?: string; + requestedFormat?: string; + responseFormat?: ResponseFormat; + requestAcceptLanguage?: string; + httpMethod?: HttpMethod; + returnedProfilesCount?: number; + returnedUniqueProfilesCount?: number; + fuseResourceTypeName?: string; + fuseResourceType?: number; + fuseResourceCount?: number; + callType?: string; + requestedResourceHits?: ResourceHit[]; + responseResourceHits?: ResourceHit[]; + throttleHits?: ThrottleHit[]; + keyTypes?: string[]; + referrer?: string; + connectOrigin?: string; + errorMessage?: string; + requestedMemberId?: string; + body?: string; + totalTime: number; + timeToAuthStart?: number; + timeToAuthEnd?: number; + timeToOrderStart?: number; + timeToOrderEnd?: number; + timeToFirstByte?: number; + timeToBodyFlush?: number; + mobileSdkSource?: mobileSdk; + mobileSdkSourceVersion?: string; + correlationId?: string; + callLatency?: Com.Linkedin.Avro2pegasus.Events.Common.Externalapi.ServiceLatency; + parentApplicationId?: number; + externalUser?: string; + externalApp?: string; + externalAppInstance?: string; + fuseRestrictionType?: FuseRestrictionType; + } + // Generated from: com/linkedin/avro2pegasus/events/ExternalApiEmailLookupEvent.pdsc + + export interface ExternalApiEmailLookupEvent { + header: EventHeader; + consumerApiKey: string; + memberId: number; + results: emailToMemberMap[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ExternalNavigationEvent.pdsc + + export interface ExternalNavigationEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + triggerControlUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ExternalStaticJSWidgetEvent.pdsc + + export interface ExternalStaticJSWidgetEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + widgetType: string; + widgetCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/FacebookFriendImportEvent.pdsc + + export interface FacebookFriendImportEvent { + header: EventHeader; + friends: FacebookFriendTracking[]; + friendlists: FacebookFriendlistTracking[]; + numNotInList: number; + } + // Generated from: com/linkedin/avro2pegasus/events/FacebookFriendlistTracking.pdsc + + export interface FacebookFriendlistTracking { + flid: string; + type: string; + size: number; + } + // Generated from: com/linkedin/avro2pegasus/events/FacebookFriendTracking.pdsc + + export interface FacebookFriendTracking { + fbid: string; + username: string; + numSchools?: number; + numPositions?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/Feature.pdsc + + export interface Feature { + featureName: onlineFeatureName; + featureValue: number; + } + // Generated from: com/linkedin/avro2pegasus/events/FileShareProvider.pdsc + + export type FileShareProvider = 'SKYDRIVE'; + // Generated from: com/linkedin/avro2pegasus/events/FileShareUploadEvent.pdsc + + export interface FileShareUploadEvent { + header: EventHeader; + fileSize: number; + fileExt: string; + uploadTime: number; + provider: FileShareProvider; + } + // Generated from: com/linkedin/avro2pegasus/events/FilterAction.pdsc + + export type FilterAction = 'BLOCKED' | 'MODIFIED' | 'NOOP'; + // Generated from: com/linkedin/avro2pegasus/events/FilteringCriteria.pdsc + + export type FilteringCriteria = + | 'MEMBERID_FAKE_ACCOUNT' + | 'MEMBERID_GEO' + | 'KEYWORD' + | 'URN' + | 'STALKER' + | 'URN_SPAM' + | 'URN_GEO' + | 'CONTENT_USER_FLAGGED' + | 'CONTENT_SPAM_MACHINE' + | 'CONTENT_LOW_QUALITY'; + // Generated from: com/linkedin/avro2pegasus/events/FilterType.pdsc + + export type FilterType = 'RESTRICTED_IP_FILTER' | 'BLOCK_FILTER' | 'GUEST_FILTER' | 'QCS_FILTER'; + // Generated from: com/linkedin/avro2pegasus/events/FinalAction.pdsc + + export type FinalAction = 'DENY' | 'REDIRECT_TO_LOGIN' | 'TRACK_ONLY' | 'LOG_ONLY' | 'CHALLENGE'; + // Generated from: com/linkedin/avro2pegasus/events/FirstNameChallengeType.pdsc + + export interface FirstNameChallengeType { + correctFirstName?: string; + correctLastName?: string; + userInput?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/FirstPassScore.pdsc + + export interface FirstPassScore { + name: ScoreName; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/fixed_16.pdsc + + export type fixed_16 = string; + // Generated from: com/linkedin/avro2pegasus/events/FolderImportContents.pdsc + + export interface FolderImportContents { + name: string; + totalContacts: number; + uniqueContacts: number; + } + // Generated from: com/linkedin/avro2pegasus/events/FolderImportMatch.pdsc + + export interface FolderImportMatch { + foldersMatched: string[]; + folderPicked: string; + folderRegex: string; + } + // Generated from: com/linkedin/avro2pegasus/events/FramesPerSecondMetrics.pdsc + + export interface FramesPerSecondMetrics { + label: string; + lowValue: number; + avgValue: number; + } + // Generated from: com/linkedin/avro2pegasus/events/FuseCounterActionEvent.pdsc + + export interface FuseCounterActionEvent { + header: EventHeader; + conditionId: number; + conditionName: string; + triggeringEntity: string; + triggeringEntityFormat: string; + clientAction: string; + limitValueReached: number; + counterPeriodType: string; + actionPeriodType: string; + counterId: number; + actionId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/FuseRestrictionType.pdsc + + export type FuseRestrictionType = 'APPLICATION' | 'APPLICATION_AND_MEMBER'; + // Generated from: com/linkedin/avro2pegasus/events/GatewayGetMediaEvent.pdsc + + export interface GatewayGetMediaEvent { + header: EventHeader; + dataType?: dataTypeChoices; + provider?: string; + domain?: string; + inputUrl?: string; + originalUrl?: string; + success: boolean; + errorMsg?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/Gender.pdsc + + export type Gender = 'MALE' | 'FEMALE'; + // Generated from: com/linkedin/avro2pegasus/events/GenericConversionEvent.pdsc + + export interface GenericConversionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + otherIdentifiers?: GenericConversionMemberIdentifiers[]; + trackingId: string; + trackingType: string; + companyId: number; + advertiserId: number; + price: number; + currency: string; + parameters: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/GenericConversionIdentifierType.pdsc + + export type GenericConversionIdentifierType = 'EMAIL' | 'PHONE' | 'BLUEKAI_ID'; + // Generated from: com/linkedin/avro2pegasus/events/GenericConversionMemberIdentifiers.pdsc + + export interface GenericConversionMemberIdentifiers { + type: GenericConversionIdentifierType; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/GeoLocation.pdsc + + export interface GeoLocation { + latitude: number; + longitude: number; + radiusInKms?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/GranularMetrics.pdsc + + export interface GranularMetrics { + diskCacheLookupStartTimestamp?: number; + diskCacheLookupDuration?: number; + receivedFirstByteTimestamp?: number; + isCacheHit?: isCacheHit; + memoryCacheLookupStartTimestamp?: number; + memoryCacheLookupDuration?: number; + networkRequestStartTimestamp?: number; + networkRequestDuration?: number; + modelBindingStartTimestamp?: number; + modelBindingDuration?: number; + cacheModelBindingStartTimestamp?: number; + cacheModelBindingDuration?: number; + parseStartTimestamp?: number; + parseDuration?: number; + cachedParseStartTimestamp?: number; + cachedParseDuration?: number; + serverDuration?: number; + httpStatusCode?: number; + responseSize?: number; + requestUrl?: string; + requestTreeId?: fixed_16; + networkTimeoutCount?: number; + connectionDropCount?: number; + dnsLookupStartTimestamp?: number; + dnsLookupDuration?: number; + dnsCacheHitRatio?: number; + imageDecodingStartTimestamp?: number; + imageDecodingDuration?: number; + imagePostprocessingStartTimestamp?: number; + imagePostprocessingDuration?: number; + totalFreeMemory?: number; + totalDeviceMemory?: number; + carrierSignalStrength?: number; + pointOfPresenceId?: string; + roamingCarrierName?: string; + pageLoadStartTimestamp?: number; + connectionStartTimestamp?: number; + connectionRefusedDuration?: number; + connectionTimeoutDuration?: number; + connectionDropDuration?: number; + tlsHandshakeStartTimestamp?: number; + tlsHandshakeDuration?: number; + isTlsSessionCacheHit?: boolean; + isConnectionPoolHit?: boolean; + uploadSpeed?: number; + downloadSpeed?: number; + locationAreaCode?: number; + mobileNetworkCode?: number; + mobileCountryCode?: number; + cellTowerId?: number; + transformationToItemModelStartTime?: number; + transformationToItemModelDuration?: number; + sslHandshakeStartTime?: number; + sslHandshakeDuration?: number; + requestUploadStartTime?: number; + requestUploadDuration?: number; + isSocketReUsed?: boolean; + NetworkRequestStatus?: networkRequestStatus; + http2ServerPushStartTime?: number; + http2ServerPushDuration?: number; + requestSize?: number; + connectionDuration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/GranularPhase.pdsc + + export type GranularPhase = + | 'ANDROID_APP_ATTACH' + | 'ANDROID_APP_CREATE' + | 'ANDROID_APP_DEPENDENCY_INJECTION' + | 'ANDROID_ACTIVITY_CREATE' + | 'ANDROID_ACTIVITY_START' + | 'ANDROID_ACTIVITY_RESUME' + | 'IOS_PRE_MAIN' + | 'IOS_WILL_FINISH_LAUNCH' + | 'IOS_DID_FINISH_LAUNCH' + | 'IOS_APP_ACTIVE'; + // Generated from: com/linkedin/avro2pegasus/events/GranularPhaseTimingEntry.pdsc + + export interface GranularPhaseTimingEntry { + granularPhase: GranularPhase; + startTimestamp: number; + duration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/GroupAnnouncementNotifyEvent.pdsc + + export interface GroupAnnouncementNotifyEvent { + header: EventHeader; + anetId?: number; + recipientMemberId: number; + managerId?: number; + discussionId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/GroupDigestDeliveryEvent.pdsc + + export interface GroupDigestDeliveryEvent { + header: EventHeader; + anetId: number; + deliveryContext: string; + deliveryTime: string; + partitionRange: string; + hasUpdates: boolean; + numDeliveredMessages: number; + numFailedMessages: number; + } + // Generated from: com/linkedin/avro2pegasus/events/GroupFlagEvent.pdsc + + export interface GroupFlagEvent { + header: EventHeader; + anetId: number; + contentType: GroupFlagEventGroupType; + flaggingReason: GroupFlagEventGroupFlag; + } + // Generated from: com/linkedin/avro2pegasus/events/GroupFlagEventGroupFlag.pdsc + + export type GroupFlagEventGroupFlag = + | 'inappropriateGroup' + | 'inappropriateLogo' + | 'advertisementSpam' + | 'misrepresentation' + | 'duplicate' + | 'other'; + // Generated from: com/linkedin/avro2pegasus/events/GroupFlagEventGroupType.pdsc + + export type GroupFlagEventGroupType = 'COMPANY' | 'USER_CREATED_GROUP' | 'PROFESSIONAL_INTEREST_CENTER'; + // Generated from: com/linkedin/avro2pegasus/events/GroupItemCategorizeEvent.pdsc + + export interface GroupItemCategorizeEvent { + header: EventHeader; + anetId: number; + groupItemID: string; + groupItemCategory: GroupItemCategoryType; + } + // Generated from: com/linkedin/avro2pegasus/events/GroupItemCategoryType.pdsc + + export type GroupItemCategoryType = 'job' | 'promotion' | 'news' | 'share' | 'question' | 'premiumJob'; + // Generated from: com/linkedin/avro2pegasus/events/GroupItemEvent.pdsc + + export interface GroupItemEvent { + header: EventHeader; + eventType: string; + eventEnumType?: GroupItemEventActionType; + groupItemId: string; + scopeType: string; + scopeEnumType?: GroupItemEventScopeType; + scopeId: string; + originatorId?: number; + discussionId?: number; + commentId?: number; + previousCommenterId?: number; + isFirstRecommendation?: boolean; + discussionIds?: number[]; + extra?: string; + attributes?: { [id: string]: string }; + commentIds?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/GroupItemEventActionType.pdsc + + export type GroupItemEventActionType = + | 'COMMENT' + | 'SHARE' + | 'RECOMMEND' + | 'VIEW' + | 'IMPRESSION' + | 'PASS' + | 'DELETE_COMMENT' + | 'POST' + | 'DELETE_POST' + | 'FEATURE' + | 'UNFEATURE'; + // Generated from: com/linkedin/avro2pegasus/events/GroupItemEventScopeType.pdsc + + export type GroupItemEventScopeType = 'PUBLIC' | 'ANET' | 'MEMBER' | 'COMPANY'; + // Generated from: com/linkedin/avro2pegasus/events/GroupItemFollowActionType.pdsc + + export type GroupItemFollowActionType = 'start' | 'stop' | 'stopAll'; + // Generated from: com/linkedin/avro2pegasus/events/GroupItemFollowEvent.pdsc + + export interface GroupItemFollowEvent { + header: EventHeader; + anetId: number; + groupItemID?: string; + groupItemFollowAction: GroupItemFollowActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/GroupModerationEvent.pdsc + + export interface GroupModerationEvent { + header: EventHeader; + level: GroupModerationEventLevel; + containerKey: string; + itemKey: string; + itemType: string; + contentType: string; + eventType: GroupModerationEventType; + eventDate: string; + } + // Generated from: com/linkedin/avro2pegasus/events/GroupModerationEventLevel.pdsc + + export type GroupModerationEventLevel = 'INFO' | 'WARN' | 'ERROR' | 'DEBUG'; + // Generated from: com/linkedin/avro2pegasus/events/GroupModerationEventType.pdsc + + export type GroupModerationEventType = 'flag' | 'submit' | 'approve' | 'delete'; + // Generated from: com/linkedin/avro2pegasus/events/GroupWidget.pdsc + + export interface GroupWidget { + widgetId: string; + position: number; + visibility?: string; + widgetScore?: number; + trackingToken?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/Guest.pdsc + + export interface Guest { + email: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/GuestsRecommendationImpressionEvent.pdsc + + export interface GuestsRecommendationImpressionEvent { + header: EventHeader; + location: string; + recommendations: Guest[]; + } + // Generated from: com/linkedin/avro2pegasus/events/Guid.pdsc + + export type Guid = string; + // Generated from: com/linkedin/avro2pegasus/events/HtmlNavigationTimingMetrics.pdsc + + export interface HtmlNavigationTimingMetrics { + htmlFetchStart: number; + htmlResponseEnd: number; + htmlDecodedBodySize: number; + htmlEncodedBodySize: number; + htmlTransferSize: number; + } + // Generated from: com/linkedin/avro2pegasus/events/HttpMethod.pdsc + + export type HttpMethod = + | 'GET' + | 'POST' + | 'PUT' + | 'DELETE' + | 'HEAD' + | 'TRACE' + | 'CONNECT' + | 'OPTIONS' + | 'PROPFIND' + | 'PROPPATCH' + | 'MKCOL' + | 'COPY' + | 'MOVE' + | 'LOCK' + | 'UNLOCK' + | 'NULL'; + // Generated from: com/linkedin/avro2pegasus/events/HttpsViolationInfo.pdsc + + export interface HttpsViolationInfo { + referrer?: string; + originalPolicy?: string; + effectiveDirective?: string; + blockedUri?: string; + violatedDirective: string; + } + // Generated from: com/linkedin/avro2pegasus/events/IdentifiableEntity.pdsc + + export interface IdentifiableEntity { + id: number; + type: Entity; + } + // Generated from: com/linkedin/avro2pegasus/events/ImportFailedLoginAttempt.pdsc + + export interface ImportFailedLoginAttempt { + protocol: string; + username: string; + errorMessage: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ImpressionSetEvent.pdsc + + export interface ImpressionSetEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + pageNumber?: number; + pageDetails: { [id: string]: string }; + impressions: Com.Linkedin.Avro2pegasus.Events.Impression.ImpressionDetails[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ImpressionTrackingEvent.pdsc + + export interface ImpressionTrackingEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + contextId: string; + impressionPosition?: string; + impressionType: string; + impressionVersion: string; + contents: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/InferredNumberOwnerType.pdsc + + export type InferredNumberOwnerType = 'GUEST' | 'MEMBER' | 'JUNK' | 'UNCLASSIFIED' | 'REDLISTED'; + // Generated from: com/linkedin/avro2pegasus/events/InmailActionType.pdsc + + export type InmailActionType = 'impression' | 'detail' | 'rejected' | 'accepted'; + // Generated from: com/linkedin/avro2pegasus/events/InmailNotifierImpressionEvent.pdsc + + export interface InmailNotifierImpressionEvent { + header: EventHeader; + contentId?: string; + actionType?: InmailActionType; + inmailNotifierType?: InmailNotifierType; + inmailNotifierSubtype?: InmailNotifierSubtype; + } + // Generated from: com/linkedin/avro2pegasus/events/InmailNotifierSubtype.pdsc + + export type InmailNotifierSubtype = + | 'jobOffer' + | 'consulting' + | 'discussNewProducts' + | 'jobInquiries' + | 'requestForInfo' + | 'deals' + | 'referenceCheck' + | 'reconnection'; + // Generated from: com/linkedin/avro2pegasus/events/InmailNotifierType.pdsc + + export type InmailNotifierType = 'talentDirect' | 'sponsoredInmail' | 'proposal'; + // Generated from: com/linkedin/avro2pegasus/events/InmailRecipient.pdsc + + export interface InmailRecipient { + entityID: number; + entityType: Entity; + rcptContractID?: number; + rcptEmail?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/InmailSendEvent.pdsc + + export interface InmailSendEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + srcContractID?: number; + srcSeatID?: number; + items: InmailRecipient[]; + msgType: string; + messageID?: string; + contentID?: string; + actionType: string; + relatedToID?: number; + proposalId?: number; + proposalUrn?: string; + eventSource: EventSource; + } + // Generated from: com/linkedin/avro2pegasus/events/IntroActivityEvent.pdsc + + export interface IntroActivityEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + deviceType: string; + deviceGUID?: IntroDeviceGUID; + installationId?: number; + upstreamHost?: string; + messageGUID?: IntroMessageGUID; + eventName: string; + targetMemberId?: number; + attributes: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/IntroDeviceGUID.pdsc + + export type IntroDeviceGUID = string; + // Generated from: com/linkedin/avro2pegasus/events/IntroMessageGUID.pdsc + + export type IntroMessageGUID = string; + // Generated from: com/linkedin/avro2pegasus/events/InvitationEvent.pdsc + + export interface InvitationEvent { + header: EventHeader; + inviterId: number; + invitationId: number; + template: string; + batchKey?: string; + logType: LogType; + locale: string; + contentId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/InvitationMessageType.pdsc + + export type InvitationMessageType = + | 'memberInvite' + | 'guestInvite' + | 'memberInvitationReminder' + | 'guestInvitationReminder'; + // Generated from: com/linkedin/avro2pegasus/events/InvitationSendEvent.pdsc + + export interface InvitationSendEvent { + header: EventHeader; + templateId?: string; + messageType?: MBoxMessageType; + contentType?: string; + actionType?: MBoxMessageActionType; + contentId?: string; + batchKey?: string; + locale?: string; + invitationId?: number; + inviterId?: number; + invitationMessageType?: InvitationMessageType; + recipientMemberId?: number; + recipientEmailAddress?: string; + sendErrorMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/IPAddress.pdsc + + export type IPAddress = string; + // Generated from: com/linkedin/avro2pegasus/events/IpRestrictionType.pdsc + + export type IpRestrictionType = 'INDIVIDUAL_IP' | 'CLASS_C_NETWORK' | 'ORG' | 'INDIVIDUAL_IP_SOFT_BLOCK'; + // Generated from: com/linkedin/avro2pegasus/events/isCacheHit.pdsc + + export type isCacheHit = 'HIT' | 'MISS' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/JobMatchReferralImpressionEvent.pdsc + + export interface JobMatchReferralImpressionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + sourceId: number; + contractId?: number; + items: Com.Linkedin.Avro2pegasus.Events.Impression.JobMatchReferralImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/JobPostingActivity.pdsc + + export type JobPostingActivity = + | 'WOW_PAGE_VISIT' + | 'GET_NEW_JOB_POSTING_FORM' + | 'SAVE_AS_DRAFT' + | 'PROCEED_TO_PAYMENT' + | 'GET_EDIT_JOB_FORM' + | 'UPDATE_ACTIVE_JOB'; + // Generated from: com/linkedin/avro2pegasus/events/JobPostingActivityEvent.pdsc + + export interface JobPostingActivityEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + activity: JobPostingActivity; + jobId?: number; + origin?: string; + isFirstTimeJobPoster: boolean; + isJobEligibleForRefund?: boolean; + postingFlowVersion?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/JobRecommendationEmailEvent.pdsc + + export interface JobRecommendationEmailEvent { + header: EventHeader; + memberId: number; + jobsPosted: number; + jobIds?: number[]; + sponsoredJobsPosted?: number; + sponsoredJobIds?: number[]; + companyJobsPosted?: number; + companyJobIds?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/JsSupport.pdsc + + export type JsSupport = 'JS_ENABLED' | 'JS_DISABLED' | 'JS_UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/KafkaAuditHeader.pdsc + + export interface KafkaAuditHeader { + time: number; + server: string; + instance?: string; + appName: string; + messageId: UUID; + auditVersion?: number; + fabricUrn?: string; + clusterConnectionString?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/KafkaClientProfile.pdsc + + export interface KafkaClientProfile { + tlsConfiguration?: TlsConfiguration; + kafkaClientVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/events/KafkaMessageSegmentHeader.pdsc + + export interface KafkaMessageSegmentHeader { + messageId: UUID; + sequenceNumber: number; + numberOfSegments: number; + messageSizeInBytes: number; + isEncrypted?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/LeadgenFormFillEvent.pdsc + + export interface LeadgenFormFillEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + environmentInfo?: Com.Linkedin.Avro2pegasus.Events.Connect.ConnectFrameworkEnvironmentInfo; + profilerInfo?: Com.Linkedin.Avro2pegasus.Events.Connect.ConnectFrameworkProfilerInfo; + fieldsFilled: number; + timeTaken: number; + loginRequired: boolean; + numCookies: number; + } + // Generated from: com/linkedin/avro2pegasus/events/LighthouseAdminKey.pdsc + + export interface LighthouseAdminKey { + seatUrn: string; + contractUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/LighthouseAdminSyncRunEvent.pdsc + + export interface LighthouseAdminSyncRunEvent { + header: EventHeader; + startTime: number; + adminKey: LighthouseAdminKey; + syncSucceeded: boolean; + error?: string; + importedLeadCount: number; + matchedLeadCount: number; + matchedLeadIds: string[]; + importedContactCount: number; + matchedContactCount: number; + matchedContactIds: string[]; + importedAccountCount: number; + matchedAccountCount: number; + matchedAccountIds: string[]; + importedLeadUrns: string[]; + importedContactUrns: string[]; + importedAccountUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/LighthouseAdminSyncSeatAssignmentEvent.pdsc + + export interface LighthouseAdminSyncSeatAssignmentEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + startTime: number; + adminKey: LighthouseAdminKey; + assignedByEmailCount: number; + assignedByCrmCount: number; + existingSeatCount: number; + existingSeatMatchedToCrmCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/LighthouseAdminSyncSetupEvent.pdsc + + export interface LighthouseAdminSyncSetupEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + startTime: number; + adminKey: LighthouseAdminKey; + opportunityStage: string; + opportunityValueField: string; + opportunityCount: number; + closedOpportunityCount: number; + wonOpportunityCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/LimitType.pdsc + + export type LimitType = 'PAGE_VIEW' | 'IWE' | 'IP' | 'IP_EMAIL'; + // Generated from: com/linkedin/avro2pegasus/events/LinkedinTodayEmailBatchProcessedEvent.pdsc + + export interface LinkedinTodayEmailBatchProcessedEvent { + header: EventHeader; + freq: LinkedinTodayEmailFrequencyPreference; + offset: number; + batchNumber: number; + numMembersInBatch: number; + numMembersProcessed: number; + thread: string; + duration: number; + perfBreakdown: { [id: string]: number }; + } + // Generated from: com/linkedin/avro2pegasus/events/LinkedinTodayEmailFrequencyPreference.pdsc + + export type LinkedinTodayEmailFrequencyPreference = 'WEEKLY' | 'DAILY'; + // Generated from: com/linkedin/avro2pegasus/events/LinkType.pdsc + + export type LinkType = 'LINK' | 'UNLINK'; + // Generated from: com/linkedin/avro2pegasus/events/LixTreatmentEvent.pdsc + + export interface LixTreatmentEvent { + header: EventHeader; + testkey: string; + treatment: string; + context: { [id: string]: string }; + targetId?: number; + partyId?: number; + partyType?: number; + browserId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/Locale.pdsc + + export interface Locale { + language?: string; + country?: string; + variant?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/LocaleString.pdsc + + export interface LocaleString { + value: string; + locale: Locale; + } + // Generated from: com/linkedin/avro2pegasus/events/LoginEvent.pdsc + + export interface LoginEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + appName?: string; + priorAuthLevel: string; + loginResult: LoginResult; + email?: string; + submissionID?: string; + emailSuggestions?: string[]; + userUrn?: string; + loginMethod?: LoginMethod; + loginSessionId?: number; + loginHandleType?: LoginHandleType; + previousSubmissionId?: string; + bsCookieBrowserId?: string; + authenticationRequestId?: fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/LoginFailedEvent.pdsc + + export interface LoginFailedEvent { + header: EventHeader; + memberEmail: string; + } + // Generated from: com/linkedin/avro2pegasus/events/LoginHandleType.pdsc + + export type LoginHandleType = 'EMAIL' | 'PHONE'; + // Generated from: com/linkedin/avro2pegasus/events/LoginMethod.pdsc + + export type LoginMethod = + | 'ENTERED_CREDENTIALS' + | 'ONE_TIME_PASSWORD_LINK' + | 'GOOGLE_ID_TOKEN' + | 'SMARTLOCK_CREDENTIALS' + | 'KEYCHAIN_CREDENTIALS' + | 'ONE_CLICK_LOGIN' + | 'REMEMBER_ME_LOGIN'; + // Generated from: com/linkedin/avro2pegasus/events/LoginResult.pdsc + + export type LoginResult = + | 'INVALID_USERNAME' + | 'EMPTY_CREDENTIALS' + | 'DENIED' + | 'GENERIC_FAIL' + | 'RESTRICTED' + | 'SUSPENDED' + | 'PASS' + | 'NO_LOGIN' + | 'EXCEPTION' + | 'WRONG_PASSWORD' + | 'LOGIN_RESTRICTED' + | 'PASSWORD_INVALIDATED' + | 'INVALID_ACCESS_LOCATION' + | 'SSO_SESSION_EXPIRED' + | 'SSO_UNAUTHORIZED' + | 'SSO_TWO_STEP_REQUIRED' + | 'PHONE_NUMBER_LOGIN_NOT_ALLOWED' + | 'CSRF_INVALID' + | 'GOOGLE_TOKEN_UNVERIFIED'; + // Generated from: com/linkedin/avro2pegasus/events/LogType.pdsc + + export type LogType = 'gin' | 'gre' | 'min'; + // Generated from: com/linkedin/avro2pegasus/events/LongTask.pdsc + + export interface LongTask { + name: string; + duration: number; + startTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/MBoxMessageActionType.pdsc + + export type MBoxMessageActionType = + | 'introRequest' + | 'introReceived' + | 'introWithdrawn' + | 'introAccepted' + | 'introDeclined' + | 'introReply' + | 'introDeclinedForward' + | 'introCustServWithdrawn' + | 'inmailReceived' + | 'inmailAccepted' + | 'inmailDeclined' + | 'inmailReply' + | 'inmailWithdrawn' + | 'inmailCustServWithdrawn' + | 'jobReply' + | 'groupManagerMessage'; + // Generated from: com/linkedin/avro2pegasus/events/MBoxMessageType.pdsc + + export type MBoxMessageType = + | 'profileUpdate' + | 'jobForward' + | 'recommendationMessage' + | 'recommendationUpdate' + | 'commercialInmail' + | 'linkedinAnswers' + | 'invitationMessage' + | 'profileForward' + | 'proposal' + | 'messageBetweenConnections' + | 'group' + | 'groupInvitation' + | 'share' + | 'genericEmail' + | 'systemMessage'; + // Generated from: com/linkedin/avro2pegasus/events/MemberBlockingLookupEvent.pdsc + + export interface MemberBlockingLookupEvent { + header: EventHeader; + authorUrn: string; + callId: number; + isBloomFiltered: boolean; + isBlockActive: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/MemberDataExportRequestEvent.pdsc + + export interface MemberDataExportRequestEvent { + header: EventHeader; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + domains?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/MemberGender.pdsc + + export type MemberGender = 'FEMALE' | 'MALE' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/MemberInfo.pdsc + + export interface MemberInfo { + memberId: number; + age?: number; + gender?: Gender; + industries?: number[]; + functions?: number[]; + seniorities?: number[]; + companySizes?: CompanySize[]; + schools?: number[]; + yearBorn?: number; + countryCode?: string; + regionId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/MemberLifeCycleType.pdsc + + export type MemberLifeCycleType = + | 'ONBOARDING' + | 'ONE_BY_ONE' + | 'ONE_BY_THREE' + | 'FOUR_BY_FOUR' + | 'NEWLY_DORMANT'; + // Generated from: com/linkedin/avro2pegasus/events/MemberPositionAutoModifiedEvent.pdsc + + export interface MemberPositionAutoModifiedEvent { + header: EventHeader; + positionId: number; + oldCompanyId?: number; + newDesiredCompanyId?: number; + isDerivedPosition: boolean; + isBlacklist: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/MemberToMemberBlockAction.pdsc + + export type MemberToMemberBlockAction = 'BLOCK' | 'UNBLOCK'; + // Generated from: com/linkedin/avro2pegasus/events/MemberToMemberBlockEvent.pdsc + + export interface MemberToMemberBlockEvent { + header: EventHeader; + blockee: number; + action: MemberToMemberBlockAction; + isConnected?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/MentionEventSourceType.pdsc + + export type MentionEventSourceType = + | 'NUS_SHARE' + | 'NUS_CMT' + | 'GROUP_SHARE' + | 'GROUP_CMT' + | 'MEGAPHONE_SHARE' + | 'MEGAPHONE_CMT' + | 'OFFSITE' + | 'RESHARE' + | 'UNKNOWN' + | 'PUBLISH'; + // Generated from: com/linkedin/avro2pegasus/events/MergeConnectionsActionEvent.pdsc + + export interface MergeConnectionsActionEvent { + header: EventHeader; + targetMemberUrn: string; + sourceMemberUrn: string; + status: MergeConnectionsActionStatus; + transferredConnectionUrns: string[]; + transferredHandleUrns: string[]; + failedHandleUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/MergeConnectionsActionStatus.pdsc + + export type MergeConnectionsActionStatus = 'CONNECTIONS_MOVED' | 'HANDLES_MOVED' | 'MERGE_COMPLETED'; + // Generated from: com/linkedin/avro2pegasus/events/MergeConnectionsRejectionReason.pdsc + + export type MergeConnectionsRejectionReason = + | 'SOURCE_FAILED_LOGIN' + | 'SOURCE_INVALID_LOGIN_TOKEN' + | 'TARGET_FAILED_AUTHENTICATION' + | 'FAILED_MERGE_SCORING' + | 'TARGET_HAS_RESTRICTIONS' + | 'TARGET_FAILED_PRECONDITIONS' + | 'SOURCE_HAS_RESTRICTIONS' + | 'SOURCE_FAILED_PRECONDITIONS'; + // Generated from: com/linkedin/avro2pegasus/events/MergeConnectionsRequestEvent.pdsc + + export interface MergeConnectionsRequestEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + targetMemberUrn: string; + sourceMemberUrn: string; + submissionId: string; + status: MergeConnectionsRequestStatus; + rejectionReason?: MergeConnectionsRejectionReason; + } + // Generated from: com/linkedin/avro2pegasus/events/MergeConnectionsRequestStatus.pdsc + + export type MergeConnectionsRequestStatus = + | 'SOURCE_LOGIN_SUBMIT' + | 'SOURCE_AUTHENTICATED' + | 'CONFIRM_CLICKED' + | 'REQUEST_CONFIRMED' + | 'REQUEST_REJECTED' + | 'REQUEST_APPROVED'; + // Generated from: com/linkedin/avro2pegasus/events/MessageSendEvent.pdsc + + export interface MessageSendEvent { + header: EventHeader; + templateId?: string; + messageType?: MBoxMessageType; + contentType?: string; + actionType?: MBoxMessageActionType; + contentId?: string; + batchKey?: string; + locale?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/MessageType.pdsc + + export type MessageType = 'EMAIL' | 'PUSHNOTIFICATION' | 'SMS'; + // Generated from: com/linkedin/avro2pegasus/events/Method.pdsc + + export type Method = 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT' | 'EXTENSION'; + // Generated from: com/linkedin/avro2pegasus/events/MobileApplicationCrashHint.pdsc + + export interface MobileApplicationCrashHint { + hint: string; + timestamp: number; + } + // Generated from: com/linkedin/avro2pegasus/events/MobileApplicationErrorEvent.pdsc + + export interface MobileApplicationErrorEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader: MobileHeader; + mobileApplicationName?: string; + buildNumber?: string; + carrierName?: string; + deviceID?: string; + connectionType?: string; + rawCrashData?: string; + errorSummary?: string; + errorType: ErrorType; + applicationBuildType: ApplicationBuildType; + applicationLogs?: string[]; + crashHints?: MobileApplicationCrashHint[]; + stackTrace?: MobileApplicationStackFrame[]; + threadSnapshots?: MobileApplicationThreadSnapshot[]; + errorTimestamp?: number; + userHasRootAccess?: boolean; + appDistributionBuildVariant?: string; + deviceOrientation?: Com.Linkedin.Avro2pegasus.Events.Mobile.DeviceOrientation; + applicationVisibilityStatus?: Com.Linkedin.Avro2pegasus.Events.Mobile.ApplicationVisibilityStatus; + batteryLevel?: number; + deviceLocale?: string; + availableDiskSpace?: number; + freeDeviceMemory?: number; + totalDeviceMemory?: number; + cpuArchitecture?: string; + mobileLixTreatmentRecords?: Com.Linkedin.Avro2pegasus.Events.Mobile.MobileApplicationLixTreatment[]; + crashOnLaunch?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/MobileApplicationStackFrame.pdsc + + export interface MobileApplicationStackFrame { + parent: string; + function: string; + lineNumber?: number; + fileName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/MobileApplicationThreadSnapshot.pdsc + + export interface MobileApplicationThreadSnapshot { + stackTrace: MobileApplicationStackFrame[]; + threadName?: string; + isCauseOfError: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/MobileConnectionType.pdsc + + export type MobileConnectionType = 'NO_DATA' | 'WIFI' | 'FOUR_G' | 'THREE_G' | 'GPRS' | 'TWO_G'; + // Generated from: com/linkedin/avro2pegasus/events/MobileHeader.pdsc + + export interface MobileHeader { + osName?: string; + osVersion?: string; + deviceModel?: string; + appVersion?: string; + advertiserId?: string; + vendorId?: string; + isAdTrackingLimited?: boolean; + appMarketingVersion?: string; + appVendorVersion?: string; + appVendorVersionShort?: string; + appState?: NativeApplicationState; + connectionType?: MobileConnectionType; + } + // Generated from: com/linkedin/avro2pegasus/events/MobileNetworkQuality.pdsc + + export type MobileNetworkQuality = 'POOR' | 'AVERAGE' | 'GOOD' | 'EXCELLENT' | 'INDETERMINATE'; + // Generated from: com/linkedin/avro2pegasus/events/mobileSdk.pdsc + + export type mobileSdk = 'IOS_SDK' | 'ANDROID_SDK'; + // Generated from: com/linkedin/avro2pegasus/events/ModifyMemberPositionEvent.pdsc + + export interface ModifyMemberPositionEvent { + header: EventHeader; + positionId: number; + fromCompanyId: number; + toCompanyId?: number; + isDerivedPosition: boolean; + isBlacklisted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/MoneyValue.pdsc + + export interface MoneyValue { + valueInUsd: number; + valueInCurrency: number; + currency: string; + exchangeRate: number; + } + // Generated from: com/linkedin/avro2pegasus/events/MultiLocaleString.pdsc + + export interface MultiLocaleString { + localized: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/NamedEntity.pdsc + + export interface NamedEntity { + id?: number; + name?: string; + type: Entity; + } + // Generated from: com/linkedin/avro2pegasus/events/NativeAppLaunchEvent.pdsc + + export interface NativeAppLaunchEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader: MobileHeader; + appLaunchType: AppLaunchType; + appLaunchStartTimestamp?: number; + appLaunchDuration: number; + appLaunchSource?: AppLaunchSource; + granularPhaseTimingEntries?: GranularPhaseTimingEntry[]; + customGranularPhaseTimingEntries?: customGranularPhaseTimingEntry[]; + } + // Generated from: com/linkedin/avro2pegasus/events/NativeApplicationState.pdsc + + export type NativeApplicationState = + | 'APPLICATION_FOREGROUND_ACTIVE' + | 'APPLICATION_FOREGROUND_INACTIVE' + | 'APPLICATION_BACKGROUND'; + // Generated from: com/linkedin/avro2pegasus/events/NativeRealUserMonitoringEvent.pdsc + + export interface NativeRealUserMonitoringEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader: MobileHeader; + numberOfCores?: number; + deviceClassYear?: number; + screenDensity?: number; + totalSessionMemoryUsage?: number; + networkQuality?: NetworkQuality; + isDeepLinked?: DeepLinkValue; + isCrossLinked?: CrossLinkValue; + carrierName?: string; + userSessionId?: string; + connectionType?: string; + totalPageDuration?: number; + appLaunchStartTimestamp?: number; + appWarmLaunchDuration?: number; + appColdLaunchDuration?: number; + domainLookupStartTimestamp?: number; + domainLookupDuration?: number; + connectionStartTimestamp?: number; + connectionDuration?: number; + renderStartTimestamp?: number; + renderDuration?: number; + cacheRenderStartTimestamp?: number; + cacheRenderDuration?: number; + viewInteractiveTimestamp?: number; + totalFreeMemory?: number; + totalDeviceMemory?: number; + carrierSignalStrength?: number; + pointOfPresenceId?: string; + roamingCarrierName?: string; + pageLoadStartTimestamp?: number; + uploadNetworkQuality?: UploadNetworkQuality; + granularMetrics?: GranularMetrics[]; + isBackgroundTiming?: boolean; + androidProcessId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/NativeTiming.pdsc + + export interface NativeTiming { + timingName: string; + timingValue?: number; + timingPageKey?: string; + start?: number; + cpuTime?: number; + serverRenderingDuration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/NavigationEvent.pdsc + + export interface NavigationEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + previousPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + triggerControlUrn?: string; + triggerControlTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/NetworkQuality.pdsc + + export type NetworkQuality = 'POOR' | 'AVERAGE' | 'GOOD' | 'EXCELLENT' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/networkRequestStatus.pdsc + + export type networkRequestStatus = 'SUCCESS' | 'FAIL' | 'CANCEL'; + // Generated from: com/linkedin/avro2pegasus/events/NetworkUpdatesDigestSendEvent.pdsc + + export interface NetworkUpdatesDigestSendEvent { + header: EventHeader; + count: number; + deliveryPreference?: DeliveryPreference; + } + // Generated from: com/linkedin/avro2pegasus/events/NewsActivityEvent.pdsc + + export interface NewsActivityEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + contextId?: string; + activityPosition?: string; + activityType?: string; + activityVersion?: string; + attributes?: { [id: string]: string }; + connectionIds?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/NewsArticleUpdateEvent.pdsc + + export interface NewsArticleUpdateEvent { + header: EventHeader; + articleId: number; + actionType: NewsDBActionType; + title?: string; + summary?: string; + language?: string; + source?: string; + articleSource?: string; + articleSourceId?: number; + url?: string; + urlHash?: string; + directUrl?: string; + normalizedUrl?: string; + publishDate?: number; + fetchDate?: number; + active?: boolean; + originalArticleId?: number; + duplicationSimilarity?: number; + media?: number; + mediaUrls?: string[]; + articleText?: string; + markupArticleText?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/NewsDBActionType.pdsc + + export type NewsDBActionType = 'create' | 'update'; + // Generated from: com/linkedin/avro2pegasus/events/NoteReminderOpName.pdsc + + export type NoteReminderOpName = 'NOTE' | 'REMINDR'; + // Generated from: com/linkedin/avro2pegasus/events/NotificationsImpressionTrackingEvent.pdsc + + export interface NotificationsImpressionTrackingEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + contextId: string; + impressionPosition?: string; + impressionType: string; + impressionVersion: string; + contents: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/NUSDigestSendEvent.pdsc + + export interface NUSDigestSendEvent { + header: EventHeader; + count: number; + deliveryPreference?: DeliveryPreference; + } + // Generated from: com/linkedin/avro2pegasus/events/OAuth2FindAccessTokenFailureReason.pdsc + + export type OAuth2FindAccessTokenFailureReason = 'SQL_EXCEPTION'; + // Generated from: com/linkedin/avro2pegasus/events/OAuth2GenAccessTokenFailureReason.pdsc + + export type OAuth2GenAccessTokenFailureReason = + | 'SQL_EXCEPTION' + | 'INVALID_AUTH_CODE' + | 'EXPIRED_AUTH_CODE' + | 'EXPIRED_ACCESS_TOKEN' + | 'INVALID_APP_ID' + | 'INVALID_REDIRECT_URI' + | 'AUTH_CODE_ALREADY_USED' + | 'INVALID_REFRESH_TOKEN' + | 'EXPIRED_REFRESH_TOKEN' + | 'INVALID_ACCESS_GRANT' + | 'EXPIRED_ACCESS_GRANT' + | 'SCOPE_CHANGED' + | 'INVALID_REFRESH_TOKEN_TTL' + | 'INVALID_CODE_VERIFIER' + | 'INVALID_AUTH_CODE_VERSION' + | 'UNSUPPORTED_CODE_CHALLENGE_METHOD' + | 'CODE_CHALLENGE_MISSING' + | 'EXTERNAL_USER_BINDING_EXISTS' + | 'INVALID_EXTERNAL_APPLICATION_MEMBER_IDENTIFIER'; + // Generated from: com/linkedin/avro2pegasus/events/OAuth2GenAccessTokenSuccessScenario.pdsc + + export type OAuth2GenAccessTokenSuccessScenario = + | 'NEW' + | 'REFRESH_WITHIN_24_HOURS' + | 'REFRESH_WITHIN_TTL' + | 'REFRESH_WITHIN_GRACE_PERIOD' + | 'RENEW' + | 'OAUTH1_MIGRATION' + | 'EXCHANGE_AND_EXTEND' + | 'EXCHANGE'; + // Generated from: com/linkedin/avro2pegasus/events/OAuth2GenAuthorizationCodeFailureReason.pdsc + + export type OAuth2GenAuthorizationCodeFailureReason = + | 'SQL_EXCEPTION' + | 'AUTHENTICATION_EXCEPTION' + | 'SECURITY_EXCEPTION'; + // Generated from: com/linkedin/avro2pegasus/events/OAuth2GetOrDeleteAccessTokenFailureReason.pdsc + + export type OAuth2GetOrDeleteAccessTokenFailureReason = 'SQL_EXCEPTION' | 'INVALID_KEY'; + // Generated from: com/linkedin/avro2pegasus/events/OAuth2VerifyAccessTokenFailureReason.pdsc + + export type OAuth2VerifyAccessTokenFailureReason = + | 'NULL_MEMBER_IDENTITY_TOKEN' + | 'RESTRICTED_MEMBER' + | 'EXPIRED_TOKEN' + | 'AUTHENTICATION_EXCEPTION' + | 'SECURITY_EXCEPTION' + | 'SQL_EXCEPTION'; + // Generated from: com/linkedin/avro2pegasus/events/OldAccountTakeOverLabel.pdsc + + export interface OldAccountTakeOverLabel { + member: string; + createdAt: number; + removedAt?: number; + actionTaken?: AccessControlAction; + markedAsFalsePositiveAt?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/OnlineFeature.pdsc + + export interface OnlineFeature { + featureName: string; + featureValue: number; + } + // Generated from: com/linkedin/avro2pegasus/events/onlineFeatureName.pdsc + + export type onlineFeatureName = 'PREFERRED_ENTITY' | 'CONTEXTUAL_BOOSTING' | 'IMPRESSION_COUNT'; + // Generated from: com/linkedin/avro2pegasus/events/OptOutUnsubscribeEvent.pdsc + + export interface OptOutUnsubscribeEvent { + header: EventHeader; + emailAddress: string; + isOptedOut: boolean; + source: UnsubscriptionSourceType; + unsubscribeTime: number; + createdTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/origin.pdsc + + export interface origin { + originType: originType; + originValue: string; + } + // Generated from: com/linkedin/avro2pegasus/events/OriginSource.pdsc + + export type OriginSource = 'QPROD'; + // Generated from: com/linkedin/avro2pegasus/events/OriginTrackingInfo.pdsc + + export interface OriginTrackingInfo { + pageKey: string; + treeId?: fixed_16; + appId?: string; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/originType.pdsc + + export type originType = 'NONE' | 'IP' | 'INVITER_CONNECTIONS'; + // Generated from: com/linkedin/avro2pegasus/events/OutgoingHttpRequestEvent.pdsc + + export interface OutgoingHttpRequestEvent { + header: EventHeader; + ipAddress?: string; + serviceName?: string; + requestedUri?: string; + httpMethod?: HttpMethod; + whitelistStatus?: WhitelistStatus; + responseCode: number; + totalTime: number; + bytesSent: number; + bytesReceived: number; + } + // Generated from: com/linkedin/avro2pegasus/events/OverLimitEvent.pdsc + + export interface OverLimitEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + limitType: LimitType; + email?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/PageLoadMode.pdsc + + export type PageLoadMode = 'INITIAL' | 'PARTIAL'; + // Generated from: com/linkedin/avro2pegasus/events/PageSlot.pdsc + + export interface PageSlot { + slotId: string; + segmentId: string; + numRequested: number; + displaySize: number; + orderBy: string; + relevanceType?: string; + relevanceParams?: { [id: string]: string }; + groups: SlotGroup[]; + } + // Generated from: com/linkedin/avro2pegasus/events/PageType.pdsc + + export type PageType = 'full' | 'ajax' | 'iframe' | 'redirect' | 'api' | 'form' | 'router' | 'error'; + // Generated from: com/linkedin/avro2pegasus/events/PageViewEvent.pdsc + + export interface PageViewEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + pageType: PageType; + errorMessageKey?: string; + trackingCode?: string; + trackingInfo: { [id: string]: string }; + totalTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/PageVisibilityChangeEvent.pdsc + + export interface PageVisibilityChangeEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + isVisible: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/PagingContext.pdsc + + export interface PagingContext { + start: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/PartialLinkedInSearchInOutlookEvent.pdsc + + export interface PartialLinkedInSearchInOutlookEvent { + header: EventHeader; + hashedMsftEnterpriseMemberId: string; + searchTime: number; + hashedIpSubnet?: string; + isMsftMemberTrial?: boolean; + microsoftEnterpriseTenantId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/PasswordChangeEvent.pdsc + + export interface PasswordChangeEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + useCase: PasswordChangeUseCase; + emailAddress?: string; + memberId: number; + resetMethod?: PasswordResetMethod; + csRepId?: number; + eventType: PasswordChangeEventType; + batchId?: string; + invalidationReasons?: string[]; + isPersistSessionsRequested: boolean; + recipientEmails?: string[]; + loginSessionId?: number; + requestHandle?: string; + recipientHandles?: string[]; + submissionId?: string; + requestSubmissionId?: string; + bsCookieBrowserId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/PasswordChangeEventType.pdsc + + export type PasswordChangeEventType = + | 'PAGE_VIEW' + | 'FORCED_PAGE_VIEW' + | 'PASSWORD_INVALIDATED' + | 'PASSWORD_CHANGED' + | 'FORCED_PASSWORD_CHANGE' + | 'WEAK_PASSWORD_SELECTED' + | 'INVALIDATED_PASSWORD_SELECTED'; + // Generated from: com/linkedin/avro2pegasus/events/PasswordChangeUseCase.pdsc + + export type PasswordChangeUseCase = 'CHANGE_PASSWORD' | 'FORGOT_PASSWORD' | 'INVALIDATE_PASSWORD'; + // Generated from: com/linkedin/avro2pegasus/events/PasswordResetMethod.pdsc + + export type PasswordResetMethod = 'EMAIL' | 'SMS' | 'VOICE_CALL' | 'GOOGLE_AUTH' | 'EMAIL_PIN' | 'PHONE_PIN'; + // Generated from: com/linkedin/avro2pegasus/events/PctrFeature.pdsc + + export interface PctrFeature { + name: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/PcvrFeature.pdsc + + export interface PcvrFeature { + name: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/PeopleSearchResultActionEvent.pdsc + + export interface PeopleSearchResultActionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + componentKey: string; + outputId: number; + outputText?: string; + outputDesc: string; + inputId: string; + inputDesc: string; + actionKey: string; + } + // Generated from: com/linkedin/avro2pegasus/events/PerformanceTimingItems.pdsc + + export interface PerformanceTimingItems { + functionName: string; + functionStartTime?: number; + functionDuration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/PerfSampleEvent.pdsc + + export interface PerfSampleEvent { + header: EventHeader; + test: string; + env: string; + timestamp: number; + label: string; + pageKey: string; + latency: number; + responseCode: number; + sampleError: boolean; + bytes: number; + assertionName?: string[]; + assertionFailureMessage?: string[]; + assertionError?: boolean[]; + assertionFailure?: boolean[]; + } + // Generated from: com/linkedin/avro2pegasus/events/PinChallengeType.pdsc + + export interface PinChallengeType { + correctPin: string; + userInput?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/PlatoEvent.pdsc + + export interface PlatoEvent { + header: EventHeader; + userName: string; + activityName?: string; + errorMessageKey?: string; + totalTime: number; + domain?: string; + dataset?: string; + metric?: string; + metricType?: string; + voldemortCalls: number; + query?: string; + pageGroup?: string; + isPageView: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/PositionModificationEvent.pdsc + + export interface PositionModificationEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + positionId?: number; + memberId: number; + isAdding: boolean; + companyId?: number; + companyName: string; + title: string; + isCurrent: boolean; + startDate: number; + endDate?: number; + description: string; + showFoundOnLinkedinCheckbox: boolean; + isFoundOnLinkedin: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/PreferenceField.pdsc + + export interface PreferenceField { + name: string; + terms: { [id: string]: number }; + } + // Generated from: com/linkedin/avro2pegasus/events/profileElementChoices.pdsc + + export type profileElementChoices = 'SUMMARY' | 'POSITION' | 'EDUCATION'; + // Generated from: com/linkedin/avro2pegasus/events/ProfileFlaggingEvent.pdsc + + export interface ProfileFlaggingEvent { + header: EventHeader; + stopwordFound: boolean; + trait: string; + blockableStopwords?: string[]; + flaggableStopwords?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ProfilePositionSendMailSetEvent.pdsc + + export interface ProfilePositionSendMailSetEvent { + header: EventHeader; + memberId: number; + positionId: number; + isCurrentPosition: boolean; + okToSendEmail: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ProfileRichMediaAddEvent.pdsc + + export interface ProfileRichMediaAddEvent { + header: EventHeader; + dataType: dataTypeChoices; + provider?: string; + originalUrl?: string; + displaySection?: string; + location?: string; + treasuryMedia: string; + owner: string; + orginalOwner?: string; + addedFromOwner?: string; + success: boolean; + errorMsg?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ProfileTopKeywordsActionType.pdsc + + export type ProfileTopKeywordsActionType = 'RETRIEVAL' | 'DISMISSAL' | 'SAVE'; + // Generated from: com/linkedin/avro2pegasus/events/ProfileTopKeywordsDismissal.pdsc + + export interface ProfileTopKeywordsDismissal { + dismissedWords?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ProfileTopKeywordsImpressionEvent.pdsc + + export interface ProfileTopKeywordsImpressionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + moduleId?: string; + modelId?: string; + context?: ProfileTopKeywordsRetrieval | ProfileTopKeywordsDismissal | ProfileTopKeywordsSave; + actionType: ProfileTopKeywordsActionType; + topKeywords?: string[]; + dismissedWords?: string[]; + usedWords?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ProfileTopKeywordsRetrieval.pdsc + + export interface ProfileTopKeywordsRetrieval { + topKeywords?: string[]; + usedWords?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ProfileTopKeywordsSave.pdsc + + export interface ProfileTopKeywordsSave { + topKeywords?: string[]; + usedWords?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ProfileViewEvent.pdsc + + export interface ProfileViewEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + entityView: EntityView; + viewerPrivacySetting?: string; + vieweePrivacySetting?: string; + source?: string; + contractId?: number; + networkDistance?: number; + authType?: string; + authToken?: string; + mobileHeader?: MobileHeader; + vieweeMemberUrn?: string; + profileTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + viewReferer?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ProspectCreationType.pdsc + + export type ProspectCreationType = 'DOCUMENT' | 'SPREADSHEET' | 'MANUAL' | 'EMAIL'; + // Generated from: com/linkedin/avro2pegasus/events/ProspectEditEvent.pdsc + + export interface ProspectEditEvent { + header: EventHeader; + contractId?: number; + seatId?: number; + creationType?: ProspectCreationType; + prospectId: number; + sourceId?: number; + attributes?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/ProspectLinkEvent.pdsc + + export interface ProspectLinkEvent { + header: EventHeader; + contractId?: number; + seatId?: number; + prospectId: number; + linkType: LinkType; + memberId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ProspectTagEvent.pdsc + + export interface ProspectTagEvent { + header: EventHeader; + contractId?: number; + seatId?: number; + operation: TagOpName; + prospectId: number; + tagIds?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/Protocol.pdsc + + export type Protocol = 'HTTP' | 'HTTPS'; + // Generated from: com/linkedin/avro2pegasus/events/PublicProfileViewEvent.pdsc + + export interface PublicProfileViewEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + entityView: EntityView; + discloseAsProfileViewerInfo?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/PulseLogEvent.pdsc + + export interface PulseLogEvent { + header: EventHeader; + accessToken?: string; + adId?: string; + algorithm?: string; + apiToken?: string; + baseLinkUrl?: string; + browser?: string; + buyButtonType?: string; + buySource?: string; + buyType?: string; + campaignId?: string; + caption?: string; + captionCount?: string; + catalogCategory?: string; + catalogItemPrimaryKey?: string; + catalogLocale?: string; + catalogSource?: string; + category?: string; + channelType?: string; + clickthroughMethod?: string; + country?: string; + currentVersion?: string; + darkMode?: string; + deviceName?: string; + device?: string; + deviceLocale?: string; + deviceType?: string; + expName?: string; + expRun?: string; + fbId?: string; + fbJson?: string; + featureName?: string; + feedTitle?: string; + feedUrl?: string; + fontFamily?: string; + fontSize?: string; + friend?: string; + friendCount?: string; + friendList?: string; + fromId?: string; + fromUser?: string; + handler?: string; + hour?: string; + idleTime?: string; + impressionCount?: string; + installSource?: string; + interest?: string; + inviteType?: string; + ipAddress?: string; + isAuth?: string; + language?: string; + latitude?: string; + launchSource?: string; + legacyUdid?: string; + linkUrl?: string; + logSource?: string; + logoutSource?: string; + longitude?: string; + message?: string; + minute?: string; + name?: string; + nonPulseFriendCount?: string; + numImages?: string; + numStories?: string; + oldVersion?: string; + orientation?: string; + origin?: string; + originalPagePosition?: string; + os?: string; + osName?: string; + osVersion?: string; + pageLayout?: string; + pagePosition?: string; + pageTitle?: string; + pageType?: string; + positionBlob?: string; + productID?: string; + profileSource?: string; + pulseFriendCount?: string; + pulseUserId?: string; + pulseVersion?: string; + readingMode?: string; + referer?: string; + referrer?: string; + refreshInterval?: string; + removedBy?: string; + requestId?: string; + route?: string; + routeToCatalog?: string; + routeToPage?: string; + routeToStory?: string; + searchTerm?: string; + secondsSpent?: string; + session?: string; + shortCode?: string; + signupMode?: string; + signupPath?: string; + source?: string; + sourcePosition?: string; + storyTitle?: string; + storyUrl?: string; + storyUrlKey?: string; + tilePosition?: string; + timeStamp?: string; + toIdArray?: string; + token?: string; + udid?: string; + url?: string; + userAgent?: string; + userId?: string; + userInteraction?: string; + userName?: string; + utmCampaign?: string; + utmContent?: string; + utmContext?: string; + utmExpid?: string; + utmHpRef?: string; + utmMedium?: string; + utmMediumreferral?: string; + utmReferrer?: string; + utmSource?: string; + utmTerm?: string; + websiteTitle?: string; + websiteUrl?: string; + widgetType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/PulseVoteEvent.pdsc + + export interface PulseVoteEvent { + header: EventHeader; + id: string; + url?: string; + actor: EntityID; + subject: EntityID; + targets?: EntityID[]; + language?: string; + countries?: string[]; + startTime?: number; + duration?: number; + voteStrength: number; + isDelete: boolean; + voteType?: pulseVoteType; + } + // Generated from: com/linkedin/avro2pegasus/events/pulseVoteType.pdsc + + export type pulseVoteType = 'PROMOTION' | 'GENERAL' | 'NOMINATE'; + // Generated from: com/linkedin/avro2pegasus/events/PuntReason.pdsc + + export type PuntReason = 'MEMBER_OPT_OUT' | 'NO_MATCH'; + // Generated from: com/linkedin/avro2pegasus/events/pymkDetailedImpression.pdsc + + export interface pymkDetailedImpression { + memberId: number; + score: number; + finalScore?: number; + position: number; + origins: origin[]; + onlineFeatures?: Feature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/PymkDetailedImpressionV2.pdsc + + export interface PymkDetailedImpressionV2 { + recommendedEntity: string; + finalScore?: number; + position: number; + recommendationSourceProperties: recommendationSource[]; + onlineFeatures?: OnlineFeature[]; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + firstPassScores?: FirstPassScore[]; + viewerOnlineFeatures?: viewerOnlineFeatures[]; + } + // Generated from: com/linkedin/avro2pegasus/events/PymkFeedbackEvent.pdsc + + export interface PymkFeedbackEvent { + header: EventHeader; + destId: number; + destUrn?: string; + reason: string; + } + // Generated from: com/linkedin/avro2pegasus/events/PymkImpressionDetailsEvent.pdsc + + export interface PymkImpressionDetailsEvent { + header: EventHeader; + location: string; + offset: number; + limit: number; + source: sourceType; + onlineModel?: string; + viewerUrn?: string; + pymkDetailedImpressions: pymkDetailedImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/PymkImpressionDetailsV2Event.pdsc + + export interface PymkImpressionDetailsV2Event { + header: EventHeader; + location: string; + offset: number; + limit: number; + experimentSettings: ExperimentSetting[]; + sortType?: sortType; + usageContext: string; + viewerPhoneNumberCountryCode?: string; + preferredEntities?: string[]; + entityBeingViewed?: string; + isFetchFacets?: boolean; + selectedCurrentCompanyFacets?: string[]; + selectedPastCompanyFacets?: string[]; + selectedEducationFacets?: string[]; + selectedConnectionFacets?: string[]; + resultType?: resultType; + viewerUrn?: string; + pymkDetailedImpressionsV2: PymkDetailedImpressionV2[]; + viewerFeatures?: ViewerFeatures[]; + } + // Generated from: com/linkedin/avro2pegasus/events/PymkImpressionEvent.pdsc + + export interface PymkImpressionEvent { + header: EventHeader; + location: string; + offset: number; + limit: number; + source: number; + recommended: number[]; + totalRecommendationsCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/RealUserMonitoringEvent.pdsc + + export interface RealUserMonitoringEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + applicationName?: string; + trackingTime?: number; + pageKey?: string; + treeId?: fixed_16; + navigationTimingApi?: boolean; + navigationStart?: number; + unloadEventStart?: number; + unloadEventEnd?: number; + redirectStart?: number; + redirectEnd?: number; + fetchStart?: number; + domainLookupStart?: number; + domainLookupEnd?: number; + connectStart?: number; + connectEnd?: number; + secureConnectionStart?: number; + requestStart?: number; + responseStart?: number; + responseEnd?: number; + domLoading?: number; + domInteractive?: number; + domContentLoadedEventStart?: number; + domContentLoadedEventEnd?: number; + domComplete?: number; + loadEventStart?: number; + loadEventEnd?: number; + redirectCount?: number; + navigationType?: number; + boomerangStart?: number; + boomerangEnd?: number; + timeDone?: number; + timePage?: number; + timeResponse?: number; + timeLoad?: number; + timePrerender?: number; + timePostrender?: number; + timeSource?: string; + bandwidth?: number; + bandwidthErr?: number; + latency?: number; + latencyError?: number; + bandwidthTime?: number; + totalTime?: number; + dnsTime?: number; + connectTime?: number; + firstByteTime?: number; + pageDownloadTime?: number; + frontendTime?: number; + hasFizzyEmbed?: boolean; + totalFizzyNotDustTime?: number; + totalFizzyDustRenderTime?: number; + totalDustRenderTime?: number; + serverStartTime?: number; + totalDustTemplateParseTime?: number; + trackingClientTimestampMs?: number; + embedsReadyClientTimestampMs?: number; + fizzyParseProcessingDurationMs?: number; + fizzyParseDurationMs?: number; + fizzyRenderProcessingDurationMs?: number; + fizzyRenderDurationMs?: number; + fizzyScriptExternalEvalDurationMs?: number; + fizzyScriptInlineEvalDurationMs?: number; + fizzyTotalDurationMs?: number; + isSSL?: number; + usedCDN?: { [id: string]: string }; + resourceTiming?: { [id: string]: number }; + pointOfPresenceId?: string; + beaconLatencies?: beaconLatencies[]; + originHost?: string; + osName?: string; + osVersion?: string; + deviceModel?: string; + appVersion?: string; + pageId?: string; + pageSize?: string; + appInitialize?: Com.Linkedin.Avro2pegasus.Events.Mobileperf.AppInitialize; + pageType?: string; + totalMobilePageTime?: string; + pageCompleteTime?: string; + pageCompletionTime?: number; + carrierName?: string; + sessionID?: string; + timeToAboveFold?: number; + timeToPageInteractive?: number; + timeToNavInteractive?: number; + deviceID?: string; + connectionType?: string; + adMetrics?: AdImpressionMetrics[]; + nativeTimings?: NativeTiming[]; + httpMetrics?: RequestMetrics[]; + fpsMetrics?: FramesPerSecondMetrics[]; + rawXLiFabricHeader?: string; + webUIFramework?: WebUIFrameWork; + pageLoadMode?: PageLoadMode; + renderCompleteTime?: number; + serverProcessDuration?: number; + detailedRenderTimingEntries?: DetailedRenderTimingEntry[]; + resourceTimingEntries?: ResourceTimingEntry[]; + mobileNetworkQuality?: MobileNetworkQuality; + networkBandwidth?: number; + deviceClassYear?: number; + isSinglePageApp?: boolean; + appRenderMode?: AppRenderMode; + userTimingEntries?: UserTimingEntry[]; + isAppRenderFailed?: boolean; + isImpactedByHiddenWindow?: boolean; + jsHeapSizeLimit?: number; + totalJSHeapSize?: number; + usedJSHeapSize?: number; + httpVersion?: string; + workerStart?: number; + longTasks?: LongTask[]; + isFromServiceWorker?: boolean; + htmlMetrics?: HtmlNavigationTimingMetrics; + networkInformationMetrics?: Com.Linkedin.Avro2pegasus.Events.Performance.NetworkInformationHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/Recommendation.pdsc + + export interface Recommendation { + scoredEntity: ScoredEntity; + metadata?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/RecommendationActionType.pdsc + + export type RecommendationActionType = 'CLICK' | 'HOVER' | 'CLICK_ON_HOVER' | 'CROSS'; + // Generated from: com/linkedin/avro2pegasus/events/RecommendationFeedbackAddEvent.pdsc + + export interface RecommendationFeedbackAddEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + sourceUrn: string; + feedbackType: string; + externalLiarIntent: string; + feedbackName: string; + feedbackUrn: string; + timestamp: number; + } + // Generated from: com/linkedin/avro2pegasus/events/RecommendationPreferencesUpdateEvent.pdsc + + export interface RecommendationPreferencesUpdateEvent { + header: EventHeader; + sourceUrn: string; + preferenceType: string; + lastModified: number; + fields: PreferenceField[]; + } + // Generated from: com/linkedin/avro2pegasus/events/RecommendationScore.pdsc + + export interface RecommendationScore { + targetUrn?: string; + modelScore: number; + finalScore: number; + transformerScores: string; + impressionProbability: number; + itemMetadata?: { [id: string]: string }; + transformerMetadata?: { [id: string]: { [id: string]: string } }; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/RecommendationScoringEvent.pdsc + + export interface RecommendationScoringEvent { + header: EventHeader; + requestId: string; + sourceUrn?: string; + viewerUrn?: string; + locationKey: string; + maximumResultsComputed: number; + scoreThreshold: number; + algorithmId: string; + recommendationType?: string; + items?: RecommendationScore[]; + metadata?: { [id: string]: string }; + transformerOrderWithMetadata?: Array<{ + [id: string]: null | { [id: string]: string }; + }>; + } + // Generated from: com/linkedin/avro2pegasus/events/recommendationSource.pdsc + + export interface recommendationSource { + source: source; + sourcekey: string; + } + // Generated from: com/linkedin/avro2pegasus/events/RecommendationTriggerEvent.pdsc + + export interface RecommendationTriggerEvent { + eventId: string; + header: EventHeader; + sourceUrn: string; + viewerUrn?: string; + customId?: string; + recommendationType: Com.Linkedin.Avro2pegasus.Events.Impression.EntityRecommendationType; + metadata?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/RecruiterActionEvent.pdsc + + export interface RecruiterActionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + actionType: RecruiterActionType; + seatId: number; + contractId: number; + projectId: number; + actionEntityId: number; + actionEntityType?: RecruiterEntityType; + contextEntityId: number; + contextEntityType?: RecruiterEntityType; + csMemberId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/RecruiterActionType.pdsc + + export type RecruiterActionType = + | 'SEND_INMAIL_TO_PROSPECT' + | 'ADD_PROSPECT_TO_PROJECT' + | 'REMOVE_PROSPECT_FROM_PROJECT' + | 'ADD_PROSPECT_NOTE' + | 'EDIT_PROSPECT_STATUS' + | 'VIEW_PROSPECT' + | 'EDIT_PROSPECT_TAG' + | 'ADD_PROSPECT_TO_CLIPBOARD' + | 'REMOVE_PROSPECT_FROM_CLIPBOARD'; + // Generated from: com/linkedin/avro2pegasus/events/RecruiterActivity.pdsc + + export interface RecruiterActivity { + activityId: string; + indexInFeed: number; + activityType: string; + numActivities: number; + numGroups: number; + } + // Generated from: com/linkedin/avro2pegasus/events/RecruiterActivityEvent.pdsc + + export interface RecruiterActivityEvent { + eventId: string; + header: EventHeader; + requestHeader?: UserRequestHeader; + mobileHeader?: MobileHeader; + moduleKey?: string; + viewerUrn: string; + prospectUrn?: string; + memberUrn?: string; + actionMetadata?: { [id: string]: string }; + activity: string; + calledOn: number; + runTime: number; + success: boolean; + comments?: string; + actionEntity: number; + secondaryEntity: number; + project: string; + csUser: string; + } + // Generated from: com/linkedin/avro2pegasus/events/RecruiterEntityType.pdsc + + export type RecruiterEntityType = + | 'MEMBER' + | 'PROSPECT' + | 'PROJECT' + | 'CLIPBOARD' + | 'NOTE' + | 'STATUS' + | 'TAG' + | 'INMAIL'; + // Generated from: com/linkedin/avro2pegasus/events/RecruiterNoteReminderEvent.pdsc + + export interface RecruiterNoteReminderEvent { + header: EventHeader; + contractId?: number; + seatId?: number; + entityId: number; + entityType?: Entity; + operation: NoteReminderOpName; + objectId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/RefundPaymentRejectionReason.pdsc + + export type RefundPaymentRejectionReason = + | 'FUSE_RESTRICTED' + | 'NO_PREMIUM_SERVICE' + | 'MULTIPLE_PREMIUM_SERVICES' + | 'ACTIVE_PREMIUM_SERVICE' + | 'UNSUPPORTED_SERVICE_TYPE' + | 'UNSUPPORTED_PAYMENT_TYPE' + | 'NOT_ELIGIBLE_FOR_REFUND'; + // Generated from: com/linkedin/avro2pegasus/events/RefundPaymentRequestEvent.pdsc + + export interface RefundPaymentRequestEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + refundPaymentResult: RefundPaymentResult; + refundPaymentRejectionReason?: RefundPaymentRejectionReason; + refundCartUrn?: string; + serviceType?: RefundPaymentServiceType; + } + // Generated from: com/linkedin/avro2pegasus/events/RefundPaymentResult.pdsc + + export type RefundPaymentResult = 'APPROVED' | 'REJECTED'; + // Generated from: com/linkedin/avro2pegasus/events/RefundPaymentServiceType.pdsc + + export type RefundPaymentServiceType = 'SUBS'; + // Generated from: com/linkedin/avro2pegasus/events/RegistrationEvent.pdsc + + export interface RegistrationEvent { + header: EventHeader; + phoneAccountUrn?: string; + emailAccountUrn?: string; + requestHeader: UserRequestHeader; + firstName: string; + lastName: string; + email?: string; + personalEmail?: string; + inviterID: number; + invitationID: number; + genieReg?: string; + trcode?: string; + submissionID?: string; + referrerPageKey?: string; + mobileHeader?: MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/RehabRestrictionAction.pdsc + + export type RehabRestrictionAction = 'BLOCK' | 'WARN' | 'AUDIT' | 'FINAL_RESTRICTION'; + // Generated from: com/linkedin/avro2pegasus/events/RehabRestrictionData.pdsc + + export interface RehabRestrictionData { + restrictionId: RestrictionId; + rehabViolationPreset?: RehabViolationPreset; + } + // Generated from: com/linkedin/avro2pegasus/events/RehabRestrictionInfo.pdsc + + export interface RehabRestrictionInfo { + rehabLevel: number; + action: RehabRestrictionAction; + enforcementDuration: number; + restrictionId: RestrictionId; + restrictionLevelTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rehabViolationPreset?: RehabViolationPreset; + } + // Generated from: com/linkedin/avro2pegasus/events/RehabViolationPreset.pdsc + + export interface RehabViolationPreset { + violationType: string; + presetName: string; + } + // Generated from: com/linkedin/avro2pegasus/events/RelevanceReasonRankingModel.pdsc + + export type RelevanceReasonRankingModel = 'STATIC' | 'DIVERSE'; + // Generated from: com/linkedin/avro2pegasus/events/RelevanceTopic.pdsc + + export interface RelevanceTopic { + id: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/RemailerCcGuestEvent.pdsc + + export interface RemailerCcGuestEvent { + header: EventHeader; + memberId: number; + messageType: string; + guestCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/Request.pdsc + + export interface Request { + method: Method; + extensionMethod?: string; + protocol: Protocol; + ipAsBytes?: IPAddress; + domain?: string; + path: string; + query?: string; + referer?: string; + userAgent?: string; + xForwardedFor?: string; + accept?: string; + acceptEncoding?: string; + acceptLanguage?: string; + contentLength?: number; + bcookie?: string; + bsCookieInfo?: BsCookieInfo; + xLiTrack?: string; + contentType?: string; + cookies?: string[]; + encryptedFullUrl?: string; + encryptedBody?: string; + isXSS: boolean; + sessionId?: number; + loginSessionUrn?: string; + headers?: { [id: string]: string }; + headerNames?: string[]; + mobileHeader?: MobileHeader; + remappedDomain?: string; + remappedPath?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/RequestDomain.pdsc + + export type RequestDomain = 'LINKEDIN_COM' | 'LINKEDIN_CN'; + // Generated from: com/linkedin/avro2pegasus/events/RequestMetrics.pdsc + + export interface RequestMetrics { + url: string; + start?: number; + duration: number; + status?: number; + size?: number; + mobilePageKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/RequestType.pdsc + + export type RequestType = 'MEMBER' | 'NON_MEMBER'; + // Generated from: com/linkedin/avro2pegasus/events/ResourceHit.pdsc + + export interface ResourceHit { + resource?: string; + resourceCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ResourceTimingEntry.pdsc + + export interface ResourceTimingEntry { + sampleMode?: string; + name: string; + entryType: string; + startTime?: number; + duration?: number; + initiatorType?: string; + nextHopProtocol?: string; + redirectStart?: number; + redirectEnd?: number; + fetchStart?: number; + domainLookupStart?: number; + domainLookupEnd?: number; + connectStart?: number; + connectEnd?: number; + secureConnectionStart?: number; + requestStart?: number; + responseStart?: number; + responseEnd?: number; + transferSize?: number; + encodedBodySize?: number; + decodedBodySize?: number; + resourceTreeId?: fixed_16; + workerStart?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/Response.pdsc + + export interface Response { + statusCode: number; + serverDuration: number; + bcookie?: string; + bsCookieInfo?: BsCookieInfo; + xLiUuid?: string; + contentType?: string; + contentLength?: number; + transferEncoding?: string; + cookiesSet?: ResponseCookie[]; + cookiesDeleted?: ResponseCookie[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ResponseCookie.pdsc + + export interface ResponseCookie { + name: string; + domain?: string; + maxAge?: number; + expires?: number; + path?: string; + version?: string; + isSecure: boolean; + isHttpOnly: boolean; + sameSite?: SameSite; + } + // Generated from: com/linkedin/avro2pegasus/events/ResponseFormat.pdsc + + export type ResponseFormat = 'xml' | 'json' | 'javaMap' | 'jsonp' | 'NULL'; + // Generated from: com/linkedin/avro2pegasus/events/RestrictionId.pdsc + + export type RestrictionId = string; + // Generated from: com/linkedin/avro2pegasus/events/resultType.pdsc + + export type resultType = 'ALL' | 'MEMBER' | 'NON_MEMBER'; + // Generated from: com/linkedin/avro2pegasus/events/SameSite.pdsc + + export type SameSite = 'STRICT' | 'LAX' | 'NONE'; + // Generated from: com/linkedin/avro2pegasus/events/SchedulerBotReceivedUtteranceEvent.pdsc + + export interface SchedulerBotReceivedUtteranceEvent { + header: EventHeader; + threadUrn: string; + messageUrn: string; + originalUtterance: string; + referenceYear: number; + referenceMonth: number; + referenceDayOfMonth: number; + referenceHour: number; + referenceMinute: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ScinActivityEvent.pdsc + + export interface ScinActivityEvent { + header: EventHeader; + daysSinceEpoch: number; + monthsSinceEpoch: number; + advertiserId: number; + campaignId: number; + campaignTypeInt: number; + creativeId: number; + channelId: number; + deviceTypeId: number; + status: number; + requestId?: string; + impressionId?: string; + mediaType?: string; + clickTag?: string; + clickType?: number; + costType?: CostType; + contextId?: string; + sequence?: number; + activityId: number; + urnEntityType: URNEntityType; + activityType: string; + activityVisibility?: ActivityVisibility; + impressionCount: number; + likeCount: number; + commentCount: number; + shareCount: number; + followCount: number; + viewContentCount: number; + viewUpdateCount: number; + viewCompanyCount: number; + otherClickCount: number; + memberId: number; + memberIndustries?: number[]; + memberFunctions?: number[]; + memberSeniorities?: number[]; + memberCompanySizes?: CompanySize[]; + memberTitles?: number[]; + memberRegion?: number; + cost: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ScoredBoolean.pdsc + + export interface ScoredBoolean { + value: boolean; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ScoredEntity.pdsc + + export interface ScoredEntity { + id: string; + score: number; + sourceName?: string; + sourceModel?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ScoredEntityEvent.pdsc + + export interface ScoredEntityEvent { + header: EventHeader; + scoredEntities: ScoredEntityV2[]; + inputEntityUrn?: string; + originator: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ScoredEntityV2.pdsc + + export interface ScoredEntityV2 { + id: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ScoredLocale.pdsc + + export interface ScoredLocale { + locale: Locale; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ScoreEvent.pdsc + + export interface ScoreEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + msg: string; + params: { [id: string]: string }; + scorerStage?: ScorerStage; + scorerType?: ScorerType; + jsEnabled?: JsSupport; + isAjax: boolean; + submissionID?: string; + counterInfo?: { [id: string]: number }; + executedRules: string[]; + activatedRules?: string[]; + distributionModelScores?: Com.Linkedin.Avro2pegasus.Events.Ucv.DistributionModelScoreMetadata[]; + rehabRestrictionData?: RehabRestrictionData; + } + // Generated from: com/linkedin/avro2pegasus/events/ScoreName.pdsc + + export type ScoreName = + | 'LEGACY' + | 'DORMANT_RESURRECT' + | 'DESTINATION_FORWARD_CONNECTIONS' + | 'OPTIMUS' + | 'CONTRIBUTION' + | 'EDGE_VALUE' + | 'PCREATE'; + // Generated from: com/linkedin/avro2pegasus/events/ScorerStage.pdsc + + export type ScorerStage = 'CURRENT' | 'PROPOSED'; + // Generated from: com/linkedin/avro2pegasus/events/ScorerType.pdsc + + export type ScorerType = + | 'SCORER_LOGIN' + | 'SCORER_PASSWORD_RESET' + | 'SCORER_REGISTRATION' + | 'SCORER_SPAM' + | 'SCORER_REPORT_SPAM' + | 'SCORER_LOGIN_COOKIE_RENEWAL' + | 'SCORER_RAPPORTIVE_LOGIN' + | 'SCORER_SLIDESHARE_UGC' + | 'SCORER_ANTI_AUTOMATION' + | 'SCORER_PHONE_CHALLENGE' + | 'SCORER_PURCHASE' + | 'SCORER_ABOOK_UPLOAD' + | 'SCORER_EMAIL_LOOKUP' + | 'SCORER_MEMBER_REQUEST' + | 'SCORER_GUEST_REQUEST' + | 'SCORER_CONTACTS' + | 'SCORER_CONTENT_CLASSIFICATION' + | 'SCORER_CONTENT_CLASSIFICATION_PASSIVE' + | 'SCORER_IDENTITY_VERIFICATION' + | 'SCORER_CONTENT_CLASSIFICATION_USER_FLAGGING' + | 'SCORER_INVITATION' + | 'SCORER_MERGE_CONNECTIONS' + | 'SCORER_MEMBER_BASED_ON_CONTENT' + | 'SCORER_MICROSOFT_PEOPLE_CARD' + | 'SCORER_CLUSTER' + | 'SCORER_CLUSTER_ENTITY' + | 'SCORER_MEMBER_ACCOUNT_MANAGEMENT' + | 'SCORER_THIRD_PARTY_SCRAPING'; + // Generated from: com/linkedin/avro2pegasus/events/ScrapingMitigationInfo.pdsc + + export interface ScrapingMitigationInfo { + configVersion: string; + scraperNames?: string[]; + successfulMitigationMethodIDs: string[]; + unsuccessfulMitigationMethodIDs: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ScrapingViolationInfo.pdsc + + export interface ScrapingViolationInfo { + configVersion: string; + scraperNames?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/SecurityChallengeEvent.pdsc + + export interface SecurityChallengeEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + appName?: string; + memberId: number; + email?: string; + eventType: SecurityChallengeEventType; + challengeType: SecurityChallengeType; + challengeData?: FirstNameChallengeType | CaptchaChallengeType | PinChallengeType; + consumerKey?: string; + timeSinceDisplay: number; + challengeId?: string; + submissionID?: string; + validationResult?: SecurityChallengeValidationResult; + handleUrn?: string; + scrapingChallengeData?: Com.Linkedin.Avro2pegasus.Events.Challenges.ScrapingChallengeData; + tosRateLimitedChallengeData?: Com.Linkedin.Avro2pegasus.Events.Challenges.TosRateLimitedChallengeData; + source?: SecurityChallengeSource; + sourceV2?: string; + rehabRestriction?: Com.Linkedin.Avro2pegasus.Events.Challenges.RehabChallengeData; + } + // Generated from: com/linkedin/avro2pegasus/events/SecurityChallengeEventType.pdsc + + export type SecurityChallengeEventType = 'SHOW_CHALLENGE' | 'SUBMIT_CHALLENGE'; + // Generated from: com/linkedin/avro2pegasus/events/SecurityChallengeSource.pdsc + + export type SecurityChallengeSource = + | 'CONSUMER_LOGIN' + | 'PASSWORD_RESET' + | 'SETTINGS_ADD_PHONE' + | 'REGISTER_WITH_PHONE_NUMBER' + | 'REGISTER_WITH_EMAIL' + | 'PROFILE_PAGE' + | 'HELP_CENTER_CONTACT_US_PAGE' + | 'UNSUBSCRIBE_GUEST_EMAIL' + | 'UNSUBSCRIBE_GUEST_PHONE' + | 'SETTINGS_TWO_FACTOR_AUTHENTICATOR'; + // Generated from: com/linkedin/avro2pegasus/events/SecurityChallengeType.pdsc + + export type SecurityChallengeType = + | 'CAPTCHA_CHALLENGE' + | 'LOGIN_CAPTCHA_CHALLENGE' + | 'FIRST_NAME_CHALLENGE' + | 'PIN_CHALLENGE' + | 'EMAIL_CHALLENGE' + | 'BLOCK_LOGIN_CHALLENGE' + | 'EMAIL_PIN_CHALLENGE' + | 'PHONE_CHALLENGE' + | 'TOS_RATE_LIMITED_CHALLENGE' + | 'SCRAPING_CHALLENGE' + | 'TWO_STEP_VERIFICATION' + | 'ID_VERIFICATION_CHALLENGE' + | 'GOOGLE_AUTH_CHALLENGE' + | 'NATIVE_CAPTCHA_CHALLENGE' + | 'TWO_STEP_VERIFICATION_AUTHENTICATOR_APP' + | 'TWO_STEP_VERIFICATION_BACKUP_CODE' + | 'SMS' + | 'SECONDARY_HANDLE_CHALLENGE' + | 'REHAB_RESTRICTION_CHALLENGE'; + // Generated from: com/linkedin/avro2pegasus/events/SecurityChallengeValidationResult.pdsc + + export type SecurityChallengeValidationResult = + | 'CHALLENGE_INVALID' + | 'CHALLENGE_EXPIRED' + | 'VERIFICATION_SKIPPED' + | 'USER_RESPONSE_INCORRECT' + | 'TOO_MANY_FAILED_ATTEMPTS' + | 'USER_RESPONSE_CORRECT' + | 'INTERNAL_ERROR' + | 'USER_RESPONSE_CORRECT_BUT_IGNORED' + | 'USER_RESPONSE_INCORRECT_AND_IGNORED'; + // Generated from: com/linkedin/avro2pegasus/events/SendPinEvent.pdsc + + export interface SendPinEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + phoneNumber: string; + method: SendPinMethod; + result: SendPinResultType; + } + // Generated from: com/linkedin/avro2pegasus/events/SendPinMethod.pdsc + + export type SendPinMethod = 'SMS' | 'PHONE_CALL'; + // Generated from: com/linkedin/avro2pegasus/events/SendPinResultType.pdsc + + export type SendPinResultType = 'SUCCESS' | 'ERROR' | 'PHONE_NUMBER_INVALID' | 'FUSE_RESTRICTED'; + // Generated from: com/linkedin/avro2pegasus/events/ShareActionType.pdsc + + export type ShareActionType = 'view' | 'deliver' | 'forward' | 'reply' | 'send'; + // Generated from: com/linkedin/avro2pegasus/events/SkillsEditEvent.pdsc + + export interface SkillsEditEvent { + header: EventHeader; + oldSkills: string[]; + newSkills: string[]; + addedSkills: string[]; + removedSkills: string[]; + location: string; + } + // Generated from: com/linkedin/avro2pegasus/events/SkillsFlagEvent.pdsc + + export interface SkillsFlagEvent { + header: EventHeader; + pageKey: string; + browserId: string; + skillId?: number; + skillName?: string; + skillPhrase?: string; + feedbackType: SkillsFlagType; + wikiFeedback?: SkillsFlagWiki; + } + // Generated from: com/linkedin/avro2pegasus/events/SkillsFlagType.pdsc + + export type SkillsFlagType = 'SKILLS_FLAG_WIKI'; + // Generated from: com/linkedin/avro2pegasus/events/SkillsFlagWiki.pdsc + + export interface SkillsFlagWiki { + wikiUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/SkillsSuggestionAddedEvent.pdsc + + export interface SkillsSuggestionAddedEvent { + header: EventHeader; + skillId: number; + locale?: Locale; + index: number; + numVisible: number; + location: string; + model: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/SkillsSuggestionFeedbackEvent.pdsc + + export interface SkillsSuggestionFeedbackEvent { + header: EventHeader; + skillId: number; + index: number; + locale?: Locale; + numVisible: number; + location: string; + model: string; + score: number; + reason: string; + } + // Generated from: com/linkedin/avro2pegasus/events/SkillsSuggestionImpressionEvent.pdsc + + export interface SkillsSuggestionImpressionEvent { + header: EventHeader; + numVisible: number; + location: string; + locale?: Locale; + skills: SkillsSuggestionImpressionSkill[]; + } + // Generated from: com/linkedin/avro2pegasus/events/SkillsSuggestionImpressionSkill.pdsc + + export interface SkillsSuggestionImpressionSkill { + skillId: number; + index: number; + model: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/SlotGroup.pdsc + + export interface SlotGroup { + groupId: string; + widgetOrderBy?: string; + numRequested?: number; + position?: number; + relevanceType?: string; + relevanceParams?: { [id: string]: string }; + groupScore?: number; + widgets: GroupWidget[]; + } + // Generated from: com/linkedin/avro2pegasus/events/SortOrder.pdsc + + export type SortOrder = 'ASCENDING' | 'DESCENDING'; + // Generated from: com/linkedin/avro2pegasus/events/sortType.pdsc + + export type sortType = 'WEIGHTED_RANDOM' | 'PERMUTE' | 'TOP_SCORE'; + // Generated from: com/linkedin/avro2pegasus/events/source.pdsc + + export type source = + | 'PYMK' + | 'GYMK' + | 'PYMK_NUX' + | 'PYMK_NUX_BACKFILL' + | 'DIGITS_UNDERCONNECTED' + | 'INVITER_CONNECTIONS' + | 'SEARCH_BACKFILL' + | 'GAIA' + | 'SEARCH_BACKFILL_V2' + | 'ALLSPARK'; + // Generated from: com/linkedin/avro2pegasus/events/SourceFileChangeEvent.pdsc + + export interface SourceFileChangeEvent { + header: EventHeader; + revisionUrl?: string; + headUrl?: string; + revision: string; + fileName: string; + filePath: string; + fileSize?: number; + fileOperation: Com.Linkedin.Avro2pegasus.Common.Codesearch.SourceFileChangeOperation; + code?: string; + repoType: Com.Linkedin.Avro2pegasus.Common.Codesearch.SourceFileRepoType; + repoName: string; + projectName: string; + isExtSCMFile: boolean; + isMPFile: boolean; + fileExtension?: string; + lastModifiedTimestamp?: number; + decoratedUrl?: string; + sourceControl?: Com.Linkedin.Avro2pegasus.Common.Codesearch.SourceFileSourceControl; + } + // Generated from: com/linkedin/avro2pegasus/events/sourceType.pdsc + + export type sourceType = 'ID_SOURCE' | 'EMAIL_SOURCE' | 'SEARCH_BACKFILL_SOURCE'; + // Generated from: com/linkedin/avro2pegasus/events/SpamReportEvent.pdsc + + export interface SpamReportEvent { + header: EventHeader; + reporterId: number; + itemId: number; + itemGlobalId: number; + senderId?: number; + senderEmail?: string; + mboxItemCreateDate: number; + messageType?: MBoxMessageType; + contentType?: string; + contentId?: string; + subject?: string; + body1?: string; + body2?: string; + recipientEmailAddress?: string; + urls?: string[]; + type: SpamReportEventType; + } + // Generated from: com/linkedin/avro2pegasus/events/SpamReportEventType.pdsc + + export type SpamReportEventType = 'REPORT_SPAM' | 'URL_IN_MESSAGE_BODY'; + // Generated from: com/linkedin/avro2pegasus/events/SslChangeEvent.pdsc + + export interface SslChangeEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + sslEnabled: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/StandardizationOutcome.pdsc + + export type StandardizationOutcome = 'client' | '_none_' | 'url_match' | 'text_match' | 'cs_assign'; + // Generated from: com/linkedin/avro2pegasus/events/StandardizationSource.pdsc + + export type StandardizationSource = 'reg' | 'addPos' | 'upPos' | 'addCo' | 'idCo' | 'autoGF' | 'cs'; + // Generated from: com/linkedin/avro2pegasus/events/StandardizedPositionTitle.pdsc + + export interface StandardizedPositionTitle { + titleId?: number; + superTitleId?: number; + parentSuperTitleId?: number; + seniorityId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/StateChangeType.pdsc + + export type StateChangeType = 'RECIPIENT_MESSAGE_PERSISTED' | 'SENDER_MESSAGE_PERSISTED'; + // Generated from: com/linkedin/avro2pegasus/events/StatusUpdateActionType.pdsc + + export type StatusUpdateActionType = 'update' | 'clear'; + // Generated from: com/linkedin/avro2pegasus/events/StatusUpdateEvent.pdsc + + export interface StatusUpdateEvent { + header: EventHeader; + action: StatusUpdateActionType; + status?: string; + category?: string; + versionId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/SubscriptionChooserActionEvent.pdsc + + export interface SubscriptionChooserActionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + impressionId: number; + productId: number; + recurrence: Com.Linkedin.Avro2pegasus.Events.Subscriptions.SubsRecurrence; + actionType: Com.Linkedin.Avro2pegasus.Events.Subscriptions.ActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/SubscriptionChooserImpressionEvent.pdsc + + export interface SubscriptionChooserImpressionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + impressionId: string; + channelId?: number; + channelIdV2?: number; + context?: string; + productIds: number[]; + productIdShown?: number; + recommendedPlan: number; + rankerLix?: string; + ranker?: string; + chooserConfigOptionLix?: string; + promotionId?: number; + locale?: string; + familySelectionStrategyName?: string; + topModules?: string[]; + featureCategories?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/SubscriptionRecurrenceType.pdsc + + export type SubscriptionRecurrenceType = 'ANNUAL' | 'MONTHLY'; + // Generated from: com/linkedin/avro2pegasus/events/SubscriptionState.pdsc + + export interface SubscriptionState { + productUrn: string; + recurrence?: SubscriptionRecurrenceType; + isTrial: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/SuggestedEndorsementFeedback.pdsc + + export interface SuggestedEndorsementFeedback { + recipientId: number; + recipientType: Entity; + endorsedItemId: number; + endorsedItemType: Entity; + } + // Generated from: com/linkedin/avro2pegasus/events/SuggestedEndorsementsFeedbackEvent.pdsc + + export interface SuggestedEndorsementsFeedbackEvent { + header: EventHeader; + location: string; + feedback: SuggestedEndorsementFeedback[]; + } + // Generated from: com/linkedin/avro2pegasus/events/TagOpName.pdsc + + export type TagOpName = 'ADD' | 'REPLACE' | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/TalentPackageActionEvent.pdsc + + export interface TalentPackageActionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + actionType: TalentPackageActionType; + contextEntityUrn?: string; + talentPackageUrn?: string; + moduleKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/TalentPackageActionType.pdsc + + export type TalentPackageActionType = + | 'INITIATE_INMAIL_TO_PROSPECT' + | 'VIEW_PROSPECT' + | 'ADD_PROSPECT_TO_FAVORITE' + | 'REMOVE_PROSPECT_FROM_FAVORITE' + | 'ADD_PROSPECT_NOTE' + | 'REMOVE_PROSPECT_NOTE'; + // Generated from: com/linkedin/avro2pegasus/events/TetherAccountBindingResult.pdsc + + export type TetherAccountBindingResult = 'SUCCESS' | 'FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/TetherAccountBindingTrackingEvent.pdsc + + export interface TetherAccountBindingTrackingEvent { + header: EventHeader; + sessionId: number; + providerName?: string; + handle?: string; + tetherAccountID: number; + result: TetherAccountBindingResult; + } + // Generated from: com/linkedin/avro2pegasus/events/ThrottleAction.pdsc + + export type ThrottleAction = 'None' | 'Warn' | 'Drop' | 'Log'; + // Generated from: com/linkedin/avro2pegasus/events/ThrottleHit.pdsc + + export interface ThrottleHit { + fuseResourceTypeName?: string; + fuseResourceType?: number; + resourceCount?: number; + resource?: string; + throttleAction?: ThrottleAction; + fuseRestrictionType?: FuseRestrictionType; + } + // Generated from: com/linkedin/avro2pegasus/events/TimingStatistics.pdsc + + export interface TimingStatistics { + count: number; + meanDurationMillis: number; + stdDevDurationMillis?: number; + percentileMap?: { [id: string]: number }; + errorCount?: number; + distinctCount?: number; + geometricMeanDurationMillis?: number; + minDurationMillis?: number; + maxDurationMillis?: number; + modeDurationMillis?: number; + firstDurationMillis?: number; + lastDurationMillis?: number; + startTime?: number; + endTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/TlsConfiguration.pdsc + + export interface TlsConfiguration { + sslProtocol: string; + sslSecureRandomImplementation: string; + } + // Generated from: com/linkedin/avro2pegasus/events/TokenStatus.pdsc + + export type TokenStatus = 'MISSING' | 'INVALID_TOKEN' | 'INVALID_SIGNATURE' | 'EXPIRED' | 'VALID'; + // Generated from: com/linkedin/avro2pegasus/events/TraceData.pdsc + + export interface TraceData { + treeId: fixed_16; + requestId: number; + taskId: number; + rpcTrace: string; + forceTraceEnabled: boolean; + context: { [id: string]: string }; + scaleFactor?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/TrackingMonitoringEvent.pdsc + + export interface TrackingMonitoringEvent { + header: EventHeader; + tier: string; + eventType: string; + count: number; + beginTimestamp: number; + endTimestamp: number; + sizeInBytes?: number; + failureCount?: number; + clientProfile?: KafkaClientProfile; + cluster?: string; + clusterFabricUrn?: string; + server?: string; + instance?: string; + appName?: string; + fabricUrn?: string; + enqueueTime?: number; + principal?: string; + onBehalfOf?: string; + compressedSizeInBytes?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/TreasuryAddEvent.pdsc + + export interface TreasuryAddEvent { + header: EventHeader; + dataType: dataTypeChoices; + provider?: string; + originalUrl?: string; + profileElement: profileElementChoices; + location?: string; + success: boolean; + errorMsg?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/TreasuryViewEvent.pdsc + + export interface TreasuryViewEvent { + header: EventHeader; + ownerId: number; + treasuryId: number; + location?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/TweetEvent.pdsc + + export interface TweetEvent { + header: EventHeader; + entityType: string; + entityId: string; + updateId: string; + tweetText: string; + visibility: string; + tweetId: number; + tweetUserId: number; + tweetSource: string; + isImported: boolean; + importFilterReason: string; + inReplyToStatusID: number; + inReplyToUserID: number; + userLocation: string; + userHomePageUrl: string; + followersCount: number; + friendsCount: number; + statusesCount: number; + isVerifiedAccount: boolean; + geoCountryCode: string; + geoFullName: string; + geoUrl: string; + isReply: boolean; + isRetweet: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/UnifiedActionType.pdsc + + export type UnifiedActionType = 'SINGLE' | 'BULK'; + // Generated from: com/linkedin/avro2pegasus/events/UnsubscribeSourceType.pdsc + + export type UnsubscribeSourceType = 'AUTO' | 'USER'; + // Generated from: com/linkedin/avro2pegasus/events/UnsubscriptionSourceType.pdsc + + export type UnsubscriptionSourceType = 'SENDBLOOM' | 'SALESLOFT' | 'MEDALLIA' | 'INTERNAL'; + // Generated from: com/linkedin/avro2pegasus/events/UploadNetworkQuality.pdsc + + export type UploadNetworkQuality = 'POOR' | 'AVERAGE' | 'GOOD' | 'EXCELLENT' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/URLInfoUpdateEvent.pdsc + + export interface URLInfoUpdateEvent { + header: EventHeader; + url: string; + articleId: number; + shareCount: number; + likeCount: number; + commentCount: number; + readCount: number; + resolvedUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/URNEntityType.pdsc + + export type URNEntityType = 'ACTIVITY' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/UsageControlDenialEvent.pdsc + + export interface UsageControlDenialEvent { + header: EventHeader; + ip: string; + ipAsBytes?: IPAddress; + numInstances: number; + filterName: string; + denialsEnforced: boolean; + topLevelPath: string; + restrictionType?: IpRestrictionType; + infoCode: number; + numMemberInstances: number; + memberIds?: number[]; + orgName?: string; + startTime: number; + endTime: number; + ruleId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/UsageControlEvent.pdsc + + export interface UsageControlEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + type: UsageControlEventType; + windowId: string; + ipInWhitelistedDomain: boolean; + ipFlaggedExternally: boolean; + blockFilterRule?: string; + isCanary: boolean; + restrictionType?: IpRestrictionType; + creator: string; + endTime: number; + notes: string; + orgName?: string; + isRestrictionEnforced?: boolean; + activity?: UsageControlEventActivity; + } + // Generated from: com/linkedin/avro2pegasus/events/UsageControlEventActivity.pdsc + + export interface UsageControlEventActivity { + userRequestCount: number; + startTime: number; + endTime: number; + memberUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/UsageControlEventType.pdsc + + export type UsageControlEventType = + | 'IP_REACHED_LOWER_THRESHOLD' + | 'IP_REACHED_WARN_LEVEL' + | 'IP_REACHED_UPPER_THRESHOLD' + | 'IP_REACHED_MEMBER_QPS_WARN_LEVEL' + | 'IP_REACHED_MEMBER_QPS_THRESHOLD' + | 'IP_REACHED_AGGREGATE_QPS_WARN_LEVEL' + | 'IP_REACHED_AGGREGATE_QPS_THRESHOLD' + | 'IP_FILTER' + | 'BLOCK_FILTER' + | 'MANUAL_RESTRICTION' + | 'ORG_REACHED_MEMBER_QPS_WARN_LEVEL' + | 'ORG_REACHED_MEMBER_QPS_THRESHOLD' + | 'MANUAL_RESTRICTION_EXPIRATION'; + // Generated from: com/linkedin/avro2pegasus/events/UsageReportingPrivacySettingUpdateEvent.pdsc + + export interface UsageReportingPrivacySettingUpdateEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + state: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/UserAccountRestrictionAction.pdsc + + export type UserAccountRestrictionAction = + | 'CLOSE_ACCOUNT' + | 'RESTRICT_ACCOUNT' + | 'UNRESTRICT_ACCOUNT' + | 'REACTIVATE_ACCOUNT' + | 'QUEUE_REVIEW' + | 'IGNORE_RESTRICT'; + // Generated from: com/linkedin/avro2pegasus/events/UserAccountRestrictionEvent.pdsc + + export interface UserAccountRestrictionEvent { + header: EventHeader; + type: string; + createdBy?: string; + createdVersionId: number; + action?: UserAccountRestrictionAction; + isMassRestriction?: boolean; + source?: UserAccountRestrictionSource; + sourceInfo?: UserAccountRestrictionSourceInfo; + reasons?: string[]; + scrapingRestrictionInfo?: Com.Linkedin.Avro2pegasus.Events.Restrictions.ScrapingRestrictionInfo; + antiAutomationRestrictionInfo?: Com.Linkedin.Avro2pegasus.Events.Restrictions.AntiAutomationRestrictionInfo; + tieredBotRestrictionInfo?: Com.Linkedin.Avro2pegasus.Events.Restrictions.TieredBotRestrictionInfo; + tieredHarassmentRestrictionInfo?: Com.Linkedin.Avro2pegasus.Events.Restrictions.TieredHarassmentRestrictionInfo; + hibernateRestrictionInfo?: Com.Linkedin.Avro2pegasus.Events.Restrictions.HibernateRestrictionInfo; + accountLabel?: AccountLabel; + geoRestrictionInfo?: Com.Linkedin.Avro2pegasus.Events.Restrictions.GeoRestrictionInfo; + rehabRestrictionData?: Com.Linkedin.Avro2pegasus.Events.Restrictions.RehabRestriction; + } + // Generated from: com/linkedin/avro2pegasus/events/UserAccountRestrictionSource.pdsc + + export type UserAccountRestrictionSource = + | 'CSTOOL_REP' + | 'MEMBER' + | 'OFFLINE_MODEL' + | 'ONLINE_MODEL' + | 'FUSE_BATCH' + | 'AUTO_SPAM_TO_LOGIN' + | 'CLOSE_ACCOUNT' + | 'MASS' + | 'MANUAL' + | 'MODEL' + | 'QUEUE' + | 'MEDIA_SCAN'; + // Generated from: com/linkedin/avro2pegasus/events/UserAccountRestrictionSourceInfo.pdsc + + export interface UserAccountRestrictionSourceInfo { + csMemberId?: number; + batchId?: string; + onlineRuleName?: string; + hashVersion?: string; + modelName?: string; + modelVersion?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/UserAgentErrorEvent.pdsc + + export interface UserAgentErrorEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + code?: string; + message?: string; + pageKey?: string; + appName?: string; + unique?: string; + originTreeId?: fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/UserPerformanceEvent.pdsc + + export interface UserPerformanceEvent { + header?: EventHeader; + requestHeader?: UserRequestHeader; + piid?: string; + applicationName?: string; + eventName?: string; + headerVersion?: string; + applicationVersion?: string; + bodyVersion?: string; + trackingTime?: number; + eventStartTime?: number; + serverStartTime?: number; + serverEndTime?: number; + clientStartTime?: number; + clientTimeToFirstPixel?: number; + preHeaderParseControlTime?: number; + postHeaderParseControlTime?: number; + preBodyParseControlTime?: number; + postBodyParseControlTime?: number; + preFooterParseControlTime?: number; + postFooterParseControlTime?: number; + postCatchAllParseControlTime?: number; + clientDomReadyTime?: number; + clientEndTime?: number; + eventSentTime?: number; + navigationTimingApi?: boolean; + hasFizzyEmbed?: boolean; + totalFizzyNotDustTime?: number; + totalFizzyDustRenderTime?: number; + totalEmbedRenderTimeMs?: number; + serverFirstFlushTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/UserRequestDenialEvent.pdsc + + export interface UserRequestDenialEvent { + header: EventHeader; + request?: Request; + response?: Response; + denialInfo: DenialInfo; + initialPageRequestTreeId?: fixed_16; + fid?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/UserRequestEvent.pdsc + + export interface UserRequestEvent { + header?: EventHeader; + request?: Request; + response?: Response; + } + // Generated from: com/linkedin/avro2pegasus/events/UserRequestHeader.pdsc + + export interface UserRequestHeader { + browserId?: string; + sessionId?: string; + ip?: string; + pageKey?: string; + path?: string; + locale?: string; + interfaceLocale?: string; + trackingCode?: string; + referer?: string; + userAgent?: string; + ipAsBytes?: IPAddress; + requestProtocol?: Com.Linkedin.Avro2pegasus.Common.ApplicationLayerProtocol; + requestDomain?: RequestDomain; + } + // Generated from: com/linkedin/avro2pegasus/events/UserTimingEntry.pdsc + + export interface UserTimingEntry { + name: string; + entryType: UserTimingEntryType; + startTime: number; + duration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/UserTimingEntryType.pdsc + + export type UserTimingEntryType = 'MEASURE' | 'MARK'; + // Generated from: com/linkedin/avro2pegasus/events/UspSettingValueChangeEvent.pdsc + + export interface UspSettingValueChangeEvent { + header: EventHeader; + requestHeader?: UserRequestHeader; + mobileHeader?: MobileHeader; + actorUrn: string; + callerService: string; + action: actionType; + primaryEntityUrn: string; + secondaryEntityUrn?: string; + settingTypeUrn: string; + oldValue?: string[]; + newValue?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/UUID.pdsc + + export type UUID = string; + // Generated from: com/linkedin/avro2pegasus/events/ViewerFeatures.pdsc + + export interface ViewerFeatures { + featureName: string; + featureValue: number; + } + // Generated from: com/linkedin/avro2pegasus/events/viewerOnlineFeatures.pdsc + + export interface viewerOnlineFeatures { + featureName: string; + featureValue: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ViewModuleErrorEvent.pdsc + + export interface ViewModuleErrorEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + moduleNames: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ViewModuleGenerationEvent.pdsc + + export interface ViewModuleGenerationEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + moduleNames: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ViewModuleImpressionEvent.pdsc + + export interface ViewModuleImpressionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + moduleNames: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ViewSource.pdsc + + export type ViewSource = 'EMAIL' | 'READER'; + // Generated from: com/linkedin/avro2pegasus/events/ViolationType.pdsc + + export type ViolationType = + | 'HTTPS_VIOLATION' + | 'THIRD_PARTY_SCRIPTS_VIOLATION' + | 'EXTENSION_RESOURCES_VIOLATION' + | 'SCRAPING_VIOLATION' + | 'INVALID_CONFIG_VIOLATION' + | 'EXTENSION_CHROME_API_VIOLATION'; + // Generated from: com/linkedin/avro2pegasus/events/ViralCardInfo.pdsc + + export interface ViralCardInfo { + viralCardTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + cardType: Com.Linkedin.Avro2pegasus.Events.Common.ViralCardType; + } + // Generated from: com/linkedin/avro2pegasus/events/ViralPanelServedEvent.pdsc + + export interface ViralPanelServedEvent { + header: EventHeader; + requestHeader?: UserRequestHeader; + viralPanelTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + parentTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + cards: ViralCardInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/VoyagerUserRequestEvent.pdsc + + export interface VoyagerUserRequestEvent { + header: EventHeader; + userRequestHeader: UserRequestHeader; + bsCookieInfo?: BsCookieInfo; + responseCode: number; + mobileHeader?: MobileHeader; + numEntitiesReturned?: number; + resourceName?: string; + restliMethodName?: string; + duration?: number; + multiProductUrn?: string; + multiProductVersion?: number; + decoratedType?: string; + decoSpecVersion?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/WebUIFrameWork.pdsc + + export type WebUIFrameWork = 'DUST' | 'EMBER' | 'MARIONETTE' | 'ANGULAR'; + // Generated from: com/linkedin/avro2pegasus/events/WhitelistStatus.pdsc + + export type WhitelistStatus = 'WHITELISTED' | 'UNASSIGNED' | 'BLACKLISTED'; + // Generated from: com/linkedin/avro2pegasus/events/WidgetManagementClickEvent.pdsc + + export interface WidgetManagementClickEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + isOnlineProcessed?: boolean; + segmentId?: string; + layoutId: string; + version: number; + actionCategory: string; + actionName: string; + actionCount?: number; + contextId: string; + appId: string; + pageName: string; + slotId: string; + groupId: string; + groupPosition?: number; + orderBy?: string; + widgetOrderBy?: string; + widgetId: string; + widgetPosition: number; + relevanceType?: string; + relevanceParams?: { [id: string]: string }; + widgetRelevanceType?: string; + widgetRelevanceParams?: { [id: string]: string }; + groupScore?: number; + widgetScore?: number; + trackingToken?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/WidgetManagementImpressionEvent.pdsc + + export interface WidgetManagementImpressionEvent { + header: EventHeader; + requestHeader: UserRequestHeader; + mobileHeader?: MobileHeader; + contextId: string; + appId: string; + pageName: string; + version: number; + layoutId: string; + pageImpression: boolean; + isOnlineProcessed?: boolean; + slots: PageSlot[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ZeppelinGetContactsEvent.pdsc + + export interface ZeppelinGetContactsEvent { + header: EventHeader; + method: string; + providerName: string; + success: boolean; + errorType?: string; + totalImported?: number; + existingMembersImported?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ZeppelinReimportOptInEvent.pdsc + + export interface ZeppelinReimportOptInEvent { + header: EventHeader; + memberId: number; + tetherAccountId: number; + email: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ZeppelinResolveWMITypeEvent.pdsc + + export interface ZeppelinResolveWMITypeEvent { + header: EventHeader; + domain: string; + success: boolean; + errorType?: string; + webmailType?: string; + isCustomDomain: boolean; + } + namespace A2p { + // Generated from: com/linkedin/avro2pegasus/events/a2p/Add2ProfileCertificationEvent.pdsc + + export interface Add2ProfileCertificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rawRequestHref: string; + type: Add2ProfileTrackingEventType; + companyUrn?: string; + name?: string; + url?: string; + license?: string; + startDate?: string; + endDate?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/a2p/Add2ProfileEducationEvent.pdsc + + export interface Add2ProfileEducationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rawRequestHref: string; + type: Add2ProfileTrackingEventType; + schoolUrn?: string; + degree?: string; + fieldOfStudy?: string; + startYear?: number; + endYear?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/a2p/Add2ProfileTrackingEventType.pdsc + + export type Add2ProfileTrackingEventType = + | 'PRE_VALIDATION' + | 'IMPRESSION' + | 'EDIT' + | 'SUBMIT_SUCCESS' + | 'SUBMIT_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/a2p/Add2ProfileVolunteerOrganizationEvent.pdsc + + export interface Add2ProfileVolunteerOrganizationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rawRequestHref: string; + type: Add2ProfileTrackingEventType; + companyUrn?: string; + } + } + namespace Abook { + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportCacheStatusEvent.pdsc + + export interface AbookImportCacheStatusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + contactsCacheStatus: Com.Linkedin.Avro2pegasus.Events.Common.Abook.AbookImportCacheStatus; + legoCacheStatus: Com.Linkedin.Avro2pegasus.Events.Common.Abook.AbookImportCacheStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportContactsDetailEvent.pdsc + + export interface AbookImportContactsDetailEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + abookImportTransactionId?: string; + success: boolean; + importId?: string; + hashedPhoneNumbers: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportContactsEvent.pdsc + + export interface AbookImportContactsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + method: string; + abookImportTransactionId?: string; + providerName: string; + success: boolean; + errorType?: string; + contactsOrigin?: string; + totalContacts?: number; + invalidContactsCount?: number; + existingMembersImported?: number; + importId?: string; + totalMembers?: number; + totalNonMembers?: number; + contactsOfferedOnM2M?: number; + contactsOfferedOnM2G?: number; + importStatus?: ImportStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportDropEvent.pdsc + + export interface AbookImportDropEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + abookImportDropReason: AbookImportDropReason; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportDropReason.pdsc + + export type AbookImportDropReason = + | 'AUTOSYNC_PERMISSION_DENIED' + | 'SYSTEM_CONTACTS_READ_PERMISSION_DENIED' + | 'EMPTY_ADDRESS_BOOK'; + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportEmailProvider.pdsc + + export type AbookImportEmailProvider = 'HOTMAIL' | 'GMAIL' | 'OUTLOOK' | 'YAHOO' | 'AOL' | 'OTHERS'; + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportEntryImpressionEvent.pdsc + + export interface AbookImportEntryImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + entryPoint: EntryPoint; + suggestedRoute?: SuggestedRoute; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportImpressionEvent.pdsc + + export interface AbookImportImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + abookImportTransactionId: string; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + source?: string; + autoFilledEmail?: string; + autoSelectedEmailProvider: AbookImportEmailProvider; + orderOfEmailProviderss: AbookImportEmailProvider[]; + socialProofType?: string; + socialProofCount: number; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportInvitationCreateEvent.pdsc + + export interface AbookImportInvitationCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + abookImportTransactionId?: string; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + invitationType: InvitationSentTo; + numberOfInvitationsSent: number; + invitationReceiptEmails: string[]; + invitationTrackingInfo?: Com.Linkedin.Avro2pegasus.Events.Invitations.InvitationTrackingInfo[]; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + invitationCounts?: Com.Linkedin.Avro2pegasus.Common.Abook.InvitationCountPerChannel; + invitationCountPerContext?: Com.Linkedin.Avro2pegasus.Common.Abook.InvitationCountPerContext[]; + abookFetchTransactionId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportInvitationDiscardReason.pdsc + + export type AbookImportInvitationDiscardReason = + | 'CONTACTS_UPLOAD' + | 'BACKGROUND_CONTACTS_UPLOAD' + | 'CONTACTS_FETCH' + | 'NO_CONTACTS_RECEIVED' + | 'NO_ELIGIBLE_CONTACTS'; + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportInvitationImpressionDiscardEvent.pdsc + + export interface AbookImportInvitationImpressionDiscardEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + abookImportInvitationDiscardReason: AbookImportInvitationDiscardReason; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportInvitationImpressionEvent.pdsc + + export interface AbookImportInvitationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + abookImportTransactionId?: string; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + impressionType: InvitationTarget; + count: number; + numberOfExistingContacts: number; + numberOfNewContacts: number; + numberOfContactsPortedFromPhoneNumber: number; + suggestedConnections?: string[]; + suggestedInvitations?: string[]; + invitationTrackingInfo?: Com.Linkedin.Avro2pegasus.Events.Invitations.InvitationTrackingInfo[]; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + invitationCounts?: Com.Linkedin.Avro2pegasus.Common.Abook.InvitationCountPerChannel; + invitationCountPerContext?: Com.Linkedin.Avro2pegasus.Common.Abook.InvitationCountPerContext[]; + abookFetchTransactionId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportInvitationImpressionInterruptEvent.pdsc + + export interface AbookImportInvitationImpressionInterruptEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + abookImportInvitationInterruptReason: Com.Linkedin.Avro2pegasus.Common.Abook.InvitationImpressionInterruptReason; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportInvitationServedEvent.pdsc + + export interface AbookImportInvitationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + invitationTrackingInfo: Com.Linkedin.Avro2pegasus.Events.Invitations.InvitationTrackingInfo[]; + invitationCounts?: Com.Linkedin.Avro2pegasus.Common.Abook.InvitationCountPerChannel; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportInvitationUndoEvent.pdsc + + export interface AbookImportInvitationUndoEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + invitationCounts: Com.Linkedin.Avro2pegasus.Common.Abook.InvitationCountPerChannel; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportInvitationUndoImpressionEvent.pdsc + + export interface AbookImportInvitationUndoImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportOAuthCallbackEvent.pdsc + + export interface AbookImportOAuthCallbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportOAuthRedirectEvent.pdsc + + export interface AbookImportOAuthRedirectEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportSubmitEvent.pdsc + + export interface AbookImportSubmitEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + abookImportTransactionId?: string; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + providerName?: ProviderName; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookImportTaskStatusEvent.pdsc + + export interface AbookImportTaskStatusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + abookImportTransactionId: string; + status: Status; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookSaveNotesEvent.pdsc + + export interface AbookSaveNotesEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + notesLength: number; + contactId: number; + contactMemberId?: number; + pageKey: string; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookSearchEvent.pdsc + + export interface AbookSearchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + numSubjects: number; + pageKey: string; + operation?: AbookSearchOpName; + operationSubType?: string; + operationArgs: string; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookSearchOpName.pdsc + + export type AbookSearchOpName = 'SEARCH' | 'FILTER'; + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookSocialProofImpressionEvent.pdsc + + export interface AbookSocialProofImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + numberOfImages: number; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookSocialProofServedEvent.pdsc + + export interface AbookSocialProofServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + numberOfPymkResults?: number; + numberOfVisiblePymkImages?: number; + numberOfPeopleSearchResults?: number; + numberOfVisiblePeopleSearchImages?: number; + recommendedMemberUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookTagEvent.pdsc + + export interface AbookTagEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + operation: AbookTagOpName; + tagType?: TagType; + tagName?: string; + tagId?: number; + pageKey: string; + numSubjects?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookTagOpName.pdsc + + export type AbookTagOpName = 'CREATE' | 'UPDATE' | 'REMOVE' | 'TAG_SUBJECTS' | 'UNTAG' | 'DISPLAY'; + // Generated from: com/linkedin/avro2pegasus/events/abook/AbookViewEvent.pdsc + + export interface AbookViewEvent { + pageKey: string; + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + operation?: string; + numSubjects?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/abook/EntryPoint.pdsc + + export type EntryPoint = + | 'CONNECT_HUB_RAIL' + | 'CONTACTS_RAIL' + | 'CONNECT_HUB_ABI_PROMO' + | 'INVITATION_HUB_RAIL' + | 'HOMEPAGE_FEED_ABI_PROMO' + | 'HOMEPAGE_FEED_NUX_PROMO' + | 'HOMEPAGE_FEED_RAIL' + | 'EMAIL_ACCEPT' + | 'EMAIL_IGNORE' + | 'INVITATION_SENT' + | 'PROFILE' + | 'NUX' + | 'CONNECTIONS_PAGE_NO_CONNECTIONS' + | 'MY_NETWORK_TAB_ZERO_STATE' + | 'FIND_CONNECTIONS' + | 'MY_NETWORK_PENDING_INVITATIONS' + | 'AUTO_SYNC_SETTING' + | 'MY_NETWORK_THERMOMETER' + | 'MY_NETWORK_PYMK' + | 'WYLO_EMAIL' + | 'ABOOK_EMAIL' + | 'GLOBAL_NAV' + | 'UNKNOWN' + | 'MY_NETWORK_COLLAPSED_ADD_CONNECTIONS_CARD' + | 'EXPANDED_ADD_CONNECTIONS_CARD' + | 'MY_NETWORK_COLLAPSED_INVITATION_PROGRESS_CARD' + | 'EXPANDED_INVITATION_PROGRESS_CARD' + | 'MY_NETWORK_COLLAPSED_CONNECTION_PROGRESS_CARD' + | 'EXPANDED_CONNECTION_PROGRESS_CARD' + | 'ONBOARDING_ABOOK' + | 'LAUNCHPAD_EXPANDED_CONNECTIONS_CARD' + | 'LAUNCHPAD_COLLAPSED_CONNECTIONS_CARD' + | 'CONNECT_HUB_BITE_SIZED_RESULTS' + | 'CONNECT_HUB_BITE_SIZED_RESULTS_LANDING' + | 'GLOBAL_NAV_SPOTLIGHT_ADD_CONNECTIONS_CARD' + | 'GLOBAL_NAV_SPOTLIGHT_ADD_CONNECTIONS_ICON' + | 'CONNECTIONS_RAIL'; + // Generated from: com/linkedin/avro2pegasus/events/abook/ImportStatus.pdsc + + export type ImportStatus = 'PARTIAL_SUCCESS' | 'SUCCESS' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/abook/InvitationSentTo.pdsc + + export type InvitationSentTo = 'MEMBER' | 'GUEST'; + // Generated from: com/linkedin/avro2pegasus/events/abook/InvitationTarget.pdsc + + export type InvitationTarget = 'MEMBER' | 'GUEST' | 'ALL'; + // Generated from: com/linkedin/avro2pegasus/events/abook/ProviderName.pdsc + + export type ProviderName = + | 'GOOGLE' + | 'GOOGLE_CUSTOM' + | 'YAHOO' + | 'MSN' + | 'AOL' + | 'ESAYA' + | 'ESAYALI' + | 'EXCHANGE' + | 'FACEBOOK' + | 'GAAP' + | 'WEIBO' + | 'TENCENT' + | 'IMAP' + | 'UNSUPPORTED' + | 'DENIED' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/abook/Status.pdsc + + export type Status = 'SUCCESS' | 'IN_PROGRESS' | 'ERROR_BAD_LOGIN' | 'ERROR_ZERO_CONTACTS' | 'ERROR_OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/abook/SuggestedRoute.pdsc + + export type SuggestedRoute = 'INTRO' | 'RESULT_LANDING'; + // Generated from: com/linkedin/avro2pegasus/events/abook/TagType.pdsc + + export type TagType = 'CLASSMATES' | 'COLLEAGUES' | 'FRIENDS' | 'GROUP_MEMBERS' | 'PARTNERS'; + } + namespace Accessgrantproof { + // Generated from: com/linkedin/avro2pegasus/events/accessgrantproof/ApplicationGrantProofWriteEvent.pdsc + + export interface ApplicationGrantProofWriteEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + developerApplicationUrn: string; + resourceName: ResourceName; + method: BasicOperation; + actionName?: string; + upsertResponse?: UpsertResponse; + apiPermissionUrns?: string[]; + processingDuration?: number; + status: WriteStatus; + errorMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/accessgrantproof/BasicOperation.pdsc + + export type BasicOperation = + | 'CREATE' + | 'BATCH_CREATE' + | 'UPDATE' + | 'PARTIAL_UPDATE' + | 'BATCH_UPDATE' + | 'BATCH_PARTIAL_UPDATE' + | 'DELETE' + | 'BATCH_DELETE' + | 'ACTION'; + // Generated from: com/linkedin/avro2pegasus/events/accessgrantproof/ResourceName.pdsc + + export type ResourceName = + | 'PROVISIONEDAPPLICATIONS' + | 'CONSUMERS' + | 'DEVELOPERAPPLICATIONS' + | 'APPICATIONRESOURCECALLCONFIGURATIONSETS' + | 'APPLICATIONTOPARTNERPROGRAMASSOCIATIONS'; + // Generated from: com/linkedin/avro2pegasus/events/accessgrantproof/UpsertResponse.pdsc + + export type UpsertResponse = 'CREATED' | 'UPDATED'; + // Generated from: com/linkedin/avro2pegasus/events/accessgrantproof/WriteStatus.pdsc + + export type WriteStatus = 'SUCCESS' | 'FAIL'; + } + namespace Activitybasedrecommendation { + // Generated from: com/linkedin/avro2pegasus/events/activitybasedrecommendation/ActivityBasedRecommendationImpressionEvent.pdsc + + export interface ActivityBasedRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + requestType: ActivityBasedRecommendationRequestType; + collectionMetadata: Com.Linkedin.Avro2pegasus.Events.CollectionMetadata; + modelId?: string; + results?: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + } + // Generated from: com/linkedin/avro2pegasus/events/activitybasedrecommendation/ActivityBasedRecommendationRequestType.pdsc + + export type ActivityBasedRecommendationRequestType = 'JOB_POSTING'; + } + namespace Adconsolidation { + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/AuctionLossReason.pdsc + + export type AuctionLossReason = + | 'OTHER' + | 'NO_BID_ERROR' + | 'NO_BID_TIMEOUT' + | 'NO_BID_EMPTY_RESPONSE' + | 'LOW_PRICE' + | 'PRESENCE_OF_ROADBLOCK'; + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/Bid.pdsc + + export interface Bid { + adsRenderingContent?: string; + renderedAdFormat: RenderingResponseFormat; + internalAdDetails?: InternalBidderResponseDetails; + externalAdDetails?: ExternalBidderResponseDetails; + } + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/Bidder.pdsc + + export type Bidder = + | 'TSCP_DYNAMIC_ADS_DESKTOP' + | 'TSCP_DYNAMIC_ADS_MOBILE' + | 'TSCP_TEXT_ADS' + | 'TSCP_SPONSORED_UPDATES' + | 'APPNEXUS_GENERAL' + | 'APPNEXUS_EMEA' + | 'BACKFILL' + | 'GOOGLE'; + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/BidderSelectionResult.pdsc + + export interface BidderSelectionResult { + bidder: Bidder; + skipReasons?: BidderSkipReason[]; + } + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/BidderSkipReason.pdsc + + export type BidderSkipReason = + | 'OTHER' + | 'USER_SELECTION' + | 'LOGOUT_MEMBER' + | 'TEXT_ADS_ONLY' + | 'PUBLISHER' + | 'AD_SIZE' + | 'AD_ZONE' + | 'RESPONSE_RENDERING_FORMAT' + | 'EMEA_REGION' + | 'MEMBER_OPTOUT' + | 'GDPR_COUNTRY'; + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/ExternalBidderDevice.pdsc + + export interface ExternalBidderDevice { + isDoNotTrackEnabled: boolean; + deviceType: ExternalBidderDeviceType; + ipv4?: string; + ipv6?: string; + geo?: Com.Linkedin.Avro2pegasus.Events.Lax.Geo; + locale?: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/ExternalBidderDeviceType.pdsc + + export type ExternalBidderDeviceType = 'MOBILE' | 'DESKTOP'; + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/ExternalBidderImpression.pdsc + + export interface ExternalBidderImpression { + tagId?: string; + requestProtocol: Com.Linkedin.Avro2pegasus.Common.ApplicationLayerProtocol; + impressionId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/ExternalBidderPublisher.pdsc + + export interface ExternalBidderPublisher { + domain: string; + publisherId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/ExternalBidderResponse.pdsc + + export interface ExternalBidderResponse { + bidResponseId?: string; + creativeId?: string; + campaignId?: string; + adCandidateId?: string; + adMarkUpContent: string; + bidPrice: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + bidPriceInCurrency: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/ExternalBidderResponseDetails.pdsc + + export interface ExternalBidderResponseDetails { + bidPrice: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + bidPriceInCurrency: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + impressionId: string; + campaignId?: string; + creativeId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/ExternalBidderSite.pdsc + + export interface ExternalBidderSite { + domain: string; + publisher: ExternalBidderPublisher; + } + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/ExternalBidderUser.pdsc + + export interface ExternalBidderUser { + encodedId?: string; + encryptedBuyerUid?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/InternalBidderResponseDetails.pdsc + + export interface InternalBidderResponseDetails { + bidPrice: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + bidPriceInCurrency: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + impressionId: string; + campaignUrn: string; + creativeUrn: string; + advertiserUrn: string; + campaignGroupUrn?: string; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + ecpi?: number; + pctr?: number; + roadBlockType: Com.Linkedin.Avro2pegasus.Events.Ads.RoadblockType; + } + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/RenderingResponseFormat.pdsc + + export type RenderingResponseFormat = 'HTML' | 'JAVASCRIPT' | 'IFRAME' | 'PDSC'; + // Generated from: com/linkedin/avro2pegasus/events/adconsolidation/SeatBid.pdsc + + export interface SeatBid { + bids: Bid[]; + bidder: Bidder; + adjustedBid?: number; + auctionLossReason?: AuctionLossReason; + startTime: number; + endTime: number; + } + } + namespace Ads { + // Generated from: com/linkedin/avro2pegasus/events/ads/AccountTrustStatus.pdsc + + export type AccountTrustStatus = 'HIGH_TRUST' | 'LOW_TRUST'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdAccountNotificationDeletionEvent.pdsc + + export interface AdAccountNotificationDeletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + type: string; + entityUrnsToRemove?: string[]; + groupByUrn?: string; + sponsoredAccountUrn: string; + sponsoredAccountUserRoles: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdAccountUserRole[]; + organizationUserRoles: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdOrganizationUserRole[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdAccountNotificationEvent.pdsc + + export interface AdAccountNotificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + type: string; + entityUrn: string; + groupByUrn?: string; + sponsoredAccountUrn: string; + sponsoredAccountUserRoles: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdAccountUserRole[]; + organizationUserRoles: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdOrganizationUserRole[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdAccountPromotionCouponRedeemedEvent.pdsc + + export interface AdAccountPromotionCouponRedeemedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + couponCode: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdAnalyticsMemberEvent.pdsc + + export interface AdAnalyticsMemberEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + eventTime: number; + pageKey?: string; + interfaceLocale?: string; + accountUrn: string; + accountCompanyUrn?: string; + advertiserIndustryUrn?: string; + campaignUrn: string; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + creativeUrn: string; + activityUrn?: string; + channelId?: number; + memberUrn: string; + memberIndustryUrns: string[]; + memberFunctionUrns: string[]; + memberSeniorityUrns: string[]; + memberCompanySizes: Com.Linkedin.Avro2pegasus.Events.Common.EmployeeCountRangeType[]; + memberTitleUrns: string[]; + memberCountryCode?: string; + memberRegionCode?: number; + impressions: number; + clicks: number; + landingPageClicks: number; + totalEngagements: number; + otherEngagements: number; + costInUsd: number; + costInLocalCurrency: number; + externalWebsiteConversions: number; + externalWebsitePostViewConversions: number; + externalWebsitePostClickConversions: number; + likes: number; + commentLikes: number; + comments: number; + shares: number; + follows: number; + oneClickLeadFormOpens: number; + oneClickLeads: number; + companyPageClicks: number; + viralImpressions: number; + viralClicks: number; + viralLandingPageClicks: number; + viralLikes: number; + viralCommentLikes: number; + viralComments: number; + viralShares: number; + viralFollows: number; + viralOneClickLeadFormOpens: number; + viralOneClickLeads: number; + viralCompanyPageClicks: number; + viralTotalEngagements: number; + viralOtherEngagements: number; + opens: number; + textUrlClicks: number; + actionClicks: number; + adUnitClicks: number; + leadGenerationMailContactInfoShares: number; + leadGenerationMailInterestedClicks: number; + campaignGroupUrn?: string; + servingLocation: Com.Linkedin.Avro2pegasus.Events.Common.Ads.Pinot.ServingLocation; + videoStarts: number; + videoFirstQuartileCompletions: number; + videoMidpointCompletions: number; + videoThirdQuartileCompletions: number; + videoCompletions: number; + memberCompanyUrns?: string[]; + viralExternalWebsiteConversions: number; + viralExternalWebsitePostViewConversions: number; + viralExternalWebsitePostClickConversions: number; + llaPartnerConversionUrn?: string; + conversionValue?: Com.Linkedin.Avro2pegasus.Events.MoneyValue; + videoViews: number; + fullScreenPlays: number; + viralVideoStarts: number; + viralVideoFirstQuartileCompletions: number; + viralVideoMidpointCompletions: number; + viralVideoThirdQuartileCompletions: number; + viralVideoCompletions: number; + viralVideoViews: number; + viralFullScreenPlays: number; + cardIndex?: number; + cardImpressions: number; + cardClicks: number; + viralCardImpressions: number; + viralCardClicks: number; + sends: number; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + memberCountryGeoUrn?: string; + memberRegionGeoUrn?: string; + sponsoredMessageContentUrn?: string; + conversationContentOptionIndex?: number; + adExperimentUrn?: string; + talentLeads?: number; + memberCountyGeoUrn?: string; + adPlacement?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdPlacement; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdAuctionEvent.pdsc + + export interface AdAuctionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: string; + modelName?: string; + channelId?: number; + auctionCampaigns: AuctionCampaign[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdAudienceMatchProcessingResultEvent.pdsc + + export interface AdAudienceMatchProcessingResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + segmentUrn: string; + matchCount: number; + inputCount: number; + status: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdSegmentStatus; + errorMessage?: string; + adAudienceMatchUrn?: string; + audienceCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdAudienceMatchSegmentUploadEvent.pdsc + + export interface AdAudienceMatchSegmentUploadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + segmentUrn: string; + audienceMatchUrn: string; + audienceMatchType: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdAudienceMatchType; + mediaUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdBidSelectionEvent.pdsc + + export interface AdBidSelectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + entityStatus: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdEntityStatus; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + advertiserSpecifiedBid: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + systemSuggestedBid: Com.Linkedin.Avro2pegasus.Events.Common.Ads.BidSuggestionRange; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdBidType.pdsc + + export type AdBidType = 'CPM' | 'CPC' | 'CPA' | 'CPV'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdBudgetCompletionEvent.pdsc + + export interface AdBudgetCompletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + campaignTypeInt?: number; + granularity: AdBudgetCompletionGranularity; + currency: string; + budgetInCurrency: number; + costAdjustment: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdBudgetCompletionGranularity.pdsc + + export type AdBudgetCompletionGranularity = 'DAILY' | 'LIFETIME'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdBusinessMetricsOptimizationCampaignTypeBasedRankingTracking.pdsc + + export interface AdBusinessMetricsOptimizationCampaignTypeBasedRankingTracking { + name: string; + experiment: string; + campaignTypeInt?: number; + scoreFormula?: string; + tuningFactor?: number; + campaignList?: RankCampaignInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdBusinessMetricsOptimizationOffsiteAuctionParticipants.pdsc + + export interface AdBusinessMetricsOptimizationOffsiteAuctionParticipants { + laxRequestId: string; + participatingCampaigns?: OffsiteAuctionRanking[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdCampaignAnticipatedSpendingEvent.pdsc + + export interface AdCampaignAnticipatedSpendingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + campaignUrn: string; + campaignGroupUrn: string; + accountUrn: string; + amount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + updateTime: number; + discountFactor?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdCampaignPacingChangeEvent.pdsc + + export interface AdCampaignPacingChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + pacingTrackingInfo: PacingTrackingInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdChargeType.pdsc + + export type AdChargeType = 'CPM' | 'CPC' | 'CPA' | 'OCPM' | 'CPV'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdClickThroughRates.pdsc + + export interface AdClickThroughRates { + click: number; + follow?: number; + like?: number; + share?: number; + comment?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdClickType.pdsc + + export type AdClickType = 'CAMPAIGN' | 'OTHER' | 'CANCEL' | 'LEADGEN'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdConsolidationExternalBidderRequestEvent.pdsc + + export interface AdConsolidationExternalBidderRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + bidder: Com.Linkedin.Avro2pegasus.Events.Adconsolidation.Bidder; + adSize: Com.Linkedin.Avro2pegasus.Events.Common.AdSlotSize; + requestId: string; + auctionType: Com.Linkedin.Avro2pegasus.Events.Common.AuctionType; + isTestRequest: boolean; + timeoutDuration: number; + requestSentTime: number; + device: Com.Linkedin.Avro2pegasus.Events.Adconsolidation.ExternalBidderDevice; + impression: Com.Linkedin.Avro2pegasus.Events.Adconsolidation.ExternalBidderImpression; + site: Com.Linkedin.Avro2pegasus.Events.Adconsolidation.ExternalBidderSite; + user: Com.Linkedin.Avro2pegasus.Events.Adconsolidation.ExternalBidderUser; + requestErrorMessage?: string; + responseErrorMessage?: string; + bidResponse?: Com.Linkedin.Avro2pegasus.Events.Adconsolidation.ExternalBidderResponse; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdConsolidationRequestEvent.pdsc + + export interface AdConsolidationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + adTargetIds: Com.Linkedin.Avro2pegasus.Events.AdTargetId[]; + adContextualTargets?: Com.Linkedin.Avro2pegasus.Events.Common.AdContextualTargets; + publisher: Publisher; + channelId?: string; + requestId?: string; + renderingResponseFormat: Com.Linkedin.Avro2pegasus.Events.Adconsolidation.RenderingResponseFormat; + bidderSelectionResults: Com.Linkedin.Avro2pegasus.Events.Adconsolidation.BidderSelectionResult[]; + seatBids: Com.Linkedin.Avro2pegasus.Events.Adconsolidation.SeatBid[]; + isBackfillUsed: boolean; + auctionType: Com.Linkedin.Avro2pegasus.Events.Common.AuctionType; + requestErrorMessage?: string; + responseErrorMessage?: string; + requestReceivedTime: number; + queryParams?: string; + adBlockers: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdBlocker[]; + contentKeywords?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdContentServabilityTrackingEvent.pdsc + + export interface AdContentServabilityTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + isServableContent: boolean; + contentClassificationSource: contentClassificationSourceEnum; + contentClassifier: contentClassifierEnum; + affectedEntities: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdConversionActionType.pdsc + + export type AdConversionActionType = + | 'ADD_TO_CART' + | 'DOWNLOAD' + | 'INSTALL' + | 'KEY_PAGE_VIEW' + | 'LEAD' + | 'PURCHASE' + | 'SIGN_UP' + | 'OTHER' + | 'TALENT_LEAD' + | 'JOB_APPLY'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdConversionExternalEvent.pdsc + + export interface AdConversionExternalEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + targetId?: Com.Linkedin.Avro2pegasus.Events.AdTargetId; + mobileAppUrn?: string; + llamaPartnerUrn: string; + llamaConversionUrn: string; + llamaRuleUrns: string[]; + url: string; + conversionActionType: AdConversionActionType; + conversionValue: Com.Linkedin.Avro2pegasus.Events.MoneyValue; + campaignIds: number[]; + campaignId?: number; + previouslyFiredTime?: number; + adConversionExternalEventSource?: AdConversionExternalEventSource; + postClickAttributionWindowSizeSetting?: number; + viewThroughAttributionWindowSizeSetting?: number; + oatmlCookieData?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteAdTrackingCookie; + insightTagFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.InsightTagFormat; + pixelRequestId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + countryUrn?: string; + pixelRequestUserAgent?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingUserAgent; + pixelRequestPageUrl?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingPageUrl; + offsiteTrackingIdSource?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingIdSource; + attributionType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ConversionAttributionType; + advertiserProvidedParameters?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingAdvertiserProvidedParameters; + sugrId?: string; + conversionName?: string; + sponsoredAccountUrn?: string; + organizationOnsiteEngagementContext?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OrganizationOnsiteEngagementContext; + identityConfidenceLevel?: number; + adCookieMemberIdentification?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdCookieMemberIdentification; + pixelRequestClickIdentifiers?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ThirdPartyClickIdentifiers; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdConversionExternalEventSource.pdsc + + export type AdConversionExternalEventSource = + | 'CSP' + | 'DATA_COLLECTOR_EVENT_PROCESSOR' + | 'PIXLI' + | 'TALENT_LEADS_EVENT_PROCESSOR'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdConversionMethod.pdsc + + export type AdConversionMethod = 'IMAGE_PIXEL' | 'INSIGHT_TAG_URL_MATCH_RULES'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdConversionWindowType.pdsc + + export type AdConversionWindowType = 'POST_CLICK' | 'POST_VIEW'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdCreative.pdsc + + export interface AdCreative { + advertiserId: number; + campaignId: number; + creativeId: number; + oasisModels: OasisModelInfo[]; + auctionPosition: number; + adCreativeFeatures?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdScoringFeatures; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdCreativeTriagedEvent.pdsc + + export interface AdCreativeTriagedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sponsoredCreativeUrn: string; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdCreativeTriagedActionType; + reasons: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdCreativeTriagedReason[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdCrossPageTrackingEvent.pdsc + + export interface AdCrossPageTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingKey: string; + sponsoredAccountUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdEntityNonServableEvent.pdsc + + export interface AdEntityNonServableEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + adEntityUrn: string; + blockUntilTime: number; + source?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdEntityNonServableSource; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdEntityReadTrackingEvent.pdsc + + export interface AdEntityReadTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + developerApplicationUrn?: string; + resource: string; + entityUrn?: string; + sponsoredCampaignGroupUrns: string[]; + sponsoredCampaignUrns: string[]; + multiProductUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdErrorTrackingEvent.pdsc + + export interface AdErrorTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + developerApplicationUrn?: string; + multiProductUrn?: string; + restLiEndpoint: string; + finderOrAction?: string; + resourceMethod: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + exceptionType: string; + errorMessage: string; + internalErrorMessage: string; + errorCode?: string; + httpStatus: number; + errorDetails?: Com.Linkedin.Avro2pegasus.Events.Common.AnyRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdEventWithConversionMessage.pdsc + + export interface AdEventWithConversionMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + insightTagUrn: string; + sponsoredAccountUrn: string; + conversionUrn: string; + pixelFireEventProperties?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.PixelFireEventProperties; + conversionSettings: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ConversionSettings; + previousConversionTime?: number; + attributableAdEventProperties: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AttributableAdEventProperties; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdExchangeHeader.pdsc + + export interface AdExchangeHeader { + bidderId: number; + laxRequestId: string; + supplySourceId: string; + supplySource: string; + publisher?: string; + siteDomain?: string; + mobileBundleName?: string; + adSlot?: string; + winningPrice?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdExperimentStateChangeEvent.pdsc + + export interface AdExperimentStateChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + adExperimentUrn: string; + accountUrn: string; + adExperimentStateBefore?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdExperimentState; + adExperimentStateAfter: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdExperimentState; + endReason?: AdExperimentStopReason; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdExperimentStopReason.pdsc + + export type AdExperimentStopReason = + | 'WINNER_FOUND' + | 'END_DATE_REACHED' + | 'USER_CANCELED' + | 'SYSTEM_ERROR' + | 'USER_CAUSED_CANCELLATION' + | 'CAMPAIGN_NOT_RECOVERABLE' + | 'CREATIVES_NOT_RECOVERABLE' + | 'CAMPAIGN_DELETED'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdFormReviewEvent.pdsc + + export interface AdFormReviewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + adFormUrn: string; + advertiserUrn: string; + creatorUrn?: string; + headline: string; + status: AdFormStatus; + description: string; + targetUrl: string; + thankYouMessage: string; + legalDisclaimer: string; + previousReviewTimestamp?: number; + privacyPolicyUrl: string; + reviewSystem: ReviewSystem; + reviewStatus: ReviewStatus; + previousReviewStatus?: ReviewStatus; + rejectionReasons: RejectionCode[]; + explanation?: string; + testKey?: string; + experimentTreatment?: string; + reviewItemAction?: AdReviewItemAction; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdFormStatus.pdsc + + export type AdFormStatus = 'DRAFT' | 'SUBMITTED' | 'PAUSED' | 'ARCHIVED' | 'CANCELED'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdImageLoadErrorEvent.pdsc + + export interface AdImageLoadErrorEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + imageUrl: string; + imageAssetUrn: string; + sponsoredCreativeUrn?: string; + sponsoredContentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdInMailContentType.pdsc + + export type AdInMailContentType = 'EXTERNAL_URL' | 'NATIVE_CONTENT' | 'LEADGEN' | 'GUIDED_REPLIES'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdInMailFcapInfo.pdsc + + export interface AdInMailFcapInfo { + lastRequestTime?: number; + lastInMailSentTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdInMailRequestEvent.pdsc + + export interface AdInMailRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: string; + requestId: string; + channelId: number; + impressionId?: string; + fcapInfo?: AdInMailFcapInfo; + result: AdInMailRequestResultType; + servedCampaign?: AdInMailServedAdInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdInMailRequestResultType.pdsc + + export type AdInMailRequestResultType = + | 'SERVED' + | 'SERVING_ERROR' + | 'OTHER_ERROR' + | 'FCAP' + | 'OPT_OUT' + | 'NO_CAMPAIGN_MATCH' + | 'ADIMPRESSION_RATE_LIMITER' + | 'PINNING_ERROR' + | 'FCAP_RESERVE_ERROR' + | 'SEND_FAILURE_POST_RESERVATION'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdInMailServedAdInfo.pdsc + + export interface AdInMailServedAdInfo { + contentType: AdInMailContentType; + campaignId: number; + creativeId: number; + contentId: number; + mailboxItemUrn?: string; + mailboxThreadUrn?: string; + campaignGroupUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdInventoryEvent.pdsc + + export interface AdInventoryEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + adInventoryTrackingId: string; + feedSlotCount: number; + inmailSlotCount: number; + displaySlotCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdLeadGenEvent.pdsc + + export interface AdLeadGenEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestId: string; + impressionId: string; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + campaignUrn: string; + advertiserUrn: string; + creativeUrn: string; + isContactInfoShared: boolean; + sourceType?: AdLeadSourceType; + campaignGroupUrn?: string; + adExperimentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdLeadGenUserActionEvent.pdsc + + export interface AdLeadGenUserActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredCampaignUrn: string; + sponsoredAccountUrn: string; + sponsoredCreativeUrn: string; + adFormUrn: string; + entityUrn: string; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + status: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdUserActionStatus; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdUserActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdLeadSourceType.pdsc + + export type AdLeadSourceType = 'TALENT_DIRECT' | 'LANDING_PAGE'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdMatchingEvent.pdsc + + export interface AdMatchingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestId: string; + campaignLists: { [id: string]: SparseIdList }; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdNotificationTrackingEvent.pdsc + + export interface AdNotificationTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingKey: string; + publishedTime?: number; + notificationKey?: NotificationKey; + sponsoredAccountUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdOptimizationEvent.pdsc + + export interface AdOptimizationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestId: string; + deviceId?: string; + experiment: string; + positions?: number[]; + optimizationTrackingInfo?: TrackingInfo[]; + runTimeStats?: RuntimeStats[]; + indexMatchingDuration?: number; + optimizationDuration?: number; + numMatchedCampaigns?: number; + servedCampaignList?: ServedCampaign[]; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + channelId?: number; + publisherId?: number; + bidAdjustmentExperiments?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.BidAdjustmentInfo[]; + offsiteAuctionParticipants?: AdBusinessMetricsOptimizationOffsiteAuctionParticipants; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdPostClickTrackingEvent.pdsc + + export interface AdPostClickTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + postClickSignal: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdPostClickSignalType; + impressionId: string; + sponsoredAccountUrn: string; + campaignGroupUrn: string; + campaignUrn: string; + creativeUrn: string; + objectiveType: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + clientTrackingTime: number; + unwrappedUrlInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdUnwrappedUrlInfo; + webViewType?: Com.Linkedin.Avro2pegasus.Events.Common.WebViewType; + clickId?: string; + swapContext?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdSwapContext; + httpStatusCode?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdPricingType.pdsc + + export type AdPricingType = 'CPM' | 'CPC' | 'CPA' | 'OCPM' | 'OCPC' | 'CPV'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdPuntReason.pdsc + + export type AdPuntReason = 'MEMBER_OPT_OUT' | 'NO_MATCH' | 'UNSUPPORTED_AD_TARGET'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdRealTimeBiddingClickEvent.pdsc + + export interface AdRealTimeBiddingClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + device?: Device; + mobileApp?: MobileApp; + impressionId: string; + exchangeUrn: string; + exchangeRequestId: string; + laxRequestId: string; + requestId: string; + adTargetUrns: string[]; + advertiserUrn: string; + campaignUrn: string; + creativeUrn: string; + campaignTypeString: string; + entityUrn?: string; + format?: string; + status: Com.Linkedin.Avro2pegasus.Events.AdEventStatus; + bidPrice: number; + markupPercentage?: number; + advertiserBidPrice: number; + advertiserBidType: AdBidType; + chargeType: AdPricingType; + campaignFloorPrice: number; + winningPrice?: number; + chargeAmount: number; + chargeAmountInCurrency: number; + chargeCurrency: string; + exchangeRate: number; + pctr: number; + clickTag: string; + clickType: AdClickType; + validationFailures: { [id: string]: string }; + privateMarketDealId?: string; + campaignGroupUrn?: string; + site?: Site; + supportingPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + predictedScores?: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + requestClickDelay?: number; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + runningBid?: number; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + isInterstitial?: boolean; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + adExperimentUrn?: string; + adjustedFloorPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + adjustedInternalSecondBidPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + lanChargePriceModel?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.LanChargePriceModel; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdRealTimeBiddingImpressionEvent.pdsc + + export interface AdRealTimeBiddingImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + device?: Device; + mobileApp?: MobileApp; + impressionId: string; + exchangeUrn: string; + exchangeRequestId: string; + laxRequestId: string; + requestId: string; + adTargetUrns: string[]; + advertiserUrn: string; + campaignUrn: string; + creativeUrn: string; + campaignTypeString: string; + entityUrn?: string; + format?: string; + status: Com.Linkedin.Avro2pegasus.Events.AdEventStatus; + bidPrice: number; + winningPrice?: number; + markupPercentage?: number; + advertiserBidPrice: number; + advertiserBidType: AdBidType; + chargeType: AdPricingType; + campaignFloorPrice: number; + chargeAmount: number; + chargeAmountInCurrency: number; + chargeCurrency: string; + exchangeRate: number; + pctr: number; + validationFailures: { [id: string]: string }; + privateMarketDealId?: string; + campaignGroupUrn?: string; + site?: Site; + supportingPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + predictedScores?: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + viewabilityScore?: number; + requestImpressionDelay?: number; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + runningBid?: number; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + isInterstitial?: boolean; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + adExperimentUrn?: string; + adjustedFloorPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + adjustedInternalSecondBidPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + lanChargePriceModel?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.LanChargePriceModel; + brandSafetyDataRecord?: BrandSafetyDataRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdRealTimeBiddingRequestEvent.pdsc + + export interface AdRealTimeBiddingRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + device?: Device; + mobileApp?: MobileApp; + exchangeUrn: string; + exchangeRequestId: string; + laxRequestId: string; + requestId: string; + adTargetUrns: string[]; + primaryAdTargetUrn: string; + isFrequencyCapEnabled: boolean; + requestedBidCount: number; + returnedBidCount: number; + matchedCampaignCount: number; + puntReason?: AdPuntReason; + exchangeParameters: { [id: string]: string }; + bids: Bid[]; + responsePredictionMetadataCommon?: ResponsePredictionMetadataRecord[]; + privateMarketDealsMatched: Com.Linkedin.Avro2pegasus.Events.Lax.AdPrivateMarketDeal[]; + campaignGroupUrn?: string; + site?: Site; + idAssociationSources?: string[]; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + isInterstitial?: boolean; + pvtr?: number; + allowedAdFormats?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat[]; + funnelFilters: Com.Linkedin.Avro2pegasus.Events.CampaignFilterCount[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdRealTimeBiddingVideoActionEvent.pdsc + + export interface AdRealTimeBiddingVideoActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + device?: Device; + mobileApp?: MobileApp; + site?: Site; + impressionId: string; + exchangeUrn: string; + exchangeRequestId: string; + laxRequestId: string; + requestId: string; + accountUrn: string; + campaignUrn: string; + creativeUrn: string; + campaignGroupUrn?: string; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + entityUrn?: string; + format?: string; + status: Com.Linkedin.Avro2pegasus.Events.AdEventStatus; + bidPrice: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + markupPercentage?: number; + advertiserBidPrice: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + advertiserBidType: AdBidType; + chargeType: AdPricingType; + campaignFloorPrice: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + winningPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + chargeAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + chargeAmountInCurrency: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + predictedScores: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + privateMarketDealId?: string; + videoEngagementType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.VideoAdsEngagementType; + videoAdsErrorMessage?: string; + supportingPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + requestActionDelay?: number; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + runningBid?: number; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + adExperimentUrn?: string; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + isInterstitial?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdRealTimeBiddingWinEvent.pdsc + + export interface AdRealTimeBiddingWinEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + impressionId: string; + winningPrice: number; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + isInterstitial?: boolean; + status?: Com.Linkedin.Avro2pegasus.Events.AdEventStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdRequestTargetMatchEvent.pdsc + + export interface AdRequestTargetMatchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestId: string; + servedCampaignList: ServedCampaignWithMatchedTokens[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdReviewEvent.pdsc + + export interface AdReviewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + campaignUrn: string; + creativeUrn: string; + advertiserUrn: string; + creatorUrn?: string; + creativeType: CreativeType; + creativeText: string; + targetUrl: string; + contentTimestamp?: number; + referenceUrn?: string; + reviewSystem?: string; + reviewStatus: ReviewStatus; + rejectionReasons: RejectionCode[]; + explanation: string; + experimentTreatment?: string; + campaignGroupUrn?: string; + cardsRejectionInformation?: CardRejectionInformation[]; + messageRejectionInformation?: MessageRejectionInformation[]; + accountTrustStatus?: AccountTrustStatus; + reviewItemAction?: AdReviewItemAction; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdReviewItemAction.pdsc + + export type AdReviewItemAction = 'UPSERT_INACTIVE' | 'UPSERT_PENDING' | 'UPDATE_PENDING' | 'UPDATE_CLOSED'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdRtbClickEvent.pdsc + + export interface AdRtbClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + impressionId: string; + advertiserUrn: string; + campaignUrn: string; + creativeUrn: string; + entityUrn?: string; + bidAmount: number; + originalBid: number; + originalBidType: AdBidType; + winningPrice: number; + chargeType: AdChargeType; + chargeFloor: number; + pctr: number; + pcvr: number; + publisherId: string; + exchangeUrn?: string; + mobileAppUrn?: string; + laxCategory?: string; + margin?: number; + channelId: number; + format: string; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + clickTag: string; + status: Com.Linkedin.Avro2pegasus.Events.AdEventStatus; + clickType: AdClickType; + cost: number; + costInCurrency: number; + currency: string; + exchangeRate: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdRtbWinEvent.pdsc + + export interface AdRtbWinEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + impressionId: string; + winningPrice: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdScoringEvent.pdsc + + export interface AdScoringEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: string; + adRequestFeatures?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdScoringFeatures; + adCreatives: AdCreative[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdsDataIntelligenceApiCallEvent.pdsc + + export interface AdsDataIntelligenceApiCallEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datavaultUserPrincipleUrn?: string; + datavaultGroupPrincipleUrn?: string; + datavaultServicePrincipleUrn?: string; + d2ServiceUrn: string; + finderName: string; + finderParams: { [id: string]: string }; + httpStatus: number; + duration: number; + serviceErrorCode?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdSegmentEntitiesAPICallEvent.pdsc + + export interface AdSegmentEntitiesAPICallEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + applicationUrn: string; + advertiserUrn: string; + operation: AdSegmentEntityOperationType; + segmentUrn: string; + memberUrn: string; + responseStatusCode: number; + responseMessage?: string; + creationTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdSegmentEntityInternalPartnerUpdateEvent.pdsc + + export interface AdSegmentEntityInternalPartnerUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + operation: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdSegmentEntityUpdateOperation; + accountUrn: string; + segmentUrn: string; + targetEntityUrn: string; + lastUpdatedTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdSegmentEntityOperationType.pdsc + + export type AdSegmentEntityOperationType = 'DELETE' | 'BATCH_DELETE' | 'UPDATE' | 'BATCH_UPDATE'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdSegmentEntityUpdateEvent.pdsc + + export interface AdSegmentEntityUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + operation: AdSegmentEntityUpdateOperation; + segmentUrn: string; + targetEntityUrn: string; + lastModifiedTime: number; + segmentType: AdSegmentType; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdSegmentEntityUpdateOperation.pdsc + + export type AdSegmentEntityUpdateOperation = 'ADD' | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdSegmentType.pdsc + + export type AdSegmentType = 'RETARGETING' | 'MARKET_AUTOMATION' | 'ENTITY'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdsInfrastructureMigrationProject.pdsc + + export type AdsInfrastructureMigrationProject = + | 'SPONSORED_TRACKING_2_0' + | 'TRACKING_TRK_TOKEN_SCHEMATIZATION' + | 'SERVING_FRONTEND_CONSOLIDATION' + | 'SPONSORED_CONTENCT_PLATFORMIZATION_UNIFIED_SCHEMA'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdsInfrastructureMigrationStatus.pdsc + + export type AdsInfrastructureMigrationStatus = 'BEFORE_MIGRATION' | 'AFTER_MIGRATION'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdsInfrastructureMigrationValidationEvent.pdsc + + export interface AdsInfrastructureMigrationValidationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + project: AdsInfrastructureMigrationProject; + validationId: string; + migrationStatus: AdsInfrastructureMigrationStatus; + outputData: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdsModelType.pdsc + + export type AdsModelType = 'NONE' | 'COUPLED' | 'COLD' | 'WARM'; + // Generated from: com/linkedin/avro2pegasus/events/ads/AdsOMSFulfillmentCompletedGroupingEvent.pdsc + + export interface AdsOMSFulfillmentCompletedGroupingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + dateCreated: Com.Linkedin.Avro2pegasus.Events.Common.Date; + adsFulfillmentGrouping: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdsFulfillmentGrouping; + totalSumAmountForGroup: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + lineRecordCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdsTargetingActionEvent.pdsc + + export interface AdsTargetingActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + interactionType: Com.Linkedin.Avro2pegasus.Events.Common.ControlInteractionType; + controlTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + adTargetingEntity?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdTargetingEntity; + controlSessionId?: string; + accountUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdsTargetingSearchServedEvent.pdsc + + export interface AdsTargetingSearchServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + accountUrn: string; + locale: string; + query: string; + facets?: string[]; + results: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdTargetingEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdStopServingEvent.pdsc + + export interface AdStopServingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + adEntityUrn: string; + stopAction: StopAction; + creativeUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdTrainingDataEvent.pdsc + + export interface AdTrainingDataEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + weight: number; + response: number; + offset: number; + requestContext: { [id: string]: string }; + adScoringFeatures?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdScoringFeatures; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AdWebAnalyticsMemberEvent.pdsc + + export interface AdWebAnalyticsMemberEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + adPageSetUrns: string[]; + memberIndustryUrns: string[]; + memberFunctionUrns: string[]; + memberSeniorityUrns: string[]; + memberCompanySizes: Com.Linkedin.Avro2pegasus.Events.Common.EmployeeCountRangeType[]; + memberTitleUrns: string[]; + memberCountryCodeUrn?: string; + memberRegionCodeUrn?: string; + memberCompanyUrns?: string[]; + offsiteAdTrackingCookie?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteAdTrackingCookie; + memberCountryGeoUrn?: string; + memberRegionGeoUrn?: string; + memberCountyGeoUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AggregationKey.pdsc + + export interface AggregationKey { + memberUrn?: string; + channelUrn?: string; + advertiserUrn?: string; + campaignUrn?: string; + creativeUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AssetCopyRequestEvent.pdsc + + export interface AssetCopyRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + assetCopyActionUrn: string; + sourceAccountUrn: string; + sourceEntityUrn: string; + destinationAccountUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AssetCopySegmentCopyEvent.pdsc + + export interface AssetCopySegmentCopyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + assetCopyActionUrn: string; + assetType: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AssetType; + sourceAccountUrn: string; + sourceEntityUrn: string; + destinationAccountUrn: string; + destinationEntityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/AuctionCampaign.pdsc + + export interface AuctionCampaign { + accountUrn: string; + campaignGroupUrn?: string; + campaignUrn: string; + creativeUrn: string; + campaignCostType: CampaignCostType; + bid: number; + pctrLogisticRegressionMean: number; + pctrLogisticRegressionStddev: number; + pctrAdjustFactor: number; + pctr: number; + ecpi: number; + pcvr?: number; + referencePcvr?: number; + position?: number; + advertiserBidType?: AdBidType; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + passThroughRate?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/Bid.pdsc + + export interface Bid { + impressionId: string; + advertiserUrn: string; + campaignUrn: string; + creativeUrn: string; + campaignTypeString: string; + entityUrn?: string; + bidPrice: number; + markupPercentage?: number; + advertiserBidPrice: number; + advertiserBidType: AdBidType; + chargeType: AdPricingType; + campaignFloorPrice: number; + pctr?: number; + pctrMetaData: PctrMetaDataRecord[]; + usedPrivateMarketDealId?: string; + campaignGroupUrn?: string; + bidPriceFinal?: number; + pvtr?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/BidAdjustedCampaign.pdsc + + export interface BidAdjustedCampaign { + campaignUrn: string; + originalBid?: number; + adjustedBid?: number; + dynamicSegmentUrn?: string; + dynamicSegmentAge?: number; + bidAdjustmentType: BidAdjustmentType; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/BidAdjustmentType.pdsc + + export type BidAdjustmentType = 'DYNAMIC_SEGMENT_AGE'; + // Generated from: com/linkedin/avro2pegasus/events/ads/BidInsight.pdsc + + export interface BidInsight { + bid: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + impressions: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/BmoFilterReason.pdsc + + export type BmoFilterReason = + | 'OTHER' + | 'CAMPAIGN_FLOOR_PRICE' + | 'ADVERTISER_DEDUP' + | 'COMPANY_DEDUP' + | 'RTB_PUBLISHER_IABCATEGORY' + | 'RTB_PUBLISHER_BLOCKLIST'; + // Generated from: com/linkedin/avro2pegasus/events/ads/BrandSafetyDataRecord.pdsc + + export interface BrandSafetyDataRecord { + brandSafetyProfileId: number; + brandSafetyDataCost: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/BusinessMetricsOptimizationBidAdjustTracking.pdsc + + export interface BusinessMetricsOptimizationBidAdjustTracking { + adjustmentFunction: string; + bidAdjustedCampaignList: BidAdjustedCampaign[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/BusinessMetricsOptimizationFilteringTracking.pdsc + + export interface BusinessMetricsOptimizationFilteringTracking { + name: string; + experiment: string; + campaignTypeInt?: number; + numCampaigns?: number; + numFilteredCampaigns?: number; + minCTR?: number; + minECPI?: number; + filteredCampaignList?: FilteredItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/BusinessMetricsOptimizationPlacementTracking.pdsc + + export interface BusinessMetricsOptimizationPlacementTracking { + name: string; + experiment: string; + tuningFactor: number; + placementInfo?: positionInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/BusinessMetricsOptimizationPricingTracking.pdsc + + export interface BusinessMetricsOptimizationPricingTracking { + name: string; + experiment: string; + pricedCampaignList?: pricedItem[]; + memberFloorPrice?: MemberFloorPrice; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/BusinessMetricsOptimizationRankingTracking.pdsc + + export interface BusinessMetricsOptimizationRankingTracking { + experiment: string; + campaignList?: RankedCampaignInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignCostType.pdsc + + export type CampaignCostType = 'CPC' | 'CPM' | 'CPA' | 'NONE' | 'CPV'; + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignCreativeSelection.pdsc + + export type CampaignCreativeSelection = 'ROUND_ROBIN' | 'OPTIMIZED'; + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignForecastSurveyFeedbackEvent.pdsc + + export interface CampaignForecastSurveyFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + userCheckboxFeedback: Com.Linkedin.Avro2pegasus.Events.Common.Ads.CampaignForecastingFeedbackEnum[]; + comments?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignForecastSurveyResponseEvent.pdsc + + export interface CampaignForecastSurveyResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + isForecastingHelpful: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignInfoForCTRRandomization.pdsc + + export interface CampaignInfoForCTRRandomization { + campaignId: number; + ctrList?: AdClickThroughRates; + pctr?: number; + ecpi?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignInsightServedEvent.pdsc + + export interface CampaignInsightServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + campaignInsightTrackingId: string; + campaignInsightCreationTime: number; + campaignRelevanceScore?: number; + shareOfVoice?: number; + dailyBudgetUtilization?: number; + averageSpend?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + totalBudgetUtilization?: number; + bidInsight?: BidInsight; + budgetExhaustedAt?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignInsightType.pdsc + + export type CampaignInsightType = + | 'CAMPAIGN_RELEVANCE_SCORE' + | 'SHARE_OF_VOICE' + | 'DAILY_BUDGET_UTILIZATION' + | 'AVERAGE_SPEND' + | 'TOTAL_BUDGET_UTILIZATION' + | 'BID_INSIGHT' + | 'BUDGET_EXHAUSTED_AT'; + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignInsightViewedEvent.pdsc + + export interface CampaignInsightViewedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entityUrn: string; + campaignInsightTrackingId: string; + campaignInsightType: CampaignInsightType; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignPacingBidAdjustmentStatus.pdsc + + export type CampaignPacingBidAdjustmentStatus = + | 'RESET_BID' + | 'ADJUST_BID_UP' + | 'ADJUST_BID_DOWN' + | 'KEEP_CURRENT_BID' + | 'HIT_BID_CAP' + | 'HIT_BID_FLOOR'; + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignPacingThrottlingStatus.pdsc + + export type CampaignPacingThrottlingStatus = + | 'UNKNOWN' + | 'INITIAL' + | 'SCHEDULE_MISSING' + | 'TOTAL_BUDGET_MISSING' + | 'SCHEDULE_NOT_CURRENT' + | 'SPENT_BUDGET_OUTSIDE_SCHEDULE' + | 'TOTAL_BUDGET_ZERO' + | 'TOTAL_BUDGET_EXHAUSTED' + | 'ON_SCHEDULE' + | 'BEHIND_SCHEDULE' + | 'AHEAD_SCHEDULE' + | 'SLOW_START' + | 'FAST_FINISH'; + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignPacingTracking.pdsc + + export interface CampaignPacingTracking { + campaignUrn: string; + updateTime: number; + actualSpent?: number; + projectedSpent?: number; + todayBudget?: number; + bidAdjustFactor?: number; + throttlingFactor: number; + broadMatchThrottlingFactor: number; + throttlingStatus: CampaignPacingThrottlingStatus; + pacingModel?: string; + anticipatedSpent?: number; + runningBid?: number; + bidCap?: number; + bidFloor?: number; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + advertiserBidType?: AdBidType; + chargeType?: AdPricingType; + bidAdjustmentStatus?: CampaignPacingBidAdjustmentStatus; + exchangeRate?: number; + campaignSliceUrn?: string; + isCampaignBudgetExhausted?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignRecommendationContent.pdsc + + export interface CampaignRecommendationContent { + improveCreativeQuality: boolean; + unitCost?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + expandAudience: boolean; + numOfCreatives?: number; + dailyBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + totalBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + targetFacets?: TargetFacets; + activateCreatives: string[]; + pauseCreatives: string[]; + creativeSelection?: CampaignCreativeSelection; + runSchedule?: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignRecommendationEvent.pdsc + + export interface CampaignRecommendationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + campaignUrn: string; + modelName?: string; + recommendationCreateTime: number; + recommendationType: CampaignRecommendationType; + actionType: RecommendationActionType; + recommendationContent: CampaignRecommendationContent; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignRecommendationType.pdsc + + export type CampaignRecommendationType = + | 'UNDER_DELIVERY_BID' + | 'UNDER_DELIVERY_MORE_CREATIVES' + | 'UNDER_DELIVERY_AUDIENCE_EXPANSION' + | 'OVER_DELIVERY_BUDGET' + | 'LOW_CREATIVE_QUALITY'; + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignServingFunnelEvent.pdsc + + export interface CampaignServingFunnelEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + channelId: number; + campaignUrn: string; + startTime: number; + endTime: number; + funnelFilters: FilterCount[]; + filterChain?: CampaignServingFunnelEventFilterChain; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/CampaignServingFunnelEventFilterChain.pdsc + + export type CampaignServingFunnelEventFilterChain = + | 'REAL_TIME_BIDDING' + | 'TEXT_AD_FOR_LOGGED_OUT' + | 'TEXT_AD_FOR_LOGGED_IN' + | 'SPONSORED_UPDATES' + | 'SPONSORED_UPDATES_AND_SJYMBII' + | 'SJYMBII' + | 'SINMAIL' + | 'DYNAMIC_AD'; + // Generated from: com/linkedin/avro2pegasus/events/ads/CardRejectionInformation.pdsc + + export interface CardRejectionInformation { + cardIndex: number; + rejectionReasons: RejectionCode[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/contentClassificationSourceEnum.pdsc + + export type contentClassificationSourceEnum = 'CCUM'; + // Generated from: com/linkedin/avro2pegasus/events/ads/contentClassifierEnum.pdsc + + export type contentClassifierEnum = 'HUMAN' | 'SYSTEM'; + // Generated from: com/linkedin/avro2pegasus/events/ads/CreativeType.pdsc + + export type CreativeType = + | 'TEXT_AD' + | 'CUSTOM' + | 'SPONSOREDSTATUSUPDATES' + | 'SJYMBII' + | 'FOLLOW_COMPANY' + | 'FOLLOW' + | 'SPONSORED_INMAILS' + | 'SLIDESHARE_LEADGEN' + | 'WORK_WITH_US' + | 'PICTURE_YOURSELF_JOB' + | 'SPOTLIGHT' + | 'WHITEPAPER_DOWNLOAD' + | 'SPONSORED_VIDEO' + | 'SPONSORED_UPDATE_CAROUSEL' + | 'TALENT_LANDING' + | 'JOBS' + | 'UNSUPPORTED' + | 'SPONSORED_MESSAGE' + | 'SPONSORED_UPDATE_JOB_POSTING'; + // Generated from: com/linkedin/avro2pegasus/events/ads/CTRRandomizationTracking.pdsc + + export interface CTRRandomizationTracking { + name: string; + experiment: string; + deviation?: number; + campaignList?: CampaignInfoForCTRRandomization[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/Device.pdsc + + export interface Device { + make?: string; + model?: string; + os?: string; + osVersion?: string; + deviceType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/DMPCompanyMatchRequestEvent.pdsc + + export interface DMPCompanyMatchRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + dmpSegmentUrn: string; + dmpCompanyMatchUrn: string; + dmpListUploadUrn?: string; + inputCompany?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPCompany; + matchedOrganizationUrn?: string; + matchedCompanyInfo: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdTargetingEntity[]; + action: Com.Linkedin.Avro2pegasus.Events.Common.Ads.CompanyMatchEntityAction; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/DMPEngagementRuleChangeEvent.pdsc + + export interface DMPEngagementRuleChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + destinationSegment: string; + matchedAudienceSourceUrn: string; + previousRule?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPEngagementRule; + currentRule?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPEngagementRule; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/DMPSegmentMembershipUpdateEvent.pdsc + + export interface DMPSegmentMembershipUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + segmentUrn: string; + company?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPCompany; + user?: Com.Linkedin.Avro2pegasus.Events.Sis.TypedId; + action: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPEntityAction; + entityMatchStatus: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPEntityMatchStatus; + matchedOutputCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/DrawbridgeToLinkedinIdAssociationEvent.pdsc + + export interface DrawbridgeToLinkedinIdAssociationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + drawbridgeCookieId: string; + linkedInOffsiteTrackingCookie: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteAdTrackingCookie; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/EntityType.pdsc + + export type EntityType = 'ACCOUNT' | 'CAMPAIGN_GROUP' | 'CAMPAIGN'; + // Generated from: com/linkedin/avro2pegasus/events/ads/ExchangeMacro.pdsc + + export interface ExchangeMacro { + auctionId?: string; + auctionBidId?: string; + auctionImpressionId?: string; + auctionSeatId?: string; + auctionAdId?: string; + winningPriceRaw?: string; + auctionCurrency?: string; + isChargeable?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/Feature.pdsc + + export interface Feature { + name: string; + termVector: TermVectorEntry[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/FilterCount.pdsc + + export interface FilterCount { + campaignFilterReason: Com.Linkedin.Avro2pegasus.Events.Common.Ads.CampaignFilterReason; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/FilteredCreative.pdsc + + export interface FilteredCreative { + campaignId: number; + creativeId: number; + position: number; + pctr: number; + ecpi: number; + reason: Reason; + reasonInDetail: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/FilteredItem.pdsc + + export interface FilteredItem { + campaignId: number; + ctrList?: AdClickThroughRates; + pctr?: number; + ecpi?: number; + campaignFloorPrice?: number; + reason?: BmoFilterReason; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/FirstPassRankerName.pdsc + + export type FirstPassRankerName = 'TSCP' | 'JOBS' | 'PI'; + // Generated from: com/linkedin/avro2pegasus/events/ads/ForceRemoveError.pdsc + + export type ForceRemoveError = + | 'NONEXISTENT_SPONSORED_ACCOUNT_FOR_MEMBER_ERROR' + | 'MISSING_REPLACEMENT_MEMBER_ERROR' + | 'REMOVE_MEMBER_FROM_SPONSORED_ACCOUNT_ERROR' + | 'SPONSORED_ACCOUNT_UPDATE_WITH_REPLACEMENT_MEMBER_ERROR' + | 'EQUAL_MEMBER_REPLACEMENT_MEMBER_ERROR' + | 'FORCE_REMOVE_RUNTIME_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/ads/ForceRemoveMemberFromAccountResult.pdsc + + export type ForceRemoveMemberFromAccountResult = + | 'SUCCESS_REMOVAL' + | 'SUCCESS_REPLACE' + | 'SUCCESS_INSERT_REPLACEMENT_USER'; + // Generated from: com/linkedin/avro2pegasus/events/ads/ForceRemoveMemberFromSponsoredAccountEvent.pdsc + + export interface ForceRemoveMemberFromSponsoredAccountEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + memberRole?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdAccountUserRole; + sponsoredAccountUrn: string; + replacementMemberUrn?: string; + actionResult?: ForceRemoveMemberFromAccountResult; + forceRemoveErrorResult?: ForceRemoveError; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/HideDetectionTracking.pdsc + + export interface HideDetectionTracking { + treatment: string; + isHider: boolean; + numAdsRemoved: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/LeadNotificationUrlRegistrationActionEvent.pdsc + + export interface LeadNotificationUrlRegistrationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + developerApplicationUrn: string; + resourceMethod: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + sponsoredAccountUrn: string; + entityUrn: string; + contentChange: Com.Linkedin.Avro2pegasus.Events.Common.Ads.LeadNotificationUrlChange; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/LiarCreativeEvent.pdsc + + export interface LiarCreativeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + creativeUrn: string; + isActive: boolean; + features: Feature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/MatchedAudienceCompanyRequestEvent.pdsc + + export interface MatchedAudienceCompanyRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + destination: Com.Linkedin.Avro2pegasus.Tracking.Common.Ads.DMPDestination; + destinationSegment: string; + matchedAudienceSourceUrn?: string; + company: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPCompany; + action: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPEntityAction; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/MatchedAudienceRemoveAllEvent.pdsc + + export interface MatchedAudienceRemoveAllEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + destination: Com.Linkedin.Avro2pegasus.Tracking.Common.Ads.DMPDestination; + destinationSegment: string; + matchedAudienceSourceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/MatchedAudienceUserRequestEvent.pdsc + + export interface MatchedAudienceUserRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + destination: Com.Linkedin.Avro2pegasus.Tracking.Common.Ads.DMPDestination; + destinationSegment: string; + matchedAudienceSourceUrn?: string; + user: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPUser; + action: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPEntityAction; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/MemberFloorPrice.pdsc + + export interface MemberFloorPrice { + cpmFloor: number; + cpcFloor: number; + cpaFloor: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/MessageRejectionInformation.pdsc + + export interface MessageRejectionInformation { + sponsoredMessageContentUrn: string; + optionIndex?: number; + rejectionReason: RejectionCode; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/MobileApp.pdsc + + export interface MobileApp { + bundle?: string; + categories?: string[]; + id?: string; + name?: string; + sdkVersion?: string; + encryptedTag?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/MoneyFeedObject.pdsc + + export interface MoneyFeedObject { + entityUrn?: string; + firstPassRanker?: FirstPassRankerName; + monetaryValue: number; + score: number; + adjustedScore: number; + jobsPageViewValue?: number; + piPageViewValue?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/MoneyRankerResultEvent.pdsc + + export interface MoneyRankerResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + moneyRankerRequestId: string; + channelId: number; + jobsPageViewWeight?: number; + piPageViewWeight?: number; + results?: MoneyFeedObject[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/NotificationKey.pdsc + + export interface NotificationKey { + recipientUrn: string; + notificationType: string; + groupByUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/OasisModelInfo.pdsc + + export interface OasisModelInfo { + modelVersion: string; + modelType: AdsModelType; + modelPushTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/OffsiteAuctionRanking.pdsc + + export interface OffsiteAuctionRanking { + auctionPosition: number; + sponsoredCampaignUrn: string; + sponsoredCreativeUrn: string; + sponsoredAccountUrn: string; + campaignFloorPrice?: number; + predictedClickThroughRate?: number; + predictedViewThroughRate?: number; + predictedConversionRate?: number; + effectiveCostPerImpression: number; + advertiserBidPrice?: number; + advertiserBidType: AdBidType; + chargeType: AdChargeType; + runningBid: number; + exchangeBidPrice: number; + qualityScore: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/OffsiteHeader.pdsc + + export interface OffsiteHeader { + mobileApp?: MobileApp; + exchangeUrn: string; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + isInterstitial?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/PacingTrackingInfo.pdsc + + export interface PacingTrackingInfo { + pacingTrackingItem: CampaignPacingTracking; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/PctrMetaDataRecord.pdsc + + export interface PctrMetaDataRecord { + name: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/PixelFireEvent.pdsc + + export interface PixelFireEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + encryptedQueryString: string; + isAcceptingThirdPartyCookies: boolean; + encryptedUserAgent?: string; + encryptedRequestUrl?: string; + encryptedReferrerUrl?: string; + partialIPAddress: Com.Linkedin.Avro2pegasus.Events.IPAddress; + bizoId: string; + insightTagUrn: string; + encryptedMemberUrn?: string; + memberUrnEncryptionVersion: string; + nonMemberEncryptionVersion: string; + allowConversionTracking?: boolean; + allowWebsiteDemographics?: boolean; + allowPersonalizationWithProfileData?: boolean; + allowUseOfThirdPartyData?: boolean; + oatmlCookieData?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteAdTrackingCookie; + insightTagFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.InsightTagFormat; + pixelRequestId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + pixelRequestPageUrl?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingPageUrl; + offsiteTrackingIdSource?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingIdSource; + advertiserProvidedParameters?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingAdvertiserProvidedParameters; + sugrId?: string; + identityConfidenceLevel?: number; + adCookieMemberIdentification?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdCookieMemberIdentification; + pixelRequestClickIdentifiers?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ThirdPartyClickIdentifiers; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/PixelFireScrubbedEvent.pdsc + + export interface PixelFireScrubbedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + insightTagUrn: string; + pixelRequestId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + pixelRequestPageUrl: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingPageUrl; + countryUrn?: string; + pixelRequestUserAgent?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingUserAgent; + oatmlCookieData?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteAdTrackingCookie; + offsiteTrackingIdSource?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingIdSource; + sugrId?: string; + pixelRequestClickIdentifiers?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ThirdPartyClickIdentifiers; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/PositionFactors.pdsc + + export interface PositionFactors { + position: number; + positionFactor: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/positionInfo.pdsc + + export interface positionInfo { + position?: number; + positionScoreThreshold?: number; + filteredTopCampaign?: number; + placedCampaign?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/pricedItem.pdsc + + export interface pricedItem { + campaignId: number; + campaignTypeInt?: number; + campaignCostTypeInt?: number; + position?: number; + baseCost?: number; + finalCost?: number; + pricing: pricingChoice; + campaignFloorPrice?: number; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/pricingChoice.pdsc + + export type pricingChoice = + | 'CampaignFloorPrice' + | 'MemberFloorPrice' + | 'NextRankCampaign' + | 'FirstPrice' + | 'Other'; + // Generated from: com/linkedin/avro2pegasus/events/ads/Publisher.pdsc + + export type Publisher = + | 'OTHER' + | 'LINKEDIN_DESKTOP' + | 'LINKEDIN_MOBILE' + | 'SLIDESHARE' + | 'MICROSOFT_MSN_DESKTOP' + | 'MICROSOFT_OUTLOOK_DESKTOP'; + // Generated from: com/linkedin/avro2pegasus/events/ads/RankCampaignInfo.pdsc + + export interface RankCampaignInfo { + campaignId: number; + pctr?: number; + ecpi?: number; + score?: number; + baseCost?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/RankedCampaignInfo.pdsc + + export interface RankedCampaignInfo { + campaignId: number; + campaignTypeInt?: number; + score?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/RchargeRunningTotalEvent.pdsc + + export interface RchargeRunningTotalEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityType: EntityType; + entityUrn: string; + activityTime: number; + cumulativeTotalCharge: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/Reason.pdsc + + export type Reason = 'FCAP' | 'QUALITY' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/ads/RecommendationActionType.pdsc + + export type RecommendationActionType = 'SERVE' | 'VIEW' | 'ACCEPT' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/ads/RejectionCode.pdsc + + export type RejectionCode = + | 'OFFER_NOT_FOUND' + | 'MISLEADING_CLAIMS' + | 'UNSUPPORTED_COMPETITIVE_CLAIMS' + | 'MISMATCHED_AD_TEXT_AND_LANDING_PAGE_CONTENT' + | 'IMPLIED_AFFILIATION' + | 'INAPPROPRIATE_LANGUAGE_OR_IMAGE' + | 'NONFUNCTIONAL_SITE' + | 'POP_UP_OR_POP_UNDER' + | 'BACK_BUTTON_NOT_WORKING' + | 'INCONSISTENT_DISPLAY_AND_LANDING_PAGE_URLS' + | 'NON_MATCHING_LANGUAGES' + | 'UNSUPPORTED_LANGUAGE' + | 'NON_STANDARD_TEXT' + | 'EXCESSIVE_CAPITALIZATION' + | 'EXCESSIVE_CONTACT_INFORMATION' + | 'TEST_ADS' + | 'GENERAL_TRADEMARK_ISSUES' + | 'LINKEDIN_MENTIONED_IN_AD_TEXT' + | 'UNCLEAR_BILLING_PRACTICES' + | 'ADULT_CONTENT' + | 'PROHIBITED_DATING_SERVICES' + | 'AFFILIATE_ADVERTISING' + | 'ALCOHOL' + | 'ANIMAL_OR_ANIMAL_PRODUCTS' + | 'COPYRIGHTED_CONTENT' + | 'COUNTERFEIT_GOODS' + | 'DATA_COLLECTION_AND_PRIVACY' + | 'DRUGS_AND_RELATED_PRODUCTS' + | 'DIETARY_SUPPLEMENTS' + | 'FAKE_DOCUMENT' + | 'TEST_TAKING_SERVICES' + | 'GAMBLING_SWEEPSTAKES_AND_VIRTUAL_CURRENCY' + | 'HACKING_AND_CRACKING' + | 'HEALTH_MATTERS' + | 'LOANS_AND_FINANCIAL_SERVICES' + | 'OCCULT_PURSUITS' + | 'HATE_VIOLENCE_DISCRIMINATION_AND_OPPOSITION' + | 'OFFENSIVE_LANGUAGE' + | 'OFFENSIVE_TO_GOOD_TASTE' + | 'PROHIBITED_POLITICAL_OR_RELIGIOUS_CONTENT' + | 'SOLICITATION_OF_FUNDS' + | 'QUESTIONABLE_DOWNLOADS' + | 'RESALE_OF_EVENT_TICKETS' + | 'RINGTONES_AND_INAPPROPRIATE_VIDEO_GAMES' + | 'TOBACCO' + | 'WEAPONS_AND_FIREWORKS' + | 'FRAUD_PAYMENT' + | 'FRAUD_CONTENT' + | 'CLOAKING' + | 'UNICODE_MANIPULATION' + | 'MALICIOUS_SOFTWARE_OR_BROWSER' + | 'PHISHING' + | 'SCAMS' + | 'INAPPROPRIATE_NAME' + | 'DECEPTIVE_BEHAVIOR' + | 'CHINA_POLICY_VIOLATION' + | 'MISSING_URL_FOR_WEBSITE_OBJECTIVE' + | 'CONVERSATION_AD_EXCESSIVE_CONVO' + | 'EXCESSIVE_NEGATIVE_RESPONSE' + | 'JOB_POSTING_WITHOUT_LISTED_STATE' + | 'CRYPTOCURRENCY' + | 'MISSING_PRIVACY_POLICY' + | 'LOW_ADVERTISER_REPUTATION' + | 'LOW_QUALITY_CONTENT' + | 'LOW_LANGUAGE_MODEL_SCORE'; + // Generated from: com/linkedin/avro2pegasus/events/ads/ResponsePredictionMetadataRecord.pdsc + + export interface ResponsePredictionMetadataRecord { + name: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/ResponsePredictionTracking.pdsc + + export interface ResponsePredictionTracking { + name: string; + experiment: string; + campaignTypeInt?: number; + pctrAdjustFactor?: number; + calibrationGroup?: number; + responsePredictionModel?: string; + positionFactors?: PositionFactors[]; + campaignList?: RpCampaignInfo[]; + filteredCreativeList?: FilteredCreative[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/ReviewStatus.pdsc + + export type ReviewStatus = + | 'APPROVED' + | 'REJECTED' + | 'AUTO_APPROVED' + | 'AUTO_REJECTED' + | 'AUDIT_APPROVED' + | 'PENDING' + | 'REVIEW_STARTED' + | 'PRE_APPROVED'; + // Generated from: com/linkedin/avro2pegasus/events/ads/ReviewSystem.pdsc + + export type ReviewSystem = 'UCV' | 'ADS_POLICY_CHECKER' | 'REVIEW_QUEUE' | 'TSCP_QUALITY' | 'SEMAPHORE'; + // Generated from: com/linkedin/avro2pegasus/events/ads/RoadblockType.pdsc + + export type RoadblockType = 'NONE' | 'AUDIENCE' | 'PAGE'; + // Generated from: com/linkedin/avro2pegasus/events/ads/RpCampaignInfo.pdsc + + export interface RpCampaignInfo { + campaignId: number; + ctrList?: AdClickThroughRates; + pctr?: number; + pctrLogisticRegressionMean?: number; + pctrLogisticRegressionStddev?: number; + ecpi?: number; + bid?: number; + campaignCostType?: CampaignCostType; + creativeId?: number; + format?: string; + pcvr?: number; + refPcvr?: number; + advertiserBidType?: AdBidType; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/RuntimeStats.pdsc + + export interface RuntimeStats { + aggKey: AggregationKey; + duration: number; + stats: Stats; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/ServedCampaign.pdsc + + export interface ServedCampaign { + position?: number; + advertiserId?: number; + campaignId?: number; + campaignTypeInt?: number; + campaignBidAmount?: number; + campaignCostTypeInt?: number; + originalBid?: number; + adjustedBid?: number; + pctr?: number; + rawPctr?: number; + ecpi?: number; + score?: number; + cost?: number; + creativeId?: number; + sponsoredActivityId?: number; + organicActivityId?: number; + broadMatchStatus?: Com.Linkedin.Avro2pegasus.Events.AdBroadMatchStatus; + format?: string; + feedTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + model?: string; + modelCalibrationFactor?: number; + campaignGroupUrn?: string; + advertiserBidType?: AdBidType; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + baseCost?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/ServedCampaignWithMatchedTokens.pdsc + + export interface ServedCampaignWithMatchedTokens { + sponsoredCampaignUrn: string; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + positiveMatchedTokens: Com.Linkedin.Avro2pegasus.Events.Common.Ads.FacetNameAndValue[]; + negativeMatchedTokens: Com.Linkedin.Avro2pegasus.Events.Common.Ads.FacetNameAndValue[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/Site.pdsc + + export interface Site { + id?: string; + category?: string[]; + domain?: string; + page?: string; + pageHashed?: string; + domainHashed?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/SparseIdList.pdsc + + export interface SparseIdList { + size: number; + list: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/SponsoredConversationCreatedWithTemplateEvent.pdsc + + export interface SponsoredConversationCreatedWithTemplateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredConversationUrn: string; + sponsoredConversationTemplateUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/SponsoredLeadgenFormActionEvent.pdsc + + export interface SponsoredLeadgenFormActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredEventHeader: Com.Linkedin.Avro2pegasus.Events.Feed.SponsoredEventHeader; + controlUrn: string; + sponsoredMessageInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.SponsoredMessageInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/SponsoredMessageActivityEvent.pdsc + + export interface SponsoredMessageActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + status: Com.Linkedin.Avro2pegasus.Events.AdEventStatus; + validationFailures: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ValidationFailure[]; + requestId: string; + impressionId: string; + channelId: number; + creativeUrn: string; + sponsoredConversationUrn: string; + sponsoredMessageContentUrn: string; + activityType: SponsoredMessageActivityType; + optionClickedIndex?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/SponsoredMessageActivityType.pdsc + + export type SponsoredMessageActivityType = 'CLICK' | 'SEND'; + // Generated from: com/linkedin/avro2pegasus/events/ads/Stats.pdsc + + export interface Stats { + clickCount: number; + chargeableClickCount: number; + hideCount: number; + impressionCount: number; + unknownCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/StopAction.pdsc + + export type StopAction = 'CANCEL' | 'PAUSE'; + // Generated from: com/linkedin/avro2pegasus/events/ads/TargetFacet.pdsc + + export interface TargetFacet { + name: string; + values: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/TargetFacets.pdsc + + export interface TargetFacets { + dataVersion: number; + facets: TargetFacet[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/TermVectorEntry.pdsc + + export interface TermVectorEntry { + name: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/TrackingInfo.pdsc + + export interface TrackingInfo { + trackingItem: + | ResponsePredictionTracking + | BusinessMetricsOptimizationFilteringTracking + | CTRRandomizationTracking + | BusinessMetricsOptimizationPricingTracking + | BusinessMetricsOptimizationRankingTracking + | AdBusinessMetricsOptimizationCampaignTypeBasedRankingTracking + | BusinessMetricsOptimizationPlacementTracking + | HideDetectionTracking + | BusinessMetricsOptimizationBidAdjustTracking; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/UserConversionAttributionTag.pdsc + + export type UserConversionAttributionTag = 'OFFSITE'; + // Generated from: com/linkedin/avro2pegasus/events/ads/UserConversionEvent.pdsc + + export interface UserConversionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + offsiteHeader?: OffsiteHeader; + attributionMobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + targetId?: Com.Linkedin.Avro2pegasus.Events.AdTargetId; + mobileAppUrn?: string; + advertiserUrn: string; + llaPartnerUrn: string; + llaPartnerConversionUrn: string; + llaPartnerUrlMatchUrn?: string; + conversionWindowType: AdConversionWindowType; + conversionWindowSizeDays: number; + conversionActionType: AdConversionActionType; + conversionPageUrl: string; + impressionId: string; + campaignUrn: string; + creativeUrn: string; + campaignTypeInt: number; + conversionValue: Com.Linkedin.Avro2pegasus.Events.MoneyValue; + costValue: Com.Linkedin.Avro2pegasus.Events.MoneyValue; + attributedImpressions: number; + attributedClicks: number; + llaPartnerUrlMatchUrns?: string[]; + attributionChannelId?: number; + campaignType?: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + conversionAttributionTag?: UserConversionAttributionTag; + campaignGroupUrn?: string; + isViral: boolean; + shouldBeIncludedInReportBasedOnAttributionWindowSettings?: boolean; + postClickAttributionWindowSizeSetting?: number; + viewThroughAttributionWindowSizeSetting?: number; + oatmlCookieData?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteAdTrackingCookie; + lastClickTimeRoundedToNearestHour?: number; + lastImpressionTimeRoundedToNearestHour?: number; + insightTagFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.InsightTagFormat; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + chargeType?: AdPricingType; + pixelRequestId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + countryUrn?: string; + pixelRequestUserAgent?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingUserAgent; + pixelRequestPageUrl?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingPageUrl; + adExperimentUrn?: string; + offsiteTrackingIdSource?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingIdSource; + attributedCreativeUserAgent?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingUserAgent; + advertiserProvidedParameters?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteTrackingAdvertiserProvidedParameters; + sugrId?: string; + organizationOnsiteEngagementContext?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OrganizationOnsiteEngagementContext; + attributionType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ConversionAttributionType; + identityConfidenceLevel?: number; + adCookieMemberIdentification?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdCookieMemberIdentification; + pixelRequestClickIdentifiers?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ThirdPartyClickIdentifiers; + } + // Generated from: com/linkedin/avro2pegasus/events/ads/VideoAdsActionEvent.pdsc + + export interface VideoAdsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: string; + impressionId: string; + publisherId: number; + channelId: number; + requestId: string; + videoEngagementType: Com.Linkedin.Avro2pegasus.Events.Common.Ads.VideoAdsEngagementType; + videoDuration?: number; + isAudioOn?: boolean; + videoUIContext?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.VideoUIContext; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + requestTypeInt: number; + accountUrn: string; + campaignGroupUrn: string; + campaignUrn: string; + creativeUrn: string; + objectiveType: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + status: Com.Linkedin.Avro2pegasus.Events.AdEventStatus; + statusInt: number; + adZone?: Com.Linkedin.Avro2pegasus.Events.Common.AdZone; + cost: number; + costInCurrency: number; + currency: string; + validationFailures: { [id: string]: string }; + requestActionDelay: number; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + runningBid?: number; + campaignAdFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.CampaignAdFormat; + advertiserBidType?: AdBidType; + chargeType?: AdPricingType; + action?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdClientAction; + target?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdClientTarget; + adExperimentUrn?: string; + } + } + namespace Ambry { + // Generated from: com/linkedin/avro2pegasus/events/ambry/AmbryOperationEvent.pdsc + + export interface AmbryOperationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + blobUrn: string; + blobProperties?: BlobProperties; + operationType: OperationType; + ambryServiceId?: string; + updatedExpiryTime?: number; + accountId?: number; + accountName?: string; + containerId?: number; + containerName?: string; + externalAssetTag?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ambry/AmbryReplicationEvent.pdsc + + export interface AmbryReplicationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + blobUrn: string; + partitionId: string; + sourceHost: string; + mountPath: string; + replicationEventType: ReplicationEventType; + replicationEventSourceType: ReplicationEventSourceType; + updateType?: UpdateType; + updatedExpiryTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ambry/BlobProperties.pdsc + + export interface BlobProperties { + ownerId?: string; + appName: string; + contentType?: string; + creationTime: number; + isPrivate: boolean; + ttlDurationSeconds?: number; + containerId?: number; + blobSize?: number; + blobType?: BlobType; + accountId?: number; + isEncrypted?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ambry/BlobType.pdsc + + export type BlobType = 'SIMPLE' | 'COMPOSITE' | 'DATA_CHUNK'; + // Generated from: com/linkedin/avro2pegasus/events/ambry/OperationType.pdsc + + export type OperationType = 'PUT' | 'DELETE' | 'TTL_UPDATE'; + // Generated from: com/linkedin/avro2pegasus/events/ambry/ReplicationEventSourceType.pdsc + + export type ReplicationEventSourceType = 'PRIMARY' | 'REPAIRED' | 'BACKUP'; + // Generated from: com/linkedin/avro2pegasus/events/ambry/ReplicationEventType.pdsc + + export type ReplicationEventType = 'CREATED' | 'DELETED' | 'UPDATED'; + // Generated from: com/linkedin/avro2pegasus/events/ambry/UpdateType.pdsc + + export type UpdateType = 'TTL_UPDATE'; + } + namespace Amplifier { + // Generated from: com/linkedin/avro2pegasus/events/amplifier/AmplifierNotificationHandoffEvent.pdsc + + export interface AmplifierNotificationHandoffEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sourceContentUrn: string; + recipientMemberUrn: string; + deliveryChannel: Com.Linkedin.Avro2pegasus.Events.Common.Amplifier.AmplifierNotificationDeliveryChannel; + notificationType: Com.Linkedin.Avro2pegasus.Events.Common.Amplifier.AmplifierNotificationType; + } + } + namespace Ams { + // Generated from: com/linkedin/avro2pegasus/events/ams/PurgedDatasetsEvent.pdsc + + export interface PurgedDatasetsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datasetUrns: string[]; + purgedEntityUrn?: string; + } + } + namespace Anomaly { + // Generated from: com/linkedin/avro2pegasus/events/anomaly/SelfHealingEntityHeartbeatEvent.pdsc + + export interface SelfHealingEntityHeartbeatEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + attributes: { [id: string]: string }; + } + } + namespace Appactivation { + // Generated from: com/linkedin/avro2pegasus/events/appactivation/FlagshipAppRatingEvent.pdsc + + export interface FlagshipAppRatingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rating: Rating; + } + // Generated from: com/linkedin/avro2pegasus/events/appactivation/Rating.pdsc + + export type Rating = 'ONE' | 'TWO' | 'THREE' | 'FOUR' | 'FIVE'; + // Generated from: com/linkedin/avro2pegasus/events/appactivation/Restriction.pdsc + + export type Restriction = 'PROFILE' | 'MYNETWORK' | 'MESSAGING' | 'FEED'; + // Generated from: com/linkedin/avro2pegasus/events/appactivation/UsageRestrictionDecisionEvent.pdsc + + export interface UsageRestrictionDecisionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + restriction: Restriction; + isRestricted: boolean; + restrictionExpiry?: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + restrictionCooloff?: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + } + } + namespace Applicationentitymapping { + // Generated from: com/linkedin/avro2pegasus/events/applicationentitymapping/ApplicationEntityMappingChangeEvent.pdsc + + export interface ApplicationEntityMappingChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + type: ApplicationEntityMappingEventType; + applicationUrn: string; + entityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/applicationentitymapping/ApplicationEntityMappingEventType.pdsc + + export type ApplicationEntityMappingEventType = 'ADD' | 'REMOVE'; + } + namespace Appreciation { + // Generated from: com/linkedin/avro2pegasus/events/appreciation/AppreciationCreateImpressionEvent.pdsc + + export interface AppreciationCreateImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + origin: string; + startPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/appreciation/AppreciationMemberSelectImpressionEvent.pdsc + + export interface AppreciationMemberSelectImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + origin: string; + } + // Generated from: com/linkedin/avro2pegasus/events/appreciation/AppreciationMessageEvent.pdsc + + export interface AppreciationMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + appreciationUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/appreciation/AppreciationPostEvent.pdsc + + export interface AppreciationPostEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + appreciationUrn: string; + activityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/appreciation/AppreciationSubmitEvent.pdsc + + export interface AppreciationSubmitEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recipientUrns: string[]; + appreciationType: string; + appreciationUrn: string; + } + } + namespace Approvals { + // Generated from: com/linkedin/avro2pegasus/events/approvals/ApprovalActionLogEvent.pdsc + + export interface ApprovalActionLogEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + approvalUrn: string; + externalEntityUrn?: string; + actorUrn: string; + actionDescription: string; + comment?: string; + actionLogEventType: Com.Linkedin.Avro2pegasus.Events.Common.Approvals.ActionLogEventType; + routingEntityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/approvals/ApprovalStatusChangeEvent.pdsc + + export interface ApprovalStatusChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + approvalUrn: string; + approvalEntityUrn: string; + routingEntityUrn: string; + newApprovalStatus: Com.Linkedin.Avro2pegasus.Events.Common.Approvals.ApprovalStatus; + } + } + namespace Articles { + // Generated from: com/linkedin/avro2pegasus/events/articles/ArticleMetadata.pdsc + + export interface ArticleMetadata { + authorUrn?: string; + influencer?: boolean; + publishedTime?: number; + contextId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/articles/ArticleReadEvent.pdsc + + export interface ArticleReadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + articleTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + articleUrn: string; + articleMetadata?: ArticleMetadata; + renderedWordCount?: number; + uiView?: Com.Linkedin.Avro2pegasus.Events.Common.UiView; + dwellTime: number; + trackablePulseObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + } + namespace Assessments { + // Generated from: com/linkedin/avro2pegasus/events/assessments/VideoAssessmentImpressionEvent.pdsc + + export interface VideoAssessmentImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + hiringContextUrn: string; + seatUrn: string; + hiringProjectUrn: string; + jobApplicationUrn: string; + } + } + namespace Atsmiddleware { + // Generated from: com/linkedin/avro2pegasus/events/atsmiddleware/ApplicantTrackingSystemMiddlewareApiCallEvent.pdsc + + export interface ApplicantTrackingSystemMiddlewareApiCallEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + resourceName: string; + parentResourceNames: string[]; + requestUri: string; + resourceMethod: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + resourceMethodName?: string; + integrationContextUrn?: string; + dataProviderUrn?: string; + responseStatusCode: number; + batchSize?: number; + parentDataProviderUrn?: string; + } + } + namespace Auditlog { + // Generated from: com/linkedin/avro2pegasus/events/auditlog/AuditLogAction.pdsc + + export type AuditLogAction = 'GRANTED' | 'REVOKED' | 'GRANT_UPDATED'; + // Generated from: com/linkedin/avro2pegasus/events/auditlog/AuditLogEvent.pdsc + + export interface AuditLogEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + consent: ConsentType; + actionTaken: AuditLogAction; + managedEntityUrns: string[]; + additionalActionInformation?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/auditlog/ConsentType.pdsc + + export type ConsentType = + | 'AUTO_FILL_FORM_CLICK' + | 'CALENDAR_SYNC' + | 'CAREER_ADVICE_AS_MENTEE' + | 'CAREER_ADVICE_AS_MENTOR' + | 'CONTACTS_ONE_TIME_IMPORT' + | 'CONTACTS_SYNC' + | 'DEMOGRAPHIC_DATA' + | 'EMAIL_CONFIRMATION' + | 'INVITE_ALL_ACTION' + | 'LEAD_GEN_FORM_SUBMISSION' + | 'MSFT_ACCOUNT_BINDING' + | 'PIPELINE_BUILDER_FORM_SUBMISSION' + | 'PROFINDER_PROJECT_SUBMISSION' + | 'PROFINDER_SERVICE_PROVIDER_APPLICATION' + | 'REGISTRATION' + | 'SPONSORED_INMAIL_SENDER' + | 'THIRD_PARTY_AUTH_BINDING' + | 'THIRD_PARTY_DATA_FOR_AD_TARGETING' + | 'THIRD_PARTY_DATA_FOR_LINKEDIN_AUDIENCE_NETWORK' + | 'SALARY_DATA' + | 'INVITE_ALL_GUEST_ACTION' + | 'CONTACTS_MOBILE_SYNC' + | 'CONTACTS_MOBILE_SYNC_PERMISSION' + | 'CALENDAR_MOBILE_SYNC' + | 'CALENDAR_MOBILE_SYNC_PERMISSION' + | 'CONTACTS_ALL_DATA' + | 'CALENDAR_ALL_DATA' + | 'POLICY_ACCEPTANCE' + | 'ENTERPRISE_PROFILE_BINDING' + | 'SHARE_PROFILE_WITH_JOB_POSTER' + | 'SHARE_PROFILE_FOR_OFFSITE_APPLICATION' + | 'REVOKE_ALL_THIRD_PARTY_AUTH_BINDING' + | 'COMPLEX_EASY_APPLY_JOB_APPLICATION' + | 'PASSWORD' + | 'COMMUTE_START_LOCATION' + | 'POINTDRIVE_PRESENTATION_VIEWING_DATA' + | 'SALES_BUNDLE_VIEWING_DATA'; + } + namespace Audits { + // Generated from: com/linkedin/avro2pegasus/events/audits/AuditTrackingEvent.pdsc + + export interface AuditTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + timeRange: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + clientType: ClientType; + clientIp: Com.Linkedin.Avro2pegasus.Events.IPAddress; + serverHostName: string; + targetUrl: string; + requestHeaders: { [id: string]: string }; + clientConfigParameters: string; + responseCode: number; + exceptions: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/audits/ClientType.pdsc + + export type ClientType = 'LDAP_CLIENT' | 'SERVICE_CLIENT'; + } + namespace Authoredcontent { + // Generated from: com/linkedin/avro2pegasus/events/authoredcontent/AuthoredContentAuditEvent.pdsc + + export interface AuthoredContentAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + corpUserUrn: string; + operationTime: number; + entityUrn: string; + operation: Com.Linkedin.Avro2pegasus.Events.Common.Authoredcontent.AuthoredContentAuditOperationType; + translationAuditInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Authoredcontent.AuthoredContentTranslationAuditInfo; + } + } + namespace Azkaban { + namespace Plugins { + // Generated from: com/linkedin/avro2pegasus/events/azkaban/plugins/AzkabanFlowLifeCycleEvent.pdsc + + export interface AzkabanFlowLifeCycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + lifeCycleCommonProperties: Com.Linkedin.Avro2pegasus.Common.Azkaban.Plugins.LifeCycleCommonProperties; + flowLifeCycleEventType: Com.Linkedin.Avro2pegasus.Common.Azkaban.Plugins.FlowLifeCycleEventType; + flowStartTime: number; + flowEndTime: number; + flowStatus: Com.Linkedin.Avro2pegasus.Common.Azkaban.Plugins.ExecutorStatus; + flowSubmitTime: number; + flowUser: string; + propagatedFlowProperties: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/azkaban/plugins/AzkabanJobLifeCycleEvent.pdsc + + export interface AzkabanJobLifeCycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + lifeCycleCommonProperties: Com.Linkedin.Avro2pegasus.Common.Azkaban.Plugins.LifeCycleCommonProperties; + jobLifeCycleEventType: Com.Linkedin.Avro2pegasus.Common.Azkaban.Plugins.JobLifeCycleEventType; + jobId: string; + jobProxyUser: string; + jobType: string; + jobStartTime: number; + jobEndTime: number; + jobStatus: Com.Linkedin.Avro2pegasus.Common.Azkaban.Plugins.ExecutorStatus; + propagatedJobProperties: { [id: string]: string }; + } + } + } + namespace Badge { + // Generated from: com/linkedin/avro2pegasus/events/badge/ActionSource.pdsc + + export type ActionSource = 'DEEPLINK' | 'PUSH' | 'ORGANIC'; + // Generated from: com/linkedin/avro2pegasus/events/badge/AppBadgeSyncEvent.pdsc + + export interface AppBadgeSyncEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + existingTotalBadgeCount: number; + newTotalBadgeCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/badge/AppForegroundBadgeEvent.pdsc + + export interface AppForegroundBadgeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + appBadgeCount: number; + actionSource?: ActionSource; + landingTab?: Com.Linkedin.Avro2pegasus.Common.Badge.AppTabType; + } + // Generated from: com/linkedin/avro2pegasus/events/badge/BadgeFetchedEvent.pdsc + + export interface BadgeFetchedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + clientApplication: ClientApplication; + clientVersionNumber?: string; + tabBadgeDetails: Com.Linkedin.Avro2pegasus.Common.Badge.TabBadgeDetails; + appBadgeCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/badge/BadgeInteractionActionEvent.pdsc + + export interface BadgeInteractionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + badgeTabCleared?: Com.Linkedin.Avro2pegasus.Common.Badge.AppTabType; + controlUrn?: string; + interactionType?: Com.Linkedin.Avro2pegasus.Events.Common.ControlInteractionType; + tabBadgeDetails: Com.Linkedin.Avro2pegasus.Common.Badge.TabBadgeDetails; + appBadgeCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/badge/BadgeUpdateReceivedEvent.pdsc + + export interface BadgeUpdateReceivedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + isFirstUpdate: boolean; + updateType?: UpdateType; + existingTabBadgeDetails?: Com.Linkedin.Avro2pegasus.Common.Badge.TabBadgeDetails; + existingAppBadgeCount?: number; + newTabBadgeDetails: Com.Linkedin.Avro2pegasus.Common.Badge.TabBadgeDetails; + newAppBadgeCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/badge/ClientApplication.pdsc + + export type ClientApplication = 'VOYAGER_IOS' | 'VOYAGER_ANDROID' | 'VOYAGER_WEB' | 'NEPTUNE'; + // Generated from: com/linkedin/avro2pegasus/events/badge/UpdateType.pdsc + + export type UpdateType = 'PUSH' | 'PULL'; + } + namespace Bazel { + // Generated from: com/linkedin/avro2pegasus/events/bazel/BazelEnvironment.pdsc + + export type BazelEnvironment = 'REMOTE' | 'CONTINUOUS_INTEGRATION' | 'DEV'; + // Generated from: com/linkedin/avro2pegasus/events/bazel/BazelRemoteMetric.pdsc + + export interface BazelRemoteMetric { + metric: BazelRemoteMetricName; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/bazel/BazelRemoteMetricName.pdsc + + export type BazelRemoteMetricName = + | 'LOCAL_AC_HIT' + | 'LOCAL_AC_MISS' + | 'LOCAL_CAS_HIT' + | 'LOCAL_CAS_MISS' + | 'REMOTE_AC_HIT' + | 'REMOTE_AC_MISS' + | 'REMOTE_CAS_HIT' + | 'REMOTE_CAS_MISS' + | 'AC_EVICTED' + | 'AC_EARLY_EVICTED' + | 'CAS_EVICTED' + | 'CAS_EARLY_EVICTED' + | 'DOWNLOADED' + | 'DOWNLOADED_TIME' + | 'UPLOADED_TO' + | 'UPLOADED_TO_TIME' + | 'UPLOADED_FROM' + | 'UPLOADED_FROM_TIME' + | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/bazel/BazelRemoteMetricsEvent.pdsc + + export interface BazelRemoteMetricsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + timestamp: number; + hostname: string; + environment: BazelEnvironment; + buildId: string; + multiProductUrn: string; + bazelVersion: string; + bazelRemoteVersion: string; + transportationProtocol: TransportationProtocol; + metricList: BazelRemoteMetric[]; + } + // Generated from: com/linkedin/avro2pegasus/events/bazel/TransportationProtocol.pdsc + + export type TransportationProtocol = 'HTTP' | 'GRPC'; + } + namespace Business { + // Generated from: com/linkedin/avro2pegasus/events/business/ServiceBusinessMetricsEvent.pdsc + + export interface ServiceBusinessMetricsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + degradationFraction: number; + dataLagDuration?: number; + totalDownstreamTaskDuration?: number; + modelScoringAndRankingDuration?: number; + } + } + namespace Businesscards { + // Generated from: com/linkedin/avro2pegasus/events/businesscards/BusinessCardOwnerType.pdsc + + export type BusinessCardOwnerType = 'GUEST' | 'NON_CONNECTED_MEMBER' | 'CONNECTED_MEMBER'; + // Generated from: com/linkedin/avro2pegasus/events/businesscards/BusinessCardSaveEvent.pdsc + + export interface BusinessCardSaveEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberUrn: string; + ownerType: BusinessCardOwnerType; + followUpAction?: FollowUpAction; + } + // Generated from: com/linkedin/avro2pegasus/events/businesscards/FollowUpAction.pdsc + + export type FollowUpAction = 'SEND_M2G' | 'SEND_CONNECTION_REQUEST'; + } + namespace Businessentitiesgraph { + // Generated from: com/linkedin/avro2pegasus/events/businessentitiesgraph/RelationshipBatchWriteRequestEvent.pdsc + + export interface RelationshipBatchWriteRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + relationshipWriteRequests: Com.Linkedin.Avro2pegasus.Common.Businessentitiesgraph.RelationshipWriteRequest[]; + } + } + namespace Businessprocessmonitoring { + // Generated from: com/linkedin/avro2pegasus/events/businessprocessmonitoring/HiringBusinessProcessDataPointEvent.pdsc + + export interface HiringBusinessProcessDataPointEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + workflowEntityUrn: string; + sensorName: string; + namespace: Com.Linkedin.Avro2pegasus.Events.Common.Businessprocessmonitoring.BusinessProcessMonitoringNamespace; + } + } + namespace Calendar { + // Generated from: com/linkedin/avro2pegasus/events/calendar/CalendarMeetingInfo.pdsc + + export interface CalendarMeetingInfo { + externalId: string; + startTime: number; + attendeeCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/calendar/CalendarSource.pdsc + + export type CalendarSource = 'ANDROID_CALENDAR' | 'IPHONE_CALENDAR' | 'GOOGLE_CALENDAR'; + // Generated from: com/linkedin/avro2pegasus/events/calendar/GlobalCalendarSyncActionEvent.pdsc + + export interface GlobalCalendarSyncActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + isSyncEnabled: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/calendar/TimeRange.pdsc + + export interface TimeRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/calendar/VoyagerCalendarUploadRequestEvent.pdsc + + export interface VoyagerCalendarUploadRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberUrn: string; + uploadTimeRange: TimeRange; + source: CalendarSource; + calendarMeetingInfos: CalendarMeetingInfo[]; + calendarSyncTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + deviceId?: string; + } + } + namespace Calltree { + // Generated from: com/linkedin/avro2pegasus/events/calltree/ExtractedInceptionExceptionEvent.pdsc + + export interface ExtractedInceptionExceptionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + inceptionHashCode: string; + treeId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + timestamp: number; + } + // Generated from: com/linkedin/avro2pegasus/events/calltree/UserRequestedCallTreeEvent.pdsc + + export interface UserRequestedCallTreeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + treeId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + requesterEmail?: string; + description?: string; + timestamp?: number; + } + } + namespace Cap { + // Generated from: com/linkedin/avro2pegasus/events/cap/AutoProvisioningFailureEvent.pdsc + + export interface AutoProvisioningFailureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + financeContractUrn: string; + failureReason: string; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/CapAutoProvisioningFailureEvent.pdsc + + export interface CapAutoProvisioningFailureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + financeContractUrn: string; + failureReason: string; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/LtsGdprInitiateExportEvent.pdsc + + export interface LtsGdprInitiateExportEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + complianceRequestUrn: string; + isContractScope: boolean; + contractUrn: string; + seatUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/OfccpReportTasksEvent.pdsc + + export interface OfccpReportTasksEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hostname: string; + port: number; + contractUrn: string; + startTime: number; + endTime: number; + userName?: string; + password?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/ProspectiveMemberProxyPhoneCreateEvent.pdsc + + export interface ProspectiveMemberProxyPhoneCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + proxyPhoneNumber: string; + proxyPhoneNumberRecord: Com.Linkedin.Avro2pegasus.Events.Common.Cap.ProxyPhoneNumberRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/ProspectiveMemberProxyPhoneNumberFinderEvent.pdsc + + export interface ProspectiveMemberProxyPhoneNumberFinderEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + proxyPhoneNumber: string; + proxyPhoneNumberRecord?: Com.Linkedin.Avro2pegasus.Events.Common.Cap.ProxyPhoneNumberRecord; + } + namespace Preferences { + // Generated from: com/linkedin/avro2pegasus/events/cap/preferences/CapFeatureManualOptInEvent.pdsc + + export interface CapFeatureManualOptInEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + seatUrn: string; + featureLixKey: string; + isOptedIn: boolean; + updateTime: number; + } + } + namespace Search { + // Generated from: com/linkedin/avro2pegasus/events/cap/search/CapSearchRelevanceEvent.pdsc + + export interface CapSearchRelevanceEvent { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchId: string; + searchResults?: Com.Linkedin.Avro2pegasus.Events.Search.GenericSearchResults; + queryTaggerOutput?: QueryTag[]; + modelUsed?: string; + searchString?: string; + experiments?: string[]; + perturbationType?: PerturbationType; + queryNameTermValueFeatures?: Com.Linkedin.Avro2pegasus.Events.Common.NameTermValueFeatures; + features?: FeaturesForCapSearchResults[]; + capSearchHistoryUrn?: string; + queryIntent?: QueryIntent; + expandedQuery?: string; + genderRatios?: GenderRatio[]; + recruiterSearchSeasMetrics?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchSeasMetrics; + matchedInfo?: MatchedInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/search/FeaturesForCapSearchResults.pdsc + + export interface FeaturesForCapSearchResults { + resultUrn: string; + originalPosition?: number; + featureVector: string; + featureMap?: { [id: string]: number }; + sparseFloatVector: SparseFloatVectorFeature[]; + memberNameTermValueFeatures?: Com.Linkedin.Avro2pegasus.Events.Common.NameTermValueFeatures; + score?: number; + gender?: Com.Linkedin.Avro2pegasus.Events.MemberGender; + scoringPipelines?: ScoringPipeline[]; + matchedInfoForHit?: MatchedInfoForHit; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/search/GenderRatio.pdsc + + export interface GenderRatio { + ratioType: Com.Linkedin.Avro2pegasus.Events.MemberGender; + ratio: number; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/search/MatchedInfo.pdsc + + export interface MatchedInfo { + matchedTitleIds: number[]; + matchedSimilarTitleIds: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/search/MatchedInfoForHit.pdsc + + export interface MatchedInfoForHit { + matchedTitleIds: number[]; + matchedSimilarTitleIds: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/search/PerturbationType.pdsc + + export type PerturbationType = 'FAIRPAIR_EVEN' | 'FAIRPAIR_ODD' | 'NONE'; + // Generated from: com/linkedin/avro2pegasus/events/cap/search/QueryIntent.pdsc + + export type QueryIntent = 'EXPLORATORY' | 'NAVIGATIONAL'; + // Generated from: com/linkedin/avro2pegasus/events/cap/search/QueryTag.pdsc + + export type QueryTag = + | 'FIRST_NAME' + | 'LAST_NAME' + | 'COMPANY_NAME' + | 'TITLE' + | 'SKILL' + | 'SCHOOL_NAME' + | 'START' + | 'UNKNOWN' + | 'GEO'; + // Generated from: com/linkedin/avro2pegasus/events/cap/search/ScoringPipeline.pdsc + + export interface ScoringPipeline { + name: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/search/SparseFloatVectorFeature.pdsc + + export interface SparseFloatVectorFeature { + index: number; + value: number; + } + } + namespace Transfer { + // Generated from: com/linkedin/avro2pegasus/events/cap/transfer/SeatTransferEvent.pdsc + + export interface SeatTransferEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + transferRequestType: SeatTransferRequestType; + sourceMemberUrn: string; + sourceContractUrn: string; + sourceSeatUrn: string; + destinationMemberUrn: string; + destinationContractUrn: string; + destinationSeatUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/cap/transfer/SeatTransferRequestType.pdsc + + export type SeatTransferRequestType = + | 'TRANSFER_SEAT_ACROSS_CONTRACT' + | 'UNDO_TRANSFER_SEAT_ACROSS_CONTRACT' + | 'TRANSFER_SEAT_WITHIN_CONTRACT' + | 'UNDO_TRANSFER_SEAT_WITHIN_CONTRACT' + | 'MERGE_SEAT_ACROSS_CONTRACT' + | 'UNDO_MERGE_SEAT_ACROSS_CONTRACT'; + } + } + namespace Careers { + // Generated from: com/linkedin/avro2pegasus/events/careers/TalentContext.pdsc + + export interface TalentContext { + context: string; + } + // Generated from: com/linkedin/avro2pegasus/events/careers/TalentSeekerRecommendationServed.pdsc + + export interface TalentSeekerRecommendationServed { + talentSeekerIdentifier: string; + talentSeekerRecommendationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + talentSeekerRecommendationSource: TalentSeekerRecommendationSource; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + talentContexts: TalentContext[]; + } + // Generated from: com/linkedin/avro2pegasus/events/careers/TalentSeekerRecommendationSource.pdsc + + export type TalentSeekerRecommendationSource = 'JOB_SEARCH' | 'JYMBII' | 'PLOTLY'; + // Generated from: com/linkedin/avro2pegasus/events/careers/TalentSeekerRecommendationsServedEvent.pdsc + + export interface TalentSeekerRecommendationsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entities: TalentSeekerRecommendationServed[]; + } + } + namespace Cascades { + // Generated from: com/linkedin/avro2pegasus/events/cascades/CascadesGeneralFeedbackEvent.pdsc + + export interface CascadesGeneralFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + score: number; + scoreReason?: string; + otherFeedback?: string; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/events/cascades/CascadesInitializationEvent.pdsc + + export interface CascadesInitializationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + countryCode: string; + wordUILocale: Com.Linkedin.Avro2pegasus.Events.Locale; + wordApplicationName: string; + wordBuildVersion: string; + wordSessionId: string; + userId: string; + deviceId: string; + distributionChannel: string; + audienceGroup: string; + trackingCorrelationId: string; + officeTelemetryVersion: string; + cascadesInvocationMethod: CascadesInvocationMethod; + extractedTitle?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/cascades/CascadesInitializationV2Event.pdsc + + export interface CascadesInitializationV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + countryCode: string; + wordUiLocale: Com.Linkedin.Avro2pegasus.Events.Locale; + wordApplicationName: string; + wordBuildVersion: string; + wordSessionId: string; + userId: string; + deviceId: string; + distributionChannel?: string; + audienceGroup?: string; + trackingCorrelationId: string; + officeTelemetryVersion: string; + cascadesInvocationMethod: CascadesInvocationMethod; + extractedTitle?: string; + appPlatform: string; + flightId?: string; + featureGate?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/cascades/CascadesInvocationMethod.pdsc + + export type CascadesInvocationMethod = + | 'RIBBON_BUTTON' + | 'SESSION_START_INVOCATION' + | 'SESSION_START_CALLOUT' + | 'MID_SESSION_CALLOUT' + | 'RESUME_TEMPLATE'; + // Generated from: com/linkedin/avro2pegasus/events/cascades/ProfileExperienceSnippetFeedbackAction.pdsc + + export type ProfileExperienceSnippetFeedbackAction = 'POSITIVE' | 'NEGATIVE'; + // Generated from: com/linkedin/avro2pegasus/events/cascades/ProfileExperienceSnippetFeedbackEvent.pdsc + + export interface ProfileExperienceSnippetFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profileExperienceSnippetUrn: string; + action: ProfileExperienceSnippetFeedbackAction; + source: ProfileExperienceSnippetFeedbackSource; + reasons: ProfileExperienceSnippetFeedbackReason[]; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + profileExperienceSnippetsServedV2EventId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/cascades/ProfileExperienceSnippetFeedbackReason.pdsc + + export type ProfileExperienceSnippetFeedbackReason = + | 'IRRELEVANT' + | 'DIFFERENT_DOMAIN' + | 'DIFFERENT_SPECIALTY' + | 'POOR_QUALITY' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/cascades/ProfileExperienceSnippetFeedbackSource.pdsc + + export type ProfileExperienceSnippetFeedbackSource = 'CONDENSED_TEXT' | 'EXTENDED_TEXT'; + // Generated from: com/linkedin/avro2pegasus/events/cascades/ProfileExperienceSnippetImpressionEvent.pdsc + + export interface ProfileExperienceSnippetImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profileExperienceSnippetUrns: string[]; + profileExperienceSnippetsServedV2EventId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/cascades/ProfileExperienceSnippetReadMoreClickEvent.pdsc + + export interface ProfileExperienceSnippetReadMoreClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profileExperienceSnippetUrn: string; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + profileExperienceSnippetsServedEventGuid: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/cascades/ProfileExperienceSnippetsSeeMoreExamplesClickedEvent.pdsc + + export interface ProfileExperienceSnippetsSeeMoreExamplesClickedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profileExperienceSnippetsServedV2EventId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/cascades/ProfileExperienceSnippetsServedV2Event.pdsc + + export interface ProfileExperienceSnippetsServedV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + titleUrn: string; + skillUrn?: string; + industryUrn?: string; + servedProfileExperienceSnippetUrns: string[]; + } + } + namespace Challenges { + // Generated from: com/linkedin/avro2pegasus/events/challenges/RehabChallengeData.pdsc + + export interface RehabChallengeData { + rehabRestrictionInfo: Com.Linkedin.Avro2pegasus.Events.RehabRestrictionInfo; + enforcedAt: number; + acknowledgedTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/challenges/ScrapingChallengeData.pdsc + + export interface ScrapingChallengeData { + enforcementDuration: number; + enforcementTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/challenges/TosRateLimitedChallengeData.pdsc + + export interface TosRateLimitedChallengeData { + enforcementDuration: number; + enforcementTime: number; + } + } + namespace Chameleon { + // Generated from: com/linkedin/avro2pegasus/events/chameleon/ChameleonConfigLoadEvent.pdsc + + export interface ChameleonConfigLoadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + configType?: Com.Linkedin.Avro2pegasus.Common.Chameleon.ConfigType; + configCount?: number; + treatmentCount?: number; + controlCount?: number; + failedConfigs?: number[]; + processingDuration?: number; + } + } + namespace Checkpoint { + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/BouncedEmailCorrectionEvent.pdsc + + export interface BouncedEmailCorrectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + bouncedEmailCorrectionParameters: BouncedEmailCorrectionParameters; + messagePushTimestamp: number; + updateStatus: BouncedEmailUpdateStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/BouncedEmailCorrectionParameters.pdsc + + export interface BouncedEmailCorrectionParameters { + jobType: BouncedEmailJobType; + memberUrn: string; + handleUrn: string; + flockMessageUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/BouncedEmailJobType.pdsc + + export type BouncedEmailJobType = 'PAST_DATA' | 'REGULAR' | 'RETRY'; + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/BouncedEmailUpdateStatus.pdsc + + export type BouncedEmailUpdateStatus = + | 'SUCCESS' + | 'SKIPPED' + | 'LIX_SKIPPED' + | 'INTERNAL_ERROR' + | 'UNAUTHORIZED'; + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/EmailState.pdsc + + export type EmailState = 'CONFIRMED' | 'UNCONFIRMED' | 'NOT_APPLICABLE_IN_JUMIO_RESPONSE'; + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/IdVerificationEvent.pdsc + + export interface IdVerificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + eventType: IdVerificationEventType; + challengeId: string; + contactEmail?: string; + memberId?: number; + verificationStatus?: IdVerificationStatus; + requestCreateTime?: number; + firstName?: string; + lastName?: string; + idDob?: string; + idType?: IdVerificationIdType; + idSubType?: IdVerificationIdSubType; + idUsState?: string; + idCountry?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/IdVerificationEventType.pdsc + + export type IdVerificationEventType = 'IMAGE_UPLOAD' | 'JUMIO_RESPONSE'; + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/IdVerificationIdSubType.pdsc + + export type IdVerificationIdSubType = + | 'NATIONAL_ID' + | 'CONSULAR_ID' + | 'ELECTORAL_ID' + | 'RESIDENT_PERMIT_ID' + | 'OTHER_ID' + | 'VISA' + | 'UNKNOWN' + | 'LEARNING_DRIVING_LICENSE' + | 'E_PASSPORT'; + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/IdVerificationIdType.pdsc + + export type IdVerificationIdType = 'PASSPORT' | 'DRIVING_LICENSE' | 'ID_CARD'; + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/IdVerificationStatus.pdsc + + export type IdVerificationStatus = + | 'APPROVED_VERIFIED' + | 'DENIED_FRAUD' + | 'DENIED_UNSUPPORTED_ID_TYPE' + | 'DENIED_UNSUPPORTED_ID_COUNTRY' + | 'ERROR_NOT_READABLE_ID' + | 'NO_ID_UPLOADED'; + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/IdVerificationV2Event.pdsc + + export interface IdVerificationV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + eventType: IdVerificationEventType; + contactEmailState: EmailState; + submissionId: string; + contactEmail?: string; + memberId?: number; + jumioResponse?: JumioResponse; + source?: SecurityChallengeSource; + } + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/JumioResponse.pdsc + + export interface JumioResponse { + verificationStatus?: IdVerificationStatus; + requestCreateTime?: number; + idFirstName?: string; + idLastName?: string; + idDob?: string; + idType?: IdVerificationIdType; + idSubType?: IdVerificationIdSubType; + idUsState?: string; + idCountry?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/RememberMeEvent.pdsc + + export interface RememberMeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + appName?: string; + targetMemberUrn: string; + eventType: RememberMeEventType; + initiatorType: RememberMeInitiatorType; + submissionId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/RememberMeEventType.pdsc + + export type RememberMeEventType = 'OPTED_IN' | 'OPTED_OUT' | 'OPTED_OUT_ALL' | 'FORCE_OPTED_OUT'; + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/RememberMeInitiatorType.pdsc + + export type RememberMeInitiatorType = 'MEMBER' | 'CS_USER' | 'CV'; + // Generated from: com/linkedin/avro2pegasus/events/checkpoint/SecurityChallengeSource.pdsc + + export type SecurityChallengeSource = 'CONSUMER_LOGIN' | 'PASSWORD_RESET'; + } + namespace Chimera { + // Generated from: com/linkedin/avro2pegasus/events/chimera/AuthType.pdsc + + export type AuthType = 'SYSTEM' | 'SUPERUSER' | 'SYSTEM_SUPERUSER'; + // Generated from: com/linkedin/avro2pegasus/events/chimera/ChimeraAuthHeaderEvent.pdsc + + export interface ChimeraAuthHeaderEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + d2serviceUrn: string; + methodType: ResourceMethod; + chimeraElevatedAuthorization: AuthType; + multiProductUrn?: string; + hasUserICInformation: boolean; + cSUserPermissionUrn: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/chimera/ResourceMethod.pdsc + + export type ResourceMethod = + | 'GET' + | 'BATCH_GET' + | 'FINDER' + | 'CREATE' + | 'BATCH_CREATE' + | 'PARTIAL_UPDATE' + | 'UPDATE' + | 'BATCH_UPDATE' + | 'DELETE' + | 'ACTION' + | 'BATCH_PARTIAL_UPDATE' + | 'BATCH_DELETE' + | 'GET_ALL' + | 'OPTIONS'; + } + namespace Chronicle { + // Generated from: com/linkedin/avro2pegasus/events/chronicle/AffectedEntityPair.pdsc + + export interface AffectedEntityPair { + entityUrn: string; + activityTypeUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/chronicle/BrowserId.pdsc + + export type BrowserId = string; + // Generated from: com/linkedin/avro2pegasus/events/chronicle/ChronicleActivityEvent.pdsc + + export interface ChronicleActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + actorUrn: string; + objectUrn: string; + managedEntitiesUrns: string[]; + activityTime: number; + affectedEntities: AffectedEntityPair[]; + browserId?: BrowserId; + sessionUrn?: string; + ipAddress?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + userAgent?: string; + isBackfilled: boolean; + } + } + namespace Cohort { + // Generated from: com/linkedin/avro2pegasus/events/cohort/CohortsServedEvent.pdsc + + export interface CohortsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + usageContext: string; + pageIdentifier: string; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + viewingContextUrns: string[]; + viewerUrn: string; + maxCohortSize: number; + minCohortSize: number; + viewerFeatures: ViewerFeatures[]; + experimentSettings: ExperimentSetting[]; + requestedRelatedReasons: Com.Linkedin.Avro2pegasus.Common.Cohorts.CohortRelatedReason[]; + cohorts: Com.Linkedin.Avro2pegasus.Common.Cohorts.Cohort[]; + } + // Generated from: com/linkedin/avro2pegasus/events/cohort/ExperimentSetting.pdsc + + export interface ExperimentSetting { + name: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/cohort/ViewerFeatures.pdsc + + export interface ViewerFeatures { + featureName: string; + featureValue: number; + } + } + namespace Colleagues { + // Generated from: com/linkedin/avro2pegasus/events/colleagues/ColleagueRelationshipCreateRequestEvent.pdsc + + export interface ColleagueRelationshipCreateRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + controlTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + requestActionTimestamp: number; + colleagueRelationshipUrn?: string; + ownerUrn: string; + relatedColleagueUrn: string; + ownerOrgUrn: string; + relatedColleagueOrgUrn: string; + relationshipType: Com.Linkedin.Avro2pegasus.Events.Common.Colleagues.ColleagueRelationshipType; + createState: Com.Linkedin.Avro2pegasus.Events.Common.Colleagues.ColleagueRelationshipState; + errorType?: Com.Linkedin.Avro2pegasus.Events.Common.Colleagues.ColleagueRelationshipErrorType; + } + // Generated from: com/linkedin/avro2pegasus/events/colleagues/ColleagueRelationshipDeleteRequestEvent.pdsc + + export interface ColleagueRelationshipDeleteRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + controlTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + requestActionTimestamp: number; + colleagueRelationshipUrn: string; + deleteType: Com.Linkedin.Avro2pegasus.Events.Common.Colleagues.DeleteType; + errorType?: Com.Linkedin.Avro2pegasus.Events.Common.Colleagues.ColleagueRelationshipErrorType; + } + // Generated from: com/linkedin/avro2pegasus/events/colleagues/ColleagueRelationshipStatus.pdsc + + export type ColleagueRelationshipStatus = + | 'IGNORED' + | 'CONFIRMED' + | 'DELETED' + | 'AUTO_DELETED' + | 'REMOVED_BY_OWNER' + | 'REMOVED_BY_COLLEAGUE'; + // Generated from: com/linkedin/avro2pegasus/events/colleagues/ColleagueRelationshipStatusChangeEvent.pdsc + + export interface ColleagueRelationshipStatusChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + colleagueRelationshipUrn: string; + ownerUrn: string; + relatedColleagueUrn: string; + relationshipType: ColleagueRelationshipType; + lastModifiedTime: number; + status: ColleagueRelationshipStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/colleagues/ColleagueRelationshipType.pdsc + + export type ColleagueRelationshipType = 'MANAGER' | 'DIRECT_REPORT' | 'PEER' | 'EXTENDED_PEER'; + // Generated from: com/linkedin/avro2pegasus/events/colleagues/ColleagueRelationshipUpdateRequestEvent.pdsc + + export interface ColleagueRelationshipUpdateRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + controlTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + requestActionTimestamp: number; + colleagueRelationshipUrn: string; + from: Com.Linkedin.Avro2pegasus.Events.Common.Colleagues.ColleagueRelationshipUpdateRecord; + to: Com.Linkedin.Avro2pegasus.Events.Common.Colleagues.ColleagueRelationshipUpdateRecord; + errorType?: Com.Linkedin.Avro2pegasus.Events.Common.Colleagues.ColleagueRelationshipErrorType; + } + } + namespace Comm { + // Generated from: com/linkedin/avro2pegasus/events/comm/ActionType.pdsc + + export type ActionType = 'MARK_READ'; + // Generated from: com/linkedin/avro2pegasus/events/comm/MessageStateChangeEvent.pdsc + + export interface MessageStateChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + messageUrn: string; + actionType: ActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/comm/MessagingThreadActionEvent.pdsc + + export interface MessagingThreadActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientUrn: string; + messagingThreadUrn: string; + changedTime: number; + actionType: ActionType; + } + } + namespace Commerce { + // Generated from: com/linkedin/avro2pegasus/events/commerce/CancellationResult.pdsc + + export interface CancellationResult { + responseStatus: ResponseStatus; + failureStep?: FailureStep; + } + // Generated from: com/linkedin/avro2pegasus/events/commerce/CommerceCheckoutViewEvent.pdsc + + export interface CommerceCheckoutViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + userRequestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + cartUrns: string[]; + referrerPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + trackingCode?: string; + productFamily: string; + subscriptionFamily?: Com.Linkedin.Avro2pegasus.Events.Premium.ProductSubsFamily; + } + // Generated from: com/linkedin/avro2pegasus/events/commerce/FailureStep.pdsc + + export type FailureStep = 'CANCEL' | 'REFUND'; + // Generated from: com/linkedin/avro2pegasus/events/commerce/OnBoardingErrorEvent.pdsc + + export interface OnBoardingErrorEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + financeDocumentUrn: string; + exceptionDetails: string; + } + // Generated from: com/linkedin/avro2pegasus/events/commerce/PaidServiceCancellationEvent.pdsc + + export interface PaidServiceCancellationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + serviceDetails: ServiceDetails; + cancellationResult: CancellationResult; + } + // Generated from: com/linkedin/avro2pegasus/events/commerce/ResponseStatus.pdsc + + export type ResponseStatus = 'SUCCESS' | 'FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/commerce/ServiceDetails.pdsc + + export interface ServiceDetails { + serviceUrn: string; + serviceType: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Subscription.SubscriptionType; + paymentInstrumentType: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Payment.PaymentInstrumentType; + } + namespace Checkoutwallettracking { + // Generated from: com/linkedin/avro2pegasus/events/commerce/checkoutwallettracking/CheckoutOrderPlacedEvent.pdsc + + export interface CheckoutOrderPlacedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + orderUrn: string; + usedSavedWallet: boolean; + productFamily: string; + checkoutOrderPlacedEventId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + profileCountry: string; + billingCountry: string; + amountDetails: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Checkoutwallettracking.AmountDetails; + subscriptionsDetails?: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Checkoutwallettracking.SubscriptionsDetails; + paymentMethodDetails: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Checkoutwallettracking.PaymentMethodDetails; + } + // Generated from: com/linkedin/avro2pegasus/events/commerce/checkoutwallettracking/CheckoutPageLandedEvent.pdsc + + export interface CheckoutPageLandedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + defaultOrderUrn: string; + optionalOrderUrns: string[]; + hasSavedWallet: boolean; + productFamily: string; + checkoutPageLandedEventId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + profileCountry: string; + billingCountry: string; + amountDetails: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Checkoutwallettracking.AmountDetails; + subscriptionsDetails?: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Checkoutwallettracking.SubscriptionsDetails; + } + } + namespace Commercebilling { + // Generated from: com/linkedin/avro2pegasus/events/commerce/commercebilling/CommerceBillingEventEnum.pdsc + + export type CommerceBillingEventEnum = + | 'PROCESS_ADD_CC_REMINDER_EVENT' + | 'PROCESS_ON_BOARD_NEW_CONTRACT_EVENT' + | 'PROCESS_NEW_OFFLINE_CONTRACT_EVENT' + | 'UNRESPONSIVE_USER' + | 'EMAIL_SENT_TO_ON_BOARD_USER' + | 'AUTO_ASSOCIATE_PAYMENT_FINISHED' + | 'CUSTOMER_ON_BOARD_SUCCESSFUL'; + // Generated from: com/linkedin/avro2pegasus/events/commerce/commercebilling/FinanceTransactionTimedoutManualResolutionEvent.pdsc + + export interface FinanceTransactionTimedoutManualResolutionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + financeTransactionUrn: string; + billToCustomerUrn: string; + isSucceeded: boolean; + actorUrn: string; + paymentReceiptUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/commerce/commercebilling/OnBoardingCommerceBillingEvent.pdsc + + export interface OnBoardingCommerceBillingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + financeDocumentUrn: string; + eventType: CommerceBillingEventEnum; + } + } + namespace Contracts { + // Generated from: com/linkedin/avro2pegasus/events/commerce/contracts/CommerceContractLifecycleChangesEvent.pdsc + + export interface CommerceContractLifecycleChangesEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + commerceContractUrn: string; + customerUrn: string; + primaryOrderUrn: string; + commerceContractChangesActivity: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Contracts.CommerceContractChangesActivity; + } + } + namespace Financecontract { + // Generated from: com/linkedin/avro2pegasus/events/commerce/financecontract/FinanceContractLineChangedEvent.pdsc + + export interface FinanceContractLineChangedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + financeContractLineUrn: string; + financeContractUrn: string; + productCode: string; + startTime: number; + endTime?: number; + effectiveQuantity: number; + } + } + namespace Omsbackend { + // Generated from: com/linkedin/avro2pegasus/events/commerce/omsbackend/ContractSourceEnum.pdsc + + export type ContractSourceEnum = 'CONTRACT' | 'INVOICE'; + // Generated from: com/linkedin/avro2pegasus/events/commerce/omsbackend/OmsBackendEventEnum.pdsc + + export type OmsBackendEventEnum = 'VALIDATION_PASSED' | 'TASK_QUEUED'; + // Generated from: com/linkedin/avro2pegasus/events/commerce/omsbackend/OnBoardingFromBizappsStartEvent.pdsc + + export interface OnBoardingFromBizappsStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + offlineCompanyID?: number; + offlineOperatingUnit?: number; + billingAdminEmailHash?: string; + sourceSystem?: SourceSystemEnum; + salesforceOrderId?: string; + salesforceOrderNumber?: string; + oracleId?: number; + financeContractUrn: string; + financeDocumentUrn: string; + financeContractNumber: string; + paymentMethod?: string; + financeTransactionId?: string; + financeTransactionNumber?: string; + contractSource: ContractSourceEnum; + partyChangeStatus: PartyChangeStatusEnum; + requestType: RequestTypeEnum; + } + // Generated from: com/linkedin/avro2pegasus/events/commerce/omsbackend/OnBoardingOmsBackendEvent.pdsc + + export interface OnBoardingOmsBackendEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + financeDocumentUrn: string; + eventType: OmsBackendEventEnum; + } + // Generated from: com/linkedin/avro2pegasus/events/commerce/omsbackend/PartyChangeStatusEnum.pdsc + + export type PartyChangeStatusEnum = 'NEW' | 'REPLACE' | 'UPDATE'; + // Generated from: com/linkedin/avro2pegasus/events/commerce/omsbackend/RequestTypeEnum.pdsc + + export type RequestTypeEnum = 'MANUAL' | 'AUTO'; + // Generated from: com/linkedin/avro2pegasus/events/commerce/omsbackend/SourceSystemEnum.pdsc + + export type SourceSystemEnum = 'SFDC'; + } + namespace Omsbackendtasks { + // Generated from: com/linkedin/avro2pegasus/events/commerce/omsbackendtasks/OmsBackendTasksEventEnum.pdsc + + export type OmsBackendTasksEventEnum = + | 'TASK_STARTED' + | 'NEW_FINANCE_DOCUMENT_CREATED' + | 'FINANCE_DOCUMENT_MODIFICATION_COMPLETE' + | 'NEW_SERVICE_CREATED' + | 'NEW_MEMBER_ONBOARD_STARTED' + | 'MEMBER_EXISTS_NO_DEFAULT_PAYMENT_STARTED' + | 'MEMBER_EXISTS_DEFAULT_EXISTS_AUTO_ASSOCIATE_STARTED'; + // Generated from: com/linkedin/avro2pegasus/events/commerce/omsbackendtasks/OnBoardingOmsBackendTasksEvent.pdsc + + export interface OnBoardingOmsBackendTasksEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + financeDocumentUrn: string; + eventType: OmsBackendTasksEventEnum; + } + } + namespace Salesproposals { + // Generated from: com/linkedin/avro2pegasus/events/commerce/salesproposals/SalesProposalStateTransitionEvent.pdsc + + export interface SalesProposalStateTransitionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + salesProposalUrn: string; + customerUrn: string; + salesProposalStateTransition: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Salesproposals.SalesProposalStateTransition; + auditStamp?: Com.Linkedin.Avro2pegasus.Events.Common.AuditStamp; + } + } + namespace Subscription { + // Generated from: com/linkedin/avro2pegasus/events/commerce/subscription/SubscriptionLifecycleEvent.pdsc + + export interface SubscriptionLifecycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + lifecycleChangeTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + premiumServiceUrn: string; + ownerUrn: string; + buyerUrn: string; + productUrn: string; + subscriptionPurchaseChannel: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Subscription.SubscriptionPurchaseChannel; + subscriptionType: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Subscription.SubscriptionType; + eventType: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Subscription.SubscriptionLifecycleEventType; + } + } + namespace Wallet { + // Generated from: com/linkedin/avro2pegasus/events/commerce/wallet/CommerceBmlEventEnum.pdsc + + export type CommerceBmlEventEnum = + | 'TRANSACTION' + | 'CHARGE_FAILURE_1' + | 'CHARGE_FAILURE_2' + | 'CHARGE_FAILURE_3' + | 'CHARGE_FAILURE_4' + | 'CHARGE_FAILURE_5' + | 'REFUND_SUCCESS' + | 'REFUND_FAILURE' + | 'CANCEL_CHARGE_SUCCESS' + | 'CANCEL_CHARGE_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/commerce/wallet/ContractSourceEnum.pdsc + + export type ContractSourceEnum = 'INVOICE' | 'CONTRACT'; + // Generated from: com/linkedin/avro2pegasus/events/commerce/wallet/OfflineFinanceContractChargeLifeCycleEvent.pdsc + + export interface OfflineFinanceContractChargeLifeCycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + offlineOperatingUnitUrn?: string; + financeContractUrn?: string; + oracleErpBundleId?: number; + oracleErpTransactionNumber?: string; + oracleErpTransactionId?: number; + contractSource?: ContractSourceEnum; + offlineTaskQueueUrn?: string; + serviceUrn?: string; + eventUrn?: string; + orderUrn?: string; + exceptionClass?: string; + exceptionMessage?: string; + offlineFinanceContractChargeLifecycleStep: OfflineFinanceContractChargeLifecycleStepEnum; + commerceBmlEvent?: CommerceBmlEventEnum; + } + // Generated from: com/linkedin/avro2pegasus/events/commerce/wallet/OfflineFinanceContractChargeLifecycleStepEnum.pdsc + + export type OfflineFinanceContractChargeLifecycleStepEnum = + | 'CHARGE_REQUEST_ACCEPTED' + | 'VALIDATION_PASSED' + | 'VALIDATION_FAILED' + | 'OFFLINE_TASK_QUEUED' + | 'OFFLINE_TASK_STARTED' + | 'OFFLINE_TASK_FAILED' + | 'CANCEL_CHARGE_EVENT_QUEUED' + | 'CHARGE_EVENT_QUEUED' + | 'OFFLINE_CHARGE_BEGIN' + | 'CART_CREATED' + | 'CART_CREATED_FROM_LAST_ORDER' + | 'BUY_CART_CALLED' + | 'OFFLINE_CHARGE_PRE_COMPLETE' + | 'OFFLINE_CHARGE_COMPLETE_START' + | 'OFFLINE_CHARGE_FAIL_START' + | 'SLIM_EVENT_FAILED' + | 'HARD_ERROR_RETRY' + | 'SOFT_ERROR_RETRY' + | 'BML_EVENT_SENT' + | 'CHARGE_SUCCEED' + | 'CHARGE_FAIL'; + } + } + namespace Common { + // Generated from: com/linkedin/avro2pegasus/events/common/ActionCategory.pdsc + + export type ActionCategory = + | 'LIKE' + | 'COMMENT' + | 'DELETE' + | 'SHARE' + | 'JOIN' + | 'VIEW' + | 'FOLLOW' + | 'CONNECT' + | 'HOVER' + | 'UNLIKE' + | 'DISMISS' + | 'EXPAND' + | 'SAVE' + | 'PLAY' + | 'UNFOLLOW' + | 'HIDE' + | 'MESSAGE' + | 'LEAVE' + | 'UNDO' + | 'SELECT' + | 'DISCONNECT' + | 'APPLY' + | 'POPUP' + | 'SKIP' + | 'ACCEPT_INVITATION' + | 'DECLINE_INVITATION' + | 'UNSAVE' + | 'EMBED' + | 'REPORT' + | 'PAUSE' + | 'MUTE' + | 'OPEN_SETTING' + | 'CREATE_PRESENTATION' + | 'ASK_QUESTION' + | 'ANSWER_QUESTION' + | 'MUTE_CONTENT' + | 'UNMUTE_CONTENT' + | 'TURN_OFF' + | 'VIEW_PROFILE' + | 'SHARE_FEEDBACK' + | 'ENDORSE' + | 'SUBMIT' + | 'DOWNVOTE' + | 'UNDOWNVOTE' + | 'SNOOZE' + | 'COLLAPSE' + | 'SCROLL' + | 'INMAIL' + | 'PREMIUM_UPSELL' + | 'SEE_TRANSLATION' + | 'REACT' + | 'UNREACT' + | 'END_VIDEO' + | 'TRY_FEATURE' + | 'LEARN_MORE' + | 'EXPAND_TRANSLATION_SETTINGS' + | 'ACCEPT_CONNECTION_CONVERSATION_NETWORK_SURVEY_QUESTION' + | 'REJECT_CONNECTION_CONVERSATION_NETWORK_SURVEY_QUESTION' + | 'EDIT' + | 'CLICK_THROUGH' + | 'SEE_ALL_DETAILS' + | 'ADD_TEAMMATE' + | 'OPT_IN' + | 'RESPOND' + | 'REFRESH' + | 'VOTE' + | 'UNVOTE'; + // Generated from: com/linkedin/avro2pegasus/events/common/AdContextualTargets.pdsc + + export interface AdContextualTargets { + adSize: AdSlotSize; + adZone: AdZone; + companyUrns: string[]; + countryCode?: string; + tile?: AdTile; + contentKeyWords?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/AdCreativeConceptType.pdsc + + export type AdCreativeConceptType = + | 'UNSPECIFIED' + | 'JYMBII' + | 'FOLLOW_COMPANY' + | 'PICTURE_YOURSELF_JOBS' + | 'SPOTLIGHT' + | 'WHITEPAPER_DOWNLOAD'; + // Generated from: com/linkedin/avro2pegasus/events/common/Address.pdsc + + export interface Address { + line1?: string; + line2?: string; + line3?: string; + line4?: string; + city?: string; + geographicAreaType?: GeographicAreaType; + geographicArea?: string; + postalCode?: string; + country?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/AdLeadActionType.pdsc + + export type AdLeadActionType = + | 'LEAD_FORM_SUBMIT' + | 'LEAD_FORM_CANCEL' + | 'LEAD_FORM_FIELD_EDIT' + | 'VIEW_FORM_ADVERTISER_PRIVACY_POLICY' + | 'VIEW_FORM_DESCRIPTION' + | 'UNKNOWN' + | 'LEAD_FORM_FIELD_SELECT'; + // Generated from: com/linkedin/avro2pegasus/events/common/AdPageZone.pdsc + + export type AdPageZone = 'OTHER' | 'HEADER' | 'BODY_LEFT' | 'BODY_MIDDLE' | 'BODY_RIGHT' | 'FOOTER'; + // Generated from: com/linkedin/avro2pegasus/events/common/AdSlotSize.pdsc + + export type AdSlotSize = + | 'OTHER' + | 'SIZE_300_250' + | 'SIZE_160_600' + | 'SIZE_17_700' + | 'SIZE_974_506' + | 'SIZE_300_125' + | 'SIZE_175_350' + | 'SIZE_300_375' + | 'SIZE_200_200' + | 'SIZE_320_300' + | 'SIZE_496_80' + | 'SIZE_728_90'; + // Generated from: com/linkedin/avro2pegasus/events/common/AdTile.pdsc + + export interface AdTile { + pageZone: AdPageZone; + tile: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/AdZone.pdsc + + export type AdZone = + | 'OTHER' + | 'HOME' + | 'PROFILE' + | 'INBOX' + | 'CONTACTS' + | 'GROUPS' + | 'COMPANIES' + | 'PULSE' + | 'JOBS' + | 'EDU' + | 'PROFILE_MOBILE' + | 'COMPANIES_DIRECTORY' + | 'LOGOUT' + | 'PUBLIC_DIRECTORY' + | 'RECS' + | 'SEARCH_JOB' + | 'SEARCH_PEOPLE' + | 'SLIDESHARE' + | 'NOTIFICATIONS' + | 'WHO_VIEWED_MY_PROFILE' + | 'NETWORK' + | 'PROFILE_ACTIVITY'; + // Generated from: com/linkedin/avro2pegasus/events/common/AnyRecord.pdsc + + export interface AnyRecord { + className: string; + data: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ApplicationInstance.pdsc + + export interface ApplicationInstance { + applicationUrn: string; + version: string; + trackingId: TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/common/Attribute.pdsc + + export interface Attribute { + entityUrn: string; + start: number; + length: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/AttributedText.pdsc + + export interface AttributedText { + text: string; + inferredLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + attributes: Attribute[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/AuctionType.pdsc + + export type AuctionType = 'FIRST_PRICE' | 'SECOND_PRICE'; + // Generated from: com/linkedin/avro2pegasus/events/common/AuditStamp.pdsc + + export interface AuditStamp { + time: number; + actor: string; + impersonator?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/BrowserScreenInformation.pdsc + + export interface BrowserScreenInformation { + viewportHeight: number; + viewportWidth: number; + screenHeight: number; + screenWidth: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ChangeAuditStamps.pdsc + + export interface ChangeAuditStamps { + created: AuditStamp; + lastModified: AuditStamp; + deleted?: AuditStamp; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ChangeTimeStamps.pdsc + + export interface ChangeTimeStamps { + createdTime?: number; + lastModifiedTime?: number; + deletedTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ClearSiteDataDirectiveType.pdsc + + export type ClearSiteDataDirectiveType = 'cache' | 'cookies' | 'storage' | 'executionContexts' | 'WILDCARD'; + // Generated from: com/linkedin/avro2pegasus/events/common/ClosedDoubleRange.pdsc + + export interface ClosedDoubleRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ClosedFloatRange.pdsc + + export interface ClosedFloatRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ClosedIntRange.pdsc + + export interface ClosedIntRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/Compensation.pdsc + + export interface Compensation { + lowEnd: MoneyAmount; + highEnd: MoneyAmount; + period: Com.Linkedin.Avro2pegasus.Events.Common.Premium.CompensationPeriod; + } + // Generated from: com/linkedin/avro2pegasus/events/common/CompensationType.pdsc + + export type CompensationType = + | 'BASE_SALARY' + | 'TIPS' + | 'COMMISSION' + | 'PROFIT_SHARING' + | 'STOCK_OPTIONS' + | 'BONUS' + | 'SIGNON_BONUS' + | 'STOCK'; + // Generated from: com/linkedin/avro2pegasus/events/common/ControlInteractionType.pdsc + + export type ControlInteractionType = + | 'FOCUS' + | 'UNFOCUS' + | 'KEYBOARD_SUBMIT' + | 'DRAG' + | 'PINCH_OPEN' + | 'PINCH_CLOSE' + | 'DOUBLE_PRESS' + | 'LONG_PRESS' + | 'SHORT_PRESS' + | 'SWIPE_UP' + | 'SWIPE_DOWN' + | 'SWIPE_LEFT' + | 'SWIPE_RIGHT' + | 'FLICK_UP' + | 'FLICK_DOWN' + | 'FLICK_LEFT' + | 'FLICK_RIGHT' + | 'SHAKE' + | 'KEYBOARD_NEXT' + | 'HOVER' + | 'KEYBOARD_PRESS'; + // Generated from: com/linkedin/avro2pegasus/events/common/Date.pdsc + + export interface Date { + year?: number; + month?: number; + day?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/DateRange.pdsc + + export interface DateRange { + start?: Date; + end?: Date; + } + // Generated from: com/linkedin/avro2pegasus/events/common/DisplayRectangle.pdsc + + export interface DisplayRectangle { + top: number; + left: number; + size: EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/common/DoubleRange.pdsc + + export interface DoubleRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/EmployeeCountRangeType.pdsc + + export type EmployeeCountRangeType = + | 'SIZE_1' + | 'SIZE_2_TO_10' + | 'SIZE_11_TO_50' + | 'SIZE_51_TO_200' + | 'SIZE_201_TO_500' + | 'SIZE_501_TO_1000' + | 'SIZE_1001_TO_5000' + | 'SIZE_5001_TO_10000' + | 'SIZE_10001_OR_MORE'; + // Generated from: com/linkedin/avro2pegasus/events/common/EntityDimension.pdsc + + export interface EntityDimension { + height: number; + width: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/Exception.pdsc + + export interface Exception { + message: string; + lineNumber: number; + columnNumber: number; + sourceFile: string; + stackTrace: string; + programLanguage: ProgramLanguage; + type: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/Fabric.pdsc + + export type Fabric = 'EI4' | 'EI_LTX1' | 'PROD_LOR1' | 'PROD_LTX1' | 'PROD_LVA1' | 'PROD_LSG1'; + // Generated from: com/linkedin/avro2pegasus/events/common/FeatureItem.pdsc + + export interface FeatureItem { + name: string; + content: TermValueItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/FloatRange.pdsc + + export interface FloatRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/GeographicAreaType.pdsc + + export type GeographicAreaType = 'PROVINCE' | 'STATE'; + // Generated from: com/linkedin/avro2pegasus/events/common/GridPosition.pdsc + + export interface GridPosition { + row: number; + column: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/HttpMethod.pdsc + + export type HttpMethod = 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT'; + // Generated from: com/linkedin/avro2pegasus/events/common/HttpTransaction.pdsc + + export interface HttpTransaction { + url: string; + requestHeaders: { [id: string]: string[] }; + statusCode: number; + statusText: string; + responseHeaders: { [id: string]: string[] }; + } + // Generated from: com/linkedin/avro2pegasus/events/common/IndividualCompensation.pdsc + + export interface IndividualCompensation { + type: CompensationType; + compensation: Compensation; + } + // Generated from: com/linkedin/avro2pegasus/events/common/IntegerRange.pdsc + + export interface IntegerRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ListPosition.pdsc + + export interface ListPosition { + index: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/Location.pdsc + + export interface Location { + continentCode?: string; + countryCode: string; + stateCode?: string; + postalCode?: string; + regionUrn?: string; + placeUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/LongRange.pdsc + + export interface LongRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/MoneyAmount.pdsc + + export interface MoneyAmount { + currencyCode: string; + amount: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/Month.pdsc + + export type Month = + | 'JANUARY' + | 'FEBRUARY' + | 'MARCH' + | 'APRIL' + | 'MAY' + | 'JUNE' + | 'JULY' + | 'AUGUST' + | 'SEPTEMBER' + | 'OCTOBER' + | 'NOVEMBER' + | 'DECEMBER'; + // Generated from: com/linkedin/avro2pegasus/events/common/MonthYear.pdsc + + export interface MonthYear { + month: Month; + year: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/NameTermValueFeatures.pdsc + + export interface NameTermValueFeatures { + featureMap: { [id: string]: { [id: string]: number } }; + } + // Generated from: com/linkedin/avro2pegasus/events/common/NetworkDistance.pdsc + + export type NetworkDistance = 'SELF' | 'DISTANCE_1' | 'DISTANCE_2' | 'DISTANCE_3' | 'OUT_OF_NETWORK'; + // Generated from: com/linkedin/avro2pegasus/events/common/NormalizingFactor.pdsc + + export interface NormalizingFactor { + xMultiplier: number; + yMultiplier: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/PageInstance.pdsc + + export interface PageInstance { + pageUrn: string; + trackingId: TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/common/PhoneNumber.pdsc + + export interface PhoneNumber { + number: string; + extension?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ProgramLanguage.pdsc + + export type ProgramLanguage = + | 'JAVA' + | 'JAVASCRIPT' + | 'OBJECTIVE_C' + | 'PYTHON' + | 'SCALA' + | 'RUBY' + | 'C' + | 'CPP'; + // Generated from: com/linkedin/avro2pegasus/events/common/StaffCountRangeType.pdsc + + export type StaffCountRangeType = + | 'SIZE_1' + | 'SIZE_2_TO_10' + | 'SIZE_11_TO_50' + | 'SIZE_51_TO_200' + | 'SIZE_201_TO_500' + | 'SIZE_501_TO_1000' + | 'SIZE_1001_TO_5000' + | 'SIZE_5001_TO_10000' + | 'SIZE_10001_OR_MORE'; + // Generated from: com/linkedin/avro2pegasus/events/common/TermValueItem.pdsc + + export interface TermValueItem { + term?: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/TimeOfDay.pdsc + + export interface TimeOfDay { + hour: number; + minute: number; + second: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/TimeRange.pdsc + + export interface TimeRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/TimeSpan.pdsc + + export interface TimeSpan { + duration: number; + unit: TimeUnit; + } + // Generated from: com/linkedin/avro2pegasus/events/common/TimeSpanRange.pdsc + + export interface TimeSpanRange { + minDuration?: TimeSpan; + maxDuration?: TimeSpan; + } + // Generated from: com/linkedin/avro2pegasus/events/common/TimeUnit.pdsc + + export type TimeUnit = 'MILLISECOND' | 'SECOND' | 'MINUTE' | 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'; + // Generated from: com/linkedin/avro2pegasus/events/common/TrackingId.pdsc + + export type TrackingId = string; + // Generated from: com/linkedin/avro2pegasus/events/common/TrackingObject.pdsc + + export interface TrackingObject { + objectUrn: string; + trackingId: TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/common/UiView.pdsc + + export interface UiView { + elementArea: DisplayRectangle; + segments: UiViewSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/UiViewSegment.pdsc + + export interface UiViewSegment { + viewport: DisplayRectangle; + duration: number; + time: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/VersionTag.pdsc + + export interface VersionTag { + versionTag?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ViralCardType.pdsc + + export type ViralCardType = 'JOB_CHANGE_PROP' | 'WORK_ANNIVERSARY_PROP'; + // Generated from: com/linkedin/avro2pegasus/events/common/WebViewType.pdsc + + export type WebViewType = 'UI_WEBVIEW' | 'WK_WEBVIEW'; + namespace Abook { + // Generated from: com/linkedin/avro2pegasus/events/common/abook/AbookImportCacheStatus.pdsc + + export type AbookImportCacheStatus = 'HIT' | 'MISS' | 'ERROR'; + } + namespace Ads { + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdAccountUserRole.pdsc + + export type AdAccountUserRole = + | 'VIEWER' + | 'CREATIVE_MANAGER' + | 'CAMPAIGN_MANAGER' + | 'ACCOUNT_MANAGER' + | 'ACCOUNT_BILLING_ADMIN'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdAudienceMatchType.pdsc + + export type AdAudienceMatchType = 'COMPANY' | 'MEMBER'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdBlocker.pdsc + + export type AdBlocker = 'AD_BLOCK' | 'AD_BLOCK_PLUS' | 'UBLOCK' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdCardInfo.pdsc + + export interface AdCardInfo { + originCardIndex?: number; + renderCardIndex?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdClientAction.pdsc + + export type AdClientAction = + | 'UNKNOWN' + | 'AUTO_PLAY_VIDEO' + | 'CLICK_VIDEO' + | 'COMMENT' + | 'DELETE_COMMENT' + | 'DELETE_REPLY' + | 'EXPAND_COMMENT_BOX' + | 'EXPAND_COMMENT_TEXT' + | 'EXPAND_COMMENTARY_TEXT' + | 'EXPAND_CONTROL' + | 'EXPAND_FORM_THANK_YOU_MESSAGE' + | 'EXPAND_MORE_COMMENTS' + | 'EXPAND_RESHARE_BOX' + | 'EXPAND_UPDATE_INLINE' + | 'EXPAND_UPDATE_TEXT' + | 'FOLLOW' + | 'FOLLOW_COMPANY' + | 'FOLLOW_MEMBER' + | 'FOLLOW_SCHOOL' + | 'HIDE_MEMBER' + | 'HIDE_UPDATE' + | 'LIKE' + | 'LIKE_COMMENT' + | 'LIKE_UPDATE' + | 'PAUSE_VIDEO' + | 'PLAY_VIDEO' + | 'REPLAY_VIDEO' + | 'SAVE_ARTICLE' + | 'SEEK_VIDEO' + | 'SHARE' + | 'SUBMIT_COMMENT' + | 'SUBMIT_REPLY' + | 'SUBMIT_SHARE' + | 'UNFOLLOW' + | 'UNHIDE_MEMBER' + | 'UNHIDE_UPDATE' + | 'UNLIKE' + | 'UNLIKE_COMMENT' + | 'UNLIKE_UPDATE' + | 'UNSAVE_ARTICLE' + | 'VIEW_ALL_COMMENTS' + | 'VIEW_APP' + | 'VIEW_ARTICLE' + | 'VIEW_COMMENT' + | 'VIEW_COMMENT_LIKERS' + | 'VIEW_COMMENTER' + | 'VIEW_COMPANY' + | 'VIEW_COMPANY_PIC' + | 'VIEW_COMPLETION' + | 'VIEW_COMPOSE_EMAIL' + | 'VIEW_CONTENT' + | 'VIEW_FORM' + | 'VIEW_LIKER' + | 'VIEW_LIKERS' + | 'VIEW_MIDPOINT' + | 'VIEW_QUARTILE' + | 'VIEW_MEMBER' + | 'VIEW_RICH_MEDIA' + | 'VIEW_SCHOOL' + | 'VIEW_SEARCH_RESULTS' + | 'VIEW_SOCIAL_COUNT' + | 'VIEW_SPONSORED_LINK' + | 'VIEW_THIRD_QUARTILE' + | 'VIEW_VIDEO' + | 'VIEW_UPDATE' + | 'VIEW_UPDATE_BREAKOUT' + | 'VIEW_UPDATE_DETAIL' + | 'VIEW_VIDEO_MODE' + | 'FULLSCREEN_VIDEO' + | 'CANCEL_LEAD_FORM' + | 'EDIT_LEAD_FORM' + | 'SELECT_LEAD_FORM' + | 'SUBMIT_LEAD_FORM' + | 'UNFOLLOW_COMPANY' + | 'VIEW_FORM_DESCRIPTION' + | 'VIEW_VIDEO_FULL_COMPLETION' + | 'VIEW_JOB' + | 'VIEW_VIDEO_STARTS_PLAY' + | 'VIEW_PRIVACY_POLICY' + | 'SUBMIT_RESHARE' + | 'UNFOLLOW_MEMBER' + | 'UNFOLLOW_SCHOOL' + | 'VIEW_COMMENTS' + | 'VIEW_COMMENT_DETAIL' + | 'VIEW_COMMENT_IMAGE' + | 'VIEW_COMMENT_LINK' + | 'VIEW_FORM_SUBMITTED_LINK' + | 'VIEW_VIDEO_FORM' + | 'VIEW_VIDEO_SPONSORED_LINK' + | 'VIEW_COMMENT_ARTICLE' + | 'EXPAND_REPLY_BOX' + | 'VIEW_HASHTAG_FEED' + | 'VIEW_LINK' + | 'VIEW_VIDEO_LINK' + | 'EMPATHY_UPDATE' + | 'INTEREST_UPDATE' + | 'LIKE_ARTICLE' + | 'MAYBE_UPDATE' + | 'PRAISE_UPDATE' + | 'UNEMPATHY_UPDATE' + | 'UNINTEREST_UPDATE' + | 'UNLIKE_ARTICLE' + | 'UNMAYBE_UPDATE' + | 'UNPRAISE_UPDATE' + | 'VIEW_IMAGE' + | 'EXPAND_RESHARE_OPTIONS' + | 'VIEW_REPLY_LIKERS' + | 'LIKE_REPLY' + | 'UNLIKE_REPLY' + | 'EXPAND_MORE_REPLIES' + | 'VIEW_INFLUENCER' + | 'EXPAND_RESHARE_MESSAGE' + | 'SEE_TRANSLATION' + | 'EXPAND_TRANSLATION_SETTINGS' + | 'SAVE_ITEM' + | 'UNSAVE_ITEM' + | 'PRIMARY_ACTION_IN_APP_PROMO' + | 'DISMISS_IN_APP_PROMO' + | 'CLICK_EXIT_STORY' + | 'SWIPE_DOWN_EXIT_STORY' + | 'CLICK_MOVE_FORWARD_STORY' + | 'CLICK_MOVE_BACKWARD_STORY' + | 'CLICK_MOVE_FORWARD_STORY_ITEM' + | 'CLICK_MOVE_BACKWARD_STORY_ITEM' + | 'PRESS_RIGHT_ARROW_KEY_MOVE_FORWARD_STORY_ITEM' + | 'PRESS_LEFT_ARROW_KEY_MOVE_BACKWARD_STORY_ITEM' + | 'SWIPE_MOVE_FORWARD_STORY' + | 'SWIPE_MOVE_BACKWARD_STORY' + | 'RELEASE_PAUSED_VIDEO' + | 'EDGE_REPLAY_VIDEO'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdClientTarget.pdsc + + export type AdClientTarget = + | 'UNKNOWN' + | 'ACTOR' + | 'ACTOR_FOLLOW_TOGGLE' + | 'ACTOR_PICTURE' + | 'ARTICLE_DESCRIPTION' + | 'CALL_TO_ACTION' + | 'CARD_CALL_TO_ACTION' + | 'CARD_HEADLINE' + | 'CARD_IMAGE' + | 'COMMENT' + | 'COMMENT_EXPAND' + | 'COMMENT_LIKE_COUNT' + | 'COMMENT_LIKE_TOGGLE' + | 'COMMENT_POST' + | 'COMMENTARY_EXPAND' + | 'COMMENTARY_HASHTAG' + | 'COMMENTARY_LINK' + | 'COMMENTARY_MENTION' + | 'COMMENTARY_TEXT' + | 'COMMENTS_COUNT' + | 'CONTROL_MENU' + | 'CONTROL_MENU_HIDE' + | 'HEADLINE' + | 'LIKE_TOGGLE' + | 'LIKER_ACTOR_PICTURE' + | 'LIKERS_OVERFLOW' + | 'LIKES_COUNT' + | 'MORE_COMMENTS' + | 'POST' + | 'REPLY' + | 'RESHARE' + | 'SAVE_TOGGLE' + | 'SOCIAL_COUNT' + | 'UPDATE_ARTICLE_IMAGE' + | 'UPDATE_IMAGE' + | 'VIDEO_PLAY' + | 'VIDEO_THUMBNAIL_PLAY' + | 'VIDEO_TOOLBAR_PLAY_PAUSE' + | 'VIDEO_TOOLBAR_REPLAY' + | 'VIDEO_TOOLBAR_SCRUBBER' + | 'LIKERS' + | 'COMMENT_ACTOR' + | 'COMMENT_ARTICLE_IMAGE' + | 'COMMENT_IMAGE' + | 'COMMENT_LIKES_COUNT' + | 'COMMENT_TEXT' + | 'ENTITY' + | 'ENTITY_INSIGHT' + | 'EXTERNAL_VIDEO_DESCRIPTION' + | 'UPDATE_EXTERNAL_VIDEO_IMAGE' + | 'COMMENT_ACTOR_PICTURE' + | 'COMMENT_ACTOR_DESCRIPTION' + | 'COMMENT_ARTICLE' + | 'COMMENT_CONTAINER' + | 'COMMENT_BOX' + | 'REPLY_BOX' + | 'REPLY_COUNT' + | 'FORM_THANK_YOU_MESSAGE_EXPAND' + | 'CONTROL_MENU_SAVE_ARTICLE' + | 'CONTROL_MENU_UNSAVE_ARTICLE' + | 'SELECT_REACTION' + | 'INTERSTITIAL_RESHARE' + | 'INTERSTITIAL_SHARE' + | 'REPLY_LIKE_COUNT' + | 'REPLY_LIKE_TOGGLE' + | 'MORE_REPLIES' + | 'VIDEO_TOOLBAR_FULLSCREEN_TOGGLE' + | 'UPDATE_TOPBAR_ACTOR' + | 'COMMENT_HASHTAG' + | 'COMMENT_LINK' + | 'COMMENT_MENTION' + | 'VIDEO_PLAY_PAUSE' + | 'SAVE_ARTICLE_TOGGLE' + | 'ACTOR_CONTAINER' + | 'INTERSTITIAL_MESSAGE' + | 'SEE_TRANSLATION_CLICK' + | 'EXPAND_TRANSLATION_SETTINGS_CLICK' + | 'VIDEO_DESCRIPTION' + | 'CONTROL_MENU_SAVE' + | 'CONTROL_MENU_UNSAVE' + | 'IN_APP_PROMO_PRIMARY_ACTION_BUTTON' + | 'IN_APP_PROMO_CROSS_BUTTON' + | 'STORY_EXIT_BUTTON' + | 'STORY_ITEM' + | 'STORY_LEFT_EDGE' + | 'STORY_RIGHT_EDGE' + | 'STORY_ITEM_UNCLICKABLE_AREA'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdCookieMemberIdentification.pdsc + + export type AdCookieMemberIdentification = + | 'ONLY_SUGR_ID_FOUND' + | 'ONLY_OATML_ID_FOUND' + | 'OATML_ID_AND_SUGR_ID_FOUND_WITH_MEMBER_MISMATCH' + | 'OATML_ID_AND_SUGR_ID_FOUND_WITH_MEMBER_MATCH' + | 'OATML_ID_AND_SUGR_ID_FOUND_WITHOUT_SUGR_ID_TO_MEMBER_ID_ASSOCIATION'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdCreativeTriagedActionType.pdsc + + export type AdCreativeTriagedActionType = 'PAUSE' | 'CANCEL'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdCreativeTriagedReason.pdsc + + export interface AdCreativeTriagedReason { + name: string; + value: string; + failedValidations: AdCreativeTriagedValidationType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdCreativeTriagedValidationType.pdsc + + export type AdCreativeTriagedValidationType = + | 'IMAGE_QUALITY' + | 'IMAGE_URL_FORMAT' + | 'MULTI_CONTENT_SHARE_SHARE_MEDIA_CATEGORY' + | 'MULTI_CONTENT_SHARE_CONTENT_ENTITY_SIZE' + | 'MULTI_CONTENT_UGC_SHARE_MEDIA_CATEGORY' + | 'MULTI_CONTENT_UGC_CONTENT_ENTITY_SIZE' + | 'SHARE_HAS_CONTENT' + | 'SINGLE_CONTENT_SHARE_SHARE_MEDIA_CATEGORY' + | 'SINGLE_CONTENT_SHARE_CONTENT_ENTITY_SIZE' + | 'SINGLE_CONTENT_UGC_SHARE_MEDIA_CATEGORY' + | 'SINGLE_CONTENT_UGC_CONTENT_ENTITY_SIZE' + | 'UGC_HAS_CONTENT' + | 'URL_FORMAT' + | 'URL_RESPONSE'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdEntityCacheEventConsumerType.pdsc + + export type AdEntityCacheEventConsumerType = + | 'TSCP_SERVING' + | 'TSCP_TRACKING' + | 'TSCP_INTELLIGENCE_BUDGET' + | 'TSCP_INTELLIGENCE_PERFORMANCE' + | 'TSCP_EXPERIMENT'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdEntityCacheEventSourceType.pdsc + + export type AdEntityCacheEventSourceType = + | 'ACCOUNT' + | 'CAMPAIGN_GROUP' + | 'CAMPAIGN' + | 'CREATIVE' + | 'TSCP_SERVING_CONTROL' + | 'TSCP_PERFORMANCE_CONTROL' + | 'THIRD_PARTY_TRACKING_TAG'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdEntityNonServableSource.pdsc + + export type AdEntityNonServableSource = 'AD_OPTIMIZATION_AND_FEDERATOR_RESULT' | 'FEED_UPDATE_NOT_SERVED'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdEntityStatus.pdsc + + export type AdEntityStatus = 'ACTIVE' | 'ARCHIVED' | 'CANCELLED' | 'COMPLETED' | 'DRAFT' | 'NEW' | 'PAUSED'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdExchangeId.pdsc + + export type AdExchangeId = + | 'MPX' + | 'STX' + | 'TLX' + | 'RUX' + | 'ANX' + | 'ADX' + | 'ALX' + | 'MSX' + | 'PLX' + | 'TDX' + | 'PMX'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdExperimentExecutionState.pdsc + + export type AdExperimentExecutionState = 'PENDING' | 'RUNNING' | 'ON_HOLD' | 'STOPPED' | 'ENDED'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdExperimentState.pdsc + + export interface AdExperimentState { + scheduledStartTime: number; + scheduledEndTime: number; + userIntendedState: AdExperimentUserIntendedState; + systemIntendedState: AdExperimentSystemIntendedState; + executionState: AdExperimentExecutionState; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdExperimentSystemIntendedState.pdsc + + export type AdExperimentSystemIntendedState = + | 'PENDING' + | 'RUNNING' + | 'ON_HOLD' + | 'STOPPED' + | 'ENDED' + | 'TERMINATED'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdExperimentUserIntendedState.pdsc + + export type AdExperimentUserIntendedState = 'ACTIVE' | 'CANCELED'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdFormat.pdsc + + export type AdFormat = + | 'UNKNOWN' + | 'NOT_PROVIDED' + | 'NATIVE' + | 'NATIVE_VIDEO' + | 'BANNER' + | 'VIDEO' + | 'INTERSTITIAL_VIDEO' + | 'INTERSTITIAL' + | 'BANNER_VIDEO_DUAL' + | 'NATIVE_VIDEO_DUAL'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdImpressionType.pdsc + + export type AdImpressionType = 'VIEWABLE' | 'ON_CLICK' | 'PIXEL'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdOrganizationUserRole.pdsc + + export type AdOrganizationUserRole = + | 'ADMINISTRATOR' + | 'RECRUITING_POSTER' + | 'DIRECT_SPONSORED_CONTENT_POSTER' + | 'LEAD_CAPTURE_ADMINISTRATOR' + | 'LEAD_GEN_FORMS_MANAGER'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdPlacement.pdsc + + export type AdPlacement = + | 'STORIES' + | 'FEED' + | 'RIGHT_RAIL' + | 'INBOX' + | 'MESSENGER' + | 'SEARCH_RESULT' + | 'OFFSITE' + | 'BANNER' + | 'PROFILE_MOBILE' + | 'HASHTAG_FEED' + | 'MYNETWORK_PAGE'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdPostClickSignalType.pdsc + + export type AdPostClickSignalType = + | 'LAUNCH_WEBVIEW' + | 'START_URL_REQUEST' + | 'WEBPAGE_INTERACTIVE' + | 'WEBPAGE_LOADED' + | 'DISMISS_WEBVIEW' + | 'WEBPAGE_LOAD_FAILED' + | 'REDIRECTS_COMPLETED' + | 'BACKGROUND_REDIRECTS_COMPLETED'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdRequestFilterChainType.pdsc + + export type AdRequestFilterChainType = + | 'REAL_TIME_BIDDING' + | 'TEXT_AD_FOR_LOGGED_OUT' + | 'TEXT_AD_FOR_LOGGED_IN' + | 'SPONSORED_UPDATES' + | 'SPONSORED_UPDATES_AND_SJYMBII' + | 'SJYMBII' + | 'SPINMAIL' + | 'DYNAMIC_AD'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdScoringFeatures.pdsc + + export interface AdScoringFeatures { + nameTermValueFeatures: NameTermValueFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdSegmentEntityUpdateOperation.pdsc + + export type AdSegmentEntityUpdateOperation = 'ADD' | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdSegmentStatus.pdsc + + export type AdSegmentStatus = 'READY' | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdSegmentType.pdsc + + export type AdSegmentType = 'MEMBER_PERSONA' | 'BULK' | 'RETARGETING' | 'MARKET_AUTOMATION' | 'ENTITY'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdsFulfillmentGrouping.pdsc + + export interface AdsFulfillmentGrouping { + lineOfBusiness: LineOfBusiness; + productUrn: string; + priceUrn: string; + fulfillmentLineAccountType: FulfillmentLineAccountType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdSwapContext.pdsc + + export type AdSwapContext = 'UPDATE_IN_ORIGINAL_FEED' | 'UPDATE_FROM_NEW_UPDATES_PILL_IN_CACHED_FEED'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdTargetingEntity.pdsc + + export interface AdTargetingEntity { + facetUrn?: string; + entityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdUnwrappedUrlInfo.pdsc + + export interface AdUnwrappedUrlInfo { + unwrappedUrlMatchResult: AdUnwrappedUrlMatchResult; + clientUnwrappedUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdUnwrappedUrlMatchResult.pdsc + + export type AdUnwrappedUrlMatchResult = 'MATCH' | 'MISMATCH' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdUserActionStatus.pdsc + + export type AdUserActionStatus = 'SUCCESS' | 'FAILURE' | 'NOT_FOUND' | 'FORBIDDEN'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AdUserActionType.pdsc + + export type AdUserActionType = 'LEAD_REVOKE'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AssetType.pdsc + + export type AssetType = + | 'RETARGET' + | 'AUDIENCE_MATCHING' + | 'MARKETING_AUTOMATION' + | 'DATA_MANAGEMENT_PLATFORM'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AttributableAdEventChannel.pdsc + + export type AttributableAdEventChannel = 'LINKEDIN'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AttributableAdEventProperties.pdsc + + export interface AttributableAdEventProperties { + time: number; + impressionId: string; + attributableAdEventType: AttributableAdEventType; + isRealTimeBidding: boolean; + offsiteHeader?: Com.Linkedin.Avro2pegasus.Events.Ads.OffsiteHeader; + sponsoredCampaignGroupUrn?: string; + sponsoredCampaignUrn: string; + sponsoredCreativeUrn: string; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + isViral: boolean; + objectiveType?: ObjectiveType; + optimizationTarget?: OptimizationTarget; + chargeType?: Com.Linkedin.Avro2pegasus.Events.Ads.AdPricingType; + cost: Com.Linkedin.Avro2pegasus.Events.MoneyValue; + adExperimentUrn?: string; + parsedUserAgent?: OffsiteTrackingUserAgent; + attributableAdEventChannel: AttributableAdEventChannel; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/AttributableAdEventType.pdsc + + export type AttributableAdEventType = 'IMPRESSION' | 'CLICK'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/BidAdjustmentInfo.pdsc + + export interface BidAdjustmentInfo { + objectiveType?: ObjectiveType; + optimizationTarget?: OptimizationTarget; + experiment?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/BidSuggestionRange.pdsc + + export interface BidSuggestionRange { + min: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + max: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + default?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/CampaignAdFormat.pdsc + + export type CampaignAdFormat = + | 'CAROUSEL' + | 'SINGLE_VIDEO' + | 'SPONSORED_MESSAGE' + | 'FOLLOW_COMPANY' + | 'SPOTLIGHT' + | 'JOBS' + | 'WHITEPAPER_DOWNLOAD' + | 'TEXT_AD' + | 'STANDARD_UPDATE' + | 'SJYMBII' + | 'SPONSORED_INMAIL' + | 'SPONSORED_UPDATE_JOB_POSTING'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/CampaignFilterReason.pdsc + + export type CampaignFilterReason = + | 'TARGET_MATCH' + | 'PACING' + | 'ADVERTISER_DEDUPLICATION' + | 'CAMPAIGN_LIST_TRUNCATION' + | 'COMPANY_DEDUPLICATION' + | 'OCTR_RANKING' + | 'COMPANY_FCAP' + | 'CAMPAIGN_TYPE_FCAP' + | 'CAMPAIGN_FCAP' + | 'ONSITE_ADS_RANKING' + | 'SJYMBII_RELEVANCE' + | 'SJYMBII_CREATIVE_CHECK' + | 'DIVERSIFIED_PLACEMENT' + | 'COMPOSITE' + | 'ONSITE_BLACK_LIST_CAMPAIGN' + | 'FEED_GUARDIAN' + | 'AD_EXPERIMENT' + | 'LEADGEN_CREATIVE_CHECK' + | 'CREATIVE_SELECTION' + | 'OFFSITE_BLACK_LIST' + | 'OFFSITE_WHITE_LIST' + | 'OFFSITE_CONVERSION_ENABLED_CAMPAIGN' + | 'OFFSITE_INVENTORY_CAMPAIGN_MATCH' + | 'OFFSITE_IAB_CATEGORY_MATCH' + | 'OFFSITE_CAMPAIGN_PUBLISHER_BLACK_LIST' + | 'OFFSITE_QUALITY_SCORING' + | 'OFFSITE_BUDGET_CONTROL' + | 'OFFSITE_FLOOR_PRICE' + | 'SNOOZED_ACCOUNT' + | 'OFFSITE_IAB_CATEGORY_CAMPAIGN_WHITE_LIST' + | 'OFFSITE_PUBLISHER_CREATIVE_BLOCK' + | 'OFFSITE_INVENTORY_SEGMENT_MATCH' + | 'CREATIVES_COLLECTION_MATCH' + | 'CAMPAIGN_CACHE_VALIDATION' + | 'CREATIVE_CACHE_VALIDATION' + | 'CAMPAIGN_DEDUPLICATION' + | 'POST_INDEX_MATCH_CAMPAIGN_CAP' + | 'CREATIVE_VIDEO_ASPECT_RATIO_CHECK' + | 'REACH_AND_FREQUENCY_CAMPAIGN_LEVEL_FCAP'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/CampaignForecastingFeedbackEnum.pdsc + + export type CampaignForecastingFeedbackEnum = 'NOT_ACCURATE' | 'NOT_USEFUL' | 'NOT_ENOUGH'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/CompanyMatchEntityAction.pdsc + + export type CompanyMatchEntityAction = 'ADD' | 'REMOVE' | 'UPDATE'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/ConversionAttributionType.pdsc + + export type ConversionAttributionType = 'LAST_TOUCH_BY_CAMPAIGN' | 'LAST_TOUCH_BY_CONVERSION'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/ConversionSettings.pdsc + + export interface ConversionSettings { + postClickAttributionWindowSize: number; + postViewAttributionWindowSize: number; + adConversionActionType: Com.Linkedin.Avro2pegasus.Events.Ads.AdConversionActionType; + conversionName: string; + attributionType?: ConversionAttributionType; + conversionValue: Com.Linkedin.Avro2pegasus.Events.MoneyValue; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/DMPCompany.pdsc + + export interface DMPCompany { + organizationUrn?: string; + name?: string; + domain?: string; + companyPageUrl?: string; + stockSymbol?: string; + address?: string[]; + city?: string; + state?: string; + country?: string; + postalCode?: string; + industries?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/DMPEngagementRule.pdsc + + export interface DMPEngagementRule { + engagementSourceUrn: string; + engagementTriggerUrn: string; + timeRange?: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + timeSpan?: Com.Linkedin.Avro2pegasus.Events.Common.TimeSpan; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/DMPEntityAction.pdsc + + export type DMPEntityAction = 'ADD' | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/DMPEntityMatchStatus.pdsc + + export type DMPEntityMatchStatus = 'MATCHED' | 'UNMATCHED'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/DMPUser.pdsc + + export interface DMPUser { + id?: Com.Linkedin.Avro2pegasus.Events.Sis.TypedId; + firstName?: string; + lastName?: string; + ids?: Com.Linkedin.Avro2pegasus.Events.Sis.TypedId[]; + titleName?: string; + companyName?: string; + countryName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/FacetNameAndValue.pdsc + + export interface FacetNameAndValue { + facetName: string; + facetValue: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/FulfillmentLineAccountType.pdsc + + export type FulfillmentLineAccountType = 'BUSINESS' | 'ENTERPRISE'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/InsightTagFormat.pdsc + + export type InsightTagFormat = 'JAVASCRIPT' | 'IMAGE_PIXEL' | 'AMP' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/LanChargePriceModel.pdsc + + export type LanChargePriceModel = + | 'ADVERTISER_BID' + | 'EXTERNAL_BID' + | 'SUPPORTING_SECOND_BID' + | 'SUPPORTING_CAMPAIGN_FLOOR' + | 'RUNNING_BID'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/LeadNotificationUrlChange.pdsc + + export interface LeadNotificationUrlChange { + notificationUrl?: string; + status?: LeadNotificationUrlStatus; + startTime?: number; + endTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/LeadNotificationUrlStatus.pdsc + + export type LeadNotificationUrlStatus = 'ACTIVE' | 'PAUSED' | 'CANCELED'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/LineOfBusiness.pdsc + + export type LineOfBusiness = 'MARKETING_SOLUTIONS' | 'TALENT_SOLUTIONS' | 'LINKEDIN_ON_LINKEDIN'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/NameTermValueFeature.pdsc + + export interface NameTermValueFeature { + name: string; + term: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/ObjectiveType.pdsc + + export type ObjectiveType = + | 'LEAD_GENERATION' + | 'CREATIVE_ENGAGEMENT' + | 'WEBSITE_TRAFFIC' + | 'VIDEO_VIEW' + | 'BRAND_AWARENESS' + | 'WEBSITE_CONVERSION' + | 'WEBSITE_VISIT' + | 'ENGAGEMENT' + | 'JOB_APPLICANT' + | 'TALENT_LEAD'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/OffsiteAdTrackingCookie.pdsc + + export interface OffsiteAdTrackingCookie { + id: string; + isMemberLoggedIn: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/OffsiteTrackingAdvertiserProvidedParameters.pdsc + + export interface OffsiteTrackingAdvertiserProvidedParameters { + orderId?: string; + currency?: string; + value?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/OffsiteTrackingIdSource.pdsc + + export type OffsiteTrackingIdSource = + | 'THIRD_PARTY_ONLY' + | 'FIRST_PARTY_ONLY' + | 'THIRD_AND_FIRST_PARTY' + | 'UNIDENTIFIABLE' + | 'ONSITE_MEMBER_ID' + | 'DRAWBRIDGE_GRAPH'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/OffsiteTrackingPageUrl.pdsc + + export interface OffsiteTrackingPageUrl { + hashedPageUrl?: string; + hashedPageDomain?: string; + hashedRefererUrl?: string; + hashedRefererDomain?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/OffsiteTrackingUserAgent.pdsc + + export interface OffsiteTrackingUserAgent { + osGroup?: string; + osName?: string; + osVersion?: string; + osAppName?: string; + osBrowserVersion?: string; + osAppType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/OptimizationTarget.pdsc + + export type OptimizationTarget = + | 'ENHANCED_CONVERSION' + | 'MAX_IMPRESSION' + | 'MAX_CLICK' + | 'MAX_LEAD' + | 'MAX_CONVERSION' + | 'MAX_VIDEO_VIEW' + | 'TARGET_COST_PER_CLICK' + | 'TARGET_COST_PER_IMPRESSION' + | 'TARGET_COST_PER_VIDEO_VIEW' + | 'MAX_REACH'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/OrganizationOnsiteEngagementActionType.pdsc + + export type OrganizationOnsiteEngagementActionType = 'PIPELINE_BUILDER_LEAD_SUBMIT' | 'JOB_APPLY'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/OrganizationOnsiteEngagementContext.pdsc + + export interface OrganizationOnsiteEngagementContext { + organizationUrn: string; + organizationLandingPageUrn?: string; + organizationOnsiteEngagementActionType: OrganizationOnsiteEngagementActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/PixelFireEventProperties.pdsc + + export interface PixelFireEventProperties { + time: number; + pixelRequestId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + oatmlCookieData?: OffsiteAdTrackingCookie; + countryUrn?: string; + parsedUserAgent?: OffsiteTrackingUserAgent; + offsiteTrackingIdSource: OffsiteTrackingIdSource; + insightTagFormat?: InsightTagFormat; + advertiserProvidedParameters?: OffsiteTrackingAdvertiserProvidedParameters; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/SponsoredMessageInfo.pdsc + + export interface SponsoredMessageInfo { + sponsoredMessageContentUrn: string; + optionClickedIndex?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/TargetingAnd.pdsc + + export interface TargetingAnd { + and: TargetingOr[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/TargetingCriteria.pdsc + + export interface TargetingCriteria { + include: TargetingAnd; + exclude?: TargetingOr; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/TargetingOr.pdsc + + export interface TargetingOr { + or: { [id: string]: string[] }; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/ThirdPartyAdClickChannels.pdsc + + export type ThirdPartyAdClickChannels = + | 'GOOGLE_ADS' + | 'DOUBLECLICK' + | 'MICROSOFT_BING' + | 'FACEBOOK' + | 'LINKEDIN' + | 'OTHER' + | 'NONE'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/ThirdPartyClickIdentifiers.pdsc + + export interface ThirdPartyClickIdentifiers { + adClickChannel?: ThirdPartyAdClickChannels; + urlUTMFields?: UrlUTMFields; + hasDoubleClickClickIdentifier: boolean; + hasFacebookClickIdentifier: boolean; + hasGoogleAdsClickIdentifier: boolean; + hasBingAdsClickIdentifier: boolean; + hasLinkedInClickIdentifier: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/UrlUTMFields.pdsc + + export interface UrlUTMFields { + utmSource?: string; + utmMedium?: string; + utmCampaign?: string; + utmTerm?: string; + utmContent?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/ValidationFailure.pdsc + + export interface ValidationFailure { + code: string; + detail: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ads/VideoAdsEngagementType.pdsc + + export type VideoAdsEngagementType = + | 'UNKNOWN' + | 'NOT_PROVIDED' + | 'START' + | 'FIRST_QUARTILE' + | 'MIDPOINT' + | 'THIRD_QUARTILE' + | 'COMPLETE' + | 'MUTE' + | 'UNMUTE' + | 'PAUSE' + | 'RESUME' + | 'CREATIVE_VIEW' + | 'FULLSCREEN' + | 'EXPAND' + | 'COLLAPSE' + | 'CLOSE_LINEAR' + | 'SKIP' + | 'PLAYED' + | 'REPLAYED' + | 'VIDEO_VIEWED' + | 'ENTERED_VIEW_MODE' + | 'FULL_COMPLETE' + | 'SEEK'; + // Generated from: com/linkedin/avro2pegasus/events/common/ads/VideoUIContext.pdsc + + export type VideoUIContext = 'FEED' | 'FULL_SCREEN_PLAYER' | 'PLAYER' | 'FORM' | 'ADS_LANDING_PAGE'; + namespace Pinot { + // Generated from: com/linkedin/avro2pegasus/events/common/ads/pinot/ServingLocation.pdsc + + export type ServingLocation = 'UNKNOWN' | 'ON_SITE' | 'OFF_SITE'; + } + } + namespace Amplifier { + // Generated from: com/linkedin/avro2pegasus/events/common/amplifier/AmplifierNotificationDeliveryChannel.pdsc + + export type AmplifierNotificationDeliveryChannel = 'IN_APP_NOTIFICATION' | 'PUSH' | 'IN_APP_ALERT'; + // Generated from: com/linkedin/avro2pegasus/events/common/amplifier/AmplifierNotificationType.pdsc + + export type AmplifierNotificationType = 'LIVE_VIDEO' | 'LIVE_VIDEO_TEST'; + } + namespace Approvals { + // Generated from: com/linkedin/avro2pegasus/events/common/approvals/ActionLogEventType.pdsc + + export type ActionLogEventType = 'INFO' | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/common/approvals/ApprovalStatus.pdsc + + export type ApprovalStatus = + | 'DRAFT' + | 'APPROVED' + | 'CANCELED' + | 'ERROR' + | 'IN_PROGRESS' + | 'NOT_APPLICABLE' + | 'NOT_STARTED' + | 'OUTDATED' + | 'REJECTED' + | 'DISCARDED'; + } + namespace Authoredcontent { + // Generated from: com/linkedin/avro2pegasus/events/common/authoredcontent/AuthoredContentAuditOperationType.pdsc + + export type AuthoredContentAuditOperationType = + | 'ACTIVATE' + | 'DEACTIVATE' + | 'CREATE' + | 'UPDATE' + | 'DELETE' + | 'TRANSLATION'; + // Generated from: com/linkedin/avro2pegasus/events/common/authoredcontent/AuthoredContentTranslationAuditInfo.pdsc + + export interface AuthoredContentTranslationAuditInfo { + translationPriority: PriorityType; + isMachineTranslation: boolean; + translationStatus: TranslationStatus; + language: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/events/common/authoredcontent/PriorityType.pdsc + + export type PriorityType = 'NORMAL' | 'URGENT' | 'INTERNAL'; + // Generated from: com/linkedin/avro2pegasus/events/common/authoredcontent/TranslationStatus.pdsc + + export type TranslationStatus = 'PENDING' | 'COMPLETE'; + } + namespace Businessprocessmonitoring { + // Generated from: com/linkedin/avro2pegasus/events/common/businessprocessmonitoring/BusinessProcessMonitoringNamespace.pdsc + + export type BusinessProcessMonitoringNamespace = 'HIRING_PLATFORM' | 'JOB_POSTINGS'; + } + namespace Cap { + // Generated from: com/linkedin/avro2pegasus/events/common/cap/ProxyPhoneNumberRecord.pdsc + + export interface ProxyPhoneNumberRecord { + vendorType: ProxyPhoneVendorType; + memberUrn: string; + seatUrn: string; + memberPhoneNumberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/cap/ProxyPhoneVendorType.pdsc + + export type ProxyPhoneVendorType = 'TWILIO' | 'ZHIYU' | 'EXOTEL'; + } + namespace Colleagues { + // Generated from: com/linkedin/avro2pegasus/events/common/colleagues/ColleagueRelationshipErrorType.pdsc + + export type ColleagueRelationshipErrorType = + | 'ALREADY_EXISTS' + | 'CANT_ADD_SELF' + | 'NO_RECORD_FOUND' + | 'ORG_CHECK_FAILED' + | 'ORG_TREE_CONFLICT' + | 'TEAM_SIZE_LIMIT_EXCEEDED' + | 'SERVICE_ERROR' + | 'INVALID_CREATE_STATE' + | 'DUPLICATE_ENTRY' + | 'NOT_SUPPORTED' + | 'BAD_INPUT_DATA' + | 'NO_ACTION_REQUIRED' + | 'UNAUTHORIZED' + | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/common/colleagues/ColleagueRelationshipState.pdsc + + export type ColleagueRelationshipState = + | 'PENDING' + | 'CONFIRMED' + | 'IGNORED' + | 'PENDING_CONNECT_REQUEST' + | 'REMOVED_BY_OWNER' + | 'REMOVED_BY_COLLEAGUE'; + // Generated from: com/linkedin/avro2pegasus/events/common/colleagues/ColleagueRelationshipStatus.pdsc + + export type ColleagueRelationshipStatus = 'CURRENT' | 'PAST'; + // Generated from: com/linkedin/avro2pegasus/events/common/colleagues/ColleagueRelationshipType.pdsc + + export type ColleagueRelationshipType = 'MANAGER' | 'DIRECT_REPORT' | 'PEER' | 'EXTENDED_PEER'; + // Generated from: com/linkedin/avro2pegasus/events/common/colleagues/ColleagueRelationshipUpdateRecord.pdsc + + export interface ColleagueRelationshipUpdateRecord { + colleagueRelationshipType?: ColleagueRelationshipType; + colleagueRelationshipStatus?: ColleagueRelationshipStatus; + colleagueRelationshipState?: ColleagueRelationshipState; + } + // Generated from: com/linkedin/avro2pegasus/events/common/colleagues/DeleteType.pdsc + + export type DeleteType = 'MEMBER_TRIGGERED' | 'CONNECTION_BREAK' | 'ACCOUNT_PURGE'; + } + namespace Commerce { + namespace Checkoutwallettracking { + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/checkoutwallettracking/AmountDetails.pdsc + + export interface AmountDetails { + isTaxIdProvided: boolean; + preTaxAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + taxAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + totalAmountPayable: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + creditAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + discountAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/checkoutwallettracking/CreditCardType.pdsc + + export type CreditCardType = + | 'AMERICAN_EXPRESS' + | 'MASTERCARD' + | 'VISA' + | 'DISCOVER' + | 'DINERS_CLUB' + | 'JCB'; + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/checkoutwallettracking/PaymentMethodDetails.pdsc + + export interface PaymentMethodDetails { + paymentMethod: Com.Linkedin.Avro2pegasus.Events.Common.Commerce.Payment.PaymentInstrumentType; + creditCardType?: CreditCardType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/checkoutwallettracking/SubscriptionsDetails.pdsc + + export interface SubscriptionsDetails { + subscriptionsOrderStatus?: subscriptionsOrderStatus; + billingCycle?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/checkoutwallettracking/subscriptionsOrderStatus.pdsc + + export type subscriptionsOrderStatus = 'FREE' | 'PAID' | 'UNKNOWN'; + } + namespace Contracts { + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/contracts/CommerceContractAmendedActivity.pdsc + + export interface CommerceContractAmendedActivity { + amendmentUrn: string; + contractChanges: ContractChangeType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/contracts/CommerceContractChangesActivity.pdsc + + export interface CommerceContractChangesActivity { + commerceContractAmendedActivity?: CommerceContractAmendedActivity; + isContractActivatedActivity: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/contracts/ContractChangeType.pdsc + + export type ContractChangeType = 'BILLING_INSTRUCTIONS'; + } + namespace Payment { + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/payment/PaymentInstrumentType.pdsc + + export type PaymentInstrumentType = + | 'CREDIT_CARD' + | 'PAYPAL' + | 'SEPA_DIRECT_DEBIT' + | 'IOS' + | 'ALIPAY' + | 'INVOICE' + | 'ACH' + | 'CHECK' + | 'ADYEN_ONLINE_BANKING'; + } + namespace Salesproposals { + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/salesproposals/SalesProposalState.pdsc + + export type SalesProposalState = + | 'DRAFT' + | 'FINAL_CREDIT_CHECK_IN_PROGRESS' + | 'PROMOTE_IN_PROGRESS' + | 'PROMOTED' + | 'PENDING_APPROVAL' + | 'STAGED' + | 'ACCEPTED'; + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/salesproposals/SalesProposalStateTransition.pdsc + + export interface SalesProposalStateTransition { + fromState: SalesProposalState; + toState: SalesProposalState; + } + } + namespace Subscription { + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/subscription/SubscriptionLifecycleEventType.pdsc + + export type SubscriptionLifecycleEventType = + | 'CREATED' + | 'RENEWED' + | 'ACTIVATED' + | 'EXPIRED' + | 'SUSPENDED' + | 'CANCELLED_EFFECTIVE_IMMEDIATELY' + | 'CANCELLED_EFFECTIVE_END_OF_BILLING_CYCLE' + | 'EXCHANGED'; + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/subscription/SubscriptionPurchaseChannel.pdsc + + export type SubscriptionPurchaseChannel = 'ONLINE' | 'OFFLINE' | 'CSGRANTED' | 'IOS' | 'FIELD'; + // Generated from: com/linkedin/avro2pegasus/events/common/commerce/subscription/SubscriptionType.pdsc + + export type SubscriptionType = + | 'SUBS' + | 'LIL_INSTANT' + | 'GROWTH_WVMP' + | 'GROWTH_JOB_INSIGHTS' + | 'JOBS' + | 'ADS' + | 'CAP' + | 'CCP' + | 'TLP' + | 'BULK' + | 'RECR' + | 'OWLT' + | 'LYND' + | 'LIL' + | 'INV' + | 'ELP' + | 'ORD' + | 'PROPOSAL'; + } + } + namespace Communications { + // Generated from: com/linkedin/avro2pegasus/events/common/communications/AnswerCommentLiked.pdsc + + export interface AnswerCommentLiked {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/AnswerLiked.pdsc + + export interface AnswerLiked {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ApplyReminder.pdsc + + export interface ApplyReminder {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/AuthorConnectionInterested.pdsc + + export interface AuthorConnectionInterested { + commonInterestUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/Birthday.pdsc + + export interface Birthday {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/BreakingNews.pdsc + + export interface BreakingNews {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CandidateFeedbackRequest.pdsc + + export interface CandidateFeedbackRequest {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ChannelDroppedReason.pdsc + + export type ChannelDroppedReason = + | 'MODEL_BASED_FILTER' + | 'MEMBER_SETTINGS_BASED_FILTER' + | 'APP_NOT_AVAILABLE'; + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ChinaSMSJobRecommendation.pdsc + + export interface ChinaSMSJobRecommendation { + title: string; + locationId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommentedOnAnswer.pdsc + + export interface CommentedOnAnswer {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommenterConnectionInterested.pdsc + + export interface CommenterConnectionInterested { + commonInterestUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommsGatewayTestConfigInfo.pdsc + + export interface CommsGatewayTestConfigInfo { + initialRequestTestConfigUrn: string; + fromInAppRequestTestConfigUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommunicationChainAggregationEvent.pdsc + + export interface CommunicationChainAggregationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + communicationHeader: CommunicationChainTrackingHeader; + aggregatedChainTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommunicationChainDroppedEvent.pdsc + + export interface CommunicationChainDroppedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + communicationHeader: CommunicationChainTrackingHeader; + droppedReason: Com.Linkedin.Avro2pegasus.Events.Communications.CommunicationDroppedReason; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommunicationChainEventType.pdsc + + export type CommunicationChainEventType = 'DROP' | 'INFO' | 'AGGREGATION' | 'QUEUED'; + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommunicationChainInitEvent.pdsc + + export interface CommunicationChainInitEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + communicationHeader: CommunicationChainTrackingHeader; + recipientUrn: string; + campaignKey: string; + batchId?: string; + parentChainTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + contentUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommunicationChainTrackingHeader.pdsc + + export interface CommunicationChainTrackingHeader { + chainTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + eventType: CommunicationChainEventType; + message?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommunicationRequestOrigin.pdsc + + export type CommunicationRequestOrigin = 'NORMAL' | 'OFFLINE'; + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommunicationScore.pdsc + + export interface CommunicationScore { + modelId: string; + scoreThreshold: number; + finalScore: number; + rawScore?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CommunicationType.pdsc + + export type CommunicationType = + | 'SOCIAL_CONVERSATION_ACTION' + | 'JOB_CHANGE' + | 'CONNECTION_SUGGESTION' + | 'PYMK' + | 'MENTOR_RECOMMENDATION' + | 'MENTEE_INTEREST' + | 'MENTOR_MATCH' + | 'CONTACT_JOIN' + | 'DAILY_DIGEST' + | 'FOLLOW_RECOMMENDATION' + | 'COMPANY_EXIT_ANNIVERSARY' + | 'CONNECTION_ANNIVERSARY' + | 'MEET_NEW_HIRE' + | 'TALKING_ABOUT' + | 'CONTENT_PROCESSING_COMPLETE' + | 'SEARCH_APPEARANCE' + | 'SKILL_ADVANCEMENT_INSIGHT' + | 'JOB_ADVANCEMENT_INSIGHT' + | 'COMPANY_INSIGHT' + | 'JOB_INSIGHT' + | 'CANDIDATE_FEEDBACK_REQUEST' + | 'APPLY_REMINDER' + | 'PROFINDER_CONSUMER_SERVICE_PROPOSAL_REMINDER' + | 'PROFINDER_PROVIDER_NEW_LEAD' + | 'VIEWED_JOB_REMINDER' + | 'OFFSITE_CONTENT_CREATION' + | 'INFREQUENT_CONTENT_CREATION' + | 'FIRST_TIME_CONTENT_CREATION' + | 'BREAKING_NEWS' + | 'INVITATION_ACCEPTANCE' + | 'WORK_ANNIVERSARY' + | 'BIRTHDAY' + | 'WHERE_YOU_LEFT_OFF' + | 'WVMP_WHILE_ANONYMOUS' + | 'CONTENT_CREATION_WEEKLY_SUMMARY' + | 'HIRING_TREND_INSIGHT' + | 'MEMBER_MESSAGE' + | 'GROUP_CONVERSATION_MESSAGE' + | 'ANSWER_LIKED' + | 'COMMENTED_ON_ANSWER' + | 'ANSWER_COMMENT_LIKED' + | 'FOLLOWED_QUESTION_ANSWERED' + | 'QUESTION_ANSWERED' + | 'QUESTION_FOLLOWED' + | 'QUESTION_SHARED' + | 'TARGETED_QUESTION' + | 'JYMBII' + | 'JOB_APPLICATION_VIEWED_V2' + | 'NEW_APPLICANT' + | 'MENTIONED_IN_THE_NEWS' + | 'PUBLISHED_BY_YOUR_NETWORK' + | 'SHARED_BY_YOUR_NETWORK' + | 'PEOPLE_FOLLOW' + | 'SPEAKEASY_MENTION' + | 'MENTOR_RECOMMENDATION_REMINDER' + | 'MENTEE_INTEREST_REMINDER' + | 'MENTOR_MATCH_REMINDER' + | 'SKILL_ENDORSEMENT' + | 'PROFINDER_CONSUMER_SERVICE_PROPOSAL_FIRST_REMINDER' + | 'PROFINDER_CONSUMER_SERVICE_PROPOSAL_SECOND_REMINDER' + | 'PROFINDER_CONSUMER_SERVICE_PROPOSAL_THIRD_REMINDER' + | 'WEEKLY_BITE_RECOMMENDATION' + | 'AUTHOR_CONNECTION_INTERESTED' + | 'COMMENTER_CONNECTION_INTERESTED' + | 'PROFINDER_PROVIDER_NEW_LEAD_V2' + | 'SALES_LEAD_PROFILE_VIEW_SIGNAL' + | 'MOVED_CITY' + | 'PROMOTION' + | 'MEETING' + | 'EVENT_FOLLOW_UP_DIGEST' + | 'CAP_IMPORT_ALERT' + | 'CAP_HIRING_MANAGER_REVIEW_ALERT' + | 'CAP_SEARCH_ALERT' + | 'CAP_JOB_APPLICATION' + | 'CAP_JOB_EXPIRATION' + | 'CAP_NEW_INTERESTED_CANDIDATES_ALERT' + | 'CAP_CANDIDATE_FEEDBACK_RECEIVED' + | 'PROFILE_EDIT_INSIGHT' + | 'NEW_JOBS_IN_SAVED_SEARCH' + | 'SALARY_WORK_ANNIVERSARY' + | 'BECOME_OPEN_CANDIDATE' + | 'STORYLINE_COMMENT_LIKE' + | 'STORYLINE_COMMENT_REPLY' + | 'STORYLINE_COMMENT_MENTION' + | 'MOST_POPULAR_POST' + | 'DREAM_COMPANY' + | 'CONTACT_WORK_ANNIVERSARY' + | 'GROUPS_INVITE' + | 'GROUPS_INVITE_ACCEPTED' + | 'GROUPS_JOIN_REQUEST' + | 'GROUPS_JOIN_REQUEST_ACCEPTED' + | 'GROUPS_MEMBER_PROMOTED' + | 'SOCIAL_ACTIVITY_GROUPS_POST' + | 'SOCIAL_ACTIVITY_GROUPS_MENTION' + | 'GROUPS_MENTION' + | 'GROUPS_POST_FLAGGED' + | 'MENTEE_RECOMMENDATION' + | 'ONLINE_JOB_NEW_APPLICANT' + | 'PREMIUM_INMAIL' + | 'SHARED_BY_YOUR_GROUP' + | 'PROFILE_ENGAGEMENT_INSIGHT_POSITION' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION' + | 'PROFILE_ENGAGEMENT_INSIGHT_PHOTO' + | 'HIRING_MANAGER_SMART_NOTE_MENTIONED' + | 'EMPLOYEE_EXPERIENCE' + | 'NOTIFICATIONS_DIGEST' + | 'HIRING_MANAGER_SMART_NOTE_REPLIED' + | 'PROFILE_ENGAGEMENT_INSIGHT_INDUSTRY' + | 'AUTOMATED_SOURCING_CANDIDATES' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE' + | 'PROFILE_ENGAGEMENT_INSIGHT_POSITION_UPDATE' + | 'SALES_LEAD_POSITION_CHANGE' + | 'PREMIUM_REPORT' + | 'NEW_MEMBER_FOLLOW_UP' + | 'SOCIAL_ACTIVITY_CYMBII_COMMENT' + | 'SOCIAL_ACTIVITY_CYMBII_MENTION' + | 'CYMBII_COMMENT_MENTION' + | 'CYMBII_SUBSCRIBED' + | 'CYMBII_COMMENT_SUBSCRIBED' + | 'APPLICANT_PROFILE_VIEWED' + | 'HELPCENTER_FORUM_ANSWER_POSTED' + | 'HELPCENTER_FORUM_ANSWER_ACCEPTED' + | 'HELPCENTER_CASE_UPDATE' + | 'PREMIUM_CAREER_CONTENT_RECOMMENDED' + | 'MENTEE_MESSAGE_NUDGE' + | 'NETWORK_YOU_MAY_KNOW' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE_DEGREE' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE_FIELD_OF_STUDY' + | 'PROFILE_ENGAGEMENT_INSIGHT_POSITION_UPDATE_DATES' + | 'HIRE_INMAIL' + | 'HIRE_INMAIL_REPLY' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE_FOS' + | 'SALARY_INSIGHTS_AFTER_JOBS_APPLIED' + | 'TROUBLE_LOGGING_IN' + | 'MEMBER_TO_MEMBER_INVITE' + | 'UNANSWERED_REFERRAL_REQUEST' + | 'MEMBER_REGISTERED_FOR_EVENT' + | 'EVENT_REMINDER' + | 'EVENT_STARTING' + | 'EVENT_CONNECTION_ACTIVITY' + | 'SHARED_BY_YOUR_CONTACT' + | 'UBIQUITOUS_PARTICIPATION_NEW_JOB_APPLICANT' + | 'JOB_RECOMMENDATION' + | 'INVESTOR_RECOMMENDATION' + | 'ENTREPRENEUR_RECOMMENDATION' + | 'MEMBER_TO_GUEST_INVITE' + | 'LEARNING_ENTERPRISE_LEARNER_ACTIVATION' + | 'COMPANY_REVIEW_APPROVED' + | 'COMPANY_REVIEW_REJECTED' + | 'COMPANY_REVIEW_DELETED' + | 'HIRING_PROJECT_APPROVAL_REQUESTED' + | 'HIRING_PROJECT_APPROVAL_APPROVED' + | 'HIRING_PROJECT_APPROVAL_REJECTED' + | 'COMPANY_REVIEW_RECOMMENDED_BY_INDUSTRY' + | 'USE_V2' + | 'HIRING_PLATFORM_AWAITING_INTERVIEW_FEEDBACK' + | 'HIRING_PLATFORM_INTERVIEW_FEEDBACK_RECEIVED' + | 'HIRING_PLATFORM_INTERVIEWER_REJECTED_INVITE' + | 'HIRING_PLATFORM_INTERVIEWER_ACCEPTED_INVITE' + | 'HIRING_PLATFORM_CANDIDATE_MOVED_STAGES' + | 'HIRING_PLATFORM_CANDIDATE_SCHEDULED_ONE_TO_ONE_SCREEN' + | 'HIRING_PLATFORM_AWAITING_FEEDBACK_REMINDER' + | 'HIRING_PLATFORM_ADDED_TO_HIRING_PROJECT' + | 'SHARED_BY_YOUR_EXTENDED_NETWORK' + | 'PREMIUM_INMAIL_INITIAL' + | 'PREMIUM_INMAIL_REPLY' + | 'UPDATE_ON_YOUR_COMPANY_REVIEW_ANSWER' + | 'NEW_ANSWER_FOR_COMPANY_REVIEW_QUESTION_YOU_ANSWERED' + | 'SERIES_INVITATION' + | 'SERIES_FOLLOW' + | 'CUSTOM_INVITE_REPLY' + | 'NEW_ANSWER_FOR_CR_QUESTION_YOU_ANSWERED' + | 'JOBS_P4P_VOLUME_DISCOUNT_RUNNING_LOW' + | 'HIRING_PLATFORM_CANDIDATE_INTERVIEW_NOTICE' + | 'HIRING_PLATFORM_CANDIDATE_ACCEPT_INTERVIEW' + | 'HIRING_PLATFORM_CANDIDATE_REJECT_INTERVIEW' + | 'CYMBII_BASED_ON_AUTHORS_FOLLOWED' + | 'INACTIVE_MENTEE' + | 'FEATURED_IN_STORYLINE' + | 'EDITORIAL_INSIGHT' + | 'JOB_SUSPENDED' + | 'JOB_FREEMIUM_UPSELL'; + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CompanyExitAnniversary.pdsc + + export interface CompanyExitAnniversary {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CompanyInsight.pdsc + + export interface CompanyInsight {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ConnectionAnniversary.pdsc + + export interface ConnectionAnniversary {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ConnectionSuggestion.pdsc + + export interface ConnectionSuggestion {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ContactJoin.pdsc + + export interface ContactJoin {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ContentCreationWeeklySummary.pdsc + + export interface ContentCreationWeeklySummary {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ContentProcessingComplete.pdsc + + export interface ContentProcessingComplete {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/CustomInviteReply.pdsc + + export interface CustomInviteReply { + messagingDeliveryHeader: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.MessagingDeliveryHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/DailyDigest.pdsc + + export interface DailyDigest {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/DreamCompany.pdsc + + export interface DreamCompany {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/EventFollowUpDigest.pdsc + + export interface EventFollowUpDigest { + highlightedFeedUpdateUrns: string[]; + highlightedConnectionUrns: string[]; + highlightedSpeakerUrns: string[]; + connectionsMadeCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/FirstTimeContentCreation.pdsc + + export interface FirstTimeContentCreation {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/FollowedQuestionAnswered.pdsc + + export interface FollowedQuestionAnswered {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/FollowRecommendation.pdsc + + export interface FollowRecommendation {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/GenericInvitationAcceptance.pdsc + + export interface GenericInvitationAcceptance { + invitationType: GenericInvitationType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/GenericInvitationCreation.pdsc + + export interface GenericInvitationCreation { + invitationType: GenericInvitationType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/GenericInvitationType.pdsc + + export type GenericInvitationType = 'EVENT'; + // Generated from: com/linkedin/avro2pegasus/events/common/communications/GroupConversationMessage.pdsc + + export interface GroupConversationMessage {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/HireInmail.pdsc + + export interface HireInmail { + creationTime: number; + organizationUrn?: string; + messagingThreadUrn?: string; + inboxMessagingThreadUrn?: string; + threadUrn?: string; + hireMailboxUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/HireProfileReviewRequest.pdsc + + export interface HireProfileReviewRequest { + reviewRequestUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/HiringManagerBudgetRunOut.pdsc + + export interface HiringManagerBudgetRunOut {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/HiringManagerFeedbackReceived.pdsc + + export interface HiringManagerFeedbackReceived {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/HiringManagerLowBudget.pdsc + + export interface HiringManagerLowBudget {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/HiringPlatformInformation.pdsc + + export interface HiringPlatformInformation { + hiringContextUrn: string; + hiringProjectUrn?: string; + hiringProjectCandidateUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/HiringTrendInsight.pdsc + + export interface HiringTrendInsight {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/InAppNotificationType.pdsc + + export type InAppNotificationType = + | 'SHARE' + | 'JOB_CHANGE_PROP' + | 'SHARE_MENTION' + | 'SHARE_SUBSCRIBED' + | 'SHARE_COMMENT' + | 'SHARE_COMMENT_MENTION' + | 'SHARE_COMMENT_SUBSCRIBED' + | 'ARTICLE' + | 'ARTICLE_COMMENT' + | 'ARTICLE_COMMENT_MENTION' + | 'CONTENT_PROCESSING_COMPLETE' + | 'PROFINDER_SERVICE_PROPOSAL_48_HOUR_REMINDER' + | 'PROFINDER_SERVICE_PROPOSAL_4_DAY_REMINDER' + | 'PROFINDER_SERVICE_PROPOSAL_7_DAY_REMINDER' + | 'CONNECTION_SUGGESTION' + | 'PYMK' + | 'MENTOR_RECOMMENDATION' + | 'MENTEE_INTEREST' + | 'MENTOR_MATCH' + | 'CONTACT_JOIN' + | 'DAILY_DIGEST' + | 'FOLLOW_RECOMMENDATION' + | 'COMPANY_EXIT_ANNIVERSARY' + | 'CONNECTION_ANNIVERSARY' + | 'MEET_NEW_HIRE' + | 'TALKING_ABOUT' + | 'SEARCH_APPEARANCE' + | 'SKILL_ADVANCEMENT_INSIGHT' + | 'JOB_ADVANCEMENT_INSIGHT' + | 'COMPANY_INSIGHT' + | 'JOB_INSIGHT' + | 'PROFINDER_PROVIDER_NEW_LEAD' + | 'CANDIDATE_FEEDBACK_REQUEST' + | 'APPLY_REMINDER' + | 'VIEWED_JOB_REMINDER' + | 'OFFSITE_CONTENT_CREATION' + | 'FIRST_TIME_CONTENT_CREATION' + | 'INFREQUENT_CONTENT_CREATION' + | 'BREAKING_NEWS' + | 'INVITATION_ACCEPTANCE' + | 'WORK_ANNIVERSARY' + | 'BIRTHDAY' + | 'WHERE_YOU_LEFT_OFF' + | 'WVMP_WHILE_ANONYMOUS' + | 'QUESTION_ANSWERED' + | 'QUESTION_FOLLOWED' + | 'FOLLOWED_QUESTION_ANSWERED' + | 'TARGETED_QUESTION' + | 'QUESTION_SHARED' + | 'COMMENTED_ON_ANSWER' + | 'ANSWER_LIKED' + | 'ANSWER_COMMENT_LIKED' + | 'JYMBII_V2' + | 'JOB_APPLICATION_VIEWED_V2' + | 'HIRING_TREND_INSIGHT' + | 'NEW_APPLICANT' + | 'MENTIONED_IN_THE_NEWS' + | 'PUBLISHED_BY_YOUR_NETWORK' + | 'SHARED_BY_YOUR_NETWORK' + | 'PEOPLE_FOLLOW' + | 'CONTENT_CREATION_WEEKLY_SUMMARY' + | 'SPEAKEASY_MENTION' + | 'MENTOR_RECOMMENDATION_REMINDER' + | 'MENTEE_INTEREST_REMINDER' + | 'MENTOR_MATCH_REMINDER' + | 'SKILL_ENDORSEMENT' + | 'WEEKLY_BITE_RECOMMENDATION' + | 'AUTHOR_CONNECTION_INTERESTED' + | 'COMMENTER_CONNECTION_INTERESTED' + | 'HIRING_MANAGER_FEEDBACK_RECEIVED' + | 'HIRING_MANAGER_LOW_BUDGET' + | 'HIRING_MANAGER_BUDGET_RUN_OUT' + | 'SALES_LEAD_PROFILE_VIEW_SIGNAL' + | 'MOVED_CITY' + | 'PROMOTION' + | 'ARTICLE_SUBSCRIBED' + | 'ARTICLE_COMMENT_SUBSCRIBED' + | 'MEETING' + | 'CAP_IMPORT_ALERT' + | 'CAP_HIRING_MANAGER_REVIEW_ALERT' + | 'CAP_SEARCH_ALERT' + | 'CAP_JOB_APPLICATION' + | 'CAP_JOB_EXPIRATION' + | 'CAP_NEW_INTERESTED_CANDIDATES_ALERT' + | 'CAP_CANDIDATE_FEEDBACK_RECEIVED' + | 'PROFILE_EDIT_INSIGHT' + | 'NEW_JOBS_IN_SAVED_SEARCH' + | 'SALARY_WORK_ANNIVERSARY' + | 'WORK_ANNIVERSARY_PROP' + | 'BIRTHDAY_PROP' + | 'MEETING_PROP' + | 'STORYLINE_COMMENT_LIKE' + | 'STORYLINE_COMMENT_REPLY' + | 'STORYLINE_COMMENT_MENTION' + | 'BECOME_OPEN_CANDIDATE' + | 'MOST_POPULAR_POST' + | 'DREAM_COMPANY' + | 'CONTACT_WORK_ANNIVERSARY' + | 'GROUPS_INVITE' + | 'GROUPS_INVITE_ACCEPTED' + | 'GROUPS_JOIN_REQUEST' + | 'GROUPS_JOIN_REQUEST_ACCEPTED' + | 'GROUPS_MEMBER_PROMOTED' + | 'RESHARE' + | 'SOCIAL_ACTIVITY_GROUPS_POST' + | 'SOCIAL_ACTIVITY_GROUPS_MENTION' + | 'GROUPS_MENTION' + | 'GROUPS_POST_FLAGGED' + | 'MENTEE_RECOMMENDATION' + | 'ONLINE_JOB_NEW_APPLICANT' + | 'SHARED_BY_YOUR_GROUP' + | 'STORYLINE_COMMENT' + | 'PROFILE_ENGAGEMENT_INSIGHT_POSITION' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION' + | 'PROFILE_ENGAGEMENT_INSIGHT_PHOTO' + | 'HIRING_MANAGER_SMART_NOTE_MENTIONED' + | 'EMPLOYEE_EXPERIENCE' + | 'HIRING_MANAGER_SMART_NOTE_REPLIED' + | 'PROFILE_ENGAGEMENT_INSIGHT_INDUSTRY' + | 'AUTOMATED_SOURCING_CANDIDATES' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE' + | 'PROFILE_ENGAGEMENT_INSIGHT_POSITION_UPDATE' + | 'SALES_LEAD_POSITION_CHANGE' + | 'PREMIUM_REPORT' + | 'NEW_MEMBER_FOLLOW_UP' + | 'SOCIAL_ACTIVITY_CYMBII_COMMENT' + | 'SOCIAL_ACTIVITY_CYMBII_MENTION' + | 'CYMBII_COMMENT_MENTION' + | 'CYMBII_SUBSCRIBED' + | 'CYMBII_COMMENT_SUBSCRIBED' + | 'APPLICANT_PROFILE_VIEWED' + | 'HELPCENTER_FORUM_ANSWER_POSTED' + | 'HELPCENTER_FORUM_ANSWER_ACCEPTED' + | 'HELPCENTER_CASE_UPDATE' + | 'CYMBII_COMMENT' + | 'PREMIUM_CAREER_CONTENT_RECOMMENDED' + | 'PROFINDER_SERVICE_PROPOSAL_FIRST_REMINDER' + | 'PROFINDER_SERVICE_PROPOSAL_SECOND_REMINDER' + | 'PROFINDER_SERVICE_PROPOSAL_THIRD_REMINDER' + | 'MENTEE_MESSAGE_NUDGE' + | 'NETWORK_YOU_MAY_KNOW' + | 'COMMENTED_ON_YOUR_UPDATE' + | 'REACTED_TO_YOUR_UPDATE' + | 'REACTED_TO_UPDATE_MENTIONING_YOU' + | 'COMMENTED_ON_UPDATE_MENTIONING_YOU' + | 'REACTED_TO_YOUR_COMMENT' + | 'REACTED_TO_COMMENT_MENTIONING_YOU' + | 'MENTIONED_YOU_IN_THIS' + | 'REPLIED_TO_COMMENT_MENTIONING_YOU' + | 'ALSO_COMMENTED_ON_THIS' + | 'REPLIED_TO_YOUR_COMMENT' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE_DEGREE' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE_FIELD_OF_STUDY' + | 'PROFILE_ENGAGEMENT_INSIGHT_POSITION_UPDATE_DATES' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE_FOS' + | 'SALARY_INSIGHTS_AFTER_JOBS_APPLIED' + | 'RESHARED_YOUR_UPDATE' + | 'UNANSWERED_REFERRAL_REQUEST' + | 'MEMBER_REGISTERED_FOR_EVENT' + | 'EVENT_REMINDER' + | 'EVENT_STARTING' + | 'EVENT_CONNECTION_ACTIVITY' + | 'SHARED_BY_YOUR_CONTACT' + | 'UBIQUITOUS_PARTICIPATION_NEW_JOB_APPLICANT' + | 'JOB_RECOMMENDATION' + | 'INVESTOR_RECOMMENDATION' + | 'ENTREPRENEUR_RECOMMENDATION' + | 'LEARNING_ENTERPRISE_LEARNER_ACTIVATION' + | 'COMPANY_REVIEW_APPROVED' + | 'COMPANY_REVIEW_REJECTED' + | 'COMPANY_REVIEW_DELETED' + | 'COMMENTED_ON_YOUR_PROP' + | 'REACTED_TO_YOUR_PROP' + | 'COMPANY_REVIEW_RECOMMENDED_BY_INDUSTRY' + | 'USE_V2' + | 'SHARED_BY_YOUR_EXTENDED_NETWORK' + | 'UPDATE_ON_YOUR_COMPANY_REVIEW_ANSWER' + | 'NEW_ANSWER_FOR_COMPANY_REVIEW_QUESTION_YOU_ANSWERED' + | 'SERIES_INVITATION' + | 'SERIES_FOLLOW' + | 'NEW_ANSWER_FOR_CR_QUESTION_YOU_ANSWERED' + | 'INACTIVE_MENTEE' + | 'CYMBII_BASED_ON_AUTHORS_FOLLOWED' + | 'HIRE_INMAIL_REMINDER' + | 'FEATURED_IN_STORYLINE' + | 'EDITORIAL_INSIGHT' + | 'PREMIUM_FREE_TRIAL_ELIGIBLE_REACTIVATE' + | 'RESUME_DOWNLOADED'; + // Generated from: com/linkedin/avro2pegasus/events/common/communications/InfrequentContentCreation.pdsc + + export interface InfrequentContentCreation {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/InvitationAcceptance.pdsc + + export interface InvitationAcceptance { + invitationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/JobAdvancementInsight.pdsc + + export interface JobAdvancementInsight {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/JobApplicationViewedV2.pdsc + + export interface JobApplicationViewedV2 {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/JobChange.pdsc + + export interface JobChange {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/JobInsight.pdsc + + export interface JobInsight {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/Jymbii.pdsc + + export interface Jymbii {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/LegacyAuth.pdsc + + export interface LegacyAuth { + authToken: string; + authType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/LocalDeliveryTime.pdsc + + export interface LocalDeliveryTime { + date: Com.Linkedin.Avro2pegasus.Events.Common.Date; + hour: number; + minute: number; + second: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MeetNewHire.pdsc + + export interface MeetNewHire {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MemberMessage.pdsc + + export interface MemberMessage { + messagingMessageUrn?: string; + inboxMessagingMessageUrn?: string; + mailUrn?: string; + messagingThreadUrn?: string; + inboxMessagingThreadUrn?: string; + threadUrn?: string; + creationTime?: number; + isInitialMessageInMessageRequest?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MenteeInterest.pdsc + + export interface MenteeInterest {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MenteeInterestReminder.pdsc + + export interface MenteeInterestReminder {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MenteeRecommendation.pdsc + + export interface MenteeRecommendation {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MentionedInTheNews.pdsc + + export interface MentionedInTheNews {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MentorMatch.pdsc + + export interface MentorMatch {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MentorMatchReminder.pdsc + + export interface MentorMatchReminder {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MentorRecommendation.pdsc + + export interface MentorRecommendation {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MentorRecommendationReminder.pdsc + + export interface MentorRecommendationReminder {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/MessagingDeliveryNotificationHeader.pdsc + + export interface MessagingDeliveryNotificationHeader { + mailUrn?: string; + threadUrn?: string; + creationTime: number; + authorUrn: string; + recipientUrn: string; + delayedDuration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/NewApplicant.pdsc + + export interface NewApplicant {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/NewJobsInSavedSearchMetadata.pdsc + + export interface NewJobsInSavedSearchMetadata { + taggedJobPostingCount: number; + taggedQueryTitleUrn?: string; + taggedQueryCompanyUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/OffsiteContentCreation.pdsc + + export interface OffsiteContentCreation {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/OverrideInstructions.pdsc + + export interface OverrideInstructions { + model?: string; + surfacedContentUrn?: string; + expiryTime?: number; + localDeliveryTime?: LocalDeliveryTime; + deliveryTimeSinceEpoch?: number; + commsGatewayTestConfigInfo?: CommsGatewayTestConfigInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/PeopleFollow.pdsc + + export interface PeopleFollow {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/PremiumInMail.pdsc + + export interface PremiumInMail { + messagingDeliveryHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.MessagingDeliveryHeader; + status: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumInMailThreadStatus; + action?: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumInMailMessageAction; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ProfinderConsumerServiceProposalFirstReminder.pdsc + + export interface ProfinderConsumerServiceProposalFirstReminder { + serviceCategoryUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ProfinderConsumerServiceProposalReminder.pdsc + + export interface ProfinderConsumerServiceProposalReminder { + serviceCategoryUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ProfinderConsumerServiceProposalSecondReminder.pdsc + + export interface ProfinderConsumerServiceProposalSecondReminder { + serviceCategoryUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ProfinderConsumerServiceProposalThirdReminder.pdsc + + export interface ProfinderConsumerServiceProposalThirdReminder { + serviceCategoryUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ProfinderProviderNewLead.pdsc + + export interface ProfinderProviderNewLead {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ProfinderProviderNewLeadV2.pdsc + + export interface ProfinderProviderNewLeadV2 { + serviceCategoryUrn?: string; + placeUrn: string; + geoPlaceUrn?: string; + serviceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/PublishedByYourNetwork.pdsc + + export interface PublishedByYourNetwork {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/Pymk.pdsc + + export interface Pymk {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/QuestionAnswered.pdsc + + export interface QuestionAnswered {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/QuestionFollowed.pdsc + + export interface QuestionFollowed {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/QuestionShared.pdsc + + export interface QuestionShared {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/RecipientEdgeSettingDirective.pdsc + + export interface RecipientEdgeSettingDirective { + entityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/RelevanceFeatureSnapshotMetadata.pdsc + + export interface RelevanceFeatureSnapshotMetadata { + sourceUrn?: string; + recipientUrn: string; + itemUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/RelevanceFeatureSnapshotSource.pdsc + + export interface RelevanceFeatureSnapshotSource { + serviceName: ServiceName; + snapshotMechanism: SnapshotMechanism; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/RelevanceModelScore.pdsc + + export interface RelevanceModelScore { + modelId: string; + utilityScores: UtilityScore[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SalesInmail.pdsc + + export interface SalesInmail { + messagingDeliveryHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.MessagingDeliveryHeader; + senderContractUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SalesLeadProfileViewSignal.pdsc + + export interface SalesLeadProfileViewSignal { + sharedConnectionUrn?: string; + profileId?: string; + authToken?: string; + authType?: string; + encrypedContractId?: string; + encryptedSeatId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SalesSolutionsNotificationContent.pdsc + + export interface SalesSolutionsNotificationContent { + profileId?: string; + legacyAuth?: LegacyAuth; + leadCompanyUrn?: string; + encryptedSeatId?: string; + encryptedContractId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SearchAppearance.pdsc + + export interface SearchAppearance {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ServiceName.pdsc + + export type ServiceName = 'ATC' | 'CONCOURSE' | 'BEEHIVE'; + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SettingDirective.pdsc + + export interface SettingDirective { + recipientEdgeSettingDirective?: RecipientEdgeSettingDirective; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SharedByYourNetwork.pdsc + + export interface SharedByYourNetwork { + containerUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SkillAdvancementInsight.pdsc + + export interface SkillAdvancementInsight {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SkillEndorsement.pdsc + + export interface SkillEndorsement {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SnapshotMechanism.pdsc + + export type SnapshotMechanism = 'MEMBER_ALL' | 'MEMBER_PASS' | 'RANDOM_BUCKET'; + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SocialActionType.pdsc + + export type SocialActionType = 'LIKE' | 'COMMENT' | 'MENTION' | 'SHARE' | 'REACT'; + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SocialConversationAction.pdsc + + export interface SocialConversationAction { + recipientRoles: SocialConversationRole[]; + action: SocialActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SocialConversationRole.pdsc + + export type SocialConversationRole = 'ORIGINATOR' | 'LIKER' | 'COMMENTER' | 'MENTIONEE'; + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SpeakeasyMention.pdsc + + export interface SpeakeasyMention {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/SprMetadata.pdsc + + export interface SprMetadata { + sprScore: number; + channelDecision?: Com.Linkedin.Avro2pegasus.Events.Communications.Channel; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/TalkingAbout.pdsc + + export interface TalkingAbout { + reactionCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/TargetedQuestion.pdsc + + export interface TargetedQuestion {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/TypeInformation.pdsc + + export interface TypeInformation { + socialConversationAction?: SocialConversationAction; + jobChange?: JobChange; + connectionSuggestion?: ConnectionSuggestion; + pymk?: Pymk; + mentorRecommendation?: MentorRecommendation; + menteeInterest?: MenteeInterest; + mentorMatch?: MentorMatch; + contactJoin?: ContactJoin; + dailyDigest?: DailyDigest; + followRecommendation?: FollowRecommendation; + companyExitAnniversary?: CompanyExitAnniversary; + connectionAnniversary?: ConnectionAnniversary; + meetNewHire?: MeetNewHire; + talkingAbout?: TalkingAbout; + contentProcessingComplete?: ContentProcessingComplete; + searchAppearance?: SearchAppearance; + skillAdvancementInsight?: SkillAdvancementInsight; + jobAdvancementInsight?: JobAdvancementInsight; + companyInsight?: CompanyInsight; + jobInsight?: JobInsight; + candidateFeedbackRequest?: CandidateFeedbackRequest; + applyReminder?: ApplyReminder; + profinderConsumerServiceProposalReminder?: ProfinderConsumerServiceProposalReminder; + profinderProviderNewLead?: ProfinderProviderNewLead; + memberMessage?: MemberMessage; + groupConversationMessage?: GroupConversationMessage; + viewedJobReminder?: ViewedJobReminder; + offsiteContentCreation?: OffsiteContentCreation; + infrequentContentCreation?: InfrequentContentCreation; + firstTimeContentCreation?: FirstTimeContentCreation; + breakingNews?: BreakingNews; + invitationAcceptance?: InvitationAcceptance; + workAnniversary?: WorkAnniversary; + birthday?: Birthday; + whereYouLeftOff?: WhereYouLeftOff; + wvmpWhileAnonymous?: WvmpWhileAnonymous; + answerLiked?: AnswerLiked; + commentedOnAnswer?: CommentedOnAnswer; + answerCommentLiked?: AnswerCommentLiked; + followedQuestionAnswered?: FollowedQuestionAnswered; + questionAnswered?: QuestionAnswered; + questionFollowed?: QuestionFollowed; + questionShared?: QuestionShared; + targetedQuestion?: TargetedQuestion; + jymbii?: Jymbii; + jobApplicationViewedV2?: JobApplicationViewedV2; + hiringTrendInsight?: HiringTrendInsight; + newApplicant?: NewApplicant; + mentionedInTheNews?: MentionedInTheNews; + publishedByYourNetwork?: PublishedByYourNetwork; + sharedByYourNetwork?: SharedByYourNetwork; + peopleFollow?: PeopleFollow; + contentCreationWeeklySummary?: ContentCreationWeeklySummary; + speakeasyMention?: SpeakeasyMention; + mentorRecommendationReminder?: MentorRecommendationReminder; + menteeInterestReminder?: MenteeInterestReminder; + mentorMatchReminder?: MentorMatchReminder; + skillEndorsement?: SkillEndorsement; + profinderConsumerServiceProposalFirstReminder?: ProfinderConsumerServiceProposalFirstReminder; + profinderConsumerServiceProposalSecondReminder?: ProfinderConsumerServiceProposalSecondReminder; + profinderConsumerServiceProposalThirdReminder?: ProfinderConsumerServiceProposalThirdReminder; + weeklyBiteRecommendation?: WeeklyBiteRecommendation; + authorConnectionInterested?: AuthorConnectionInterested; + commenterConnectionInterested?: CommenterConnectionInterested; + hiringManagerFeedbackReceived?: HiringManagerFeedbackReceived; + hiringManagerLowBudget?: HiringManagerLowBudget; + hiringManagerBudgetRunOut?: HiringManagerBudgetRunOut; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/TypeInformationV2.pdsc + + export interface TypeInformationV2 { + type: CommunicationType; + customData?: TypeInformationV2CustomData; + typeV2?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/TypeInformationV2CustomData.pdsc + + export interface TypeInformationV2CustomData { + socialConversationAction?: SocialConversationAction; + talkingAbout?: TalkingAbout; + profinderConsumerServiceProposalReminder?: ProfinderConsumerServiceProposalReminder; + memberMessage?: MemberMessage; + profinderConsumerServiceProposalFirstReminder?: ProfinderConsumerServiceProposalFirstReminder; + profinderConsumerServiceProposalSecondReminder?: ProfinderConsumerServiceProposalSecondReminder; + profinderConsumerServiceProposalThirdReminder?: ProfinderConsumerServiceProposalThirdReminder; + authorConnectionInterested?: AuthorConnectionInterested; + commenterConnectionInterested?: CommenterConnectionInterested; + mentorRecommendationReminder?: MentorRecommendationReminder; + menteeInterestReminder?: MenteeInterestReminder; + mentorMatchReminder?: MentorMatchReminder; + profinderProviderNewLeadV2?: ProfinderProviderNewLeadV2; + salesLeadProfileViewSignal?: SalesLeadProfileViewSignal; + eventFollowUpDigest?: EventFollowUpDigest; + invitationAcceptance?: InvitationAcceptance; + hireInmail?: HireInmail; + hireProfileReviewRequest?: HireProfileReviewRequest; + hiringPlatformInformation?: HiringPlatformInformation; + premiumInmailInitial?: PremiumInMail; + premiumInmailReply?: PremiumInMail; + customInviteReply?: CustomInviteReply; + genericInvitationCreation?: GenericInvitationCreation; + genericInvitationAcceptance?: GenericInvitationAcceptance; + salesInmail?: SalesInmail; + salesSolutionsNotificationContent?: SalesSolutionsNotificationContent; + messagingDeliveryNotificationHeader?: MessagingDeliveryNotificationHeader; + newJobsInSavedSearchMetadata?: NewJobsInSavedSearchMetadata; + whatYouMissed?: WhatYouMissed; + chinaJobRecommendation?: ChinaSMSJobRecommendation; + sharedByYourNetwork?: SharedByYourNetwork; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/UtilityScore.pdsc + + export interface UtilityScore { + utilityName: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/ViewedJobReminder.pdsc + + export interface ViewedJobReminder {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/WeeklyBiteRecommendation.pdsc + + export interface WeeklyBiteRecommendation {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/WhatYouMissed.pdsc + + export interface WhatYouMissed { + isEmailContentAvailable: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/communications/WhereYouLeftOff.pdsc + + export interface WhereYouLeftOff {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/WorkAnniversary.pdsc + + export interface WorkAnniversary {} + // Generated from: com/linkedin/avro2pegasus/events/common/communications/WvmpWhileAnonymous.pdsc + + export interface WvmpWhileAnonymous {} + } + namespace Concourse { + // Generated from: com/linkedin/avro2pegasus/events/common/concourse/ConcourseRequestDroppedReason.pdsc + + export type ConcourseRequestDroppedReason = + | 'UNSUPPORTED' + | 'EMPTY_INPUT' + | 'EMPTY_OUTPUT' + | 'LIX' + | 'RELEVANCE_DECISION' + | 'PROCESS_FAILURE' + | 'CLOSED_ACCOUNT' + | 'EDGE_SETTING' + | 'DATA_ISSUE' + | 'BUSINESS_LOGIC' + | 'FANOUT_RECEIPT_EMPTY' + | 'RELEVANCE_MISSING' + | 'NO_IN_APP_TYPE_FOUND'; + // Generated from: com/linkedin/avro2pegasus/events/common/concourse/ConcourseSamzaJob.pdsc + + export type ConcourseSamzaJob = 'REPARTITIONER' | 'PREFANOUT' | 'FANOUT' | 'SCORER'; + } + namespace Content { + // Generated from: com/linkedin/avro2pegasus/events/common/content/ActionableContent.pdsc + + export interface ActionableContent { + content: Content; + actions: Actions; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/Actions.pdsc + + export interface Actions { + callToAction?: CallToAction; + landingPage?: LandingPage; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/CallToAction.pdsc + + export interface CallToAction { + label: CallToActionLabel; + destination: LandingPage; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/CallToActionLabel.pdsc + + export type CallToActionLabel = + | 'APPLY_NOW' + | 'DOWNLOAD' + | 'GET_QUOTE' + | 'LEARN_MORE' + | 'SIGN_UP' + | 'SUBSCRIBE' + | 'REGISTER'; + // Generated from: com/linkedin/avro2pegasus/events/common/content/Content.pdsc + + export interface Content { + ingestedContent?: IngestedContent; + mediaContent?: MediaContent; + referenceContent?: ReferenceContent; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/HashtagRecommendation.pdsc + + export interface HashtagRecommendation { + result: HashtagResultHit; + featureVector: NameTermValueFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/HashtagResultHit.pdsc + + export interface HashtagResultHit { + entityUrn: string; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/HashtagSourceType.pdsc + + export type HashtagSourceType = 'SUGGESTED' | 'TYPEAHEAD'; + // Generated from: com/linkedin/avro2pegasus/events/common/content/IngestedContent.pdsc + + export interface IngestedContent { + articleUrn?: string; + ingestedUrl?: string; + title?: Com.Linkedin.Avro2pegasus.Events.Common.AttributedText; + description?: Com.Linkedin.Avro2pegasus.Events.Common.AttributedText; + thumbnail?: MediaContent; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/LandingPage.pdsc + + export interface LandingPage { + destinationUrn?: string; + destinationUrls?: PageUrls; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/MediaContent.pdsc + + export interface MediaContent { + digitalMediaAssetUrn: string; + mediaType: Com.Linkedin.Avro2pegasus.Events.Common.Digitalmedia.MediaTypeFamily; + alternativeText?: string; + title?: Com.Linkedin.Avro2pegasus.Events.Common.AttributedText; + mediaSource?: MediaSource; + overlayMetadata?: OverlayMetadata; + recipeUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/MediaSource.pdsc + + export type MediaSource = 'APP_CAPTURED' | 'PRE_RECORDED'; + // Generated from: com/linkedin/avro2pegasus/events/common/content/NameTermValueFeature.pdsc + + export interface NameTermValueFeature { + name: string; + term?: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/OverlayMetadata.pdsc + + export interface OverlayMetadata { + taggedEntities: TaggedEntity[]; + overlayTexts: string[]; + stickerUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/PageUrls.pdsc + + export interface PageUrls { + primaryUrl: string; + ampUrl?: string; + displayUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/PercentageOffsetPoint.pdsc + + export interface PercentageOffsetPoint { + xOffsetPercentage: number; + yOffsetPercentage: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/PercentageOffsetRectangle.pdsc + + export interface PercentageOffsetRectangle { + firstCorner: PercentageOffsetPoint; + secondCorner: PercentageOffsetPoint; + thirdCorner: PercentageOffsetPoint; + fourthCorner: PercentageOffsetPoint; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/ReferenceContent.pdsc + + export interface ReferenceContent { + contentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/ShareboxGuiderPromptType.pdsc + + export type ShareboxGuiderPromptType = 'JOB' | 'NEWS' | 'MULTILINGUAL' | 'FIRST_POST_CREATOR'; + // Generated from: com/linkedin/avro2pegasus/events/common/content/TaggedEntity.pdsc + + export interface TaggedEntity { + type: TaggedEntityType; + position?: PercentageOffsetRectangle; + taggedEntityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/content/TaggedEntityType.pdsc + + export type TaggedEntityType = 'PHOTO_TAG' | 'TAP_TARGET'; + } + namespace Contentrelevance { + // Generated from: com/linkedin/avro2pegasus/events/common/contentrelevance/ContentRelevanceFeature.pdsc + + export interface ContentRelevanceFeature { + subContentType: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentType; + subContentUrn?: string; + featurizerIdentifier: FeaturizerIdentifier; + denseFeatureData?: DenseFeatureData; + sparseFeatureData?: SparseFeatureData; + } + // Generated from: com/linkedin/avro2pegasus/events/common/contentrelevance/DenseFeatureData.pdsc + + export interface DenseFeatureData { + doubleValues: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/contentrelevance/FeaturizerIdentifier.pdsc + + export interface FeaturizerIdentifier { + featurizerId: string; + featurizerVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/contentrelevance/SparseFeatureData.pdsc + + export interface SparseFeatureData { + vectorDouble: SparseVectorDouble; + } + // Generated from: com/linkedin/avro2pegasus/events/common/contentrelevance/SparseVectorDouble.pdsc + + export interface SparseVectorDouble { + indices: number[]; + values: number[]; + numDimensions: number; + } + } + namespace Cortex { + // Generated from: com/linkedin/avro2pegasus/events/common/cortex/AudienceInsightsFilter.pdsc + + export interface AudienceInsightsFilter { + targetingCriteria: Com.Linkedin.Avro2pegasus.Events.Common.Ads.TargetingCriteria; + timeRange: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + timeDuration?: Com.Linkedin.Avro2pegasus.Events.Common.TimeSpan; + } + // Generated from: com/linkedin/avro2pegasus/events/common/cortex/AudienceInsightsFrequencyDistribution.pdsc + + export interface AudienceInsightsFrequencyDistribution { + targetingFacetUrn: string; + stats: AudienceInsightsStats; + } + // Generated from: com/linkedin/avro2pegasus/events/common/cortex/AudienceInsightsInterval.pdsc + + export type AudienceInsightsInterval = 'HOUR' | 'DAY' | 'WEEK'; + // Generated from: com/linkedin/avro2pegasus/events/common/cortex/AudienceInsightsMetricType.pdsc + + export type AudienceInsightsMetricType = + | 'IMPRESSIONS' + | 'INTERACTIONS' + | 'UNIQUE_ACTORS' + | 'UNIQUE_VIEWERS' + | 'ENGAGEMENT_RATE'; + // Generated from: com/linkedin/avro2pegasus/events/common/cortex/AudienceInsightsSparkSqlQueries.pdsc + + export interface AudienceInsightsSparkSqlQueries { + engagementSparkSqlQuery?: string; + impressionSparkSqlQuery?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/cortex/AudienceInsightsStats.pdsc + + export interface AudienceInsightsStats { + interactions?: number; + impressions?: number; + uniqueViewers?: number; + uniqueActors?: number; + engagementRate?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/cortex/AudienceInsightsTimeline.pdsc + + export interface AudienceInsightsTimeline { + timeRange: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + stats: AudienceInsightsStats; + } + } + namespace Dashcache { + // Generated from: com/linkedin/avro2pegasus/events/common/dashcache/DashCacheQueryStatsActionType.pdsc + + export type DashCacheQueryStatsActionType = 'UPDATE' | 'DELETE'; + } + namespace Dataexport { + // Generated from: com/linkedin/avro2pegasus/events/common/dataexport/DataExportState.pdsc + + export type DataExportState = 'SUCCESSFUL' | 'FAILED' | 'PARTIALLY_SUCCESSFUL'; + // Generated from: com/linkedin/avro2pegasus/events/common/dataexport/DatasetExportStatus.pdsc + + export interface DatasetExportStatus { + datasetUrn: string; + state: DataExportState; + } + } + namespace Datamonitor { + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/AffectedDatasetPartition.pdsc + + export interface AffectedDatasetPartition { + datasetCommonProperties: DatasetCommonProperties; + multiLevelPartition: MultiLevelPartition; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/Cluster.pdsc + + export interface Cluster { + name: string; + type: ClusterType; + fabricUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/ClusterType.pdsc + + export type ClusterType = + | 'HADOOP' + | 'KAFKA' + | 'ESPRESSO' + | 'SAMZA' + | 'MYSQL' + | 'ORACLE' + | 'TERADATA' + | 'HIVE' + | 'PINOT'; + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/DataFlow.pdsc + + export interface DataFlow { + executionUrl: string; + id: string; + name: string; + applicationName: string; + applicationType: string; + tags: string[]; + startTime?: number; + endTime?: number; + status: DataFlowStatus; + softwareLibrary: SoftwareLibrary[]; + dataJobs: DataJob[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/DataFlowStatus.pdsc + + export type DataFlowStatus = 'RUNNING' | 'FINISHED' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/DataJob.pdsc + + export interface DataJob { + name: string; + type: string; + id: string; + url: string; + status: DataFlowStatus; + tags: string[]; + startTime: number; + endTime?: number; + SoftwareLibrary: SoftwareLibrary[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/DatasetCommonProperties.pdsc + + export interface DatasetCommonProperties { + datasetName: string; + platformName: PlatformName; + type: DatasetType; + path?: string; + cluster: Cluster; + tags: string[]; + description?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/DatasetPartitionStatsCount.pdsc + + export interface DatasetPartitionStatsCount { + counterType: PartitionStatsCounterType; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/DatasetType.pdsc + + export type DatasetType = + | 'HDFS' + | 'HIVE' + | 'DALI' + | 'MYSQL' + | 'PINOT' + | 'KAFKA' + | 'POSTGRESQL' + | 'SALESFORCE' + | 'SQLSERVER' + | 'ORACLE' + | 'ESPRESSO' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/InputDatasetPartition.pdsc + + export interface InputDatasetPartition { + datasetName: string; + type: DatasetType; + cluster: Cluster; + path?: string; + basePath?: string; + partitionProperties?: PartitionProperty[]; + partitionValues?: PartitionValues; + multiLevelPartition?: MultiLevelPartition; + readStartTime?: number; + readEndTime?: number; + isAvailabile: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/InputDatasetPartitionGroup.pdsc + + export interface InputDatasetPartitionGroup { + datasetName: string; + type: DatasetType; + path?: string; + dependencyRange?: number; + cluster: Cluster; + dependencyOffset?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/IssueEvent.pdsc + + export interface IssueEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + issueId: string; + issueType: IssueType; + issueUrl?: string; + creationTime?: number; + status: IssueStatus; + ownerUrns: string[]; + affectedDatasetPartitions: AffectedDatasetPartition[]; + tags: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/IssueStatus.pdsc + + export type IssueStatus = 'OPEN' | 'WORKING' | 'RESOLVED' | 'BLOCKED'; + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/IssueType.pdsc + + export type IssueType = 'JIRA' | 'GCN' | 'AUTO_ALERT'; + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/MultiLevelPartition.pdsc + + export interface MultiLevelPartition { + datasetPartitionPath?: string; + numberOfpartitionLevels: number; + partitionLevels: PartitionLevel[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/PartitionLevel.pdsc + + export interface PartitionLevel { + partitionProperty: PartitionProperty; + partitionValues: PartitionValues; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/PartitionProperty.pdsc + + export interface PartitionProperty { + partitionType: PartitionType; + unit?: string; + name?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/PartitionStatsCounterType.pdsc + + export type PartitionStatsCounterType = 'TOTAL_RECORD_COUNT'; + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/PartitionStatus.pdsc + + export type PartitionStatus = + | 'WAITING' + | 'READY' + | 'PROCESSING' + | 'EMPTY' + | 'PUBLISHED' + | 'FAILED' + | 'REMOVED'; + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/PartitionType.pdsc + + export type PartitionType = 'TIME' | 'VALUE' | 'INDEX'; + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/PartitionValues.pdsc + + export interface PartitionValues { + minTimeValue?: number; + maxTimeValue?: number; + minIndexValue?: string; + maxIndexValue?: string; + filterValues?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/Platform.pdsc + + export interface Platform { + platformName: PlatformName; + description: string; + tags?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/PlatformName.pdsc + + export type PlatformName = + | 'UMP' + | 'GOBBLIN' + | 'TRACKING' + | 'FETL' + | 'XLNT' + | 'GDPR_OBFUSCATION' + | 'GOBBLIN_GDPR_PURGE' + | 'SCANNER' + | 'AUDIT' + | 'WIMD_CREATED_PLATFORM'; + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/SoftwareLibrary.pdsc + + export interface SoftwareLibrary { + name: string; + version: string; + repositoryUrl?: string; + versionControl?: VersionControl; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/StatsUpdateType.pdsc + + export type StatsUpdateType = 'UPDATE' | 'APPEND'; + // Generated from: com/linkedin/avro2pegasus/events/common/datamonitor/VersionControl.pdsc + + export type VersionControl = 'GIT' | 'SVN' | 'INTERNAL'; + } + namespace Datavault { + // Generated from: com/linkedin/avro2pegasus/events/common/datavault/AccessControlWildcard.pdsc + + export interface AccessControlWildcard { + aclDataKey: Com.Linkedin.Avro2pegasus.Events.Datavault.AccessControlDataKey; + regularExpression: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datavault/AccessControlWildcardKey.pdsc + + export interface AccessControlWildcardKey { + group: string; + id: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datavault/ActionResult.pdsc + + export type ActionResult = + | 'SUCCESS' + | 'CERTIFICATE_FAILURE' + | 'INVALID_INPUT' + | 'ACCESS_FORBIDDEN' + | 'UNKNOWN_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/common/datavault/Role.pdsc + + export type Role = + | 'DEVELOPMENT_TEAM' + | 'FAST_DATAVAULT_ACCESS' + | 'RELIABILITY_TEAM' + | 'COLLABORATOR_TEAM' + | 'FAST_SHELL_ACCESS' + | 'RESOURCE_OWNER_TEAM' + | 'FAST_LOCKER' + | 'RESOURCE_ADMIN'; + // Generated from: com/linkedin/avro2pegasus/events/common/datavault/RoleSnapshot.pdsc + + export interface RoleSnapshot { + role: Role; + scope?: Scope; + expiresTime?: number; + actor: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/datavault/Scope.pdsc + + export interface Scope { + productTag?: string; + fabricUrn?: string; + fabricGroup?: string; + } + } + namespace Digitalmedia { + // Generated from: com/linkedin/avro2pegasus/events/common/digitalmedia/MediaTypeFamily.pdsc + + export type MediaTypeFamily = + | 'BINARYDATA' + | 'STILLIMAGE' + | 'VIDEO' + | 'SOUND' + | 'PAGINATEDDOCUMENT' + | 'SLIDESHOWDOCUMENT' + | 'ARCHIVE' + | 'TEXT' + | 'LIVE_VIDEO'; + } + namespace Discovery { + // Generated from: com/linkedin/avro2pegasus/events/common/discovery/ActionRecord.pdsc + + export interface ActionRecord { + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + objectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/discovery/CohortRecommendation.pdsc + + export interface CohortRecommendation { + cohortIdentifier: string; + reasons: CohortRecommendationReason[]; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + recommendedEntities: ServedRecord[]; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + score?: number; + cohortFeatures?: Feature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/discovery/CohortRecommendationReason.pdsc + + export interface CohortRecommendationReason { + context?: string; + contextUrn?: string; + score?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/discovery/ExperimentSetting.pdsc + + export interface ExperimentSetting { + name: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/discovery/Feature.pdsc + + export interface Feature { + name: string; + value: number; + term?: string; + values?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/discovery/ImpressionRecord.pdsc + + export interface ImpressionRecord { + displayContext?: string; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + visibleTime: number; + duration: number; + objectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/discovery/Model.pdsc + + export interface Model { + name: string; + version: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/discovery/Reason.pdsc + + export interface Reason { + reasonContext?: string; + reasonUrn?: string; + reasonScore?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/discovery/RecommendedRecord.pdsc + + export interface RecommendedRecord { + viewerUrn: string; + viewerFeatures?: Feature[]; + cohorts?: CohortRecommendation[]; + model?: Model; + experimentSettings?: ExperimentSetting[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/discovery/ServedRecord.pdsc + + export interface ServedRecord { + objectUrn: string; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + usageContext?: string; + score?: number; + reasons?: Reason[]; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + } + namespace Externalapi { + // Generated from: com/linkedin/avro2pegasus/events/common/externalapi/CallerInfo.pdsc + + export interface CallerInfo { + applicationUrn: string; + memberUrn: string; + scope: number; + microsoftClientId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/externalapi/ClientCorrelationInfo.pdsc + + export interface ClientCorrelationInfo { + correlationId?: string; + externalUser?: string; + externalApp?: string; + externalAppInstance?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/externalapi/CommonRequestHeaders.pdsc + + export interface CommonRequestHeaders { + ipAddress: string; + contentType?: string; + contentLength?: number; + acceptLanguage?: string; + referrer?: string; + requestSource?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/externalapi/ParsedResourceWithRestriction.pdsc + + export interface ParsedResourceWithRestriction { + resource: VirtualResource; + restriction?: RestrictionInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/common/externalapi/RawRequest.pdsc + + export interface RawRequest { + resourceRoot: string; + httpMethod: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + protocolVersion?: string; + finder?: string; + action?: string; + projection?: string; + fields?: string; + start?: string; + count?: string; + restliMethod?: string; + headers: CommonRequestHeaders; + } + // Generated from: com/linkedin/avro2pegasus/events/common/externalapi/ResponseInfo.pdsc + + export interface ResponseInfo { + status: number; + duration: number; + serviceErrorCode?: number; + isGatewayError: boolean; + callLatency: ServiceLatency; + } + // Generated from: com/linkedin/avro2pegasus/events/common/externalapi/RestrictionInfo.pdsc + + export interface RestrictionInfo { + type: Com.Linkedin.Avro2pegasus.Events.FuseRestrictionType; + action: Com.Linkedin.Avro2pegasus.Events.Common.Fuse.FuseRestrictionAction; + } + // Generated from: com/linkedin/avro2pegasus/events/common/externalapi/ServiceLatency.pdsc + + export interface ServiceLatency { + serviceName: string; + requestTime: number; + totalDuration: number; + internalTasks: ServiceTask[]; + externalTasks: ServiceTask[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/externalapi/ServiceTask.pdsc + + export interface ServiceTask { + taskName: string; + startTime: number; + duration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/externalapi/VirtualResource.pdsc + + export interface VirtualResource { + externalPath: string; + externalMethod: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + externalActionOrFinderName?: string; + internalPath: string; + internalMethod: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + internalActionOrFinderName?: string; + } + } + namespace Firedrill { + // Generated from: com/linkedin/avro2pegasus/events/common/firedrill/FiredrillEventState.pdsc + + export type FiredrillEventState = + | 'CREATED' + | 'WAITING_FOR_BASELINE' + | 'BASELINE_READY' + | 'REQUESTING_START' + | 'START_REQUESTED' + | 'STARTED' + | 'REQUESTING_STOP' + | 'STOP_REQUESTED' + | 'STOPPED' + | 'FINISHED' + | 'FAILED_TO_STOP' + | 'FAILED_TO_RECOVER'; + } + namespace Follow { + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowActionType.pdsc + + export type FollowActionType = 'FOLLOW' | 'UNFOLLOW' | 'FOLLOW_ALL' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowDisplayModule.pdsc + + export type FollowDisplayModule = + | 'FOLLOW_HUB' + | 'IMPROVE_MY_FEED' + | 'FOLLOW_MODULE_ON_DESKTOP_SIDE_BAR' + | 'FOLLOW_RECOMMENDATION_UPDATE' + | 'NETWORK_FOLLOW_UPDATE' + | 'FEED_UPDATE' + | 'PROFILE' + | 'REBUILD_MY_FEED' + | 'ONBOARDING' + | 'OTHER' + | 'IDENTITY_MODULE' + | 'FOLLOWER_LIST' + | 'UNFOLLOW_HUB' + | 'INTEREST_FEED' + | 'FEED_RELATED_FOLLOW_CAROUSEL' + | 'COMPULSORY_FOLLOWS_ONBOARDING' + | 'COMPULSORY_FOLLOWS_ONBOARDING_EXISTING' + | 'DISCOVERY' + | 'END_OF_FEED' + | 'XPLORE_FEED' + | 'LITE_FOLLOW_MODULE' + | 'LITE_FOLLOW_HUB' + | 'ONBOARDING_RELATED_FOLLOWS' + | 'EMPTY_FEED' + | 'DISCOVER_HUB'; + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowEntity.pdsc + + export interface FollowEntity { + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + followEntityUrn: string; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowReasonRecommenderResult.pdsc + + export interface FollowReasonRecommenderResult { + entities: FollowRecommendationEntityResult[]; + score: number; + reasons: FollowRecommendationReason[]; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationContext.pdsc + + export interface FollowRecommendationContext { + contextType: FollowRecommendationContextType; + contextUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationContextType.pdsc + + export type FollowRecommendationContextType = 'NEW_FOLLOWEE' | 'NEW_MEMBER'; + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationEntityResult.pdsc + + export interface FollowRecommendationEntityResult { + entity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + scores: FollowRecommendationScore[]; + isValid: boolean; + filterReasons: FollowRecommendationFilterReason[]; + entityFeatures: FollowRecommendationFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationFeature.pdsc + + export interface FollowRecommendationFeature { + name: string; + term?: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationFilterReason.pdsc + + export type FollowRecommendationFilterReason = + | 'IMPRESSION_DISCOUNTING' + | 'ALREADY_FOLLOWED' + | 'UNFOLLOWED' + | 'SCORE_THRESHOLDING'; + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationLix.pdsc + + export interface FollowRecommendationLix { + key: string; + treatment: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationModel.pdsc + + export interface FollowRecommendationModel { + viewerCohort: FollowRecommendationViewerCohort; + scoreType: FollowRecommendationScoreType; + name: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationReason.pdsc + + export interface FollowRecommendationReason { + type: FollowRecommendationReasonType; + object?: string; + score?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationReasonType.pdsc + + export type FollowRecommendationReasonType = + | 'RELEVANT_TO_VIEWER_SEGMENT' + | 'RELEVANT_TO_NEW_FOLLOWEE' + | 'RELEVANT_TO_X' + | 'RELEVANT_TO_VIEWER_BROWSEMAP_ENGAGEMENT' + | 'RELEVANT_TO_VIEWER_FOLLOWS_BROWSEMAPS' + | 'RELEVANT_TO_VIEWER_INTERACTIONS' + | 'RELEVANT_TO_VIEWER_NETWORK_ENGAGEMENT' + | 'RELEVANT_TO_VIEWER_NETWORK_FOLLOWS' + | 'RELEVANT_TO_VIEWER_INTERESTS_CONTENT_PRODUCERS' + | 'RELEVANT_TO_SIMILAR_INTERESTS' + | 'RELEVANT_TO_FOLLOWED_ENTITY'; + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationResultType.pdsc + + export type FollowRecommendationResultType = + | 'MEMBER' + | 'COMPANY' + | 'CONTENTTOPIC' + | 'HASHTAG' + | 'GROUP' + | 'CONTENTSERIES'; + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationScore.pdsc + + export interface FollowRecommendationScore { + type: FollowRecommendationScoreType; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationScoreType.pdsc + + export type FollowRecommendationScoreType = + | 'PFOLLOW_SCORE' + | 'UTILITY_SCORE' + | 'FINAL_SCORE' + | 'UTILITY_PCREATE_SCORE'; + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationUseCase.pdsc + + export type FollowRecommendationUseCase = + | 'DUO_ONBOARDING' + | 'COMPULSORY_FOLLOW_HUB' + | 'RELATED_FOLLOWS' + | 'FOLLOWS_FPR' + | 'DESKTOP_SIDE_RAIL' + | 'FOLLOW_HUB' + | 'LITE_FOLLOW_HUB' + | 'DISCOVERY' + | 'GROUP_DISCOVERY' + | 'XPLORE_FPR' + | 'LITE_NEW_USER_EXP' + | 'USHER' + | 'SIMILAR_PAGES'; + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommendationViewerCohort.pdsc + + export type FollowRecommendationViewerCohort = 'EXISTING_MEMBER' | 'NEW_MEMBER'; + // Generated from: com/linkedin/avro2pegasus/events/common/follow/FollowRecommenderResult.pdsc + + export interface FollowRecommenderResult { + entityResult: FollowRecommendationEntityResult; + reasons: FollowRecommendationReason[]; + } + } + namespace Fulfillment { + // Generated from: com/linkedin/avro2pegasus/events/common/fulfillment/FulfillmentItemActivityStatus.pdsc + + export type FulfillmentItemActivityStatus = + | 'FULFILLED' + | 'REVOKED' + | 'CONFIGURED' + | 'WAITING_FOR_CONFIGURATION'; + } + namespace Fuse { + // Generated from: com/linkedin/avro2pegasus/events/common/fuse/FuseRestrictionAction.pdsc + + export type FuseRestrictionAction = 'NONE' | 'FLAG' | 'LOG' | 'WARN' | 'DROP'; + } + namespace Helpcenter { + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/HelpCenterEntityVersionType.pdsc + + export type HelpCenterEntityVersionType = 'SHORT' | 'FULL'; + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/HelpCenterInteractionInfoItem.pdsc + + export interface HelpCenterInteractionInfoItem { + time: number; + interactedOptionNum: number; + interactedOptionContent?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/HelpCenterInteractiveSearchInfo.pdsc + + export interface HelpCenterInteractiveSearchInfo { + scenario: InteractiveSearchInfoScenario; + question?: string; + options: HelpCenterInteractiveSearchInfoOptionItem[]; + sourceEntityId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/HelpCenterInteractiveSearchInfoOptionItem.pdsc + + export interface HelpCenterInteractiveSearchInfoOptionItem { + optionType: InteractiveSearchInfoOptionType; + optionContent?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/HelpCenterInterfaceType.pdsc + + export type HelpCenterInterfaceType = 'HELP_CENTER' | 'IN_PRODUCT_HELP'; + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/HelpCenterPersonalizedSupportInfo.pdsc + + export interface HelpCenterPersonalizedSupportInfo { + title: string; + description: string; + displayedHelpCenterName: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/HelpCenterShortcutItemInfo.pdsc + + export interface HelpCenterShortcutItemInfo { + articleUrn?: string; + type: Type; + titleText: string; + url?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/HelpCenterUserHistoryInfo.pdsc + + export interface HelpCenterUserHistoryInfo { + caseId: number; + articles: number[]; + searchQueries: string[]; + ipAddresses: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/InteractiveSearchInfoOptionType.pdsc + + export type InteractiveSearchInfoOptionType = 'SINGLE_SELECT' | 'MULTI_SELECT' | 'LINK' | 'INPUT'; + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/InteractiveSearchInfoScenario.pdsc + + export type InteractiveSearchInfoScenario = 'AMBIGUOUS' | 'FOLLOW_UP' | 'STEP_BY_STEP' | 'NOT_RELEVANT'; + // Generated from: com/linkedin/avro2pegasus/events/common/helpcenter/Type.pdsc + + export type Type = 'ARTICLE' | 'EXTERNAL'; + } + namespace Hiringprofessionalrecommendation { + // Generated from: com/linkedin/avro2pegasus/events/common/hiringprofessionalrecommendation/HiringProfessionalRecommendationAction.pdsc + + export type HiringProfessionalRecommendationAction = 'PROFILE_VIEW' | 'CONNECT' | 'MESSAGE' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/common/hiringprofessionalrecommendation/HiringProfessionalRecommendationItem.pdsc + + export interface HiringProfessionalRecommendationItem { + memberUrn: string; + index: number; + recommendationReason?: HiringProfessionalRecommendationReason; + } + // Generated from: com/linkedin/avro2pegasus/events/common/hiringprofessionalrecommendation/HiringProfessionalRecommendationReason.pdsc + + export type HiringProfessionalRecommendationReason = + | 'PLOTLY' + | 'FOLLOW_COMPANY' + | 'OFFLINE' + | 'PLOTLY_IN_FOLLOWED_COMPANY'; + } + namespace House { + // Generated from: com/linkedin/avro2pegasus/events/common/house/IndicatorOfCompromiseType.pdsc + + export type IndicatorOfCompromiseType = + | 'MD5' + | 'SHA1' + | 'IPV4' + | 'IPV6' + | 'DOMAIN' + | 'URI' + | 'EMAIL_ADDRESS'; + } + namespace Identity { + // Generated from: com/linkedin/avro2pegasus/events/common/identity/ProfileOpportunityCardType.pdsc + + export type ProfileOpportunityCardType = + | 'CAREER_ADVICE' + | 'CAREER_ADVICE_ONBOARDING' + | 'CAREER_INTEREST' + | 'CAREER_INTEREST_ONBOARDING' + | 'SERVICE_PROVIDER' + | 'SERVICE_PROVIDER_ONBOARDING' + | 'VOLUNTEERING' + | 'VOLUNTEERING_ONBOARDING' + | 'CAREER_ADVICE_ADVISOR' + | 'CAREER_ADVICE_ADVISOR_ONBOARDING' + | 'HIRING_MANAGER' + | 'HIRING_MANAGER_ONBOARDING'; + // Generated from: com/linkedin/avro2pegasus/events/common/identity/ProfileServedUseCase.pdsc + + export type ProfileServedUseCase = + | 'PROFILE_VIEW_REQUEST' + | 'SEARCH_RESULT' + | 'PYMK_RESULT' + | 'PROFILE_IN_FEED' + | 'BROWSE_MAP' + | 'INVITATION'; + } + namespace Impersonation { + // Generated from: com/linkedin/avro2pegasus/events/common/impersonation/MsftCelebrityResponse.pdsc + + export interface MsftCelebrityResponse { + name: string; + confidence: number; + } + } + namespace Interest { + // Generated from: com/linkedin/avro2pegasus/events/common/interest/ActionRecommendationEntityType.pdsc + + export type ActionRecommendationEntityType = 'URN' | 'TEXT'; + // Generated from: com/linkedin/avro2pegasus/events/common/interest/CommentRecommendation.pdsc + + export interface CommentRecommendation { + commentary: Com.Linkedin.Avro2pegasus.Events.Common.AttributedText; + score: number; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/common/interest/CommentRecommendationFeatures.pdsc + + export interface CommentRecommendationFeatures { + commentFeatures: Com.Linkedin.Avro2pegasus.Events.Common.NameTermValueFeatures; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/common/interest/CommentRecommendations.pdsc + + export interface CommentRecommendations { + comments: CommentRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/interest/Feature.pdsc + + export interface Feature { + qualifiedName: string[]; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/interest/FeatureVector.pdsc + + export interface FeatureVector { + features: Feature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/interest/FollowedEntity.pdsc + + export interface FollowedEntity { + entityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/interest/InterestFeedUseCase.pdsc + + export type InterestFeedUseCase = + | 'KEYWORDS' + | 'STORYLINE' + | 'TOPIC' + | 'ORGANIZATION_MENTION' + | 'INDUSTRY' + | 'HASHTAG' + | 'STORY_PLAYLIST' + | 'PROFESSIONAL_EVENT' + | 'ORGANIZATION_EMPLOYEES' + | 'ORGANIZATION_HASHTAG_TRENDING_POSTS' + | 'ZEPHYR_QUESTIONS' + | 'ZEPHYR_HASHTAG'; + // Generated from: com/linkedin/avro2pegasus/events/common/interest/QueryType.pdsc + + export type QueryType = 'FOLLOWED_TAGS' | 'SEARCH' | 'EDITORIAL_PROMOTIONS' | 'ZERO_ORGANIC_LIQUIDITY'; + // Generated from: com/linkedin/avro2pegasus/events/common/interest/RecommendedContentFromFollowedEntity.pdsc + + export interface RecommendedContentFromFollowedEntity { + content: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + score: number; + followedEntities: FollowedEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/interest/Result.pdsc + + export interface Result { + entity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + features: FeatureVector; + } + } + namespace Interviewprep { + // Generated from: com/linkedin/avro2pegasus/events/common/interviewprep/InterviewPrepEntryPointContext.pdsc + + export type InterviewPrepEntryPointContext = + | 'POST_APPLY' + | 'JOB_TRACKER' + | 'PROFILE_RIGHT_RAIL_DESKTOP' + | 'MY_PREMIUM'; + } + namespace Jobs { + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/ActionReason.pdsc + + export type ActionReason = 'TITLE' | 'SUPER_TITLE' | 'COMPANY' | 'LOCATION' | 'SENIORITY'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/BudgetPageContinueData.pdsc + + export interface BudgetPageContinueData { + budgetRecommendation?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobBudgetRecommendation; + budgetSelection: Com.Linkedin.Avro2pegasus.Events.Jobs.JobBudgetSelection; + budgetIndustryBenchmark?: JobBudgetIndustryBenchmark; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/CompanyStandardizer.pdsc + + export type CompanyStandardizer = 'OMNI_COMPANY_STANDARDIZER' | 'JOB_TO_COMPANY_STANDARDIZER'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/CompensationRange.pdsc + + export interface CompensationRange { + median?: string; + min: string; + max: string; + currencyCode: string; + payPeriod: Com.Linkedin.Avro2pegasus.Events.Common.Premium.CompensationPeriod; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/EmailVerificationData.pdsc + + export interface EmailVerificationData { + isEmailAlreadyVerified?: boolean; + verifyEmailByPin?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/EmploymentStatus.pdsc + + export type EmploymentStatus = + | 'FULL_TIME' + | 'PART_TIME' + | 'CONTRACT' + | 'TEMPORARY' + | 'TEST' + | 'OTHER' + | 'VOLUNTEER' + | 'INTERNSHIP'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/EntityRelevanceFeedbackChannel.pdsc + + export type EntityRelevanceFeedbackChannel = 'TOP_JOB' | 'JYMBII' | 'BREAKING_JOB' | 'FAST_TRACK'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/EntityRelevanceFeedbackType.pdsc + + export type EntityRelevanceFeedbackType = 'JOB_POSTING'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/FormPageContinueData.pdsc + + export interface FormPageContinueData { + suggestedFormData: Com.Linkedin.Avro2pegasus.Events.Jobs.JobPostingFormData; + selectedFormData: Com.Linkedin.Avro2pegasus.Events.Jobs.JobPostingFormData; + howYouHearAboutUs: Com.Linkedin.Avro2pegasus.Events.Jobs.JobPostingChannelType[]; + howToCollectApplication: JobApplyMethod; + action: JobPostingFormAction; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/GuestWowAccountCreationStatus.pdsc + + export type GuestWowAccountCreationStatus = 'SUCCEEDED' | 'UI_INVALID' | 'API_INVALID' | 'CHALLENGED'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/GuestWowCreateAccountData.pdsc + + export interface GuestWowCreateAccountData { + guestWowAccountCreationStatus?: GuestWowAccountCreationStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/InferredSkill.pdsc + + export interface InferredSkill { + skillUrn: string; + skillScore?: number; + skillSource?: SkillSource; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobActionType.pdsc + + export type JobActionType = + | 'SAVE' + | 'UNSAVE' + | 'APPLY_ONSITE' + | 'APPLY_OFFSITE' + | 'SHARE' + | 'REMOVE' + | 'LIKE' + | 'UNLIKE' + | 'REPORT'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobApplyMethod.pdsc + + export type JobApplyMethod = 'ONSITE_APPLY' | 'OFFSITE_APPLY'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobBudgetGroup.pdsc + + export type JobBudgetGroup = 'TREATMENT' | 'CONTROL' | 'DEFAULT'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobBudgetGroupDeliveryStats.pdsc + + export interface JobBudgetGroupDeliveryStats { + budgetGroup: JobBudgetGroup; + numActivities: number; + charge: number; + chargeInUSD: number; + cost: number; + costInUSD: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobBudgetIndustryBenchmark.pdsc + + export interface JobBudgetIndustryBenchmark { + minBudget: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + maxBudget: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobCandidateRecommendation.pdsc + + export interface JobCandidateRecommendation { + memberUrn: string; + score: number; + excludingReason?: JobCandidateRecommendationExcludingReason; + memberCutoffScore?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobCandidateRecommendationExcludingReason.pdsc + + export type JobCandidateRecommendationExcludingReason = 'UCF' | 'CUTOFF' | 'EXPERIMENT'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobDerivedCompanyResult.pdsc + + export interface JobDerivedCompanyResult { + companyStandardizer: CompanyStandardizer; + suggestedCompanyUrn: string; + standardizerConfidenceScore: number; + standardizerModelVersion: string; + suggestedCompanyName?: string; + isUsedOnRawJob?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobExperienceLevel.pdsc + + export type JobExperienceLevel = + | 'NOT_APPLICABLE' + | 'INTERNSHIP' + | 'ENTRY_LEVEL' + | 'ASSOCIATE' + | 'MID_SENIOR_LEVEL' + | 'DIRECTOR' + | 'EXECUTIVE'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobFieldProcessorType.pdsc + + export type JobFieldProcessorType = 'FIXED' | 'DYNAMIC'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobFunction.pdsc + + export type JobFunction = + | 'ACCT' + | 'ADM' + | 'ADVR' + | 'ANLS' + | 'ART' + | 'BD' + | 'CNSL' + | 'CUST' + | 'DIST' + | 'DSGN' + | 'EDU' + | 'ENG' + | 'FIN' + | 'GENB' + | 'HCPR' + | 'HR' + | 'IT' + | 'LGL' + | 'MGMT' + | 'MNFC' + | 'MRKT' + | 'PR' + | 'PRCH' + | 'PRDM' + | 'PRJM' + | 'PROD' + | 'QA' + | 'RSCH' + | 'SALE' + | 'SCI' + | 'STRA' + | 'SUPL' + | 'TRNG' + | 'WRT' + | 'OTHR'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobPostingChangeData.pdsc + + export interface JobPostingChangeData { + title: string; + description: string; + companyUrn?: string; + state: Com.Linkedin.Avro2pegasus.Events.Jobs.JobState; + countryCode?: string; + regionCode?: number; + longitude?: number; + latitude?: number; + jobFunctions: JobFunction[]; + employmentStatus: EmploymentStatus; + createdTime: number; + expiredTime?: number; + listedTime?: number; + originalListedTime?: number; + industryUrns: string[]; + jobPosterUrn?: string; + companyName?: string; + companyDescription?: string; + locationDescription?: string; + skillUrns: string[]; + ownerUrn?: string; + companyJobCode?: string; + companyApplyUrl?: string; + internalTags: JobPostingInternalTag[]; + versionTag?: number; + limitVisibilityOrganizationUrns: string[]; + multiplexHash?: string; + dedupingHash?: string; + postalCode?: string; + skillsDescription?: string; + isWorkRemoteAllowed: boolean; + jobPostingSourceType?: JobPostingSourceType; + titleUrn?: string; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.DateRange; + duration?: Com.Linkedin.Avro2pegasus.Events.Common.TimeSpanRange; + geoUrn?: string; + showPosterInfo: boolean; + isSponsored: boolean; + sponsoredCampaignUrn?: string; + jobEntitlementGrantUrn?: string; + jobEntitlementUrns: string[]; + lastModifiedTime?: number; + experienceLevel?: Com.Linkedin.Avro2pegasus.Events.Jobs.ExperienceLevel; + jobExperienceLevel?: JobExperienceLevel; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobPostingCompensation.pdsc + + export interface JobPostingCompensation { + base: CompensationRange; + additional?: CompensationRange; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobPostingFormAction.pdsc + + export type JobPostingFormAction = 'SAVE_DRAFT' | 'SAVE_LISTED' | 'SAVE_CONTINUE'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobPostingImpressionChannel.pdsc + + export type JobPostingImpressionChannel = + | 'JOBS_HOME' + | 'JOB_SEARCH_RESULT_PAGE' + | 'JYMBII_EMAIL' + | 'JOB_DETAILS_PAGE' + | 'NUS'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobPostingImpressionPortal.pdsc + + export type JobPostingImpressionPortal = 'JOB_SEEKER_APP' | 'VOYAGER' | 'NEPTUNE'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobPostingInternalTag.pdsc + + export type JobPostingInternalTag = 'UBIQUITY2' | 'UBIQUITY3' | 'UBIQUITY4'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobPostingSourceType.pdsc + + export type JobPostingSourceType = + | 'JOB_INGESTION' + | 'JOB_WRAPPING' + | 'ONSITE' + | 'REFERRALS_COMPANY_INTEGRATION'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobPromotionErrorType.pdsc + + export type JobPromotionErrorType = + | 'PROMO_DOES_NOT_EXIST' + | 'INVALID_PROMOTION' + | 'EXCEED_MAX_USAGE' + | 'CURRENCY_MISMATCH' + | 'NOT_FIRST_TIME_POSTER' + | 'NOT_PAY_FOR_PERFORMANCE_JOB_POSTER' + | 'THROTTLED' + | 'ENCRYPTION'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobPromotionType.pdsc + + export type JobPromotionType = 'URL_PROMO_CODE' | 'TEXT_ENTRY_PROMO_OFFER'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobRankingSlotType.pdsc + + export type JobRankingSlotType = 'PROMOTED' | 'ORGANIC'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobResponsePredictionScoreType.pdsc + + export type JobResponsePredictionScoreType = 'CLICK' | 'APPLY' | 'QUALITY'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobsTargetingAttributesPrefillType.pdsc + + export type JobsTargetingAttributesPrefillType = 'INFERRED' | 'STORED'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/JobToMemberScoringChannel.pdsc + + export type JobToMemberScoringChannel = 'INSTANT_SEARCH_ALERTS'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/MemberAction.pdsc + + export type MemberAction = 'JOB_DISMISS' | 'JOB_SAVE'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/MemberJobActivityType.pdsc + + export type MemberJobActivityType = + | 'VIEW' + | 'SAVE' + | 'UNSAVE' + | 'APPLY' + | 'OFFSITE_APPLY_CLICK' + | 'WITHDRAW_APPLICATION' + | 'CONFIRM_OFFSITE_APPLY' + | 'DISMISS_OFFSITE_APPLY' + | 'REFERRAL_REQUESTED' + | 'REFERRAL_RESPONDED' + | 'REFERRAL_RECEIVED' + | 'APPLICATION_VIEWED_ONLINE' + | 'APPLICATION_VIEWED_IN_EMAIL' + | 'APPLICANT_PROFILE_VIEWED' + | 'GET_IN_TOUCH' + | 'NOT_HEARD_BACK' + | 'INTERVIEW' + | 'OFFER' + | 'REJECT' + | 'HIRED' + | 'SHORTLISTED' + | 'PROFILE_EXPORTED' + | 'PROFILE_SHARED' + | 'RESUME_DOWNLOADED'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/MooJobRankingRequestRelevanceModelType.pdsc + + export type MooJobRankingRequestRelevanceModelType = + | 'JOB_RESPONSE_PREDICTION_SERVICE_CLICK' + | 'JOB_RESPONSE_PREDICTION_SERVICE_APPLY' + | 'JOB_RESPONSE_PREDICTION_SERVICE_QUALITY' + | 'JOB_SEARCH_CANDIDATE_SELECTION_MODEL' + | 'JOB_SEARCH_SCORING_MODEL' + | 'JYMBII_QUERY_MODEL' + | 'JYMBII_SCORING_MODEL'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/MooParameters.pdsc + + export interface MooParameters { + inputScore: number; + pCTR?: number; + pApply?: number; + jobCPC?: number; + jobPacingScore?: number; + muParameter?: number; + outputScore: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/OptimizePageContinueData.pdsc + + export interface OptimizePageContinueData { + isAddProfile: boolean; + isAddSalary: boolean; + isSelectStandardizedTitle: boolean; + salaryModule?: SalaryModule; + rawTitleName?: string; + standardizedTitleVersion?: string; + modelVersion?: string; + suggestedTitleUrns?: string[]; + selectedTitleUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/PostpaidBillingStats.pdsc + + export interface PostpaidBillingStats { + charge: number; + chargeInUSD: number; + effectiveCost: number; + effectiveCostInUSD: number; + cost: number; + costInUSD: number; + numActivities: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/PostpaidDailyBudget.pdsc + + export interface PostpaidDailyBudget { + spendLimit: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + chargeCapFactor: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/PostpaidLifetimeBudget.pdsc + + export interface PostpaidLifetimeBudget { + spendLimit: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/SalaryModule.pdsc + + export interface SalaryModule { + invalidSalaryProvided: boolean; + salaryModuleStatus: SalaryModuleStatusType; + posterSelectionInSalaryModule?: SalaryModuleSelectionType; + posterProvidedCompensation?: JobPostingCompensation; + estimatedCompensation?: JobPostingCompensation; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/SalaryModuleSelectionType.pdsc + + export type SalaryModuleSelectionType = 'ESTIMATION' | 'POSTER_NOT_FILLED' | 'POSTER_FILLED'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/SalaryModuleStatusType.pdsc + + export type SalaryModuleStatusType = 'SALARY_MODULE_OFF' | 'ESTIMATION_OFF' | 'ESTIMATION_ON'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/SkillSource.pdsc + + export type SkillSource = + | 'UNIDENTIFIED' + | 'EXPLICIT' + | 'IMPLICIT' + | 'INFERRED' + | 'TITLE' + | 'SKILL_SECTION' + | 'REQUIREMENTS' + | 'RESPONSIBILITIES'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/SkillStandardizationVersion.pdsc + + export type SkillStandardizationVersion = 'V1' | 'V5' | 'V5_1'; + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/SponsorPageContinueData.pdsc + + export interface SponsorPageContinueData { + isSponsorSelected: boolean; + dailyBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + maximumBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/TargetingPageContinueData.pdsc + + export interface TargetingPageContinueData { + suggestedIncludedTargetingAttributes?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobsTargetingAttributes; + selectedIncludedTargetingAttributes: Com.Linkedin.Avro2pegasus.Events.Jobs.JobsTargetingAttributes; + skillStandardizationVersion?: SkillStandardizationVersion; + prefillType?: JobsTargetingAttributesPrefillType; + inferredSkills?: InferredSkill[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/UnifiedWowPageContinueData.pdsc + + export interface UnifiedWowPageContinueData { + isCompanyProvided: boolean; + isEmailProvided: boolean; + isPhoneNumberProvided: boolean; + rangeOfNumHiresProvided?: Com.Linkedin.Avro2pegasus.Events.Common.IntegerRange; + isSalesLeadSubmitted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/jobs/WowPageContinueData.pdsc + + export interface WowPageContinueData { + numberFieldsFilled: number; + isCompanyTypeaheadAccepted: boolean; + isTitleTypeaheadAccepted: boolean; + isLocationTypeaheadAccepted: boolean; + } + } + namespace Khronos { + // Generated from: com/linkedin/avro2pegasus/events/common/khronos/KhronosHeader.pdsc + + export interface KhronosHeader { + id: string; + fireTime: number; + } + } + namespace Lax { + // Generated from: com/linkedin/avro2pegasus/events/common/lax/BidFeedbackReason.pdsc + + export type BidFeedbackReason = + | 'WIN' + | 'OUTBID' + | 'TIMEOUT' + | 'MISSING_VALUES' + | 'UNPARSEABLE' + | 'WRONG_FORMAT' + | 'BELOW_PRICE_FLOOR' + | 'CREATIVE_FILTERED' + | 'BLOCKED_ADOMAIN' + | 'BLOCKED_CATEGORY' + | 'NON_HTTP_OK' + | 'CREATIVE_NOT_APPROVED' + | 'CREATIVE_REVIEW_PENDING'; + } + namespace Learning { + // Generated from: com/linkedin/avro2pegasus/events/common/learning/EnterpriseLearningAccountBindingType.pdsc + + export type EnterpriseLearningAccountBindingType = 'OPTIONAL' | 'REQUIRED' | 'FORBIDDEN'; + // Generated from: com/linkedin/avro2pegasus/events/common/learning/EnterpriseLearningActivationChannelType.pdsc + + export type EnterpriseLearningActivationChannelType = + | 'ADMIN_EMAIL_INVITATION' + | 'FLAGSHIP_NOTIFICATION' + | 'SINGLE_SIGN_ON' + | 'UNBOUND_NON_SINGLE_SIGN_ON' + | 'JIT_INVITATION' + | 'ADMIN_EMAIL_INVITATION_VIA_CSV_UPLOAD' + | 'VERIFIED_EMAIL_DOMAIN_INVITATION' + | 'ADMIN_EMAIL_INVITATION_VIA_RESEND' + | 'EMAIL_REMINDER_INVITATION'; + // Generated from: com/linkedin/avro2pegasus/events/common/learning/LearnerLoginType.pdsc + + export type LearnerLoginType = + | 'MEMBER' + | 'ENTERPRISE_BOUND_SSO' + | 'ENTERPRISE_BOUND_NON_SSO' + | 'ENTERPRISE_UNBOUND_SSO' + | 'ENTERPRISE_UNBOUND_NON_SSO'; + // Generated from: com/linkedin/avro2pegasus/events/common/learning/LearningChannelType.pdsc + + export type LearningChannelType = 'LEARNING' | 'FLAGSHIP'; + // Generated from: com/linkedin/avro2pegasus/events/common/learning/LoginMethodEvent.pdsc + + export interface LoginMethodEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + authModeName?: string; + isMemberLoginRequired: boolean; + isEnterpriseLoginRequired: boolean; + loginType: LearnerLoginType; + isSignupRequired?: boolean; + } + } + namespace Lego { + // Generated from: com/linkedin/avro2pegasus/events/common/lego/PinotLegoActivityType.pdsc + + export type PinotLegoActivityType = + | 'IMPRESSION' + | 'PRIMARY_ACTION' + | 'DISMISS' + | 'SECONDARY_ACTION' + | 'SKIP'; + } + namespace Lighthouse { + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/ActionType.pdsc + + export type ActionType = 'INCLUDE' | 'EXCLUDE' | 'ALL'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/ChannelState.pdsc + + export type ChannelState = + | 'CREDENTIAL_REQUIRED' + | 'ACTIVE' + | 'NEW' + | 'QUEUED' + | 'PROCESSING' + | 'INCOMPLETE' + | 'FAILED' + | 'DISABLED' + | 'DELETED' + | 'DISABLEDANDNOTIFIED' + | 'QUOTA_EXCEEDED' + | 'DELEGATED'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/CompanyType.pdsc + + export type CompanyType = + | 'PUBLIC_COMPANY' + | 'EDUCATIONAL_INSTITUTION' + | 'SELF_EMPLOYED' + | 'GOVERNMENT_AGENCY' + | 'NON_PROFIT' + | 'SELF_OWNED' + | 'PRIVATELY_HELD' + | 'PARTNERSHIP'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/DepartmentFilter.pdsc + + export interface DepartmentFilter extends Com.Linkedin.Avro2pegasus.Events.Common.IntegerRange { + departmentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/FilterScope.pdsc + + export type FilterScope = 'LEAD' | 'ACCOUNT' | 'CURRENT_OR_PAST' | 'CURRENT' | 'PAST' | 'PAST_NOT_CURRENT'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/FollowerRange.pdsc + + export type FollowerRange = + | 'FOLLOWER_1_TO_50' + | 'FOLLOWER_51_TO_100' + | 'FOLLOWER_101_TO_1000' + | 'FOLLOWER_1001_TO_5000' + | 'FOLLOWER_5001_OR_MORE'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/FortuneRankingRange.pdsc + + export type FortuneRankingRange = + | 'FORTUNE_50' + | 'FORTUNE_51_TO_100' + | 'FORTUNE_101_TO_250' + | 'FORTUNE_251_TO_500' + | 'FORTUNE_501_TO_1000'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/GenericSearchFilter.pdsc + + export interface GenericSearchFilter { + scope?: FilterScope; + includedValues: string[]; + excludedValues: string[]; + isIncludeAll: boolean; + isExcludeAll: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/JobOpportunity.pdsc + + export type JobOpportunity = 'HIRING_ON_LINKEDIN'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/LighthouseAdminSyncCrmChannelStatus.pdsc + + export interface LighthouseAdminSyncCrmChannelStatus { + contractUrn: string; + channelState: ChannelState; + errorMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/MemberRelationship.pdsc + + export type MemberRelationship = 'FIRST_DEGREE' | 'SECOND_DEGREE' | 'THIRD_DEGREE_AND_BEYOND' | 'GROUP'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/MemberSince.pdsc + + export type MemberSince = + | 'ONE_DAY_AGO' + | 'TWO_TO_SEVEN_DAYS_AGO' + | 'EIGHT_TO_FOURTEEN_DAYS_AGO' + | 'FIFTEEN_TO_THIRTY_DAYS_AGO' + | 'ONE_TO_THREE_MONTHS_AGO'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/PivotParam.pdsc + + export interface PivotParam { + pivotSearchType: PivotSearchType; + entityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/PivotSearchType.pdsc + + export type PivotSearchType = + | 'SAVED_LEADS' + | 'ALL_CONNECTIONS' + | 'MY_NETWORK' + | 'SAVED_SEARCH' + | 'SAVED_LEADS_AT_COMPANY' + | 'LEAD_RECOMMENDATIONS_AT_COMPANY' + | 'RECOMMENDED_LEADS' + | 'ALL_EMPLOYEES_AT_COMPANY' + | 'SIMILAR_PROFILES' + | 'TEAMLINK_AT_COMPANY' + | 'TEAMLINK_INTRO_FOR_MEMBER' + | 'SHARED_CONNECTIONS' + | 'SIMILAR_COMPANIES' + | 'SAVED_COMPANIES' + | 'RECOMMENDED_COMPANIES' + | 'ACCOUNT_LIST' + | 'LEAD_LIST'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/PostalCodeFilter.pdsc + + export interface PostalCodeFilter { + radius?: number; + countryCode: string; + zipCodes: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SalesNavigatorApplicationPlatformAnalyticsDataType.pdsc + + export type SalesNavigatorApplicationPlatformAnalyticsDataType = 'ACTIVITY' | 'ACTIVITY_OUTCOME' | 'SEAT'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchDataSource.pdsc + + export type SearchDataSource = 'LINKEDIN' | 'SALESFORCE' | 'DYNAMICS'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchFilter.pdsc + + export interface SearchFilter { + filterType: SearchFilterType; + subFilterType?: string; + filterValues: SearchFilterValue[]; + isIncludeAll: boolean; + isExcludeAll: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchFilterType.pdsc + + export type SearchFilterType = + | 'KEYWORDS' + | 'EXCLUDE_SAVED' + | 'EXCLUDE_VIEWED' + | 'EXCLUDE_CONTACTED' + | 'SEARCH_WITHIN_MY_ACCOUNT' + | 'CRM_CONTACTS' + | 'FIRST_NAME' + | 'LAST_NAME' + | 'POST_KEYWORDS' + | 'TITLE' + | 'GEO' + | 'RELATIONSHIP' + | 'INDUSTRY' + | 'SCHOOL' + | 'PROFILE_LANGUAGE' + | 'FUNCTION' + | 'SENIORITY_LEVEL' + | 'TAG' + | 'TENURE_AT_CURRENT_POSITION' + | 'TENURE_AT_CURRENT_COMPANY' + | 'YEARS_OF_EXPERIENCE' + | 'COMPANY_SIZE' + | 'COMPANY_TYPE' + | 'GROUP' + | 'MEMBER_SINCE' + | 'COMPANY' + | 'CURRENT_COMPANY' + | 'PAST_COMPANY' + | 'POSTAL_CODE' + | 'DEPARTMENT_SIZE' + | 'REVENUE' + | 'COMPANY_GROWTH' + | 'DEPARTMENT_GROWTH' + | 'TECHNOLOGIES_USED' + | 'FORTUNE' + | 'NUM_OF_FOLLOWERS' + | 'JOB_OPPORTUNITY' + | 'DATA_SOURCE' + | 'BING_GEO' + | 'CUSTOM_SALES_LIST'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchFilterValue.pdsc + + export interface SearchFilterValue { + name: string; + count?: number; + isSelected: boolean; + isNegated: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchHit.pdsc + + export interface SearchHit { + trackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + score?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchMetadata.pdsc + + export interface SearchMetadata { + capSearchHistoryUrn?: string; + isLogHistoryEnabled: boolean; + capSavedSearchUrn?: string; + pivotParameter?: PivotParam; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchRequest.pdsc + + export interface SearchRequest { + keywordFilter?: string; + isSavedExcluded: boolean; + isViewedExcluded: boolean; + isContactedExcluded: boolean; + isSearchWithinMyAccount: boolean; + crmContactActions?: ActionType; + firstNameFilter?: string; + lastNameFilter?: string; + postKeywordFilter?: string; + titleFilter?: TimeBasedFilter; + geoFilter: string[]; + relationshipFilters: MemberRelationship[]; + industryUrnFilters: string[]; + schoolUrnFilters: string[]; + profileLanguageFilters: Com.Linkedin.Avro2pegasus.Events.Locale[]; + functionUrnFilters: string[]; + seniorityUrnFilters: string[]; + tagUrnFilters: string[]; + tenureAtCurrentPositionFilters: WorkExperienceTimeRange[]; + tenureAtCurrentCompanyFilters: WorkExperienceTimeRange[]; + yearsOfExperienceFilters: WorkExperienceTimeRange[]; + companySizeRangeFilters: Com.Linkedin.Avro2pegasus.Events.Common.StaffCountRangeType[]; + companyTypeFilters: CompanyType[]; + groupUrnFilters: string[]; + memberSinceFilters: MemberSince[]; + companyFilter?: TimeBasedFilter; + currentCompanyFilters: string[]; + pastCompanyFilters: string[]; + postalCodeFilter?: PostalCodeFilter; + revenueRangeFilter?: Com.Linkedin.Avro2pegasus.Events.Common.IntegerRange; + departmentSizeRangeFilter?: DepartmentFilter; + companySizeGrowthFilter?: Com.Linkedin.Avro2pegasus.Events.Common.IntegerRange; + departmentSizeGrowthFilter?: DepartmentFilter; + technologiesUsedFilters: string[]; + fortuneRankingRangeFilters: FortuneRankingRange[]; + followerRangeFilters: FollowerRange[]; + jobOpportunityFilters: JobOpportunity[]; + searchDataSourceFilters: SearchDataSource[]; + isFetchHitsEnabled: boolean; + isFetchFiltersEnabled: boolean; + isFetchSpotlightsEnabled: boolean; + selectedSpotlight?: SearchSpotlightType; + sortOrder?: SearchSortOrder; + titleV2Filter?: GenericSearchFilter; + geoV2Filter?: GenericSearchFilter; + bingGeoUrnFilter?: GenericSearchFilter; + industryUrnV2Filter?: GenericSearchFilter; + schoolUrnV2Filter?: GenericSearchFilter; + functionUrnV2Filter?: GenericSearchFilter; + seniorityUrnV2Filter?: GenericSearchFilter; + companyV2Filter?: GenericSearchFilter; + customSalesListUrnFilter?: GenericSearchFilter; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchResult.pdsc + + export interface SearchResult { + hits: SearchHit[]; + filters: SearchFilter[]; + spotlights: SearchSpotlight[]; + totalCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchSortOrder.pdsc + + export type SearchSortOrder = 'ALPHABETICAL' | 'RECENCY' | 'RELEVANCE'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchSpotlight.pdsc + + export interface SearchSpotlight { + spotlightType: SearchSpotlightType; + count: number; + isSelected: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/SearchSpotlightType.pdsc + + export type SearchSpotlightType = + | 'ALL' + | 'RECENT_POSITION_CHANGE' + | 'TEAMLINK_INTRO' + | 'MENTIONED_IN_THE_NEWS' + | 'RECENTLY_POSTED_ON_LINKEDIN' + | 'COMMONALITIES' + | 'COMPANY_FOLLOW' + | 'SENIOR_LEADERSHIP_CHANGE'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/TimeBasedFilter.pdsc + + export interface TimeBasedFilter { + scope: TimeScope; + values: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/TimeScope.pdsc + + export type TimeScope = 'CURRENT_OR_PAST' | 'CURRENT' | 'PAST' | 'PAST_NOT_CURRENT'; + // Generated from: com/linkedin/avro2pegasus/events/common/lighthouse/WorkExperienceTimeRange.pdsc + + export type WorkExperienceTimeRange = + | 'LESS_THAN_ONE_YEAR' + | 'ONE_TO_TWO_YEARS' + | 'THREE_TO_FIVE_YEARS' + | 'SIX_TO_TEN_YEARS' + | 'MORE_THAN_TEN_YEARS'; + } + namespace Media { + // Generated from: com/linkedin/avro2pegasus/events/common/media/AudioTrackMetadata.pdsc + + export interface AudioTrackMetadata { + mimeType: string; + targetBitRate: number; + samplingRate: number; + channelCount: number; + duration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/media/AudioTrackTranscoderResult.pdsc + + export interface AudioTrackTranscoderResult { + source: AudioTrackMetadata; + decoderName?: string; + target?: AudioTrackMetadata; + encoderName?: string; + error?: TransformerError; + } + // Generated from: com/linkedin/avro2pegasus/events/common/media/GenericTrackTransformationResult.pdsc + + export interface GenericTrackTransformationResult { + sourceMimeType: string; + targetMimeType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/media/ImageTrackCompressionResult.pdsc + + export interface ImageTrackCompressionResult { + sourceImageTrackMetadata: ImageTrackMetadata; + targetImageTrackMetadata?: ImageTrackMetadata; + error?: TransformerError; + } + // Generated from: com/linkedin/avro2pegasus/events/common/media/ImageTrackMetadata.pdsc + + export interface ImageTrackMetadata { + mimeType: string; + fileSize: number; + width: number; + height: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/media/MediaContentCreationSessionTrackingObject.pdsc + + export interface MediaContentCreationSessionTrackingObject { + sessionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + useCase: MediaContentCreationUseCase; + } + // Generated from: com/linkedin/avro2pegasus/events/common/media/MediaContentCreationUseCase.pdsc + + export type MediaContentCreationUseCase = + | 'VIDEO_SHARING' + | 'IMAGE_SHARING' + | 'PROFILE_DISPLAY_PHOTO' + | 'PROFILE_ORIGINAL_PHOTO' + | 'PROFILE_DISPLAY_BACKGROUND' + | 'PROFILE_ORIGINAL_BACKGROUND' + | 'GROUP_LOGO' + | 'GROUP_HERO_IMAGE' + | 'DOCUMENT_SHARING' + | 'UNKNOWN' + | 'MESSAGING_FILE_ATTACHMENT' + | 'MESSAGING_PHOTO_ATTACHMENT' + | 'MESSAGING_AUDIO' + | 'MESSAGING_VIDEO' + | 'VIDEO_THUMBNAIL' + | 'APPRECIATION' + | 'INTERVIEW_PREP_VIDEO' + | 'CAREER_VIDEO' + | 'EVENT_LOGO' + | 'EVENT_BACKGROUND' + | 'COMMENT_IMAGE' + | 'CELEBRATION' + | 'COMPANY_LOGO' + | 'PROFILE_TREASURY_IMAGE' + | 'PROFILE_TREASURY_DOCUMENT' + | 'STORIES_VIDEO' + | 'STORIES_IMAGE'; + // Generated from: com/linkedin/avro2pegasus/events/common/media/MediaLiveState.pdsc + + export type MediaLiveState = 'IS_LIVE' | 'WAS_LIVE' | 'PRE_RECORDED'; + // Generated from: com/linkedin/avro2pegasus/events/common/media/MediaTrackTransformation.pdsc + + export interface MediaTrackTransformation { + videoTrackTranscoderResult?: VideoTrackTranscoderResult; + audioTrackTranscoderResult?: AudioTrackTranscoderResult; + imageTrackCompressionResult?: ImageTrackCompressionResult; + genericTrackTransformationResult?: GenericTrackTransformationResult; + totalTrackTransformationTime: number; + state: TransformerState; + } + // Generated from: com/linkedin/avro2pegasus/events/common/media/MediaTransformationEvent.pdsc + + export interface MediaTransformationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + transformationStartTime: number; + transformationEndTime: number; + mediaTrackTransformations: MediaTrackTransformation[]; + mediaFileInfo: Com.Linkedin.Avro2pegasus.Events.Mediaupload.MediaFileInfo; + mediaContentCreationSessionTrackingObject: MediaContentCreationSessionTrackingObject; + targetMediaFileInfo?: Com.Linkedin.Avro2pegasus.Events.Mediaupload.MediaFileInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/common/media/TransformerError.pdsc + + export type TransformerError = + | 'FAILED_UNKNOWN' + | 'READ_FAILURE' + | 'INSUFFICIENT_STORAGE' + | 'INSUFFICIENT_WRITE_PERMISSIONS' + | 'DECODER_CONFIGURATION_ERROR' + | 'ENCODER_CONFIGURATION_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/common/media/TransformerState.pdsc + + export type TransformerState = 'COMPLETED' | 'TIMEOUT' | 'CANCELLED' | 'FAILED' | 'SKIPPED'; + // Generated from: com/linkedin/avro2pegasus/events/common/media/VideoTrackMetadata.pdsc + + export interface VideoTrackMetadata { + mimeType: string; + targetBitRate: number; + targetFrameRate: number; + width: number; + height: number; + keyFrameInterval: number; + duration: number; + orientationHintInDegrees: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/media/VideoTrackTranscoderResult.pdsc + + export interface VideoTrackTranscoderResult { + source: VideoTrackMetadata; + decoderName?: string; + target?: VideoTrackMetadata; + encoderName?: string; + error?: TransformerError; + } + } + namespace Merlin { + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinActionType.pdsc + + export type MerlinActionType = 'CLICK' | 'SELECT' | 'UNSELECT' | 'SAVE' | 'UNSAVE'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinCampaignCustomViewKey.pdsc + + export interface MerlinCampaignCustomViewKey { + corpuserUrn: string; + viewId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinCampaignNoteKey.pdsc + + export interface MerlinCampaignNoteKey { + entityUrn: string; + noteId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinCampaignNoteUsageContextType.pdsc + + export type MerlinCampaignNoteUsageContextType = 'NOTE_LIST' | 'NOTIFICATION'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinCrmContact.pdsc + + export interface MerlinCrmContact { + trackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + firstName?: string; + lastName?: string; + email?: string; + title?: string; + companyName?: string; + companyId?: number; + requestor?: string; + requestTime?: number; + requestorBusinessLine?: MerlinLineOfBusiness; + } + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinLineOfBusiness.pdsc + + export type MerlinLineOfBusiness = 'LMS' | 'LSS' | 'LTS' | 'LLS' | 'EL8' | 'CEG' | 'TAL'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinRecommendation.pdsc + + export interface MerlinRecommendation { + recommendation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + recommendationType: string; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + score?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinRecommendationActionType.pdsc + + export type MerlinRecommendationActionType = + | 'ACCEPT' + | 'REJECT' + | 'REMIND_TOMORROW' + | 'REMIND_NEXT_WEEK' + | 'VIEW_QUICK_WIN_DETAIL' + | 'CLICK_QUICK_WIN_SUMMARY_LINK' + | 'CLICK_QUICK_WIN_ACCOUNT' + | 'CLICK_ALERT_TEMPLATE_LINK' + | 'CLICK_QUICK_WIN_DETAIL_CTA' + | 'VIEW_STRATEGIC_ACCOUNT_DETAIL' + | 'CLICK_STRATEGIC_ACCOUNT_ACCOUNT' + | 'CLICK_STRATEGIC_ACCOUNT_INSIGHT' + | 'UNLIKE' + | 'LIKE' + | 'DELETE' + | 'FAVORITE' + | 'UNFAVORITE'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinRecommendationCategory.pdsc + + export type MerlinRecommendationCategory = 'QUICK_WIN' | 'STRATEGIC_ACCOUNT'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchActionType.pdsc + + export type MerlinSearchActionType = + | 'VIEW_PROSPECT_INSIGHT' + | 'VIEW_PROSPECT_IN_SALES_NAVIGATOR' + | 'SEND_EMAIL_TO_PROSPECT' + | 'COPY_PROSPECT_EMAIL' + | 'SAVE_SFDC_CONTACT' + | 'VIEW_SFDC_CONTACT' + | 'SAVE_DYNAMICS_CONTACT' + | 'VIEW_DYNAMICS_CONTACT'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchFilter.pdsc + + export interface MerlinSearchFilter { + filterName: MerlinSearchFilterName; + filterValues: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchFilterName.pdsc + + export type MerlinSearchFilterName = + | 'PROSPECT_SEARCH_COMPANY' + | 'PROSPECT_SEARCH_SENIORITY' + | 'PROSPECT_SEARCH_FUNCTION' + | 'PROSPECT_SEARCH_LOCATION' + | 'PROSPECT_SEARCH_LTS_SUBS' + | 'PROSPECT_SEARCH_LSS_SUBS' + | 'PROSPECT_SEARCH_RECENT_JOB_POSTERS' + | 'PROSPECT_SEARCH_COMPANY_ADMINS' + | 'PROSPECT_SEARCH_BLUEBIRDS' + | 'PROSPECT_SEARCH_TEAM_LINK_CONNECTIONS' + | 'PROSPECT_SEARCH_EXCLUDE_SFDC_CONTACTS' + | 'PROSPECT_SEARCH_LTS_RECRUITER_SEAT_HOLDERS' + | 'PROSPECT_SEARCH_LMS_COMPANY_UPDATES_POSTERS' + | 'PROSPECT_SEARCH_LMS_SPONSORED_CONTENTS_POSTERS' + | 'PROSPECT_SEARCH_LLS_LEARNING_DEVELOPMENT_PROFESSIONAL' + | 'PROSPECT_SEARCH_LLS_BLUEBIRDS' + | 'PROSPECT_SEARCH_LLS_OTHER_KEY_CONTACTS' + | 'PROSPECT_SEARCH_LLS_SUBS'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchHit.pdsc + + export interface MerlinSearchHit { + resultObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + absolutePosition: number; + score?: number; + bullseye?: number; + dms?: number; + ips?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchImpressionResult.pdsc + + export interface MerlinSearchImpressionResult { + trackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + impressionTime: number; + visibleDuration: number; + resultSize: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + visibleSize: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchIndexField.pdsc + + export type MerlinSearchIndexField = + | 'LSS_ACTIVE_SUBSCRIPTIONS' + | 'LSS_SUBSCRIPTION_TIME_PERIOD' + | 'LSS_BLUEBIRDS' + | 'LLS_BLUEBIRDS' + | 'LLS_OTHER_KEY_CONTACTS' + | 'LLS_SUBSCRIPTIONS' + | 'LMS_ADMINS' + | 'LMS_COMPANY_UPDATES_POSTERS' + | 'LMS_SPONSORED_CONTENTS_POSTERS' + | 'LTS_RECENT_JOB_POSTERS' + | 'LTS_RECRUITER_SEAT_HOLDERS' + | 'LTS_SUBSCRIPTIONS'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchIndexLLSContactType.pdsc + + export type MerlinSearchIndexLLSContactType = + | 'FULL' + | 'SUB' + | 'DECISION_MAKER' + | 'CONTRACT_CONTACT' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchIndexLTSSubscriptionType.pdsc + + export type MerlinSearchIndexLTSSubscriptionType = 'RCORP' | 'RLITE'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchIndexSubscriptionChannel.pdsc + + export type MerlinSearchIndexSubscriptionChannel = 'FIELD' | 'ONLINE'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchIndexSubscriptionTimeScope.pdsc + + export type MerlinSearchIndexSubscriptionTimeScope = 'CURRENT' | 'PAST'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchIndexUpdateAction.pdsc + + export type MerlinSearchIndexUpdateAction = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchModuleKey.pdsc + + export type MerlinSearchModuleKey = 'PROSPECT_FINDER_MEMBER_CARD' | 'PROSPECT_FINDER_INSIGHT_CARD'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchOrigin.pdsc + + export type MerlinSearchOrigin = 'COMPANY_TYPEAHEAD' | 'PROSPECT'; + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchRequest.pdsc + + export interface MerlinSearchRequest { + keywordQuery?: string; + sortBy?: MerlinSearchSortBy; + filters: MerlinSearchFilter[]; + organizationUrn?: string; + rankingModel?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/merlin/MerlinSearchSortBy.pdsc + + export type MerlinSearchSortBy = + | 'PROSPECT_SEARCH_RELEVANCE' + | 'PROSPECT_SEARCH_SOCIAL_SELLING_INDEX' + | 'PROSPECT_SEARCH_BULLSEYE'; + } + namespace Messaging { + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/AssistantPayload.pdsc + + export interface AssistantPayload { + entityUrn?: string; + entityUrns: string[]; + queryType: AssistantQueryType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/AssistantQueryType.pdsc + + export type AssistantQueryType = + | 'INTRO' + | 'WHO_DO_I_KNOW_AT_COMPANY' + | 'FILTER_COMPANY_CONNECTIONS_BY_PROFILE_LOCATION' + | 'FOLLOW_COMPANY' + | 'RECENT_NEWS_ABOUT_COMPANY' + | 'SIMILAR_COMPANIES' + | 'TELL_ME_ABOUT_COMPANY' + | 'TRENDING_COMPANIES' + | 'UNKNOWN' + | 'ERROR' + | 'JOBS_AT_COMPANY' + | 'SAVE_JOB' + | 'WHO_CAN_REFER' + | 'FILTER_JOBS_BY_PROFILE_LOCATION' + | 'SUBSCRIBE_TO_STORYLINES' + | 'UNSUBSCRIBE_TO_STORYLINES' + | 'TRIVIA_ASK_FOR_NEW_QUESTION' + | 'TRIVIA_CHOOSE_CORRECT_ANSWER' + | 'TRIVIA_CHOOSE_INCORRECT_ANSWER' + | 'TRENDING_NEWS_FOR_SUBSCRIBER'; + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/ClientSendRecord.pdsc + + export interface ClientSendRecord { + messagingThreadUrn?: string; + messagingMessageUrn?: string; + sourceType: MessageSourceType; + controlUrn?: string; + isFirstMessage?: boolean; + isSelfReply?: boolean; + previousMessageCreatedTime?: number; + previousMessagingMessageUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/ContentAnalysisPartnerRecord.pdsc + + export interface ContentAnalysisPartnerRecord { + coreMessageContentAnalysis?: CoreMessageContentAnalysisRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/ContentAnalysisPartnerType.pdsc + + export type ContentAnalysisPartnerType = 'CORE_MESSAGE_CONTENT_ANALYSIS'; + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/CoreMessageContentAnalysisRecord.pdsc + + export interface CoreMessageContentAnalysisRecord { + messagingMessageUrn: string; + messagingThreadUrn: string; + messageExtensionContentKeys: string[]; + threadExtensionContentKeys: string[]; + bodyCharacterCount: number; + subjectCharacterCount: number; + videoCount: number; + imageCount: number; + audioCount: number; + attachmentCount: number; + gifCount: number; + hyperlinkCount: number; + hashTagCount: number; + mentionCount: number; + storyCount: number; + shareType?: MessagingShareType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/MessageContentAnalysisRecord.pdsc + + export interface MessageContentAnalysisRecord { + contentAnalysisPartnerType: ContentAnalysisPartnerType; + contentAnalysisPartnerRecord: ContentAnalysisPartnerRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/MessageReferrerType.pdsc + + export type MessageReferrerType = 'ASSISTANT'; + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/MessageSourceType.pdsc + + export type MessageSourceType = 'OVERLAY' | 'PILLAR' | 'MOBILE' | 'REMAILER' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/MessagingDeliveryHeader.pdsc + + export interface MessagingDeliveryHeader { + messagingMessageUrn?: string; + inboxMessagingMessageUrn?: string; + mailUrn?: string; + messagingThreadUrn?: string; + inboxMessagingThreadUrn?: string; + threadUrn?: string; + creationTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/MessagingRecommendationArticleShareDetail.pdsc + + export interface MessagingRecommendationArticleShareDetail { + articleUrn: string; + recommendationFeatureUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/MessagingRecommendationQuickReplyDetails.pdsc + + export interface MessagingRecommendationQuickReplyDetails { + normalizationAttributes: Com.Linkedin.Avro2pegasus.Events.Messaging.QuickReplyNormalizationAttributeType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/MessagingShareType.pdsc + + export type MessagingShareType = + | 'ARTICLE' + | 'ACTIVITY' + | 'GENERIC_SHARE' + | 'LYNDA' + | 'LINKEDIN_ARTICLE' + | 'CONTENT_TOPIC'; + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/PartnerApprovedMessageRecord.pdsc + + export interface PartnerApprovedMessageRecord { + partnerType: PartnerType; + partnerRecord: PartnerRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/PartnerRecord.pdsc + + export interface PartnerRecord {} + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/PartnerType.pdsc + + export type PartnerType = 'NONE'; + // Generated from: com/linkedin/avro2pegasus/events/common/messaging/PlatformAcceptedMessageRecord.pdsc + + export interface PlatformAcceptedMessageRecord { + messagingMessageUrn: string; + messagingThreadUrn: string; + createdTime: number; + lastEditedTime?: number; + authorUrn: string; + recipientUrns?: string[]; + } + } + namespace Mirror { + // Generated from: com/linkedin/avro2pegasus/events/common/mirror/ActorEntityType.pdsc + + export type ActorEntityType = 'MEMBER' | 'COMPANY'; + // Generated from: com/linkedin/avro2pegasus/events/common/mirror/GesturePrivacySetting.pdsc + + export type GesturePrivacySetting = 'PUBLIC' | 'OBFUSCATED' | 'ANONYMOUS'; + // Generated from: com/linkedin/avro2pegasus/events/common/mirror/GestureType.pdsc + + export type GestureType = + | 'VIEW' + | 'LIKE' + | 'COMMENT' + | 'RESHARE' + | 'VIEW_ARTICLE' + | 'PLAY' + | 'VIEW_STORYITEM' + | 'PROFILE_VIEW' + | 'MESSAGE' + | 'CONNECTION_REQUEST' + | 'FOLLOW'; + } + namespace Nlp { + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/Confidence.pdsc + + export type Confidence = 'HIGH' | 'MEDIUM' | 'LOW'; + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/Document.pdsc + + export interface Document { + id: string; + text: string; + language?: Com.Linkedin.Avro2pegasus.Events.Locale; + tokens?: Token[]; + sentences?: TokenSpan[]; + entityMentions?: EntityMention[]; + entities?: Entity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/Entity.pdsc + + export interface Entity { + entityId: number; + type: EntityType; + mentions: number[]; + resolutions: ResolutionAssessment[]; + aboutness?: Confidence; + } + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/EntityMention.pdsc + + export interface EntityMention { + mentionId: number; + tokens: TokenSpan; + type: EntityType; + kind: EntityMentionKind; + } + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/EntityMentionKind.pdsc + + export type EntityMentionKind = 'NAMED' | 'PRONOMINAL' | 'NOMINAL'; + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/EntityType.pdsc + + export type EntityType = + | 'PERSON' + | 'ORGANIZATION' + | 'LOCATION' + | 'TITLE' + | 'SKILL' + | 'CERTIFICATION' + | 'FIELD_OF_STUDY' + | 'SPECIALIZED_KNOWLEDGE' + | 'TOOL_TECHNOLOGY' + | 'QUALIFICATION' + | 'PERSONAL_ATTRIBUTE' + | 'POPULATION' + | 'WORK_ENVIRONMENT' + | 'BUSINESS_DOMAIN' + | 'ORGANIZATION_PRODUCT' + | 'ORGANIZATION_SPORTS_TEAM' + | 'GEOPOLITICAL_ENTITY'; + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/Morpheme.pdsc + + export interface Morpheme { + start: number; + end: number; + isLinking: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/ResolutionAssessment.pdsc + + export interface ResolutionAssessment { + urn: string; + confidence: Confidence; + } + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/Token.pdsc + + export interface Token { + start: number; + end: number; + universalPOSTag?: UniversalPOSTag; + lemma?: string; + isStopword?: boolean; + morphemes?: Morpheme[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/TokenSpan.pdsc + + export interface TokenSpan { + start: number; + end: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/nlp/UniversalPOSTag.pdsc + + export type UniversalPOSTag = + | 'ADJ' + | 'ADP' + | 'ADV' + | 'AUX' + | 'CONJ' + | 'DET' + | 'INTJ' + | 'NOUN' + | 'NUM' + | 'PART' + | 'PRON' + | 'PROPN' + | 'PUNCT' + | 'SCONJ' + | 'SYM' + | 'VERB' + | 'X'; + } + namespace Payments { + // Generated from: com/linkedin/avro2pegasus/events/common/payments/JobPostingAccountBalanceType.pdsc + + export type JobPostingAccountBalanceType = 'PROM' | 'JPPY' | 'JPVD'; + } + namespace Pem { + // Generated from: com/linkedin/avro2pegasus/events/common/pem/AlpnProtocol.pdsc + + export type AlpnProtocol = + | 'UNKNOWN' + | 'HTTP_0_9' + | 'HTTP_1_0' + | 'HTTP_1_1' + | 'SPDY_1' + | 'SPDY_2' + | 'SPDY_3' + | 'STUN_TURN' + | 'STUN_NAT_DISCOVERY' + | 'H2' + | 'H2C' + | 'WEBRTC' + | 'C_WEBRTC' + | 'FTP' + | 'IMAP' + | 'POP3' + | 'MANAGESIEVE' + | 'COAP' + | 'XMPP_CLIENT' + | 'XMPP_SERVER'; + // Generated from: com/linkedin/avro2pegasus/events/common/pem/NetworkErrorReportRequestPhase.pdsc + + export type NetworkErrorReportRequestPhase = 'DNS' | 'CONNECTION' | 'APPLICATION'; + // Generated from: com/linkedin/avro2pegasus/events/common/pem/NetworkErrorType.pdsc + + export type NetworkErrorType = + | 'UNKNOWN' + | 'DNS_UNREACHABLE' + | 'DNS_NAME_NOT_RESOLVED' + | 'DNS_FAILED' + | 'DNS_ADDRESS_CHANGED' + | 'TCP_TIMED_OUT' + | 'TCP_CLOSED' + | 'TCP_RESET' + | 'TCP_REFUSED' + | 'TCP_ABORTED' + | 'TCP_ADDRESS_INVALID' + | 'TCP_ADDRESS_UNREACHABLE' + | 'TCP_FAILED' + | 'TLS_VERSION_OR_CIPHER_MISMATCH' + | 'TLS_BAD_CLIENT_AUTH_CERT' + | 'TLS_CERT_NAME_INVALID' + | 'TLS_CERT_DATE_INVALID' + | 'TLS_CERT_AUTHORITY_INVALID' + | 'TLS_CERT_INVALID' + | 'TLS_CERT_REVOKED' + | 'TLS_CERT_PINNED_KEY_NOT_IN_CERT_CHAIN' + | 'TLS_PROTOCOL_ERROR' + | 'TLS_FAILED' + | 'HTTP_ERROR' + | 'HTTP_PROTOCOL_ERROR' + | 'HTTP_RESPONSE_INVALID' + | 'HTTP_RESPONSE_REDIRECT_LOOP' + | 'HTTP_FAILED' + | 'ABANDONED'; + // Generated from: com/linkedin/avro2pegasus/events/common/pem/type.pdsc + + export type type = 'NETWORK_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/common/pem/W3cReportingApiBody.pdsc + + export interface W3cReportingApiBody { + reportType: type; + networkErrorReport?: W3cReportingApiNetworkErrorReport; + } + // Generated from: com/linkedin/avro2pegasus/events/common/pem/W3cReportingApiHeader.pdsc + + export interface W3cReportingApiHeader { + reportTime: number; + requestUrl: string; + requestUserAgent: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/pem/W3cReportingApiNetworkErrorReport.pdsc + + export interface W3cReportingApiNetworkErrorReport { + requestReferrer?: string; + samplingFraction: number; + requestServerIp?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + requestProtocol?: AlpnProtocol; + requestMethod: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + requestHeaders?: { [id: string]: string }; + responseHeaders?: { [id: string]: string }; + httpStatusCode?: number; + elapsedTime: number; + requestPhase: NetworkErrorReportRequestPhase; + errorType?: NetworkErrorType; + } + } + namespace Pie { + // Generated from: com/linkedin/avro2pegasus/events/common/pie/IncidentInfoTag.pdsc + + export type IncidentInfoTag = + | 'CHANGE_MANAGEMENT' + | 'DUPLICATE_ALERT' + | 'KNOWN_ISSUE' + | 'MISSING_CORRELATION' + | 'NON_ACTIONABLE' + | 'ONE_TIME_ALERT' + | 'ONGOING_BUILD' + | 'ONGOING_VENDOR_MAINTENANCE' + | 'SUSPECTED_NON_PRODUCTION' + | 'WORKING_WITH_JIRA'; + // Generated from: com/linkedin/avro2pegasus/events/common/pie/IncidentModificationType.pdsc + + export type IncidentModificationType = 'CREATE' | 'UPDATE' | 'EVENTS_ADDED' | 'LIVE_STATUS_UPDATED'; + // Generated from: com/linkedin/avro2pegasus/events/common/pie/IncidentState.pdsc + + export type IncidentState = 'UNCLAIMED' | 'CLAIMED' | 'CLAIMED_WO_JIRA' | 'ONHOLD' | 'RESOLVED'; + // Generated from: com/linkedin/avro2pegasus/events/common/pie/IncidentUpdateSource.pdsc + + export type IncidentUpdateSource = 'INCIDENT_POST_API' | 'INCIDENT_ALERT_POST_API' | 'OFFLINE_PROCESS'; + // Generated from: com/linkedin/avro2pegasus/events/common/pie/ServerUsageCheckCheckerType.pdsc + + export type ServerUsageCheckCheckerType = 'RAIN' | 'RANGE' | 'VIP'; + // Generated from: com/linkedin/avro2pegasus/events/common/pie/ServerUsageCheckResultType.pdsc + + export type ServerUsageCheckResultType = 'PASS' | 'FAIL' | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/common/pie/TriageRecordStatus.pdsc + + export type TriageRecordStatus = 'CLAIMED' | 'UNCLAIMED' | 'OPEN' | 'CLOSED' | 'TO_BE_CREATED'; + // Generated from: com/linkedin/avro2pegasus/events/common/pie/TriageRecordType.pdsc + + export type TriageRecordType = 'JIRA' | 'IRIS' | 'CLAIMED_WO_JIRA'; + } + namespace Premium { + // Generated from: com/linkedin/avro2pegasus/events/common/premium/CancelReason.pdsc + + export type CancelReason = 'NOT_HIRING_ANYMORE' | 'PRICE_TOO_HIGH' | 'FEATURES_NOT_WORKING' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/ChooserPageCard.pdsc + + export interface ChooserPageCard { + productUrn: string; + isGreyedOut: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/premium/CompensationPeriod.pdsc + + export type CompensationPeriod = + | 'YEARLY' + | 'MONTHLY' + | 'SEMIMONTHLY' + | 'BIWEEKLY' + | 'WEEKLY' + | 'DAILY' + | 'HOURLY' + | 'ONCE'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/JobPhraseActionType.pdsc + + export type JobPhraseActionType = 'CLICK'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumCancelFlowComponentType.pdsc + + export type PremiumCancelFlowComponentType = + | 'SWITCHER_MODAL' + | 'DOWNGRADE_TO_MONTHLY_BUTTON' + | 'LEARNING_EMPLOYER_EXPENSE_BUTTON' + | 'LOSE_INMAIL_CREDITS_MODAL'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumCancelSurveyReason.pdsc + + export type PremiumCancelSurveyReason = + | 'FOUND_JOB' + | 'CUTTING_EXPENSES' + | 'DID_NOT_USE_FEATURES' + | 'FEATURES_USELESS_FINDING_JOB' + | 'ONE_TIME_USE' + | 'PRICE_TOO_HIGH' + | 'DID_NOT_USE_PREMIUM_FEATURES' + | 'FEATURES_DID_NOT_WORK_EXPECTED' + | 'OTHER' + | 'DID_NOT_EXPECT_CHARGE_AFTER_FREE_TRIAL' + | 'DID_NOT_MEET_EXPECTATIONS' + | 'NEED_MORE_ADVANCED_RECRUITING_FEATURES' + | 'DID_NOT_USE_OR_SIGNED_UP_BY_MISTAKE' + | 'DID_NOT_NEED_ANYMORE' + | 'BILLING_CYCLE' + | 'LOW_VALUE' + | 'NOT_USING_ENOUGH' + | 'WRONG_PRODUCT' + | 'ALTERNATE_PRODUCT' + | 'EMPLOYER_ACCOUNT' + | 'TEMPORARY' + | 'CHANGE_SUBSCRIPTIONS' + | 'NOT_UNDERSTAND_PREMIUM_FEATURES' + | 'ACCOMPLISHED_GOAL'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumCancelSurveyResult.pdsc + + export interface PremiumCancelSurveyResult { + reason: PremiumCancelSurveyReason; + userGivenReason?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumCancelSurveyResultEvent.pdsc + + export interface PremiumCancelSurveyResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + premiumProductUrn: string; + cancellationSurveyResult: PremiumCancelSurveyResult; + } + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumEntityContextType.pdsc + + export type PremiumEntityContextType = 'CAREER_INTERESTS_OPEN_CANDIDATE' | 'INTERVIEW_PREP_ASSESSMENT'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumEntityFeedbackActionType.pdsc + + export type PremiumEntityFeedbackActionType = 'LIKE' | 'DISLIKE' | 'NOT_RELEVANT' | 'CONTAINS_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumFeature.pdsc + + export type PremiumFeature = + | 'INMAIL' + | 'WHO_HAS_VIEWED_MY_PROFILE' + | 'JOB_INSIGHTS' + | 'LINKEDIN_LEARNING' + | 'BUSINESS_INSIGHTS' + | 'PEOPLE_BROWSING' + | 'SEARCH_FILTERS' + | 'SAVED_NOTES' + | 'SALES_SPOTLIGHTS' + | 'SALES_LEAD_RECOMMENDATIONS' + | 'SALES_SAVED_LEADS_AND_ACCOUNTS' + | 'SALES_EMAIL_INTEGRATION' + | 'RECRUITER_GUIDED_SEARCH' + | 'RECRUITER_SMART_SUGGESTIONS' + | 'RECRUITER_SAVED_SEARCH_ALERTS' + | 'RECRUITER_PROJECTS' + | 'FEATURED_APPLICANT' + | 'BUSINESS_FEATURES_PLUS' + | 'JOB_ONLY_INSIGHTS' + | 'SALARY_INSIGHTS' + | 'USAGE_REPORTING' + | 'FULL_NETWORK_ACCESS' + | 'SALES_CRM_SYNC_AND_WIDGETS' + | 'SALES_POINTDRIVE' + | 'SALES_TEAMLINK' + | 'SALES_NAVIGATOR_PROFESSIONAL_FEATURES' + | 'OPEN_CANDIDATE' + | 'OPEN_PROFILE' + | 'PRIVATE_BROWSING' + | 'TOP_APPLICANT_JOBS' + | 'APPLICANT_INSIGHTS' + | 'RESUME_BUILDER' + | 'INTERVIEW_PREP'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumInMailMessageAction.pdsc + + export type PremiumInMailMessageAction = 'INITIAL' | 'ACCEPT' | 'DECLINE'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumInMailThreadStatus.pdsc + + export type PremiumInMailThreadStatus = 'CREATED' | 'RECEIVED' | 'ACCEPTED' | 'DECLINED'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumNotificationSetting.pdsc + + export interface PremiumNotificationSetting { + notificationTypeUrn: string; + isNotificationEnabled: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumPriceType.pdsc + + export type PremiumPriceType = 'NON_RECURRING' | 'MONTHLY' | 'ANNUALLY'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumProductFamily.pdsc + + export type PremiumProductFamily = 'JSS' | 'GENERAL' | 'SALES' | 'TALENT' | 'LEARNING' | 'ESSENTIALS'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumPurchaseIntentType.pdsc + + export type PremiumPurchaseIntentType = + | 'SEEK_JOB' + | 'GROW_NETWORK' + | 'DEVELOP_CAREER' + | 'TRY_OUT' + | 'PROFESSIONAL_BRAND' + | 'LEARN' + | 'REACH_OUT' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumServiceCancelSurveyResponse.pdsc + + export interface PremiumServiceCancelSurveyResponse { + reason: CancelReason; + userGivenReason?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumServiceCancelSurveyResponseEvent.pdsc + + export interface PremiumServiceCancelSurveyResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + premiumServiceUrn: string; + whyCancelSubscriptionResponse: PremiumServiceCancelSurveyResponse; + } + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumSettingDiscloseAsProfileViewer.pdsc + + export type PremiumSettingDiscloseAsProfileViewer = 'HIDE' | 'DISCLOSE_ANONYMOUS' | 'DISCLOSE_FULL'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumSettingName.pdsc + + export type PremiumSettingName = 'ALLOW_OPEN_PROFILE' | 'DISCLOSE_AS_PROFILE_VIEWER'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumSubscription.pdsc + + export interface PremiumSubscription { + productCode: string; + priceType: PremiumPriceType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/premium/PremiumUpsellBlockingReasons.pdsc + + export type PremiumUpsellBlockingReasons = 'IOS' | 'CS_GRANTED'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/ProfileOptimizationSectionType.pdsc + + export type ProfileOptimizationSectionType = 'SUMMARY' | 'POSITIONS'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/ResumeOptimizationInsight.pdsc + + export interface ResumeOptimizationInsight { + insightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + modelId: string; + score: number; + createdAt: number; + profileSection?: ProfileOptimizationSectionType; + suggestedContent?: SuggestedContentType; + jobPostingUrn?: string; + keyword?: string; + keyPhrase?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/premium/SalaryRecord.pdsc + + export interface SalaryRecord { + amount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + payPeriod: CompensationPeriod; + } + // Generated from: com/linkedin/avro2pegasus/events/common/premium/SubcriptionPlan.pdsc + + export interface SubcriptionPlan { + productUrn: string; + priceUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/premium/SuggestedContentType.pdsc + + export type SuggestedContentType = 'ACHIEVEMENTS' | 'MEASURABLE_RESULTS' | 'RELATED_TITLE_DESCRIPTION'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/SuggestedPhraseSkillActionType.pdsc + + export type SuggestedPhraseSkillActionType = 'CLICK'; + // Generated from: com/linkedin/avro2pegasus/events/common/premium/TopApplicantFlavorMetadata.pdsc + + export interface TopApplicantFlavorMetadata { + rankPercentBucket: number; + } + } + namespace Proml { + // Generated from: com/linkedin/avro2pegasus/events/common/proml/BooleanFeature.pdsc + + export interface BooleanFeature { + id: number; + value: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/CategoricalFeature.pdsc + + export interface CategoricalFeature { + id: number; + term: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/CategoricalFeatureSet.pdsc + + export interface CategoricalFeatureSet { + id: number; + terms: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/DenseVector.pdsc + + export interface DenseVector { + id: number; + values: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/DoubleFeature.pdsc + + export interface DoubleFeature { + id: number; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/EntityFeatures.pdsc + + export interface EntityFeatures { + entityUrn: string; + booleanFeatures: BooleanFeature[]; + categoricalFeatures: CategoricalFeature[]; + categoricalSetFeatures: CategoricalFeatureSet[]; + doubleFeatures: DoubleFeature[]; + intFeatures: IntFeature[]; + longFeatures: LongFeature[]; + sparseVectorFeatures: SparseVector[]; + stringFeatures: StringFeature[]; + termSetFeatures: TermSet[]; + termVectorFeatures: TermVector[]; + denseVectorFeatures: DenseVector[]; + floatFeatures: FloatFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/FeatureMetadata.pdsc + + export interface FeatureMetadata { + featureName: string; + featureId: number; + featureScope: FeatureScope; + frameFeatureKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/FeatureScope.pdsc + + export type FeatureScope = 'EXTERNAL' | 'INTERNAL'; + // Generated from: com/linkedin/avro2pegasus/events/common/proml/FloatFeature.pdsc + + export interface FloatFeature { + id: number; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/IntFeature.pdsc + + export interface IntFeature { + id: number; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/LongFeature.pdsc + + export interface LongFeature { + id: number; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/SparseTensor.pdsc + + export interface SparseTensor { + indices: SparseTensorIndex[]; + values: TensorValues; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/SparseTensorIndex.pdsc + + export interface SparseTensorIndex { + ints?: number[]; + longs?: number[]; + strings?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/SparseVector.pdsc + + export interface SparseVector { + id: number; + indices: number[]; + values: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/StaticDenseTensor.pdsc + + export interface StaticDenseTensor { + values: TensorValues; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/StringFeature.pdsc + + export interface StringFeature { + id: number; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/Tensor.pdsc + + export interface Tensor { + sparse?: SparseTensor; + staticDense?: StaticDenseTensor; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/TensorValues.pdsc + + export interface TensorValues { + booleans?: boolean[]; + bytes?: number; + doubles?: number[]; + floats?: number[]; + ints?: number[]; + longs?: number[]; + strings?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/TermSet.pdsc + + export interface TermSet { + id: number; + terms: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/proml/TermVector.pdsc + + export interface TermVector { + id: number; + terms: string[]; + values: number[]; + } + } + namespace Props { + // Generated from: com/linkedin/avro2pegasus/events/common/props/FundingType.pdsc + + export type FundingType = + | 'PRE_SEED' + | 'SEED' + | 'ANGEL' + | 'SERIES_A' + | 'SERIES_B' + | 'SERIES_C' + | 'SERIES_D' + | 'SERIES_E' + | 'SERIES_F' + | 'SERIES_G' + | 'SERIES_H' + | 'SERIES_I' + | 'SERIES_J' + | 'SERIES_UNKNOWN' + | 'INITIAL_COIN_OFFERING' + | 'CONVERTIBLE_NOTE' + | 'CORPORATE_ROUND' + | 'DEBT_FINANCING' + | 'EQUITY_CROWDFUNDING' + | 'GRANT' + | 'NON_EQUITY_ASSISTANCE' + | 'POST_IPO_DEBT' + | 'POST_IPO_EQUITY' + | 'POST_IPO_SECONDARY' + | 'PRIVATE_EQUITY' + | 'PRODUCT_CROWDFUNDING' + | 'SECONDARY_MARKET'; + // Generated from: com/linkedin/avro2pegasus/events/common/props/OrganizationFunding.pdsc + + export interface OrganizationFunding { + organizationUrn: string; + moneyRaised?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + fundingDate: Com.Linkedin.Avro2pegasus.Events.Common.Date; + fundingType?: FundingType; + sourceUrl: string; + sourceArticleUrn?: string; + } + } + namespace Recruiter { + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/BundledApplicantTrackingSystemIntegrationType.pdsc + + export type BundledApplicantTrackingSystemIntegrationType = + | 'RECRUITER_SYSTEM_CONNECT' + | 'CROSS_SYSTEM_AWARENESS' + | 'APPLY_WITH_LINKEDIN' + | 'APPLY_STARTER_EXPLORER'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/CalendarSchedulingEntryPoint.pdsc + + export type CalendarSchedulingEntryPoint = 'RECRUITER_INMAIL_COMPOSE' | 'RECRUITER_MAILBOX_REPLY'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/CandidateProfileUIDecoration.pdsc + + export type CandidateProfileUIDecoration = + | 'COMPANY_FOLLOWER' + | 'SHARED_CONNECTIONS' + | 'APPLY_STARTER' + | 'APPLIED_JOBS' + | 'CONVERSATIONS' + | 'VIEWS' + | 'NOTES' + | 'TAGS' + | 'PROJECTS' + | 'REVIEWS' + | 'OPEN_TO_RELOCATE' + | 'OPEN_TO_NEW_OPPORTUNITIES' + | 'DOWNLOAD_RESUME' + | 'PAST_APPLICATIONS' + | 'VIEW_WECHAT_CONTACT' + | 'UNLOCK_PHONE_NUMBER' + | 'VIEW_UNLOCKED_PHONE_NUMBER'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/CandidateProfileUIInfo.pdsc + + export interface CandidateProfileUIInfo { + actionButtons: Com.Linkedin.Avro2pegasus.Events.Recruiter.RecruiterActionButton[]; + candidateProfileUIDecorations: CandidateProfileUIDecoration[]; + slideInWidthPixels?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/HiringPlatformMigrationDataFixFailure.pdsc + + export interface HiringPlatformMigrationDataFixFailure { + failureType: HiringPlatformMigrationDataFixFailureType; + failureDetails?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/HiringPlatformMigrationDataFixFailureType.pdsc + + export type HiringPlatformMigrationDataFixFailureType = + | 'SYSTEM_FAILURE' + | 'SECOND_VALIDATION_FAILURE' + | 'DEPENDENCY_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/HiringPlatformMigrationUseCase.pdsc + + export type HiringPlatformMigrationUseCase = + | 'PROJECTS' + | 'PIPELINE_TEMPLATES' + | 'PIPELINE_INSTANCES' + | 'PROJECT_CANDIDATES' + | 'SOURCING_CHANNELS' + | 'SOURCING_CHANNEL_CANDIDATES' + | 'FAVORITE_PROJECTS' + | 'PROJECT_PERMISSIONS' + | 'PROJECT_SAVED_SEARCHES' + | 'INHERITED_SOURCING_CHANNELS' + | 'CLIPBOARDS' + | 'JOB_POSTINGS'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/HiringPlatformMigrationValidationDependencyFailure.pdsc + + export interface HiringPlatformMigrationValidationDependencyFailure { + validationFailure: HiringPlatformMigrationValidationFailure; + migrationUseCase: HiringPlatformMigrationUseCase; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/HiringPlatformMigrationValidationFailure.pdsc + + export interface HiringPlatformMigrationValidationFailure { + failureType: HiringPlatformMigrationValidationFailureType; + failureDetails?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/HiringPlatformMigrationValidationFailureType.pdsc + + export type HiringPlatformMigrationValidationFailureType = + | 'SOURCE_MISSING' + | 'TARGET_MISSING' + | 'SOURCE_DUPLICATE' + | 'TARGET_DUPLICATE' + | 'DATA_DIFF' + | 'SYSTEM_FAILURE' + | 'DEPENDENCY_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/HiringPlatformSystemSearchHeader.pdsc + + export interface HiringPlatformSystemSearchHeader { + searchRequestId: string; + searchSessionId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/HiringPlatformSystemSearchUIComponentType.pdsc + + export type HiringPlatformSystemSearchUIComponentType = + | 'CANDIDATE_LIST' + | 'PROJECT_LIST' + | 'SEE_ALL_CANDIDATE_RESULTS_LINK' + | 'SEE_ALL_PROJECT_RESULTS_LINK' + | 'SEARCH_ALL_CANDIDATE_MEMBERS_LINK'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/HiringReplyMessageSendActivity.pdsc + + export interface HiringReplyMessageSendActivity { + recipientMemberUrn: string; + senderMemberUrn: string; + senderSeatUrn: string; + contractUrn: string; + mailboxItemUrn: string; + mailboxThreadUrn: string; + recruiterCommonHeader?: RecruiterCommonHeader; + messagingMessageUrn?: string; + messagingThreadUrn?: string; + attachmentCount?: number; + customPropertyUrn: string; + ofccpTrackingId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/HPSmartSuggestion.pdsc + + export interface HPSmartSuggestion { + suggestionLabel: string; + suggestionEntityUrn: string; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/ProfileViewEntrypointType.pdsc + + export type ProfileViewEntrypointType = + | 'APPLICANTS' + | 'EMAIL_LINK' + | 'HIDDEN_CANDIDATES' + | 'HOME' + | 'INBOX' + | 'LEADS' + | 'PROJECT_PIPELINE' + | 'RECOMMENDATIONS' + | 'SEARCH_CONTEXTUAL' + | 'SEARCH_GLOBAL' + | 'SEARCH_SYSTEM' + | 'SIMILAR_PROFILE' + | 'FLAGSHIP_PROFILE' + | 'HOME_COMPLETED_FEEDBACK' + | 'HOME_COMPLETED_SCORECARDS' + | 'HOME_OVERDUE_SCORECARDS' + | 'HOME_PENDING_SCORECARDS'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/ProfileViewFormatType.pdsc + + export type ProfileViewFormatType = 'SLIDE_IN' | 'STAND_ALONE'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/projectField.pdsc + + export type projectField = + | 'OWNER' + | 'SHARE_INDIVIDUAL' + | 'SHARE_ALL' + | 'DESCRIPTION' + | 'JOB_POST' + | 'ATTACHMENT' + | 'LINK' + | 'SAVED_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/ProjectState.pdsc + + export type ProjectState = 'ACTIVE' | 'DELETED' | 'ARCHIVED'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterCommonHeader.pdsc + + export interface RecruiterCommonHeader { + seatUrn: string; + contractUrn: string; + organizationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterContextualSearchHeader.pdsc + + export interface RecruiterContextualSearchHeader { + projectUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterInMailSendMetadata.pdsc + + export interface RecruiterInMailSendMetadata { + systemSuggestedTemplateEnabled: boolean; + editDistance?: number; + inMailWordCount?: number; + wordsDistance?: number; + expiringInMailDays?: number; + phoneNumbersInBodyCount?: number; + emailsInBodyCount?: number; + linkedPhoneNumbersInBodyCount?: number; + linkedEmailsInBodyCount?: number; + phoneNumbersInSignatureCount?: number; + emailsInSignatureCount?: number; + linkedPhoneNumbersInSignatureCount?: number; + linkedEmailsInSignatureCount?: number; + hasMeetingLink: boolean; + meetingDurationMinutes?: number; + meetingLinkExpirationDays?: number; + calendarAvailabilityShareUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterOnboardingSurveyAnswer.pdsc + + export type RecruiterOnboardingSurveyAnswer = + | 'YES' + | 'NO' + | 'SOURCE_CANDIDATES_ONLY' + | 'SOURCE_REACH_TRACK_CANDIDATES' + | 'LEAD_SOURCER' + | 'FILL_OPEN_REQS' + | 'BIZ_OPPORTUNITIES' + | 'OTHER' + | 'RECRUITMENT' + | 'BIZDEV_AND_SALES' + | 'RECRUIT_BIZDEV_AND_SALES' + | 'CONTRACT' + | 'FULL_TIME' + | 'CONTRACT_AND_FULL_TIME' + | 'EXECUTIVE' + | 'EXECUTIVE_AND_FULL_TIME'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterOnboardingSurveyQuestion.pdsc + + export type RecruiterOnboardingSurveyQuestion = + | 'MOTIVATION' + | 'OPEN_POSITION_TYPE' + | 'PRIMARY_CONTRIBUTION' + | 'SOURCING_ROLE' + | 'STRATEGIC_INITIATIVES' + | 'TALENT_ACQUISITION' + | 'TEAM_OVERSEE'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterProjectInfoUpdateField.pdsc + + export interface RecruiterProjectInfoUpdateField { + projectFieldType: projectField; + contextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterProxyPhoneDirectionType.pdsc + + export type RecruiterProxyPhoneDirectionType = 'INBOUND' | 'OUTBOUND_API' | 'OUTBOUND_DIAL' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterProxyPhoneDurationAggregate.pdsc + + export interface RecruiterProxyPhoneDurationAggregate { + durationBucket: RecruiterProxyPhoneDurationBucket; + durationCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterProxyPhoneDurationBucket.pdsc + + export type RecruiterProxyPhoneDurationBucket = + | 'ZERO_TO_TWENTY_SECONDS' + | 'TWENTY_TO_FORTY_SECONDS' + | 'FORTY_TO_SIXTY_SECONDS' + | 'SIXTY_TO_EIGHTY_SECONDS' + | 'EIGHTY_TO_A_HUNDRED_SECONDS' + | 'A_HUNDRED_TO_A_HUNDRED_AND_TWENTY_SECONDS' + | 'A_HUNDRED_AND_TWENTY_SECONDS_AND_ABOVE'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterProxyPhoneStatusAggregate.pdsc + + export interface RecruiterProxyPhoneStatusAggregate { + statusType: RecruiterProxyPhoneStatusType; + statusCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterProxyPhoneStatusType.pdsc + + export type RecruiterProxyPhoneStatusType = 'IN_PROGRESS' | 'CANCELED' | 'COMPLETED' | 'FAILED' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSavedSearchDetails.pdsc + + export interface RecruiterSavedSearchDetails { + numNewResults?: number; + numNewOpenCandidates?: number; + savedSearchUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSearchFacet.pdsc + + export interface RecruiterSearchFacet { + facetType: string; + facetValue: string; + facetCount?: number; + isSpotlight: boolean; + isSelected: boolean; + isNegated?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSearchHeader.pdsc + + export interface RecruiterSearchHeader { + searchRequestId: string; + searchSessionId: string; + capSearchHistoryUrn: string; + recruiterVersion: RecruiterSearchVersion; + previousSearchRequestId?: string; + origin?: RecruiterSearchResultPageOrigin; + workflow: RecruiterSearchWorkflowType; + searchContextId?: string; + hireSearchActivityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSearchQuerySource.pdsc + + export type RecruiterSearchQuerySource = + | 'RESET_FACET' + | 'CLEAR_SEARCH' + | 'SMART_SUGGESTION' + | 'TYPEAHEAD' + | 'FREE_FORM_TEXT' + | 'FACET_DISCOVERIES' + | 'CUSTOM_FILTER' + | 'SAVED_SEARCH' + | 'SEARCH_HISTORY'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSearchResultHit.pdsc + + export interface RecruiterSearchResultHit { + candidateUrn: string; + resultIndex: number; + relevanceScore: number; + candidateProfileUIInfo?: CandidateProfileUIInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSearchResultPageOrigin.pdsc + + export type RecruiterSearchResultPageOrigin = + | 'ADVANCED_SEARCH' + | 'EMAIL_ALERT' + | 'FACET_SEARCH' + | 'GLOBAL_SEARCH_HEADER' + | 'HISTORY_SEARCH' + | 'PAGINATION' + | 'PEOPLE_YOU_MAY_HIRE' + | 'PROFILE_CONNECTIONS' + | 'PROFILE_FROM_SEARCH' + | 'SAVED_SEARCH' + | 'SAVED_SEARCH_DELTA' + | 'SAVED_SEARCH_OPEN_CANDIDATES_DELTA' + | 'SEARCH_HEADER_LITE' + | 'SIMILAR_PROFILES' + | 'SPOTLIGHT' + | 'PROJECT_RESUME_SEARCH_HISTORY' + | 'QUICK_FILTER' + | 'LANDING_FACETS_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSearchSeasMetrics.pdsc + + export interface RecruiterSearchSeasMetrics { + totalSearchWallTime?: number; + galeneBaseSnapshotLiveIndexLag?: number; + galeneDegradationFraction?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSearchVersion.pdsc + + export type RecruiterSearchVersion = 'SEARCHV2' | 'SMART_SEARCH' | 'SEARCHV1' | 'HIRING_PLATFORM_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSearchWorkflowType.pdsc + + export type RecruiterSearchWorkflowType = 'BOOLEAN_KEYWORD_CRITERIA' | 'BY_JOB' | 'BY_IDEAL_CANDIDATE'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSmartSearchSuggestionType.pdsc + + export type RecruiterSmartSearchSuggestionType = + | 'CITY' + | 'COMPANY' + | 'DEGREE' + | 'FIELD_OF_STUDY' + | 'INDUSTRY' + | 'JOB_FUNCTION' + | 'LOCATION' + | 'PAST_TITLE' + | 'SCHOOL' + | 'SKILL' + | 'TITLE' + | 'YEAR_OF_EXPERIENCE' + | 'CONTEXTUAL_SEARCH_SKILL' + | 'BING_GEO'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterSmartSuggestion.pdsc + + export interface RecruiterSmartSuggestion { + suggestionType: RecruiterSmartSearchSuggestionType; + suggestionLabel: string; + suggestionEntityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/RecruiterToProspectMessageDeliveryActivity.pdsc + + export interface RecruiterToProspectMessageDeliveryActivity { + messagingMessageUrn: string; + capInmailGrantUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/SearchFacetType.pdsc + + export type SearchFacetType = + | 'BING_GEO_SWR' + | 'CURRENT_COMPANY_SWR' + | 'EDUCATION_SWR' + | 'INDUSTRY_SWR' + | 'SKILL_SWR' + | 'TITLE_SWR'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/SmartSuggestionUIType.pdsc + + export type SmartSuggestionUIType = 'EXPANDED' | 'INLINE'; + // Generated from: com/linkedin/avro2pegasus/events/common/recruiter/TalentPackageSearchResultHit.pdsc + + export interface TalentPackageSearchResultHit { + candidateUrn: string; + resultIndex: number; + } + } + namespace Referrals { + // Generated from: com/linkedin/avro2pegasus/events/common/referrals/ReasonToNotRecommendCandidate.pdsc + + export type ReasonToNotRecommendCandidate = + | 'SENIORITY' + | 'SKILLS' + | 'COMPANY_VALUES' + | 'LOCATION' + | 'EXPERIENCE' + | 'NOT_LOOKING'; + } + namespace Restli { + // Generated from: com/linkedin/avro2pegasus/events/common/restli/ResourceMethod.pdsc + + export type ResourceMethod = + | 'GET' + | 'BATCH_GET' + | 'FINDER' + | 'CREATE' + | 'BATCH_CREATE' + | 'PARTIAL_UPDATE' + | 'UPDATE' + | 'BATCH_UPDATE' + | 'DELETE' + | 'ACTION' + | 'BATCH_PARTIAL_UPDATE' + | 'BATCH_DELETE' + | 'GET_ALL' + | 'OPTIONS'; + } + namespace Resume { + // Generated from: com/linkedin/avro2pegasus/events/common/resume/PhoneNumberType.pdsc + + export type PhoneNumberType = 'HOME' | 'MOBILE' | 'WORK'; + // Generated from: com/linkedin/avro2pegasus/events/common/resume/ResumeAddress.pdsc + + export interface ResumeAddress { + city?: string; + country?: string; + state?: string; + street?: string; + postalCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/resume/ResumeAnnotationActionType.pdsc + + export type ResumeAnnotationActionType = + | 'ANNOTATE_FLAG' + | 'ANNOTATE_LABEL' + | 'LOAD_EMPTY_STATE' + | 'LOAD_RESUME'; + // Generated from: com/linkedin/avro2pegasus/events/common/resume/ResumeParserName.pdsc + + export type ResumeParserName = 'CONNECTIFIER' | 'DAXTRA' | 'LENS' | 'LINKEDIN'; + // Generated from: com/linkedin/avro2pegasus/events/common/resume/ResumePhoneNumber.pdsc + + export interface ResumePhoneNumber { + phoneNumber: string; + phoneNumberType?: PhoneNumberType; + } + } + namespace Salary { + // Generated from: com/linkedin/avro2pegasus/events/common/salary/CompensationSource.pdsc + + export type CompensationSource = + | 'JOB_POSTER_PROVIDED' + | 'MEMBER_SUBMITTED_AGGREGATED' + | 'MEMBER_SUBMITTED_INFERRED' + | 'MODEL_PREDICTED'; + } + namespace Salesinsights { + // Generated from: com/linkedin/avro2pegasus/events/common/salesinsights/ComparisonOperator.pdsc + + export type ComparisonOperator = 'GREATER_THAN' | 'GREATER_EQUAL' | 'LESS_THAN' | 'LESS_EQUAL'; + // Generated from: com/linkedin/avro2pegasus/events/common/salesinsights/FacetComparisonClause.pdsc + + export interface FacetComparisonClause { + facetType: string; + facetValueComparison: string; + operator: ComparisonOperator; + } + // Generated from: com/linkedin/avro2pegasus/events/common/salesinsights/FacetEqualityClause.pdsc + + export interface FacetEqualityClause { + facetType: string; + facetValues: string[]; + isNegated: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/salesinsights/FacetRangeClause.pdsc + + export interface FacetRangeClause { + facetType: string; + facetValueFrom?: string; + facetValueTo?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/salesinsights/MetricsReportExportType.pdsc + + export type MetricsReportExportType = 'CRM' | 'CSV' | 'SALES_NAVIGATOR'; + // Generated from: com/linkedin/avro2pegasus/events/common/salesinsights/SalesInsightsMetricsQuery.pdsc + + export interface SalesInsightsMetricsQuery { + queryFilter: SalesInsightsMetricsQueryFilter; + resultMetrics: string[]; + sortCriteria: string; + sortOrder: Com.Linkedin.Avro2pegasus.Events.SortOrder; + groupingFacet: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/salesinsights/SalesInsightsMetricsQueryFilter.pdsc + + export interface SalesInsightsMetricsQueryFilter { + facetClauses: Array; + } + } + namespace Search { + // Generated from: com/linkedin/avro2pegasus/events/common/search/FlagshipSearchIntent.pdsc + + export type FlagshipSearchIntent = + | 'SEARCH_SRP' + | 'SEARCH_WORKFLOW_TRACKER_JOB_POSTING' + | 'MYNETWORK_CURATION_HUB' + | 'SEARCH_MESSENGER_INBOX_KEYWORD' + | 'SEARCH_MY_ITEMS_MARKETPLACES_PROJECTS' + | 'GROWTH_EVENTS_PAGE_HOSTED_EVENT_INDEX' + | 'SEARCH_MY_ITEMS_LEARNING' + | 'SEARCH_MY_ITEMS_JOB_SEEKER' + | 'SEARCH_MY_ITEMS_ALL' + | 'MESSAGING_INBOX'; + // Generated from: com/linkedin/avro2pegasus/events/common/search/FlagshipSearchOrigin.pdsc + + export type FlagshipSearchOrigin = 'SEARCH_SRP'; + } + namespace Security { + // Generated from: com/linkedin/avro2pegasus/events/common/security/CipherSuiteAuditor.pdsc + + export interface CipherSuiteAuditor { + auditor: string; + auditorType: ScopeType; + direction: ConnectionDirection; + } + // Generated from: com/linkedin/avro2pegasus/events/common/security/ConnectionDirection.pdsc + + export type ConnectionDirection = 'INBOUND' | 'OUTBOUND'; + // Generated from: com/linkedin/avro2pegasus/events/common/security/ScopeType.pdsc + + export type ScopeType = 'JMX' | 'CONFIG'; + } + namespace Standardization { + // Generated from: com/linkedin/avro2pegasus/events/common/standardization/TaxonomyTaskFeedback.pdsc + + export interface TaxonomyTaskFeedback { + feedbackType: TaxonomyTaskFeedbackType; + userSelection: string; + textSuggestion?: string; + typeSuggestion?: TaxonomyTaskType; + additionalComments?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/standardization/TaxonomyTaskFeedbackType.pdsc + + export type TaxonomyTaskFeedbackType = + | 'MISSPELL' + | 'STRANGE' + | 'UNCOMMON' + | 'DIFFERENT_LANGUAGE' + | 'NOT_A_TYPE' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/common/standardization/TaxonomyTaskResponse.pdsc + + export interface TaxonomyTaskResponse { + isYes?: boolean; + userSuggestionInput?: string; + singleChoiceSelection?: string; + multipleChoiceSelections: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/standardization/TaxonomyTaskType.pdsc + + export type TaxonomyTaskType = + | 'TITLE' + | 'SKILL' + | 'DEGREE' + | 'GEO' + | 'COMPANY' + | 'SCHOOL' + | 'INDUSTRY' + | 'FIELD_OF_STUDY' + | 'LICENSE' + | 'CERTIFICATION' + | 'UNKNOWN'; + } + namespace Stories { + // Generated from: com/linkedin/avro2pegasus/events/common/stories/PrivacySetting.pdsc + + export type PrivacySetting = 'FULLY_VISIBLE' | 'OBFUSCATED' | 'INVISIBLE'; + // Generated from: com/linkedin/avro2pegasus/events/common/stories/StoryItemActionType.pdsc + + export type StoryItemActionType = 'VIEW' | 'PROFILE_VIEW' | 'MESSAGE'; + } + namespace Talent { + // Generated from: com/linkedin/avro2pegasus/events/common/talent/DecoratedCandidateHiringState.pdsc + + export interface DecoratedCandidateHiringState { + candidateHiringStateUrn: string; + hiringStateStatusType: HireStatusType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talent/DecoratedSourcingChannel.pdsc + + export interface DecoratedSourcingChannel { + sourcingChannelUrn: string; + sourcingChannelType: SourcingChannelType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talent/HireStatusType.pdsc + + export type HireStatusType = + | 'POTENTIAL_CANDIDATE' + | 'SHORTLISTED' + | 'PHONE_SCREEN' + | 'INTERVIEW' + | 'OFFER_EXTENDED' + | 'HIRED' + | 'ARCHIVED' + | 'CONTACTED' + | 'REPLIED' + | 'ON_HOLD' + | 'USER_DEFINED' + | 'HIDDEN' + | 'UNCATEGORIZED'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/HiringCandidateSortType.pdsc + + export type HiringCandidateSortType = + | 'DATE_ADDED_TO_PROJECT' + | 'DATE_LAST_UPDATED' + | 'FIRST_NAME' + | 'LAST_NAME' + | 'RELEVANCE' + | 'PRESCREENING'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/HiringProjectState.pdsc + + export type HiringProjectState = 'ACTIVE' | 'CLOSED' | 'DRAFT' | 'DORMANT'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/HiringProjectType.pdsc + + export type HiringProjectType = + | 'JOB_POSTING' + | 'HIRING_MANAGER' + | 'CAMPAIGN' + | 'RECRUITER' + | 'ATS' + | 'RECRUITER_SYSTEM_CONNECT'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/ProjectPipelineHiringStateSelection.pdsc + + export interface ProjectPipelineHiringStateSelection { + decoratedCandidateHiringState: DecoratedCandidateHiringState; + selected: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talent/ScreeningBasedJobRecommendation.pdsc + + export interface ScreeningBasedJobRecommendation { + jobPostingUrn: string; + confidenceScore: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talent/SourcingChannelType.pdsc + + export type SourcingChannelType = + | 'AUTOMATED_SOURCING' + | 'LEAD_CAPTURE' + | 'PIPELINE_BUILDER' + | 'RECRUITER_SEARCH' + | 'COMPANY_CONNECTIONS' + | 'NETWORK_CONNECTIONS' + | 'PROFILE_MATCHING' + | 'TALENT_DIRECT' + | 'TALENT_POOL' + | 'MANUAL_IMPORT' + | 'PROJECT_IMPORT' + | 'JOB_POSTING' + | 'APPLY_STARTERS' + | 'INHERITED_JOB_POSTING' + | 'INHERITED_APPLY_STARTERS' + | 'INHERITED_PIPELINE_BUILDER' + | 'TALENT_PACKAGE' + | 'ATS_MIGRATION' + | 'REFERRAL' + | 'AGENCY' + | 'CAREER_SITE' + | 'INTERNAL' + | 'CUSTOMIZED_PASSIVE_SOURCING'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentActionType.pdsc + + export type TalentActionType = + | 'CLICK_INTERESTED' + | 'CLICK_CANCEL' + | 'CLICK_COMPANY_LOGO' + | 'CLICK_JOB_FLAVOR' + | 'CLICK_MEET_THE_TEAM' + | 'CLICK_RECRUITER_PROFILE' + | 'CLICK_LEADS_IN_RECRUITER' + | 'CLICK_ADD_CAMPAIGN' + | 'SHARE_INFORMATION' + | 'CLICK_VISIT_COMPANY' + | 'CLICK_FOLLOW_COMPANY' + | 'CLICK_LEAD_CAPTURE_AD_LINK' + | 'CLICK_LEAD_CAPTURE_AD_DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentAdminActionType.pdsc + + export type TalentAdminActionType = + | 'CLICK_LEADS_IN_RECRUITER' + | 'CLICK_ADD_CAMPAIGN' + | 'CLICK_MOVE_TO_UNPUBLISHED' + | 'CLICK_ADD_AD_CAMPAIGN' + | 'CLICK_DUPLICATE' + | 'CLICK_DELETE' + | 'CLICK_BACK_TO_OVERVIEW' + | 'CLICK_COPY_URL' + | 'CLICK_EDIT_COMPAIGN_FOLDER' + | 'CLICK_EDIT_AD_CAMPAIGN' + | 'CLICK_PREVIEW' + | 'CLICK_SAVE' + | 'CLICK_CREATE_CAMPAIGN_FOLDER' + | 'CLICK_ADD_AD_CAMPAIGN_LATER'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentAdminPageType.pdsc + + export type TalentAdminPageType = 'ADMIN_OVERVIEW' | 'ADMIN_EDIT'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentCommonHeader.pdsc + + export interface TalentCommonHeader { + seatUrn?: string; + contractUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentInterviewType.pdsc + + export type TalentInterviewType = 'SINGLE_CONVERSATION' | 'FULL_INTERVIEW_LOOP'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentLandingPageCallToActionSecondaryTextType.pdsc + + export type TalentLandingPageCallToActionSecondaryTextType = + | 'INTERESTED_IN_OPPORTUNITY' + | 'SHARE_PROFILE_WITH_RECRUITERS' + | 'LEARN_MORE_ABOUT_OPPORTUNITY' + | 'LEARN_MORE_ABOUT_OPPORTUNITIES_AT_COMPANY' + | 'CONTACT_ABOUT_OPPORTUNITY' + | 'INTERESTED_IN_ATTENDING' + | 'LEARN_MORE_ABOUT_COMPANY' + | 'NO_TEXT'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentLandingPageCallToActionType.pdsc + + export type TalentLandingPageCallToActionType = 'IM_INTERESTED' | 'LEARN_MORE' | 'CONTACT_ME' | 'REGISTER'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentLandingPageState.pdsc + + export type TalentLandingPageState = 'DRAFT' | 'PUBLISHED'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentLeadSourceType.pdsc + + export type TalentLeadSourceType = 'LANDING_PAGE' | 'COMPANY_PAGE'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentMediaType.pdsc + + export type TalentMediaType = 'IMAGE' | 'VIDEO' | 'SLIDESHARE'; + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentPoolSourcingChannelSelection.pdsc + + export interface TalentPoolSourcingChannelSelection { + decoratedSourcingChannel: DecoratedSourcingChannel; + selected: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talent/TalentServiceType.pdsc + + export type TalentServiceType = 'RECRUITER' | 'HIRING_PLATFORM'; + } + namespace Talentinsights { + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/AutomatedInsightGenerationGuid.pdsc + + export type AutomatedInsightGenerationGuid = string; + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/AutomatedInsightIds.pdsc + + export interface AutomatedInsightIds { + insightHash: string; + insightGenerationId: AutomatedInsightGenerationGuid; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/AutomatedInsightTrackingId.pdsc + + export interface AutomatedInsightTrackingId { + insightHash: string; + insightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/ComparisonOperatorType.pdsc + + export type ComparisonOperatorType = + | 'EQUAL' + | 'NOT_EQUAL' + | 'GREATER_THAN' + | 'GREATER_EQUAL' + | 'LESS_THAN' + | 'LESS_EQUAL'; + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/EnterpriseApplicationUserProfile.pdsc + + export interface EnterpriseApplicationUserProfile { + enterpriseApplicationInstanceUrn: string; + enterpriseProfileUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/FacetComparisonClause.pdsc + + export interface FacetComparisonClause { + facetType: FacetType; + facetValue: string; + operator: ComparisonOperatorType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/FacetDisjunctionClause.pdsc + + export interface FacetDisjunctionClause { + facetType: FacetType; + facetValues: string[]; + isNegated: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/FacetRangeClause.pdsc + + export interface FacetRangeClause { + facetType: FacetType; + facetValueRange: Com.Linkedin.Avro2pegasus.Events.Common.LongRange; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/FacetSearchHeader.pdsc + + export interface FacetSearchHeader { + searchRequestId: string; + queryString?: string; + facetType?: FacetType; + reportType: ReportType; + searchType: FacetSearchType; + queryFilters: QueryFilters; + overrideCompanyUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/FacetSearchResult.pdsc + + export interface FacetSearchResult { + searchResultType: FacetType; + searchResultText: string; + searchResultEntityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/FacetSearchResultPosition.pdsc + + export interface FacetSearchResultPosition { + searchResultSize: number; + index: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/FacetSearchType.pdsc + + export type FacetSearchType = 'TYPEAHEAD' | 'SMART_SUGGESTION'; + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/FacetType.pdsc + + export type FacetType = + | 'TITLE' + | 'LOCATION' + | 'COMPANY' + | 'SKILL' + | 'INDUSTRY' + | 'FUNCTION' + | 'EXPLICIT_EMPLOYMENT_TYPE' + | 'MONTHS_OF_EXPERIENCE'; + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/QueryFilters.pdsc + + export interface QueryFilters { + facetClauses: Array; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/ReportRecommendation.pdsc + + export interface ReportRecommendation { + reportType: ReportType; + subReportType: SubReportType; + queryFilters: QueryFilters; + relevanceReasonUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/ReportType.pdsc + + export type ReportType = 'COMPANY' | 'TALENT_POOL'; + // Generated from: com/linkedin/avro2pegasus/events/common/talentinsights/SubReportType.pdsc + + export type SubReportType = + | 'OVERVIEW' + | 'LOCATION' + | 'COMPANY' + | 'INDUSTRY' + | 'EDUCATION' + | 'SKILLS' + | 'TITLES' + | 'EMPLOYER_BRAND' + | 'PROFILES' + | 'TALENT_FLOW' + | 'ATTRITION' + | 'GENDER'; + } + namespace Thirdparty { + // Generated from: com/linkedin/avro2pegasus/events/common/thirdparty/ThirdPartyAuthorizationFlowErrorType.pdsc + + export type ThirdPartyAuthorizationFlowErrorType = 'INTERNAL' | 'DOWNSTREAM' | 'FUSE' | 'CLIENT' | 'USER'; + } + namespace Ucv { + // Generated from: com/linkedin/avro2pegasus/events/common/ucv/ActivityStatistics.pdsc + + export interface ActivityStatistics { + lastActiveTime: number; + numDaysActive: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ucv/ChallengeType.pdsc + + export type ChallengeType = + | 'NONE' + | 'CAPTCHA' + | 'MEMBER_FIRSTNAME' + | 'EMAIL' + | 'EMAIL_PIN' + | 'SMS' + | 'TWO_STEP_VERIFICATION' + | 'PHONE_CHALLENGE' + | 'TOS_RATE_LIMITED_CHALLENGE' + | 'ID_VERIFICATION_CHALLENGE' + | 'EVERCAPTCHA' + | 'SECONDARY_HANDLE_CHALLENGE' + | 'REHAB_RESTRICTION_CHALLENGE'; + // Generated from: com/linkedin/avro2pegasus/events/common/ucv/EmailAddressReputation.pdsc + + export interface EmailAddressReputation { + abuseScore: number; + abookMemberCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ucv/EndUserMetadata.pdsc + + export interface EndUserMetadata { + emailAddress?: string; + accountAgeInSeconds?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ucv/ThirdPartyEntityIdentifier.pdsc + + export interface ThirdPartyEntityIdentifier { + tenantUrn: string; + externalUserUrn: string; + memberUrn?: string; + cloudUrn?: string; + clientId?: string; + userMetadata: EndUserMetadata; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ucv/UriValidationResult.pdsc + + export interface UriValidationResult { + uri: string; + resultType?: ValidateUriResultType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ucv/ValidateUriResultType.pdsc + + export type ValidateUriResultType = + | 'GOOGLE_MALWARE' + | 'GOOGLE_PHISHING' + | 'SPAMHAUS' + | 'SURBL' + | 'FUSE' + | 'INTERNAL_WHITELIST' + | 'RESERVED_IP' + | 'OTHER' + | 'CONFUSABLE'; + } + namespace Ugc { + // Generated from: com/linkedin/avro2pegasus/events/common/ugc/DistributionV2.pdsc + + export interface DistributionV2 { + feedDistribution: FeedDistribution; + targetAudience?: TargetAudience; + externalDistributionChannels: ExternalDistributionChannel[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ugc/ExternalDistributionChannel.pdsc + + export interface ExternalDistributionChannel { + externalDistributionChannelType: ExternalDistributionChannelType; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ugc/ExternalDistributionChannelType.pdsc + + export type ExternalDistributionChannelType = 'TWITTER' | 'TENCENT' | 'WEIBO'; + // Generated from: com/linkedin/avro2pegasus/events/common/ugc/FeedDistribution.pdsc + + export type FeedDistribution = 'NONE' | 'MAIN_FEED' | 'CONTAINER_ONLY'; + // Generated from: com/linkedin/avro2pegasus/events/common/ugc/ProcessingState.pdsc + + export type ProcessingState = 'PENDING' | 'PROCESSING'; + // Generated from: com/linkedin/avro2pegasus/events/common/ugc/ProcessingType.pdsc + + export type ProcessingType = 'ASSET' | 'REVIEW'; + // Generated from: com/linkedin/avro2pegasus/events/common/ugc/Target.pdsc + + export interface Target { + industryUrns: string[]; + jobFunctionUrns: string[]; + seniorityUrns: string[]; + locationUrns: string[]; + staffCountRanges: Com.Linkedin.Avro2pegasus.Events.Common.EmployeeCountRangeType[]; + interfaceLocales: Com.Linkedin.Avro2pegasus.Events.Locale[]; + } + // Generated from: com/linkedin/avro2pegasus/events/common/ugc/TargetAudience.pdsc + + export interface TargetAudience { + targetedEntities: Target[]; + } + } + namespace Unify { + // Generated from: com/linkedin/avro2pegasus/events/common/unify/QuestionGroupingType.pdsc + + export type QuestionGroupingType = + | 'BASIC' + | 'CONTACT_INFO' + | 'EDUCATION' + | 'GDPR' + | 'HOME_ADDRESS' + | 'RESUME' + | 'VOLUNTARY_SELF_ID' + | 'WORK_ADDRESS' + | 'WORK_AUTHORIZATION' + | 'WORK_EXPERIENCE'; + // Generated from: com/linkedin/avro2pegasus/events/common/unify/ResumeSource.pdsc + + export type ResumeSource = 'SELECTED_RECENT' | 'UPLOADED_NEW' | 'USED_DEFAULT'; + } + namespace Video { + namespace Prefetching { + // Generated from: com/linkedin/avro2pegasus/events/common/video/prefetching/VideoCacheLookupStatus.pdsc + + export type VideoCacheLookupStatus = 'HIT' | 'MISS'; + // Generated from: com/linkedin/avro2pegasus/events/common/video/prefetching/VideoCacheStatus.pdsc + + export type VideoCacheStatus = 'SAVED' | 'EVICTED'; + } + } + namespace Voyager { + // Generated from: com/linkedin/avro2pegasus/events/common/voyager/CodeReviewGroup.pdsc + + export type CodeReviewGroup = + | 'PLATFORM_VOYAGER_IOS' + | 'PLATFORM_VOYAGER_ANDROID' + | 'PLATFORM_VOYAGER_WEB' + | 'PLATFORM_VOYAGER_API'; + // Generated from: com/linkedin/avro2pegasus/events/common/voyager/LixEnforcerLixRecordModificationAction.pdsc + + export type LixEnforcerLixRecordModificationAction = + | 'INSERT' + | 'TREX_UPDATE' + | 'WHITELIST_DUE_DATE_UPDATE' + | 'PILLAR_UPDATE' + | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/common/voyager/LixEnforcerRequestState.pdsc + + export type LixEnforcerRequestState = 'IN_PROGRESS' | 'PRE_APPROVED' | 'APPROVED' | 'REJECTED'; + // Generated from: com/linkedin/avro2pegasus/events/common/voyager/LixEnforcerRequestType.pdsc + + export type LixEnforcerRequestType = 'WHITELISTING' | 'PILLAR_TRANSFER'; + // Generated from: com/linkedin/avro2pegasus/events/common/voyager/ReviewButlerCodeReviewState.pdsc + + export type ReviewButlerCodeReviewState = + | 'PLATFORM_REVIEW_REQUEST_SUBMITTED' + | 'PLATFORM_REVIEW_PICK_REVIEWER' + | 'PLATFORM_REVIEW_ASSIGNMENT_NOTIFICATION' + | 'PLATFORM_REVIEW_ASSIGNMENT_REMINDER' + | 'PLATFORM_REVIEW_ASSIGNMENT_IGNORED' + | 'PLATFORM_REVIEW_REQUEST_ACCEPTED' + | 'PLATFORM_REVIEW_REQUEST_DECLINED' + | 'PLATFORM_REVIEW_CRON_REVIEW_REQUEST_UPDATED' + | 'PLATFORM_REVIEW_CRON_DTO_ONCALL_INFO_UPDATED' + | 'PLATFORM_REVIEW_CRON_REVIEWER_STATUS_UPDATED' + | 'PLATFORM_REVIEW_CRON_STUCK_RB_CLEANED'; + } + namespace Webframeworks { + // Generated from: com/linkedin/avro2pegasus/events/common/webframeworks/BrowserConnection.pdsc + + export interface BrowserConnection { + type?: type; + online?: boolean; + downlink?: number; + downlinkMax?: number; + effectiveType?: effectiveType; + rtt?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/webframeworks/BrowserDeviceStats.pdsc + + export interface BrowserDeviceStats { + hardwareConcurrency?: number; + deviceMemory?: number; + storage?: BrowserStorageStats; + connection: BrowserConnection; + maxTouchPoints?: number; + browserVendor?: string; + oscpu?: string; + platform?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/webframeworks/BrowserStorageStats.pdsc + + export interface BrowserStorageStats { + quota: number; + usage: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/webframeworks/effectiveType.pdsc + + export type effectiveType = 'SLOW_2G' | 'REGULAR_2G' | 'REGULAR_3G' | 'REGULAR_4G'; + // Generated from: com/linkedin/avro2pegasus/events/common/webframeworks/PemberlyBuildHardware.pdsc + + export interface PemberlyBuildHardware { + cpuCount: number; + cpuSpeed: number; + isUsingBattery?: boolean; + physicalMemoryTotalInBytes: number; + memorySwapTotalInBytes?: number; + usedMemoryTotalInBytes: number; + hostname: string; + hostOperatingSystem: string; + isControlledEnvironment: boolean; + cpuLoadAverage?: number[]; + systemUptimeSeconds: number; + } + // Generated from: com/linkedin/avro2pegasus/events/common/webframeworks/ServiceWorkerCachedShell.pdsc + + export interface ServiceWorkerCachedShell { + bprPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + url: string; + serverApplicationInstance: Com.Linkedin.Avro2pegasus.Events.Common.ApplicationInstance; + cachedApplicationInstance: Com.Linkedin.Avro2pegasus.Events.Common.ApplicationInstance; + clientAppVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/events/common/webframeworks/type.pdsc + + export type type = 'BLUETOOTH' | 'CELLULAR' | 'ETHERNET' | 'WIFI' | 'WIMAX' | 'OTHER' | 'UNKNOWN' | 'NONE'; + } + } + namespace Communications { + // Generated from: com/linkedin/avro2pegasus/events/communications/AcceptedInvitation.pdsc + + export interface AcceptedInvitation { + relationshipRepresentation: BaseRelationshipRequest; + acceptedInvitationMessageId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/BadgeSyncronization.pdsc + + export interface BadgeSyncronization { + baseRequest: BaseRequest; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/BaseRelationshipRequest.pdsc + + export interface BaseRelationshipRequest { + baseRequest: BaseRequest; + actorUrn: string; + actorVisibilityAuthInformation?: VisibilityAuthInformation; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/BaseRequest.pdsc + + export interface BaseRequest { + itemUrn: string; + recipient: Recipient; + creationTime: number; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + score?: number; + groupingUrn?: string; + requestExpirationTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/Channel.pdsc + + export type Channel = + | 'EMAIL' + | 'PUSH' + | 'SMS' + | 'WECHAT' + | 'ALL_CHANNELS' + | 'ONSITE_NOTIFICATIONS' + | 'BADGE_UPDATE'; + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationCategory.pdsc + + export type CommunicationCategory = + | 'ANY_CATEGORY' + | 'FEED_CONVERSATION_ACTION_LIKED_CONTENT' + | 'FEED_CONVERSATION_ACTION_LIKED_PUBLISHED_ARTICLE' + | 'FEED_CONVERSATION_ACTION_COMMENTED_ON_CONTENT' + | 'FEED_CONVERSATION_ACTION_COMMENTED_ON_PUBLISHED_ARTICLE' + | 'FEED_CONVERSATION_ACTION_COMMENTED_ON_CONTENT_ALSO_COMMENTED_ON' + | 'FEED_CONVERSATION_ACTION_MENTIONED_IN_CONTENT' + | 'PROP_GENERATED_BIRTHDAY' + | 'PROP_GENERATED_JOB_CHANGE' + | 'PROP_GENERATED_WORK_ANNIVERSARY' + | 'INMAIL_MESSAGE_REGULAR' + | 'INMAIL_MESSAGE_REMINDER' + | 'PEPPER_GENERATED_PUBLISHED_BY_YOUR_NETWORK' + | 'PEPPER_GENERATED_SHARED_BY_YOUR_NETWORK' + | 'PEPPER_EXTERNAL_COMM_PUBLISHED_BY_YOUR_NETWORK' + | 'PEPPER_EXTERNAL_COMM_SHARED_BY_YOUR_NETWORK' + | 'PROP_GENERATED_MEETING' + | 'MENTIONED_IN_NEWS_GENERATED' + | 'MENTIONED_IN_NEWS_EXTERNAL_COMM' + | 'USER_GENERATED_CONTENT_ACTION_UPLOAD_COMPLETE' + | 'USER_GENERATED_CONTENT_ACTION_MENTIONED_IN' + | 'USER_GENERATED_CONTENT_ACTION_EXTERNAL_COMM_UPLOAD_COMPLETE' + | 'USER_GENERATED_CONTENT_ACTION_EXTERNAL_COMM_MENTIONED_IN' + | 'MEMBER_TO_MEMBER_INVITE_REGULAR' + | 'MEMBER_TO_MEMBER_INVITE_REMINDER' + | 'SALES_INMAIL_MESSAGE_REGULAR' + | 'SALES_INMAIL_MESSAGE_REMINDER' + | 'PEPPER_GENERATED_MENTIONED_IN_THE_NEWS' + | 'PEPPER_EXTERNAL_COMM_MENTIONED_IN_THE_NEWS' + | 'PEPPER_GENERATED_TALKING_ABOUT' + | 'PEPPER_EXTERNAL_COMM_TALKING_ABOUT' + | 'PREMIUM_INMAIL_REGULAR' + | 'PREMIUM_INMAIL_REMINDER' + | 'HIRE_INMAIL_REGULAR' + | 'HIRE_INMAIL_REMINDER' + | 'MEMBER_TO_GUEST_INVITE_REGULAR' + | 'MEMBER_TO_GUEST_INVITE_FIRST_REMINDER' + | 'MEMBER_TO_GUEST_INVITE_SECOND_REMINDER' + | 'COLLEAGUE_CONFIRMATION_REQUEST_FROM_IN_APP_REGULAR' + | 'COLLEAGUE_CONFIRMATION_REQUEST_FROM_IN_APP_FOLLOW_UP' + | 'COLLEAGUE_CONFIRMATION_REQUEST_FROM_IN_APP_REMINDER'; + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationChannelSelectionEvent.pdsc + + export interface CommunicationChannelSelectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + communicationHeader: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + chosenChannel?: Channel; + droppedChannels: DroppedChannel[]; + modelId: string; + supportedPushApplications: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationDroppedEvent.pdsc + + export interface CommunicationDroppedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipient?: Recipient; + requestEventGuid?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + communicationKey?: string; + itemUrn?: string; + itemTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + droppedReason: CommunicationDroppedReason; + droppingRelevanceModelId?: string; + relevanceModelMetadata?: CommunicationRelevanceModelMetadata; + communicationCategory?: string; + communicationChainTrackingHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationDroppedReason.pdsc + + export type CommunicationDroppedReason = + | 'SENT_ITEMS_DISCOUNTING_FILTER' + | 'INVALID_REQUEST' + | 'INTERNAL_ERROR' + | 'RELEVANCE_MODEL' + | 'ONSITE_ACTION' + | 'MEMBER_SETTINGS_BASED_FILTERING' + | 'LIX_BASED_FILTERING' + | 'SPAM_FILTERING' + | 'RATE_LIMITING' + | 'UNSUPPORTED' + | 'APP_NOT_AVAILABLE' + | 'RECIPIENT_SLEEP_HOUR' + | 'EXPIRED_REQUEST' + | 'CONTENT_LIMIT_REACHED' + | 'GUEST_BECAME_MEMBER' + | 'NOTIFICATION_DELETION_FILTERING' + | 'BADGE_UPDATE_COUNT_BASED_FILTERING' + | 'MILESTONE_FILTERING' + | 'NO_EXISTING_CONTENT' + | 'EDGE_SETTING_VALUE_NONE'; + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationFeedbackReasonSubmittedEvent.pdsc + + export interface CommunicationFeedbackReasonSubmittedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + feedbackTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + feedbackReason: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationHandoffEvent.pdsc + + export interface CommunicationHandoffEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipient: Recipient; + requestEventGuid: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + communicationKey: string; + itemUrn: string; + itemTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + relevanceModelMetadata?: CommunicationRelevanceModelMetadata; + channel: Channel; + batchId?: string; + communicationCategory?: string; + communicationChainTrackingHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationKey.pdsc + + export type CommunicationKey = + | 'ACCEPTED_INVITATION' + | 'MEMBER_TO_MEMBER_INVITE_REQUEST' + | 'MEMBER_TO_MEMBER_MESSAGE' + | 'MEMBER_TO_GUEST_INVITE_REQUEST' + | 'ALL_COMMUNICATION_KEYS' + | 'FEED_CONVERSATION_ACTION' + | 'MENTIONED_IN_NEWS' + | 'EDITOR_CURATED_CONTENT' + | 'INMAIL_MESSAGE' + | 'PROP_GENERATED' + | 'PROP_EXTERNAL_COMMUNICATION' + | 'BADGE_SYNCHRONIZATION' + | 'LOOKUP_ADD_TO_PROJECT' + | 'PEPPER_CONTENT' + | 'PROFESSIONAL_IDENTITY_DIGEST' + | 'USER_GENERATED_CONTENT_ACTION' + | 'WHOS_VIEWED_MY_PROFILE_GENERATED' + | 'WHOS_VIEWED_MY_PROFILE_EXTERNAL_COMMUNICATION' + | 'EVENT_STARTED' + | 'SALES_INMAIL_MESSAGE'; + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationQueuedEvent.pdsc + + export interface CommunicationQueuedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipient: Recipient; + requestEventGuid: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + communicationKey: string; + itemUrn: string; + itemTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + relevanceModelMetadata?: CommunicationRelevanceModelMetadata; + scheduledDequeueTime: number; + communicationCategory?: string; + communicationChainTrackingHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationRelevanceFeature.pdsc + + export interface CommunicationRelevanceFeature { + name: string; + term?: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationRelevanceModelMetadata.pdsc + + export interface CommunicationRelevanceModelMetadata { + modelId: string; + modelType: CommunicationRelevanceModelType; + relevanceScoringData?: CommunicationRelevanceScoringData; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationRelevanceModelType.pdsc + + export type CommunicationRelevanceModelType = + | 'DOWNSHIFT' + | 'CONTENT_QUALITY' + | 'AGGREGATE' + | 'FOLLOWUP' + | 'REMINDER'; + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationRelevanceScoringData.pdsc + + export interface CommunicationRelevanceScoringData { + communicationKeyRelevanceData: Com.Linkedin.Avro2pegasus.Messages.Communications.Internal.CommunicationKeyRelevanceData; + aggregateRelevanceData: Com.Linkedin.Avro2pegasus.Messages.Communications.Internal.CommunicationKeyRelevanceData; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationRelevanceSnapshotEvent.pdsc + + export interface CommunicationRelevanceSnapshotEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestEventGuid?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + itemTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + communicationRelevanceFeatures: CommunicationRelevanceFeature[]; + communicationChainTrackingHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + source?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.RelevanceFeatureSnapshotSource; + communicationRelevanceScores?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationScore[]; + metadata?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.RelevanceFeatureSnapshotMetadata; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationRequestEvent.pdsc + + export interface CommunicationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + specificRequest: + | InviteRequest + | AcceptedInvitation + | UserMessageRequest + | FeedConversationAction + | MentionedInNews + | EditorCuratedContent + | InmailMessage + | PropGenerated + | PropExternalCommunication + | BadgeSyncronization + | LookupAddToProject + | PepperContent + | ProfessionalIdentityDigest + | UserGeneratedContentAction + | WhosViewedMyProfileGenerated + | WhosViewedMyProfileExternalCommunication + | EventStarted + | SalesInmailMessage; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/CommunicationScoreEvent.pdsc + + export interface CommunicationScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + recipientUrn: string; + scores: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationScore[]; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/DroppedChannel.pdsc + + export interface DroppedChannel { + channel: Channel; + channelDroppedReason: Com.Linkedin.Avro2pegasus.Events.Common.Communications.ChannelDroppedReason; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/EditorCuratedContent.pdsc + + export interface EditorCuratedContent { + baseRequest: BaseRequest; + headline: Com.Linkedin.Avro2pegasus.Events.LocaleString; + requestType: EditorCuratedContentType; + targetApps: TargetApp[]; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/EditorCuratedContentType.pdsc + + export type EditorCuratedContentType = 'BREAKING_NEWS' | 'DAILY_DIGEST'; + // Generated from: com/linkedin/avro2pegasus/events/communications/EmailCommunicationFeedbackEvent.pdsc + + export interface EmailCommunicationFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + campaignKey: string; + memberUrn?: string; + messageId: Com.Linkedin.Avro2pegasus.Events.Messages.MessageId; + feedbackTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + feedbackSentiment: FeedbackSentimentType; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/EnterpriseProfileRecipient.pdsc + + export interface EnterpriseProfileRecipient { + enterpriseProfileUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/EventStarted.pdsc + + export interface EventStarted { + baseRequest: BaseRequest; + startTime: number; + highlightedMemberUrns?: string[]; + numConnections?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/FeedbackSentimentType.pdsc + + export type FeedbackSentimentType = 'POSITIVE' | 'NEGATIVE'; + // Generated from: com/linkedin/avro2pegasus/events/communications/FeedConversationAction.pdsc + + export interface FeedConversationAction { + relationshipRepresentation: BaseRelationshipRequest; + itemUrnActedUpon: string; + recipientRoles: FeedConversationRole[]; + action: FeedConversationActionType; + notificationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/FeedConversationActionType.pdsc + + export type FeedConversationActionType = 'LIKE' | 'COMMENT' | 'MENTION'; + // Generated from: com/linkedin/avro2pegasus/events/communications/FeedConversationRole.pdsc + + export type FeedConversationRole = 'ORIGINATOR' | 'LIKER' | 'COMMENTER' | 'MENTIONEE'; + // Generated from: com/linkedin/avro2pegasus/events/communications/GenericRecipient.pdsc + + export interface GenericRecipient { + recipientUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/GuestRecipient.pdsc + + export interface GuestRecipient { + handleUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/InAppNotificationModificationEvent.pdsc + + export interface InAppNotificationModificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientUrn: string; + notificationType?: string; + groupByUrn?: string; + urnsToRemove?: string[]; + communicationType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/InAppNotificationPersistedEvent.pdsc + + export interface InAppNotificationPersistedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + notificationUrn: string; + requestEvent: RequestEvent; + badgeCountChange?: number; + lastUpdateTime?: number; + numberOfEntityUrns?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/InAppNotificationPersistRequestEvent.pdsc + + export interface InAppNotificationPersistRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestEvent: RequestEvent; + requestOrigin: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationRequestOrigin; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/InmailMessage.pdsc + + export interface InmailMessage { + relationshipRepresentation: BaseRelationshipRequest; + senderContractUrn?: string; + senderEntityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/InviteRequest.pdsc + + export interface InviteRequest { + relationshipRepresentation: BaseRelationshipRequest; + senderInviteMessage?: string; + invitationMessageId?: string; + invitationSharedSecret?: string; + invitationAcceptParameter?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/L2mPromotionFeatureSnapshotEvent.pdsc + + export interface L2mPromotionFeatureSnapshotEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientUrn: string; + requestFeatures: CommunicationRelevanceFeature[]; + scoredPromotions: ScoredPromotion[]; + promotionRelevanceRequestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/L2mPromotionFeatureSnapshotV2Event.pdsc + + export interface L2mPromotionFeatureSnapshotV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientUrn: string; + modelId: string; + requestFeatures: CommunicationRelevanceFeature[]; + scoredPromotions: ScoredPromotionV2[]; + promotionRelevanceRequestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/LookupAddToProject.pdsc + + export interface LookupAddToProject { + relationshipRepresentation: BaseRelationshipRequest; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/MemberChannelOverrides.pdsc + + export interface MemberChannelOverrides { + recipientUrn: string; + eligibleChannels: Channel[]; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/MemberContractRecipient.pdsc + + export interface MemberContractRecipient { + memberContractUrn: string; + overrideEmailHandleUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/MemberRecipient.pdsc + + export interface MemberRecipient { + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/MentionedInNews.pdsc + + export interface MentionedInNews { + relationshipRepresentation: BaseRelationshipRequest; + fromNotificationsService: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/OriginTypes.pdsc + + export type OriginTypes = 'MESSAGING' | 'LED'; + // Generated from: com/linkedin/avro2pegasus/events/communications/PepperContent.pdsc + + export interface PepperContent { + relationshipRepresentation: BaseRelationshipRequest; + fromNotificationsService: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/ProfessionalIdentityDigest.pdsc + + export interface ProfessionalIdentityDigest { + baseRequest: BaseRequest; + profileViewCount?: number; + endorsementCount?: number; + recommendationCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/PropExternalCommunication.pdsc + + export interface PropExternalCommunication { + relationshipRepresentation: BaseRelationshipRequest; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/PropGenerated.pdsc + + export interface PropGenerated { + relationshipRepresentation: BaseRelationshipRequest; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/Recipient.pdsc + + export interface Recipient { + specificRecipient: + | MemberRecipient + | GuestRecipient + | MemberContractRecipient + | EnterpriseProfileRecipient + | GenericRecipient; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/RequestEvent.pdsc + + export interface RequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipient: Recipient; + inAppNotificationType?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.InAppNotificationType; + content: RequestItem[]; + communicationChainTrackingHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + inAppNotificationTypeV2?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/RequestItem.pdsc + + export interface RequestItem { + entityUrn: string; + parentUrn?: string; + actorUrn?: string; + score?: number; + typeInformation?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.TypeInformation; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + overrideInstructions?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.OverrideInstructions; + typeInformationV2?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.TypeInformationV2; + settingDirectives?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.SettingDirective[]; + sprMetadata?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.SprMetadata; + firstPassRelevanceModelScores?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.RelevanceModelScore[]; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/RichContentType.pdsc + + export type RichContentType = 'IMAGE' | 'AUDIO' | 'VIDEO' | 'TENOR_GIF' | 'POST_SHARE' | 'OTHER_ATTACHMENT'; + // Generated from: com/linkedin/avro2pegasus/events/communications/SalesInmailMessage.pdsc + + export interface SalesInmailMessage { + relationshipRepresentation: BaseRelationshipRequest; + senderContractUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/ScoredPromotion.pdsc + + export interface ScoredPromotion { + promotionTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + documentFeatures: CommunicationRelevanceFeature[]; + scores: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationScore[]; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/ScoredPromotionV2.pdsc + + export interface ScoredPromotionV2 { + promotionTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + documentFeatures: CommunicationRelevanceFeature[]; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/TargetApp.pdsc + + export type TargetApp = 'VOYAGER' | 'ZEPHYR'; + // Generated from: com/linkedin/avro2pegasus/events/communications/UserGeneratedContentAction.pdsc + + export interface UserGeneratedContentAction { + relationshipRepresentation: BaseRelationshipRequest; + fromNotificationsService: boolean; + actionType: UserGeneratedContentActionType; + activityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/UserGeneratedContentActionType.pdsc + + export type UserGeneratedContentActionType = 'CONTENT_UPLOAD_COMPLETE' | 'MENTIONED_IN_CONTENT'; + // Generated from: com/linkedin/avro2pegasus/events/communications/UserMessageRequest.pdsc + + export interface UserMessageRequest { + relationshipRepresentation: BaseRelationshipRequest; + threadUrn: string; + messageOrigin?: OriginTypes; + isReply: boolean; + messageType: Com.Linkedin.Avro2pegasus.Inbox.MailboxItemType; + hasMultipleRecipients?: boolean; + hasMultipleRichContent?: boolean; + messageRichContentType?: RichContentType; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/VisibilityAuthInformation.pdsc + + export interface VisibilityAuthInformation { + visibilityAuthToken: string; + visibilityAuthType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/WhosViewedMyProfileExternalCommunication.pdsc + + export interface WhosViewedMyProfileExternalCommunication { + baseRequest: BaseRequest; + initialProfileViewTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/communications/WhosViewedMyProfileGenerated.pdsc + + export interface WhosViewedMyProfileGenerated { + relationshipRepresentation: BaseRelationshipRequest; + } + } + namespace Commute { + // Generated from: com/linkedin/avro2pegasus/events/commute/CommuteAddressTypeaheadActionEvent.pdsc + + export interface CommuteAddressTypeaheadActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + address: string; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/commute/CommuteAddressTypeaheadQueryEvent.pdsc + + export interface CommuteAddressTypeaheadQueryEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + query: string; + } + // Generated from: com/linkedin/avro2pegasus/events/commute/CommutePreferenceModificationEvent.pdsc + + export interface CommutePreferenceModificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestTriggeredTime: number; + changeType: Com.Linkedin.Avro2pegasus.Events.ChangeType; + travelMode?: Com.Linkedin.Avro2pegasus.Events.Geo.TravelMode; + } + // Generated from: com/linkedin/avro2pegasus/events/commute/CoveredGeoItem.pdsc + + export interface CoveredGeoItem { + geoUrn: string; + coveredRatio: number; + } + // Generated from: com/linkedin/avro2pegasus/events/commute/CoveredGeoSingleIsochroneResult.pdsc + + export interface CoveredGeoSingleIsochroneResult { + maximumTravelTimeSeconds: number; + candidateGeoTotalCount: number; + candidateGeoWithPolygonCount: number; + coveredGeoItems: CoveredGeoItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/commute/IsochroneCoveredGeoCalculationEvent.pdsc + + export interface IsochroneCoveredGeoCalculationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestTriggeredTime: number; + travelMode: Com.Linkedin.Avro2pegasus.Events.Geo.TravelMode; + isochroneCount: number; + calculationResults: CoveredGeoSingleIsochroneResult[]; + cutoffRatio: number; + isBootstrapped: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/commute/IsochroneMissingEvent.pdsc + + export interface IsochroneMissingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + requestTriggeredTime: number; + isBootstrapped?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/commute/IsochroneRequestFailedEvent.pdsc + + export interface IsochroneRequestFailedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + startPoint: string; + maximumTravelTimeSeconds: number; + date?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + timeOfDay?: Com.Linkedin.Avro2pegasus.Events.Common.TimeOfDay; + travelMode: Com.Linkedin.Avro2pegasus.Events.Geo.TravelMode; + gaapScriptErrors: Com.Linkedin.Avro2pegasus.Common.Gaap.ScriptError[]; + retryCount?: number; + isBootstrapped?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/commute/MemberToJobCommuteTimeEvent.pdsc + + export interface MemberToJobCommuteTimeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobUrn: string; + drivingDurationSeconds?: number; + transitDurationSeconds?: number; + walkingDurationSeconds?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/commute/PreferredCommuteInfo.pdsc + + export interface PreferredCommuteInfo { + memberUrn: string; + jobPostingUrn: string; + isDecorated: boolean; + appliedMatchingAlgorithm?: PreferredCommuteMatchingAlgorithm; + } + // Generated from: com/linkedin/avro2pegasus/events/commute/PreferredCommuteMatchingAlgorithm.pdsc + + export type PreferredCommuteMatchingAlgorithm = + | 'EXACT_ADDRESS_IN_ISOCHRONE' + | 'POLYGON_OVERLAP_WITH_ISOCHRONE' + | 'GEO_ENTITY_COORDINATES_IN_ISOCHRONE'; + // Generated from: com/linkedin/avro2pegasus/events/commute/PreferredCommuteRelevanceReasonEvent.pdsc + + export interface PreferredCommuteRelevanceReasonEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + preferredCommuteInfos: PreferredCommuteInfo[]; + trackingId: string; + } + } + namespace Companies { + // Generated from: com/linkedin/avro2pegasus/events/companies/FlagshipCareersViewEvent.pdsc + + export interface FlagshipCareersViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + company: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + } + namespace Company { + // Generated from: com/linkedin/avro2pegasus/events/company/CompanyAdminSelfServicePageRemovalEvent.pdsc + + export interface CompanyAdminSelfServicePageRemovalEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + companyUrn: string; + memberUrn: string; + removalReason: RemovalReasonType; + } + // Generated from: com/linkedin/avro2pegasus/events/company/CompanyAutoCreateOrUpdateResponseEvent.pdsc + + export interface CompanyAutoCreateOrUpdateResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + company: Com.Linkedin.Avro2pegasus.Company.Bizprofile.Ds.Api.Espresso.BizCompany; + companyUrn?: string; + statusCode: number; + } + // Generated from: com/linkedin/avro2pegasus/events/company/CompanyChangeEvent.pdsc + + export interface CompanyChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + companyId: number; + company: Com.Linkedin.Avro2pegasus.Company.Bizprofile.Ds.Api.Espresso.BizCompany; + } + // Generated from: com/linkedin/avro2pegasus/events/company/CompanyEnrichmentGaapResponseMessage.pdsc + + export interface CompanyEnrichmentGaapResponseMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResponse?: RawBizCompany; + } + // Generated from: com/linkedin/avro2pegasus/events/company/CompanyEnrichmentResultEvent.pdsc + + export interface CompanyEnrichmentResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rawBizCompany: RawBizCompany; + requestClientTag?: string; + scriptName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/company/CompanyStatusUpdateAction.pdsc + + export type CompanyStatusUpdateAction = 'FEATURE' | 'UNFEATURE'; + // Generated from: com/linkedin/avro2pegasus/events/company/CompanyStatusUpdateEvent.pdsc + + export interface CompanyStatusUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + companyId: number; + shareId: string; + action: CompanyStatusUpdateAction; + } + // Generated from: com/linkedin/avro2pegasus/events/company/IndustryCodeType.pdsc + + export type IndustryCodeType = 'SIC' | 'GICS' | 'ISIC' | 'LI' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/company/RawBizCompany.pdsc + + export interface RawBizCompany { + sourceUrl: string; + names?: RawBizName[]; + descriptions?: RawBizDescription[]; + dateRange?: Com.Linkedin.Avro2pegasus.Events.Common.DateRange; + websiteUrls?: string[]; + industries?: RawBizIndustry[]; + locations?: RawBizLocation[]; + employees?: RawBizEmployee[]; + isActive?: boolean; + sourceRecordId?: string; + socialMediaProfileUrls: string[]; + logoUrls: string[]; + emailAddresses: string[]; + correlatedCompanyUrn?: string; + revenues: Revenue[]; + sourceTag?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/company/RawBizDescription.pdsc + + export interface RawBizDescription { + description: string; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/events/company/RawBizEmployee.pdsc + + export interface RawBizEmployee { + name: string; + title?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/company/RawBizIndustry.pdsc + + export interface RawBizIndustry { + code: string; + type: IndustryCodeType; + confidenceScore?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/company/RawBizLocation.pdsc + + export interface RawBizLocation { + isActive?: boolean; + isHeadquarters?: boolean; + city?: string; + countryCode?: string; + postalCode?: string; + regionCode?: number; + state?: string; + street1?: string; + street2?: string; + phone1?: string; + phone2?: string; + fax?: string; + isAgentAddress?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/company/RawBizName.pdsc + + export interface RawBizName { + isActive?: boolean; + name: string; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/events/company/RemovalReasonType.pdsc + + export type RemovalReasonType = + | 'PAGE_ALREADY_EXISTS' + | 'PAGE_NOT_NEEDED' + | 'COMPANY_OUT_OF_BUSINESS' + | 'COMPANY_ACQUIRED' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/company/Revenue.pdsc + + export interface Revenue { + amount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + period: Com.Linkedin.Avro2pegasus.Events.Common.DateRange; + confidenceScore?: number; + } + } + namespace Companyreviews { + // Generated from: com/linkedin/avro2pegasus/events/companyreviews/CompanyReviewImpressionEvent.pdsc + + export interface CompanyReviewImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: Entity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/companyreviews/CompanyReviewViewEvent.pdsc + + export interface CompanyReviewViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + companyReview: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/companyreviews/Entity.pdsc + + export interface Entity { + companyReviewUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleTime: number; + duration?: number; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + } + namespace Compliance { + // Generated from: com/linkedin/avro2pegasus/events/compliance/BasicOperation.pdsc + + export type BasicOperation = + | 'CREATE' + | 'BATCH_CREATE' + | 'UPDATE' + | 'PARTIAL_UPDATE' + | 'BATCH_UPDATE' + | 'BATCH_PARTIAL_UPDATE' + | 'DELETE' + | 'BATCH_DELETE' + | 'ACTION'; + // Generated from: com/linkedin/avro2pegasus/events/compliance/ComplianceClientRecordMessage.pdsc + + export interface ComplianceClientRecordMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + tracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + resourceName: string; + resourceVersion: number; + method: BasicOperation; + methodName?: string; + url: string; + requestKeys: { [id: string]: string }; + responseKeys: { [id: string]: string }; + parameters: { [id: string]: string }; + data: string; + managedEntitiesUrn: string[]; + responseData?: string; + corpUserUrn?: string; + serviceName?: string; + activityTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/ComplianceMemberAuthorizationEvent.pdsc + + export interface ComplianceMemberAuthorizationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberActivityTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + developerApplicationUrn: string; + action: Com.Linkedin.Avro2pegasus.Common.Compliance.GrantAuthorizationAction; + replayAttemptCount: number; + errMsg?: string; + errorType?: Com.Linkedin.Avro2pegasus.Common.Compliance.GrantAuthorizationAction; + errorType2?: Com.Linkedin.Avro2pegasus.Common.Compliance.GrantAuthorizationActionErrorType; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/ComplianceOfflineEvent.pdsc + + export interface ComplianceOfflineEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + activityUrn: string; + type: ComplianceOfflineEventType; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/ComplianceOfflineEventType.pdsc + + export type ComplianceOfflineEventType = 'CREATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/compliance/ComplianceReplayMessage.pdsc + + export interface ComplianceReplayMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + tracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + configVersion: number; + replayAllModules: boolean; + developerApplicationUrn?: string; + successMessageSequenceId?: number; + replayMessageType: ReplayMessageSource; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/ComplianceReplayThresholdExceededEvent.pdsc + + export interface ComplianceReplayThresholdExceededEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + originalTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/ComplianceRequestType.pdsc + + export type ComplianceRequestType = + | 'TIME_LIMITED_FILTER' + | 'GLOBAL_FILTER' + | 'GLOBAL_UNFILTER' + | 'RETIRED_URN_FILTER'; + // Generated from: com/linkedin/avro2pegasus/events/compliance/ComplianceSuccessfulMessageProcessingEvent.pdsc + + export interface ComplianceSuccessfulMessageProcessingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + tracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + developerApplicationUrn: string; + messageSequenceId: number; + resourceName: string; + resourceVersion: number; + method: BasicOperation; + methodName?: string; + capturedTime: number; + processedTime: number; + replayedCount: number; + lastSuccessfulModuleIndex: number; + configVersion: number; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/ComplianceSuccessfulReplayMessageProcessingEvent.pdsc + + export interface ComplianceSuccessfulReplayMessageProcessingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + originalTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + developerApplicationUrn: string; + messageSequenceId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/ComplianceUnsuccessfulMessageProcessingEvent.pdsc + + export interface ComplianceUnsuccessfulMessageProcessingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + tracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + resourceName: string; + resourceVersion: number; + method: BasicOperation; + methodName?: string; + capturedTime: number; + processedTime: number; + replayedCount: number; + lastSuccessfulModuleIndex: number; + errorReason: errorReason[]; + errorMessage: string; + configVersion: number; + httpStatus?: number; + serviceErrorCode?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/DataExportAuditEvent.pdsc + + export interface DataExportAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ownerUrn: string; + domain: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + datasetExportStatuses: Com.Linkedin.Avro2pegasus.Events.Common.Dataexport.DatasetExportStatus[]; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/errorReason.pdsc + + export type errorReason = + | 'DECO_ERROR' + | 'UNKNOWN_ERROR' + | 'NO_ERROR' + | 'MODULE_NOT_FOUND_ERROR' + | 'CONFIG_NOT_FOUND_ERROR' + | 'MODULE_PROCESS_ERROR' + | 'MEMBER_AUTHORIZATION_COLLECTION_NOT_FOUND' + | 'REPLAY_MESSAGE_NOT_FOUND_IN_DB'; + // Generated from: com/linkedin/avro2pegasus/events/compliance/EspressoComplianceEntityMappingEvent.pdsc + + export interface EspressoComplianceEntityMappingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datasetUrn: string; + entityUrn: string; + keys: Array>; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/IngestedContentDeletedEvent.pdsc + + export interface IngestedContentDeletedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ingestedContentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/OfflineComplianceRequestEvent.pdsc + + export interface OfflineComplianceRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestType: ComplianceRequestType; + conditionValueUrn: string; + endTime?: number; + datasetRestrictionUrns?: string[]; + useCaseRestrictionUrns?: string[]; + columnRestrictionUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/PurgedDatasetPartitionEvent.pdsc + + export interface PurgedDatasetPartitionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datasetUrn: string; + cluster?: string; + partition?: string; + maxComplianceRequestTime: number; + complianceDataTypeUrns: string[]; + recordsPurged: number; + isSuccessful: boolean; + failureInformation?: string; + startTime: number; + endTime: number; + jobExecutionUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/ReplayMessageSource.pdsc + + export type ReplayMessageSource = + | 'COMPLIANCE_EVENTS' + | 'UNPROCESSED_COMPLIANCE_EVENTS' + | 'UNDECORATED_COMPLIANCE_EVENTS'; + // Generated from: com/linkedin/avro2pegasus/events/compliance/ThirdPartyDataMappingEvent.pdsc + + export interface ThirdPartyDataMappingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ownerUrn: string; + thirdPartyDatasetUrn: string; + thirdPartyIdentifier?: string; + internalIdentifier?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/compliance/UnsuccessfulPurgedDatasetsEvent.pdsc + + export interface UnsuccessfulPurgedDatasetsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datasetUrns: string[]; + unpurgedEntityUrn?: string; + unpurgedEntityCustomIdentifier?: string; + } + } + namespace Concourse { + // Generated from: com/linkedin/avro2pegasus/events/concourse/ConcourseRequestDroppedEvent.pdsc + + export interface ConcourseRequestDroppedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + communicationHeader: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + itemUrn: string; + actorUrn?: string; + recipientUrn?: string; + parentTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + useCaseType: string; + dropReason: Com.Linkedin.Avro2pegasus.Events.Common.Concourse.ConcourseRequestDroppedReason; + dropJob: Com.Linkedin.Avro2pegasus.Events.Common.Concourse.ConcourseSamzaJob; + candidateInAppNotificationType?: string; + relevanceDropReason?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/concourse/ConcourseRequestReceivedEvent.pdsc + + export interface ConcourseRequestReceivedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + communicationHeader: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + itemUrn: string; + actorUrn?: string; + useCaseType: string; + inputKafkaRequestTopic: string; + } + } + namespace Connect { + // Generated from: com/linkedin/avro2pegasus/events/connect/ConnectFrameworkApiInfo.pdsc + + export interface ConnectFrameworkApiInfo { + name: string; + totalCount: number; + extra?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/connect/ConnectFrameworkEnvironmentInfo.pdsc + + export interface ConnectFrameworkEnvironmentInfo { + isFramed?: string; + apiKey?: string; + authType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/connect/ConnectFrameworkImpressionEphemeralEvent.pdsc + + export interface ConnectFrameworkImpressionEphemeralEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + encryptedMemberId?: string; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + errorMessageKey?: string; + frameworkType: string; + environmentInfo?: ConnectFrameworkEnvironmentInfo; + profilerInfo?: ConnectFrameworkProfilerInfo; + apisInfo?: ConnectFrameworkApiInfo[]; + tagsInfo?: ConnectFrameworkTagInfo[]; + memberInfo?: ConnectFrameworkMemberInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/connect/ConnectFrameworkMemberInfo.pdsc + + export interface ConnectFrameworkMemberInfo { + memberToken?: string; + currentIndustries: number[]; + currentFuncareas: number[]; + currentCompanies: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/connect/ConnectFrameworkProfilerInfo.pdsc + + export interface ConnectFrameworkProfilerInfo { + bootstrapLoaded?: string; + bootstrapExecuted?: string; + frameworkLoaded?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/connect/ConnectFrameworkTagInfo.pdsc + + export interface ConnectFrameworkTagInfo { + name: string; + totalCount: number; + extra?: string; + } + } + namespace Connectifier { + // Generated from: com/linkedin/avro2pegasus/events/connectifier/ConnectifierCommonHeader.pdsc + + export interface ConnectifierCommonHeader { + userId?: string; + mongoTrackingId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/connectifier/ConnectifierContactEvent.pdsc + + export interface ConnectifierContactEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + connectifierHeader: ConnectifierCommonHeader; + personId: string; + connectifierProfileViewEventId?: string; + responseDate?: number; + isExport: boolean; + profileKey: ConnectifierProfileKey; + productSource: ConnectifierProductSource; + } + // Generated from: com/linkedin/avro2pegasus/events/connectifier/ConnectifierProductSource.pdsc + + export type ConnectifierProductSource = 'SIDEBAR' | 'DASHBOARD' | 'SEARCH' | 'GMAIL_SIDEBAR'; + // Generated from: com/linkedin/avro2pegasus/events/connectifier/ConnectifierProfileKey.pdsc + + export interface ConnectifierProfileKey { + profileSource: ConnectifierProfileSource; + id: string; + } + // Generated from: com/linkedin/avro2pegasus/events/connectifier/ConnectifierProfileSource.pdsc + + export type ConnectifierProfileSource = + | 'ABOUT_ME' + | 'ANGELLIST' + | 'BEHANCE' + | 'BING' + | 'BITBUCKET' + | 'BULLHORN' + | 'CLEARBIT' + | 'CONNECTIFIER' + | 'CRUNCHBASE' + | 'DEDUPLICATOR' + | 'DOXIMITY' + | 'DRIBBBLE' + | 'EMAIL_SIGNATURE' + | 'FACEBOOK' + | 'GITHUB' + | 'GMAIL' + | 'GOOGLEPLUS' + | 'GREENHOUSE' + | 'ICIMS' + | 'IMAP' + | 'IMPORTED_PROJECT' + | 'INDEED' + | 'JIGSAW' + | 'KAGGLE' + | 'JOBVITE' + | 'LEVER' + | 'LINKEDIN' + | 'LINKEDIN_INTERNAL' + | 'MEETUP' + | 'OUTLOOK' + | 'PLACEHOLDER' + | 'QUORA' + | 'REFERRER_INFERRED' + | 'RESEARCHGATE' + | 'RESUME' + | 'SEARCH_INFERRED' + | 'SALESFORCE' + | 'SOCIAL_NOTIFICATION' + | 'STACKOVERFLOW' + | 'TWITTER' + | 'VIADEO' + | 'VK' + | 'WEBCACHED' + | 'XING'; + // Generated from: com/linkedin/avro2pegasus/events/connectifier/ConnectifierSearchEvent.pdsc + + export interface ConnectifierSearchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + connectifierHeader: ConnectifierCommonHeader; + socialLinksUserId?: string; + status?: ConnectifierSearchStatus; + hitCount: number; + isAdmin: boolean; + source: ConnectifierSearchSource; + processDurationInMillis: number; + isExcludedLinkedInMembers: boolean; + trackedQuality?: ConnectifierSearchTrackedQuality; + } + // Generated from: com/linkedin/avro2pegasus/events/connectifier/ConnectifierSearchSource.pdsc + + export type ConnectifierSearchSource = + | 'FULL' + | 'OMNIBOX' + | 'PROJECT' + | 'SIDEBAR' + | 'INFERRED' + | 'OTHER_SITE' + | 'EXTENDED_SEARCH' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/connectifier/ConnectifierSearchStatus.pdsc + + export type ConnectifierSearchStatus = + | 'OK' + | 'NO_RESULTS' + | 'BAD_LOCATION' + | 'BAD_QUERY' + | 'ES_EXCEPTION' + | 'QUERY_DESERIALIZE_FAILED' + | 'UNKNOWN_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/connectifier/ConnectifierSearchTrackedQuality.pdsc + + export interface ConnectifierSearchTrackedQuality { + addedToProject: string[]; + bookmarked: string[]; + emailed: string[]; + phoned: string[]; + } + } + namespace Connections { + // Generated from: com/linkedin/avro2pegasus/events/connections/ConnectionInsightActionType.pdsc + + export type ConnectionInsightActionType = 'MESSAGE' | 'LIKE'; + // Generated from: com/linkedin/avro2pegasus/events/connections/ConnectionInsightClickEvent.pdsc + + export interface ConnectionInsightClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + action: ConnectionInsightActionType; + trackingInfo: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/connections/ConnectionInsightClientImpressionEvent.pdsc + + export interface ConnectionInsightClientImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingInfo: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/connections/ConnectionInsightsFrontendRequestEvent.pdsc + + export interface ConnectionInsightsFrontendRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingInfo: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject[]; + } + } + namespace Contacts { + // Generated from: com/linkedin/avro2pegasus/events/contacts/CalendarEventIngestionEvent.pdsc + + export interface CalendarEventIngestionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + calendarSyncId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + calendarSource: Com.Linkedin.Avro2pegasus.Events.Calendar.CalendarSource; + externalId: string; + startTime?: number; + endTime?: number; + isAllDay: boolean; + isRecurring: boolean; + hasSpamAttendees: boolean; + nonSpamAttendees: IngestedContact[]; + totalIngestedAttendeesCount: number; + isNewCalendarEvent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/CalendarUploadEvent.pdsc + + export interface CalendarUploadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + mediaId: string; + source: string; + memberSessionUrn?: string; + routingCluster?: string; + integrationUrn: string; + uploadTimeRange: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/ContactModificationType.pdsc + + export type ContactModificationType = 'UPDATE' | 'CREATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/contacts/ContactsIngestionEvent.pdsc + + export interface ContactsIngestionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contactsSource: string; + contactsSyncId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + hasSpamContacts: boolean; + nonSpamContacts: IngestedContact[]; + totalIngestedContactsCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/ContactsIngestionType.pdsc + + export type ContactsIngestionType = 'ACTIVE' | 'PASSIVE'; + // Generated from: com/linkedin/avro2pegasus/events/contacts/ContactsIngestionV2Event.pdsc + + export interface ContactsIngestionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contactsSyncId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + contactsSyncResult: ContactsSyncResult; + sourceContactsSynced?: SourceContactsSynced; + mergedContactsSynced?: MergedContactsSynced; + ingestionType: ContactsIngestionType; + importTransactionId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/ContactsSyncResult.pdsc + + export interface ContactsSyncResult { + source: string; + isSuccess: boolean; + gaapErrorType?: Com.Linkedin.Avro2pegasus.Common.Gaap.ScriptError; + didPassUcf: boolean; + numStorageErrors: number; + numHandlesErrors: number; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/ContactsUploadEvent.pdsc + + export interface ContactsUploadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + mediaId: string; + source: string; + sourceHandle?: string; + deleteMedia: boolean; + importTransactionId?: string; + memberSessionUrn?: string; + countryCode?: string; + routingCluster: string; + integrationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/IngestedContact.pdsc + + export interface IngestedContact { + hasPhoneNumber: boolean; + hasName: boolean; + hasEmail: boolean; + isMember?: boolean; + isConnection?: boolean; + matchType?: MatchType; + isNewSourceContact: boolean; + isNewMergedContact?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/MatchType.pdsc + + export type MatchType = + | 'MATCHED_EMAIL' + | 'MATCHED_LINKEDIN_ID' + | 'MATCHED_NAME' + | 'MATCHED_PHONE_NUMBER' + | 'MATCHED_NOTHING'; + // Generated from: com/linkedin/avro2pegasus/events/contacts/MergedContactMetric.pdsc + + export interface MergedContactMetric { + modificationType: ContactModificationType; + isMember: boolean; + numSourceContacts: number; + numUniqueSources: number; + numPhoneNumbers: number; + numEmails: number; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/MergedContactsSynced.pdsc + + export interface MergedContactsSynced { + numMergedContactsSynced: number; + mergedContactsModified: MergedContactMetric[]; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/OnlineContactsImportEvent.pdsc + + export interface OnlineContactsImportEvent { + referer?: string; + environment?: string; + countryCode: string; + browserName: string; + deviceName: string; + locale: string; + emailDomain: string; + time: number; + minutesSinceEpoch: number; + isSuccess: boolean; + errorStatus?: string; + numberOfImportedContacts: number; + numberOfSuggestedMemberConnections?: number; + numberOfMemberConnectionsSent?: number; + numberOfSuggestedGuestInvitations?: number; + numberOfGuestInvitationsSent?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/SourceContactMetric.pdsc + + export interface SourceContactMetric { + modificationType: ContactModificationType; + isMember: boolean; + numPhoneNumbers: number; + numEmails: number; + } + // Generated from: com/linkedin/avro2pegasus/events/contacts/SourceContactsSynced.pdsc + + export interface SourceContactsSynced { + numSourceContactsSynced: number; + sourceContactsModified: SourceContactMetric[]; + } + } + namespace Content { + // Generated from: com/linkedin/avro2pegasus/events/content/Action.pdsc + + export interface Action { + verb: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ArticleRecommenderFeature.pdsc + + export interface ArticleRecommenderFeature { + name: string; + term?: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ArticleRecommenderResult.pdsc + + export interface ArticleRecommenderResult { + entity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + reasonAnnotation: ContentReasonAnnotation; + featureVector: ArticleRecommenderFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ArticleRecommenderResultsServedEvent.pdsc + + export interface ArticleRecommenderResultsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rankerModelList: ModelSpecification[]; + queryFeatureVector: ArticleRecommenderFeature[]; + resultList: ArticleRecommenderResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ContentCategory.pdsc + + export type ContentCategory = 'BREAKING' | 'DIGEST' | 'INTEREST'; + // Generated from: com/linkedin/avro2pegasus/events/content/ContentEmbeddingEvent.pdsc + + export interface ContentEmbeddingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + modelId: string; + denseContentEmbedding: DenseContentEmbedding; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ContentFeature.pdsc + + export interface ContentFeature { + name: string; + term: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ContentFeatures.pdsc + + export interface ContentFeatures { + contentUrn: string; + contentFeatureVector: ContentFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ContentRankingEvent.pdsc + + export interface ContentRankingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + modelId: string; + product: string; + memberFeatureVector: MemberFeature[]; + contentSetFeatures: ContentFeatures[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ContentReasonAnnotation.pdsc + + export interface ContentReasonAnnotation { + reasonAnnotationType: ReasonAnnotationType; + reasonAnnotationEntity?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ContentSpamRestrictionRecord.pdsc + + export interface ContentSpamRestrictionRecord { + isSpam: boolean; + spamOutcomes: Com.Linkedin.Avro2pegasus.Events.Contentspam.ContentSpamOutcome[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ContentTagAnnotationEvent.pdsc + + export interface ContentTagAnnotationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + contentTaggerType: ContentTaggerType; + taggerVersion: string; + tags: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ContentTaggerType.pdsc + + export type ContentTaggerType = + | 'TOPIC_TAGGER' + | 'TRENDING_INDUSTRY' + | 'TRENDING_COMPANY' + | 'TRENDING_PUBLISHER' + | 'TRENDING_REGION' + | 'TRENDING_NETWORK' + | 'QUALITY_TAGGER' + | 'TRENDING_SKILL' + | 'AZURE_TAG' + | 'QUALITY_RESPONSE'; + // Generated from: com/linkedin/avro2pegasus/events/content/ContentType.pdsc + + export type ContentType = 'ARTICLE' | 'IMAGE' | 'RICH' | 'VIDEO'; + // Generated from: com/linkedin/avro2pegasus/events/content/DenseContentEmbedding.pdsc + + export interface DenseContentEmbedding { + eventCreationTime: number; + textBasedEmbedding: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/DocumentLocation.pdsc + + export type DocumentLocation = 'TITLE' | 'SUMMARY' | 'BODY'; + // Generated from: com/linkedin/avro2pegasus/events/content/EditorCommentary.pdsc + + export interface EditorCommentary { + headline?: string; + authorByline?: string; + coverPhoto?: string; + vectorUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/content/EditorPromotionChangeEvent.pdsc + + export interface EditorPromotionChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + changeType: PromotionChangeType; + details?: PromotionDetails; + promotionType?: PromotionType; + targetedGeoUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/EditorPushNotificationEvent.pdsc + + export interface EditorPushNotificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + contentUrn: string; + headline: string; + type: PushNotificationType; + url?: string; + locale?: Com.Linkedin.Avro2pegasus.Events.Locale; + countryUrns: string[]; + industryUrns: string[]; + companyUrns: string[]; + ncrmTableName?: string; + bucketStart?: number; + bucketCount?: number; + breakingNewsTimeOut?: number; + editorPromotionUrn?: string; + editorBatchUrn?: string; + localDeliveryTime?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.LocalDeliveryTime; + kairosHeader?: Com.Linkedin.Avro2pegasus.Messages.Kairos.KairosHeader; + targetedGeoUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/Entity.pdsc + + export interface Entity { + urn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + visibleTime: number; + duration: number; + associatedInputControlUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/content/HashtagEventType.pdsc + + export type HashtagEventType = + | 'CLICK' + | 'FEED_REQUEST' + | 'SEARCH' + | 'FOLLOW_IMPRESSION' + | 'FOLLOW_ACTION' + | 'UNFOLLOW_ACTION' + | 'BING_API_TAGGED' + | 'TAGGED_POST' + | 'TAGGED_COMMENT' + | 'TAGGED_PUBLISH' + | 'TWITTER_API' + | 'SUGGESTION_RESULT' + | 'SUGGESTION_IMPRESSION' + | 'SUGGESTION_ACTION'; + // Generated from: com/linkedin/avro2pegasus/events/content/HashtagResultEvent.pdsc + + export interface HashtagResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + useCase: string; + model: string; + timeToRecommendMilliseconds: number; + hashtagWorkflowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + queryFeatureVuector: Com.Linkedin.Avro2pegasus.Events.Common.Content.NameTermValueFeature[]; + resultList: Com.Linkedin.Avro2pegasus.Events.Common.Content.HashtagRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/HashtagSuggestionActionEvent.pdsc + + export interface HashtagSuggestionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Search.SearchHeader; + hashtagWorkflowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: HashtagSuggestionActionType; + result?: Com.Linkedin.Avro2pegasus.Events.Common.Content.HashtagResultHit; + hashtagSourceType: Com.Linkedin.Avro2pegasus.Events.Common.Content.HashtagSourceType; + } + // Generated from: com/linkedin/avro2pegasus/events/content/HashtagSuggestionActionType.pdsc + + export type HashtagSuggestionActionType = 'SELECT' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/content/HashtagSuggestionImpressionEvent.pdsc + + export interface HashtagSuggestionImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Search.SearchHeader; + hashtagWorkflowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + results: Com.Linkedin.Avro2pegasus.Events.Common.Content.HashtagResultHit[]; + hashtagSourceType: Com.Linkedin.Avro2pegasus.Events.Common.Content.HashtagSourceType; + } + // Generated from: com/linkedin/avro2pegasus/events/content/HashtagSuggestionStartEvent.pdsc + + export interface HashtagSuggestionStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Search.SearchHeader; + hashtagWorkflowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + associatedInputControlUrn: string; + associatedEntityUrn?: string; + rootObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + hashtagSourceType: Com.Linkedin.Avro2pegasus.Events.Common.Content.HashtagSourceType; + } + // Generated from: com/linkedin/avro2pegasus/events/content/HashtagUsageEvent.pdsc + + export interface HashtagUsageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hashtagUrn: string; + originalEventTime: number; + type: HashtagEventType; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/content/KeywordResult.pdsc + + export interface KeywordResult { + type: ScorerType; + name: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/content/LoadDraftEvent.pdsc + + export interface LoadDraftEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + durationSinceLastAccessed: number; + isLoadSuccessful: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/content/LoadShareDataStoreEvent.pdsc + + export interface LoadShareDataStoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + durationSinceLastAccessed: number; + isLoadSuccessful: boolean; + actualDraftsCount: number; + actualPendingSharesCount: number; + expectedDraftsCount: number; + expectedPendingSharesCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/content/MemberFeature.pdsc + + export interface MemberFeature { + name: string; + term: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/content/MentionActionEvent.pdsc + + export interface MentionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + objectUrn: string; + actorUrn: string; + mentionEventTime: number; + actionType: MentionActionType; + mentionUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/MentionActionType.pdsc + + export type MentionActionType = 'MENTION' | 'EDIT_MENTION' | 'UNMENTION'; + // Generated from: com/linkedin/avro2pegasus/events/content/ModelSpecification.pdsc + + export interface ModelSpecification { + name: string; + version: number; + } + // Generated from: com/linkedin/avro2pegasus/events/content/NewsArticleAnnotationHeader.pdsc + + export interface NewsArticleAnnotationHeader { + articleUrn: string; + annotatorName: string; + annotatorVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/events/content/NewsArticleDeduplicationAnnotationEvent.pdsc + + export interface NewsArticleDeduplicationAnnotationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + annotationHeader: NewsArticleAnnotationHeader; + dedupArticleUrn: string; + duplicateArticleUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/NewsArticleEntitiesAnnotationEvent.pdsc + + export interface NewsArticleEntitiesAnnotationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + annotationHeader: NewsArticleAnnotationHeader; + entities: RecognizedEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/NewsArticleEvent.pdsc + + export interface NewsArticleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + articleUrn: string; + title?: string; + summary?: string; + language?: string; + source?: string; + articleSource?: string; + scrapedUrl?: string; + urlHash?: string; + publishTime?: number; + lastFetchTime?: number; + articleText?: string; + directUrl?: string; + normalizedUrl?: string; + isActive?: boolean; + articleTopics?: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + isPrivate?: boolean; + lastEditTime?: number; + contentQualityScore?: number; + contentPublishTime?: number; + publisherUrn?: string; + authorMemberUrn?: string; + publisherAuthorName?: string; + feedAssociationUrns?: string[]; + contentSpamRestriction?: ContentSpamRestrictionRecord; + contentType?: ContentType; + providerName?: string; + embeddableHtml?: string; + imageUrls?: string[]; + contentCertificationToken?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/content/NewsArticleJunkAnnotationEvent.pdsc + + export interface NewsArticleJunkAnnotationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + annotationHeader: NewsArticleAnnotationHeader; + isJunk: Com.Linkedin.Avro2pegasus.Events.ScoredBoolean; + } + // Generated from: com/linkedin/avro2pegasus/events/content/NewsArticleKeywordsAnnotationEvent.pdsc + + export interface NewsArticleKeywordsAnnotationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + annotationHeader: NewsArticleAnnotationHeader; + articleKeywords: KeywordResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/NewsArticleLanguageAnnotationEvent.pdsc + + export interface NewsArticleLanguageAnnotationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + annotationHeader: NewsArticleAnnotationHeader; + languages: Com.Linkedin.Avro2pegasus.Events.ScoredLocale[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/NewsArticleTaggingAnnotationEvent.pdsc + + export interface NewsArticleTaggingAnnotationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + annotationHeader: NewsArticleAnnotationHeader; + articleTopics: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/PromotionChangeType.pdsc + + export type PromotionChangeType = 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/content/PromotionDetails.pdsc + + export interface PromotionDetails { + promoterUrn: string; + promotionStartTime: number; + promotionEndTime: number; + targetLocale?: string; + targetCountries: string[]; + topicRelatedEntityUrns: string[]; + contentPromotionScore: number; + commentary?: string; + contentCategory?: ContentCategory; + editorCommentary?: EditorCommentary; + } + // Generated from: com/linkedin/avro2pegasus/events/content/PromotionType.pdsc + + export type PromotionType = + | 'CONTENT' + | 'CONTENT_TOPIC' + | 'MUST_READ' + | 'VIDEO_SHARING' + | 'NOTIFICATION' + | 'FEED_ECOSYSTEM_DIGEST'; + // Generated from: com/linkedin/avro2pegasus/events/content/PushNotificationType.pdsc + + export type PushNotificationType = + | 'BREAKING_NEWS' + | 'DAILY_DIGEST' + | 'PREMIUM_REPORT' + | 'STORYLINE_FEATURE' + | 'INSIGHTS'; + // Generated from: com/linkedin/avro2pegasus/events/content/QuestionAnswerActionEvent.pdsc + + export interface QuestionAnswerActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + entityUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/content/QuestionAnswerImpressionEvent.pdsc + + export interface QuestionAnswerImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: Entity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ReasonAnnotationType.pdsc + + export type ReasonAnnotationType = + | 'TRENDING_INDUSTRY' + | 'TRENDING_COMPANY' + | 'TRENDING_PUBLISHER' + | 'TRENDING_REGION' + | 'TRENDING_NETWORK' + | 'RECOMMENDED_FOR_YOU' + | 'EDITOR_PICK' + | 'RELATED_ARTICLE' + | 'TRENDING_SIMILAR_COMPANY' + | 'TRENDING_CONTENT_TOPIC'; + // Generated from: com/linkedin/avro2pegasus/events/content/RecognizedEntity.pdsc + + export interface RecognizedEntity { + classification: RecognizedEntityClassification; + urn?: string; + name: string; + documentLocation: DocumentLocation; + startIndex: number; + endIndex: number; + } + // Generated from: com/linkedin/avro2pegasus/events/content/RecognizedEntityClassification.pdsc + + export type RecognizedEntityClassification = 'PERSON' | 'LOCATION' | 'ORGANIZATION'; + // Generated from: com/linkedin/avro2pegasus/events/content/ScoredArticle.pdsc + + export interface ScoredArticle { + articleUrn: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ScorerType.pdsc + + export type ScorerType = 'NAMED_ENTITY' | 'NP_CHUNK' | 'NGRAM'; + // Generated from: com/linkedin/avro2pegasus/events/content/ShareboxGuiderPromptClickEvent.pdsc + + export interface ShareboxGuiderPromptClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + guiderPromptWorkflowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + promptType: Com.Linkedin.Avro2pegasus.Events.Common.Content.ShareboxGuiderPromptType; + } + // Generated from: com/linkedin/avro2pegasus/events/content/ShareboxGuiderPromptStartEvent.pdsc + + export interface ShareboxGuiderPromptStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + guiderPromptWorkflowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + promptType: Com.Linkedin.Avro2pegasus.Events.Common.Content.ShareboxGuiderPromptType; + } + // Generated from: com/linkedin/avro2pegasus/events/content/TakeDownReason.pdsc + + export type TakeDownReason = 'ACCOUNT_CLOSE' | 'BLACKLIST' | 'DELETE_ONLY'; + // Generated from: com/linkedin/avro2pegasus/events/content/TrendingStorylineEvent.pdsc + + export interface TrendingStorylineEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + title: string; + headline: string; + locale: string; + articles: ScoredArticle[]; + } + // Generated from: com/linkedin/avro2pegasus/events/content/UrlTakeDownEvent.pdsc + + export interface UrlTakeDownEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + url: string; + reason: TakeDownReason; + memberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/content/UserGeneratedContentAnalyticsEvent.pdsc + + export interface UserGeneratedContentAnalyticsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + actorUrn: string; + authorUrn: string; + actorOrganizationUrn?: string; + actorOccupationUrn?: string; + actorRegionUrn?: string; + action: Action; + specificContentUrn?: string; + gestureContextUrn?: string; + containerContextUrn?: string; + actionTime: number; + actorRegionGeoUrn?: string; + actorProfileIndustryUrn?: string; + gesturePrivacySetting?: Com.Linkedin.Avro2pegasus.Events.Common.Mirror.GesturePrivacySetting; + actorProfileSeniorityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/content/UserGeneratedContentAuthorViewEvent.pdsc + + export interface UserGeneratedContentAuthorViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + viewerUrn: string; + authorUrn: string; + userGeneratedContentUrn: string; + } + } + namespace Contentfilter { + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/AlterationInfo.pdsc + + export interface AlterationInfo { + alterationReasonName: AlterationTopic; + geoRestrictionDetails?: GeoContentRestrictionInfo; + userFlaggingDetails?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.UserFlaggingInfo; + spamRestrictionDetails?: SpamRestrictionInfo; + invalidateContentClassifiersSignatureDetails?: Com.Linkedin.Avro2pegasus.Messages.Contentspam.InvalidateContentClassifiersSignature; + purgeUserReportedRestrictionsDetails?: Com.Linkedin.Avro2pegasus.Messages.Contentspam.PurgeUserReportedRestrictions; + updateCoreClassificationCompleteStatusDetails?: Com.Linkedin.Avro2pegasus.Messages.Contentspam.UpdateCoreClassificationCompleteStatus; + alterationTriggerEventHeader?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/AlterationTopic.pdsc + + export type AlterationTopic = 'CCRM' | 'CSRE' | 'CCSUM' | 'CRAE' | 'URFE' | 'SYNC'; + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/AnomalyDetectedEvent.pdsc + + export interface AnomalyDetectedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + usecase: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.AnomalyDetectorUsecase; + aggregateKey: string; + anomalyReasons: AnomalyReasons; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/AnomalyReasons.pdsc + + export interface AnomalyReasons { + ruleFact: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentData; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/AnomalyReviewedEvent.pdsc + + export interface AnomalyReviewedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + usecase: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.AnomalyDetectorUsecase; + aggregateKey: string; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/BadContentDomainMetadata.pdsc + + export interface BadContentDomainMetadata { + isSpam: boolean; + humanLabels?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + isLowQuality?: boolean; + lowQualityLabels?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/ClassificationCompletionStatus.pdsc + + export interface ClassificationCompletionStatus { + isNsfwClassificationComplete?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/ClassifierOutcome.pdsc + + export interface ClassifierOutcome { + isSpam: boolean; + isLowQuality: boolean; + qualityOutcome: Com.Linkedin.Avro2pegasus.Events.Contentspam.ContentQualityOutcome; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/ContentCertificateAlterationEvent.pdsc + + export interface ContentCertificateAlterationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn?: string; + contentCertificationToken: string; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + alterationInfo?: AlterationInfo; + isCCRUpdateAccepted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/ContentDomain.pdsc + + export type ContentDomain = + | 'BAD_CONTENT' + | 'VIRAL_CONTENT' + | 'USER_FLAGGED_CONTENT' + | 'VELOCITY_CONTENT' + | 'HANDLES_CONTENT'; + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/ContentReviewActions.pdsc + + export type ContentReviewActions = 'BLOCKED' | 'CLEARED' | 'PENDING'; + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/ContentReviewReasons.pdsc + + export type ContentReviewReasons = 'KEYWORD_REVIEW'; + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/ContentSpamClassificationResult.pdsc + + export interface ContentSpamClassificationResult { + isSpam: boolean; + classifierOutcome: ClassifierOutcome[]; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/GeoContentRestrictionInfo.pdsc + + export interface GeoContentRestrictionInfo { + adminGeoBlockRestrictions?: string[]; + keywordReviewRestrictions?: { [id: string]: RestrictionReviewInfo }; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/HandlesContentDomainMetadata.pdsc + + export interface HandlesContentDomainMetadata { + isSpam: boolean; + spamClassificationLabels?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + isLowQuality: boolean; + lowQualityClassificationLabels?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + system: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationSystem; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/HomoglyphTraits.pdsc + + export interface HomoglyphTraits { + isLookAlike: boolean; + isAsciiLookAlike: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/MSSonarDetonationMetadata.pdsc + + export interface MSSonarDetonationMetadata { + response?: string; + submissionId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/NearDuplicateDocument.pdsc + + export interface NearDuplicateDocument { + contentUrn: string; + domain: ContentDomain; + metadata: NearDuplicateDocumentMetadata; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/NearDuplicateDocumentHitsEvent.pdsc + + export interface NearDuplicateDocumentHitsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + nearDuplicateDocuments: NearDuplicateDocument[]; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/NearDuplicateDocumentMetadata.pdsc + + export interface NearDuplicateDocumentMetadata { + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + badContentDomainMetadata?: BadContentDomainMetadata; + viralContentDomainMetadata?: ViralContentDomainMetadata; + handlesContentDomainMetadata?: HandlesContentDomainMetadata; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/PhotoDnaHashDatabase.pdsc + + export type PhotoDnaHashDatabase = 'NCMEC' | 'NCMEC_INDUSTRY_PARTNERS'; + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/RegexAlteredEvent.pdsc + + export interface RegexAlteredEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + regexGroupId: string; + regexId: number; + pattern: string; + oldState: RegexState; + oldMatchQualifierCount: number; + oldApplicableLocales: Com.Linkedin.Avro2pegasus.Events.Locale[]; + actorUrn: string; + oldHomoglyphTraits?: HomoglyphTraits; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/RegexContentMatchEvent.pdsc + + export interface RegexContentMatchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + regexGroupId: string; + matchedRegexIds: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/RegexState.pdsc + + export type RegexState = 'ACTIVE' | 'PASSIVE' | 'DISABLED'; + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/RestrictionReviewInfo.pdsc + + export interface RestrictionReviewInfo { + contentReviewAction: ContentReviewActions; + contentReviewReason: ContentReviewReasons; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/SpamRestrictionInfo.pdsc + + export interface SpamRestrictionInfo { + spamClassifications: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + lowQualityClassifications: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + coreClassificationComplete?: boolean; + systemName?: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationSystem; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/UserFlaggingEvent.pdsc + + export interface UserFlaggingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + authorUrn: string; + contentUrn: string; + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + contentMetadata?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentMetadata; + contentChangeTimestamp?: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + flaggingInfo: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.UserFlaggingInfo; + inferredLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + containerUrn?: string; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/VideoCPTrackingEvent.pdsc + + export interface VideoCPTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + videoUrn: string; + csaiMatches?: string; + errorText?: string; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/ViralContentDomainMetadata.pdsc + + export interface ViralContentDomainMetadata { + viralObjectLabel: ViralObjectLabel; + } + // Generated from: com/linkedin/avro2pegasus/events/contentfilter/ViralObjectLabel.pdsc + + export type ViralObjectLabel = 'UNPROFESSIONAL' | 'SPAM'; + } + namespace Contentplatform { + // Generated from: com/linkedin/avro2pegasus/events/contentplatform/OperationCode.pdsc + + export type OperationCode = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/contentplatform/ThreadContentChangeEvent.pdsc + + export interface ThreadContentChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + authorUrn: string; + threadUrn: string; + contentType: number; + operationCode: OperationCode; + createdTime?: number; + lastModifiedTime?: number; + } + } + namespace Contentrelevance { + // Generated from: com/linkedin/avro2pegasus/events/contentrelevance/Classification.pdsc + + export type Classification = 'POSITIVE' | 'NEGATIVE'; + // Generated from: com/linkedin/avro2pegasus/events/contentrelevance/ClassificationInformation.pdsc + + export interface ClassificationInformation { + classifierInfo: Com.Linkedin.Avro2pegasus.Events.Contentspam.ClassifierInfo; + contentClassLabels: string[]; + componentClassifierMetaInformation: ClassifierDecisionMetaInformation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/contentrelevance/ClassificationPipeline.pdsc + + export type ClassificationPipeline = 'ONLINE_SYNC' | 'ONLINE_ASYNC' | 'OFFLINE' | 'NEARLINE'; + // Generated from: com/linkedin/avro2pegasus/events/contentrelevance/ClassifierDecisionMetaInformation.pdsc + + export interface ClassifierDecisionMetaInformation { + label: string; + score?: number; + threshold?: number; + classification?: Classification; + classifierInfo: Com.Linkedin.Avro2pegasus.Events.Contentspam.ClassifierInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/contentrelevance/ContentFilteringClassificationEvent.pdsc + + export interface ContentFilteringClassificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn?: string; + contentCreatorUrn?: string; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + pipeline: ClassificationPipeline; + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + inferredLocale: Com.Linkedin.Avro2pegasus.Events.Locale; + classificationInformation: ClassificationInformation[]; + ucfContextUrn?: string; + isReclassificationFlow?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/contentrelevance/ContentRelevanceFeatureEvent.pdsc + + export interface ContentRelevanceFeatureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + features: Com.Linkedin.Avro2pegasus.Events.Common.Contentrelevance.ContentRelevanceFeature[]; + } + } + namespace Contentspam { + // Generated from: com/linkedin/avro2pegasus/events/contentspam/ClassificationAuditEvent.pdsc + + export interface ClassificationAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + contentCreatorUrn: string; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + spamClassifierExplanations: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + lowQualityClassifierExplanations: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + system: SystemName; + spamClassifierExplanationsForReview: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + lowQualityClassifierExplanationsForReview: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + contentClassificationFlow: Com.Linkedin.Avro2pegasus.Events.Ucv.ContentClassificationFlow; + contentType?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentType; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/contentspam/ClassifierInfo.pdsc + + export interface ClassifierInfo { + classifierId: string; + classifierVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/events/contentspam/ContentQualityOutcome.pdsc + + export interface ContentQualityOutcome { + qualityType: SpamType; + confidence: SpamConfidence; + } + // Generated from: com/linkedin/avro2pegasus/events/contentspam/ContentSpamMetaInformation.pdsc + + export interface ContentSpamMetaInformation { + title?: string; + body?: string; + threadLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + appName?: string; + isContentCreatorInfluencer?: boolean; + originalThreadUrn?: string; + originalThreadOwnerUrn?: string; + isOriginalThreadOwnerInfluencer?: boolean; + contentSource?: Com.Linkedin.Avro2pegasus.Events.ContentSource; + isThreadSponsoredContent?: boolean; + originCountryCode?: string; + inferredLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/contentspam/ContentSpamOutcome.pdsc + + export interface ContentSpamOutcome { + spamType: SpamType; + confidence: SpamConfidence; + score?: number; + details?: ContentSpamOutcomeDetail; + classifierInfo?: ClassifierInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/contentspam/ContentSpamOutcomeDetail.pdsc + + export interface ContentSpamOutcomeDetail { + badUrlsFound?: string[]; + badFields?: string[]; + matchedRegexes?: string[]; + description?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/contentspam/ContentSpamTrackingEvent.pdsc + + export interface ContentSpamTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + contentCreatorUrn: string; + actorUrn?: string; + isSpam: boolean; + isLowQuality?: boolean; + spamOutcome?: ContentSpamOutcome[]; + lowQualityOutcomes?: ContentSpamOutcome[]; + system?: SystemName; + metaInfo?: ContentSpamMetaInformation; + spamOutcomeDetail?: ContentSpamOutcomeDetail; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + contentTypes?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentType[]; + contentMetaInfo?: Com.Linkedin.Avro2pegasus.Common.Contentfilter.ContentMetaInformation; + isReclassificationRequest?: boolean; + classificationCompletionStatus?: Com.Linkedin.Avro2pegasus.Events.Contentfilter.ClassificationCompletionStatus; + spamReviewOutcomes?: ContentSpamOutcome[]; + lowQualityReviewOutcomes?: ContentSpamOutcome[]; + } + // Generated from: com/linkedin/avro2pegasus/events/contentspam/SpamConfidence.pdsc + + export type SpamConfidence = 'LOW' | 'MED' | 'HIGH' | 'INSIGNIFICANT'; + // Generated from: com/linkedin/avro2pegasus/events/contentspam/SpamType.pdsc + + export type SpamType = + | 'ADULT' + | 'JOB' + | 'EVENT' + | 'UCV_SPAMMER' + | 'PROMOTION' + | 'OTHER_SPAM' + | 'BADURL_MALWARE' + | 'BADURL_PHISHING' + | 'BADURL_SPAM' + | 'NEW_MEMBER_LIX_BLOCKED' + | 'BULK_SPAM' + | 'PROFANITY' + | 'PORN' + | 'DUPLICATES' + | 'COMMENT_META' + | 'UBIQUITY_SPAM' + | 'UBIQUITY_LOWQUALITY' + | 'USER_FLAGGED_SPAM' + | 'TOO_MANY_CAPS' + | 'LANGUAGE_MISMATCH' + | 'BAD_MEDIA' + | 'MONEY_FRAUD' + | 'TOS_VIOLATION' + | 'COMMERCIAL' + | 'SPAM_HASHES' + | 'THREATS_OF_VIOLENCE' + | 'IRRELEVANT' + | 'GRATUITOUSLY_SHOCKING' + | 'HARASSMENT' + | 'IMPERSONATION' + | 'PUZZLE' + | 'MEME' + | 'MEME_QUOTE_WITH_AUTHOR' + | 'MEME_IRRELEVANT' + | 'ADULT_NUDE_ART' + | 'ADULT_BIKINI_LINGERIE' + | 'ADULT_MEDICAL' + | 'ADULT_IRRELEVANT' + | 'SHOCKING' + | 'SHOCKING_GLOBAL_EVENT' + | 'SHOCKING_PERSONAL' + | 'OFFENSIVE' + | 'OFFENSIVE_PROFANITY' + | 'PERSONAL' + | 'PERSONAL_RELIGIOUS_BELIEF' + | 'PERSONAL_POLITICAL_BELIEF' + | 'PERSONAL_PHOTO' + | 'PERSONAL_PLEA' + | 'PERSONAL_SELF_PROMOTION' + | 'PERSONAL_NON_PAID_FOR_JOB_POSTING' + | 'OTHER_LOW_QUALITY' + | 'MALWARE' + | 'PHISHING' + | 'GORE' + | 'HATE_SPEECH' + | 'PERSONAL_VIDEO' + | 'AUDIO_LOW_QUALITY' + | 'MUSIC_VIDEO' + | 'MOVIE_VIDEO' + | 'AUDIO_SPAM' + | 'POTENTIAL_CHILD_PORN' + | 'COPYRIGHT_VIOLATION' + | 'COPYRIGHT_VIOLATION_AUDIO' + | 'COPYRIGHT_VIOLATION_VIDEO' + | 'FAKE_NEWS' + | 'LOW_QUALITY_NEWS' + | 'UNWANTED_ADVANCES' + | 'TERRORISM' + | 'EXTREME_VIOLENCE' + | 'DEROGATORY' + | 'VIOLATION_OF_HUMAN_DIGNITY' + | 'GENOCIDE_DENIAL' + | 'INFLAMMATORY_CONTENT'; + // Generated from: com/linkedin/avro2pegasus/events/contentspam/SystemName.pdsc + + export type SystemName = + | 'MACHINE_ASYNC_BAM' + | 'MACHINE_SYNC_BAM' + | 'HUMAN' + | 'HUMAN_DERIVED' + | 'RULES_ENGINE' + | 'MACHINE_NEARLINE' + | 'MACHINE_OFFLINE'; + } + namespace Cortex { + // Generated from: com/linkedin/avro2pegasus/events/cortex/AudienceInsightsFrequencyDistributionEvent.pdsc + + export interface AudienceInsightsFrequencyDistributionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + applicationUrn?: string; + filter: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsFilter; + numResults: number; + targetingFacetUrn: string; + orderBy: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsMetricType; + results: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsFrequencyDistribution[]; + httpResponseStatusCode: number; + serverDuration: number; + dataStoreDuration: number; + numTotalPinotDocs?: number; + numScannedPinotDocs?: number; + projections?: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsMetricType[]; + targetingCriteriaIncludeFilterUrns: string[]; + targetingCriteriaExcludeFilterUrns: string[]; + internalApplicationSource?: string; + sparkSqlQueries?: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsSparkSqlQueries; + } + // Generated from: com/linkedin/avro2pegasus/events/cortex/AudienceInsightsTimelineEvent.pdsc + + export interface AudienceInsightsTimelineEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + applicationUrn?: string; + filter: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsFilter; + interval: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsInterval; + results: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsTimeline[]; + httpResponseStatusCode: number; + serverDuration: number; + dataStoreDuration: number; + numTotalPinotDocs?: number; + numScannedPinotDocs?: number; + projections?: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsMetricType[]; + targetingCriteriaIncludeFilterUrns: string[]; + targetingCriteriaExcludeFilterUrns: string[]; + internalApplicationSource?: string; + sparkSqlQueries?: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsSparkSqlQueries; + } + // Generated from: com/linkedin/avro2pegasus/events/cortex/AudienceInsightsTotalCountEvent.pdsc + + export interface AudienceInsightsTotalCountEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + applicationUrn?: string; + filter: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsFilter; + targetingFacetUrn?: string; + totalCount: number; + httpResponseStatusCode: number; + serverDuration: number; + dataStoreDuration: number; + numTotalPinotDocs?: number; + numScannedPinotDocs?: number; + projections?: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsMetricType[]; + targetingCriteriaIncludeFilterUrns: string[]; + targetingCriteriaExcludeFilterUrns: string[]; + internalApplicationSource?: string; + sparkSqlQueries?: Com.Linkedin.Avro2pegasus.Events.Common.Cortex.AudienceInsightsSparkSqlQueries; + } + } + namespace Couchbase { + // Generated from: com/linkedin/avro2pegasus/events/couchbase/CouchbaseClientEvent.pdsc + + export interface CouchbaseClientEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + couchbaseEventType: CouchbaseEventType; + bucketNames: string[]; + clusterNodeAddresses: Com.Linkedin.Avro2pegasus.Events.IPAddress[]; + clientAddress?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + } + // Generated from: com/linkedin/avro2pegasus/events/couchbase/CouchbaseEventType.pdsc + + export type CouchbaseEventType = + | 'BUCKET_CLOSED' + | 'BUCKET_OPENED' + | 'NODE_CONNECTED' + | 'NODE_DISCONNECTED' + | 'CONFIG_UPDATED'; + } + namespace Crm { + // Generated from: com/linkedin/avro2pegasus/events/crm/CustomerAddress.pdsc + + export interface CustomerAddress { + customerAddressUrn: string; + customerUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/crm/CustomerAddressesOfacScanEvent.pdsc + + export interface CustomerAddressesOfacScanEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + customerAddresses: CustomerAddress[]; + } + } + namespace Csap { + // Generated from: com/linkedin/avro2pegasus/events/csap/CareerSiteBeaconEvent.pdsc + + export interface CareerSiteBeaconEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + contractId?: number; + urlParserKey?: string; + url?: string; + referrer?: string; + topUrl?: string; + topReferrer?: string; + extra?: string; + apiKey?: string; + activity?: CareerSiteBeaconEventType; + jobCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/csap/CareerSiteBeaconEventType.pdsc + + export type CareerSiteBeaconEventType = 'VIEW' | 'APPLY' | 'UNKNOWN'; + } + namespace Cstool { + // Generated from: com/linkedin/avro2pegasus/events/cstool/ActionType.pdsc + + export type ActionType = 'ADD' | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/cstool/SecurityLabel.pdsc + + export type SecurityLabel = 'HIGH_VALUE_REAL' | 'HIGH_VALUE_FAKE' | 'STATE_SPONSORED'; + // Generated from: com/linkedin/avro2pegasus/events/cstool/SecurityLabelUpdateEvent.pdsc + + export interface SecurityLabelUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + targetMemberUrn: string; + csUserUrn: string; + securityLabel: SecurityLabel; + actionType: ActionType; + } + } + namespace Cup { + // Generated from: com/linkedin/avro2pegasus/events/cup/CupBlendingRecommendationsEvent.pdsc + + export interface CupBlendingRecommendationsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recommendations: CupRecommendation[]; + lixTreatments: LixTreatment[]; + } + // Generated from: com/linkedin/avro2pegasus/events/cup/CupRecommendation.pdsc + + export interface CupRecommendation { + provenance: string; + contentUrn: string; + score: number; + recommenderResultTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rankIndex: number; + } + // Generated from: com/linkedin/avro2pegasus/events/cup/LixTreatment.pdsc + + export interface LixTreatment { + lixKey: string; + treatment: string; + } + } + namespace Dashcache { + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheCallMethod.pdsc + + export type DashCacheCallMethod = + | 'BATCH_GET' + | 'BATCH_ENTITY_GET' + | 'BATCH_KV_GET' + | 'CUSTOM_BATCH_FINDER' + | 'FINDER' + | 'GET'; + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheDownstreamCallEventData.pdsc + + export interface DashCacheDownstreamCallEventData { + reason: DashCacheDownstreamCallReason; + originalProjection?: string; + overriddenProjection?: string; + requestOperation?: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + originalMetadataProjection?: string; + overriddenMetadataProjection?: string; + originalPagingProjection?: string; + overriddenPagingProjection?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheDownstreamCallReason.pdsc + + export type DashCacheDownstreamCallReason = + | 'CACHE_DISABLED' + | 'CACHE_MISS' + | 'L1L2_NOT_REQUIRED' + | 'L2_NOT_REQUIRED_ON_NON_ROOT' + | 'PROJECTION_MATCH_FAILED' + | 'STATS_NOT_AVAILABLE' + | 'L1_NOT_REQUIRED_ON_ROOT'; + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheErrorData.pdsc + + export interface DashCacheErrorData { + errorCode: number; + errorMessage?: string; + errorStacktrace?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheEvent.pdsc + + export interface DashCacheEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contextId?: string; + inboundEndpoint: string; + targetEndpoint?: string; + targetRequestOperation?: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + startTime: number; + endTime: number; + isRootBoxEvent: boolean; + errorData?: DashCacheErrorData; + responsePayload?: string; + eventType: DashCacheEventType; + readData?: DashCacheReadEventData; + writeData?: DashCacheWriteEventData; + downstreamCallData?: DashCacheDownstreamCallEventData; + } + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheEventType.pdsc + + export type DashCacheEventType = 'DOWNSTREAM_CALL' | 'READ' | 'WRITE'; + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheLearnedStatsEvent.pdsc + + export interface DashCacheLearnedStatsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contextId?: string; + learnedStats: string; + targetEndpoint?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheQueryStatsEvent.pdsc + + export interface DashCacheQueryStatsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + useCase: string; + queryStatsId: string; + sampleCount: number; + endpointsStats: EndpointStats[]; + actionType?: Com.Linkedin.Avro2pegasus.Events.Common.Dashcache.DashCacheQueryStatsActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheQueryStatsResetAuditLogEvent.pdsc + + export interface DashCacheQueryStatsResetAuditLogEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + useCase: string; + queryStatsId: string; + downstreamEndpointNames?: string[]; + resetTime: number; + resetSourceType: DashCacheQueryStatsResetType; + } + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheQueryStatsResetType.pdsc + + export type DashCacheQueryStatsResetType = 'AUTO' | 'MANUAL'; + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheReadCallStatus.pdsc + + export type DashCacheReadCallStatus = 'FAIL' | 'HIT' | 'MISS'; + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheReadEventData.pdsc + + export interface DashCacheReadEventData { + eventIdentifier?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + parentEventIdentifier?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + targetServer?: string; + callMethod: DashCacheCallMethod; + readCallStatus: DashCacheReadCallStatus; + cacheType: DashCacheType; + isBlocking?: boolean; + originalProjection?: string; + hashKey: string; + hashKeyObjects: { [id: string]: string }; + originalMetadataProjection?: string; + originalPagingProjection?: string; + parentHashKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheType.pdsc + + export type DashCacheType = 'L1' | 'L2'; + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheWriteCallStatus.pdsc + + export type DashCacheWriteCallStatus = 'FAILURE' | 'SUCCESS'; + // Generated from: com/linkedin/avro2pegasus/events/dashcache/DashCacheWriteEventData.pdsc + + export interface DashCacheWriteEventData { + eventIdentifier?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + parentEventIdentifier?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + targetServer?: string; + writeCallStatus: DashCacheWriteCallStatus; + cacheType: DashCacheType; + hashKey: string; + hashKeyObjects: { [id: string]: string }; + parentHashKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/dashcache/EndpointStats.pdsc + + export interface EndpointStats { + endpointName: string; + fieldProjections?: string; + metadataProjections?: string; + pagingProjections?: string; + l1QueryCount: number; + l2QueryCount: number; + isL1CacheRequired: boolean; + isL2CacheRequired: boolean; + } + } + namespace Dataapp { + // Generated from: com/linkedin/avro2pegasus/events/dataapp/DataSourceType.pdsc + + export type DataSourceType = 'PINOT' | 'PRESTO'; + // Generated from: com/linkedin/avro2pegasus/events/dataapp/InchartsChartImpressionEvent.pdsc + + export interface InchartsChartImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + inchartsChartUrn: string; + inchartsChartInstanceUrn: string; + visualizationType: string; + ownerUrns: string[]; + metrics: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/dataapp/RaptorLoginEvent.pdsc + + export interface RaptorLoginEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + requesterUrn: string; + isSuccessful: boolean; + departmentName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/dataapp/RetinaChartDownloadEvent.pdsc + + export interface RetinaChartDownloadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + dataSource: DataSourceType; + downloadTime: number; + datasetNames: string[]; + queryString: string; + } + } + namespace Dataexport { + // Generated from: com/linkedin/avro2pegasus/events/dataexport/AnnotatedTextFileContent.pdsc + + export interface AnnotatedTextFileContent { + text: string; + inferredLocale?: string; + attributes: Com.Linkedin.Avro2pegasus.Events.Common.Attribute[]; + } + // Generated from: com/linkedin/avro2pegasus/events/dataexport/DataExportFile.pdsc + + export interface DataExportFile { + fileName: string; + fileType: FileType; + fileContent: FileContent; + } + // Generated from: com/linkedin/avro2pegasus/events/dataexport/FileContent.pdsc + + export interface FileContent { + dataStream?: number; + dataUrl?: string; + dataUrn?: string; + annotatedTextData?: AnnotatedTextFileContent; + pdscFileContent?: PdscModelFileContent; + } + // Generated from: com/linkedin/avro2pegasus/events/dataexport/FileType.pdsc + + export type FileType = + | 'JPG' + | 'JPEG' + | 'PNG' + | 'GIF' + | 'PPT' + | 'PPTX' + | 'PDF' + | 'DOC' + | 'DOCX' + | 'IMG' + | 'CSV' + | 'TSV' + | 'HTM' + | 'HTML'; + // Generated from: com/linkedin/avro2pegasus/events/dataexport/PdscModelFileContent.pdsc + + export interface PdscModelFileContent { + type: string; + value: string; + } + } + namespace Datahub { + // Generated from: com/linkedin/avro2pegasus/events/datahub/AccessType.pdsc + + export type AccessType = 'READ' | 'WRITE' | 'READ_WRITE'; + // Generated from: com/linkedin/avro2pegasus/events/datahub/actionCategory.pdsc + + export type actionCategory = 'SEARCHCLICK' | 'SEARCHSATCLICK' | 'FACETCLICK'; + // Generated from: com/linkedin/avro2pegasus/events/datahub/DataHubBrowseActionEvent.pdsc + + export interface DataHubBrowseActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + actorUrn: string; + targetUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/datahub/DataHubComplianceSuggestionClickEvent.pdsc + + export interface DataHubComplianceSuggestionClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + requesterUrn: string; + targetUrn: string; + fieldName: string; + suggestedComplianceDataTypeUrn: string; + isSuggestionAccepted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/datahub/DataHubComplianceSuggestionImpressionEvent.pdsc + + export interface DataHubComplianceSuggestionImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + requesterUrn: string; + targetUrn: string; + fieldName: string; + suggestedComplianceDataTypeUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/datahub/DataHubSearchActionEvent.pdsc + + export interface DataHubSearchActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + requesterUrn: string; + targetUrn: string; + actionCategory: actionCategory; + query: string; + absolutePosition?: number; + facet?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/datahub/DataHubSearchImpressionEvent.pdsc + + export interface DataHubSearchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + requesterUrn: string; + targetUrn: string; + query: string; + absolutePosition?: number; + facet?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/datahub/JitAclBulkRequestActionEvent.pdsc + + export interface JitAclBulkRequestActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + requesterUrn: string; + sourceUrn: string; + sourceRelationship: SourceRelationship; + numberOfDatasetsRequested: number; + accessType: AccessType; + accessExpirationDate: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/events/datahub/SourceRelationship.pdsc + + export type SourceRelationship = 'UPSTREAMS' | 'DOWNSTREAMS' | 'INPUTS' | 'OUTPUTS'; + } + namespace Datamonitor { + // Generated from: com/linkedin/avro2pegasus/events/datamonitor/DatasetPartitionGroupChangeEvent.pdsc + + export interface DatasetPartitionGroupChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datasetCommonProperties: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.DatasetCommonProperties; + ownerUrns: string[]; + partitionProperty: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.PartitionProperty; + additionalInfo?: string; + inputDatasetPartitionGroups?: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.InputDatasetPartitionGroup[]; + } + // Generated from: com/linkedin/avro2pegasus/events/datamonitor/DatasetPartitionMetadataAlterEvent.pdsc + + export interface DatasetPartitionMetadataAlterEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datasetCommonProperties: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.DatasetCommonProperties; + multiLevelPartition: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.MultiLevelPartition; + datasetPartitionLocation: string; + partitionStatus: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.PartitionStatus; + partitionStatusReason: string; + dataFlow?: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.DataFlow; + datasetPartitionCreatedTime?: number; + inputDatasetPartitions?: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.InputDatasetPartition[]; + datasetPartitionMetadata?: Com.Linkedin.Avro2pegasus.Datamonitormetadata.DatasetPartitionMetadata; + datasetPartitionVersion: number; + triggerReason: TriggerReason; + } + // Generated from: com/linkedin/avro2pegasus/events/datamonitor/DatasetPartitionMetadataEvent.pdsc + + export interface DatasetPartitionMetadataEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datasetCommonProperties: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.DatasetCommonProperties; + multiLevelPartition: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.MultiLevelPartition; + readTimeStamp: number; + datasetPartitionMetadata: Com.Linkedin.Avro2pegasus.Datamonitormetadata.DatasetPartitionMetadata; + inputDatasetPartitions?: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.InputDatasetPartition[]; + } + // Generated from: com/linkedin/avro2pegasus/events/datamonitor/DatasetPartitionStatsEvent.pdsc + + export interface DatasetPartitionStatsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datasetCommonProperties: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.DatasetCommonProperties; + multiLevelPartition: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.MultiLevelPartition; + updateType: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.StatsUpdateType; + counters: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.DatasetPartitionStatsCount[]; + } + // Generated from: com/linkedin/avro2pegasus/events/datamonitor/DatasetPartitionStatusChangeEvent.pdsc + + export interface DatasetPartitionStatusChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datasetCommonProperties: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.DatasetCommonProperties; + multiLevelPartition: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.MultiLevelPartition; + partitionStatus: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.PartitionStatus; + partitionStatusReason: string; + additionalInfo?: string; + dataFlow?: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.DataFlow; + createdTime?: number; + inputDatasetPartitions?: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.InputDatasetPartition[]; + datasetPartitionMetadata?: Com.Linkedin.Avro2pegasus.Datamonitormetadata.DatasetPartitionMetadata; + } + // Generated from: com/linkedin/avro2pegasus/events/datamonitor/TriggerReason.pdsc + + export type TriggerReason = 'STATUS_CHANGE' | 'GRAPH_CHANGE' | 'METADATA_CHANGE' | 'METRICS_CHANGE'; + } + namespace Datavault { + // Generated from: com/linkedin/avro2pegasus/events/datavault/AccessControlChangeEvent.pdsc + + export interface AccessControlChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + previousACL?: AccessControlDataEventSnapshot; + newACL?: AccessControlDataEventSnapshot; + principal?: Principal; + changeResult: Com.Linkedin.Avro2pegasus.Events.Common.Datavault.ActionResult; + method: MethodTypeEnum; + aclDataKey?: AccessControlDataKey; + requestorUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/AccessControlDataEventSnapshot.pdsc + + export interface AccessControlDataEventSnapshot { + currentAccessControlList: AccessControlEntry[]; + proposedAccessControlList: AccessControlEntry[]; + currentAclState: AccessControlState; + namespace?: string; + lastUpdatedBy: string; + lastUpdatedAt: number; + operationType?: OperationTypes; + description?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/AccessControlDataKey.pdsc + + export interface AccessControlDataKey { + resource: string; + accessControlScopeType: AccessControlScopeType; + accessControlScopeValue: string; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/AccessControlEntry.pdsc + + export interface AccessControlEntry { + action: ActionType; + methods: Method; + ldapUserPrincipals: string[]; + ldapGroupPrincipals: string[]; + servicePrincipals: ServicePrincipal[]; + wildcardPrincipals: WildcardPrincipal[]; + description?: string; + buckets?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/AccessControlScopeType.pdsc + + export type AccessControlScopeType = 'FABRIC' | 'FABRIC_GROUP' | 'APPLICATION_INSTANCE'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/AccessControlState.pdsc + + export type AccessControlState = 'DISABLED' | 'ENABLED'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/AccessControlWildcardChangeEvent.pdsc + + export interface AccessControlWildcardChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + previousWildcard?: Com.Linkedin.Avro2pegasus.Events.Common.Datavault.AccessControlWildcard; + newWildcard?: Com.Linkedin.Avro2pegasus.Events.Common.Datavault.AccessControlWildcard; + wildcardKey?: Com.Linkedin.Avro2pegasus.Events.Common.Datavault.AccessControlWildcardKey; + principal?: Principal; + changeResult: Com.Linkedin.Avro2pegasus.Events.Common.Datavault.ActionResult; + method: MethodTypeEnum; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/AccessResult.pdsc + + export interface AccessResult { + certificateResult?: AccessResultEntry; + tokenResult?: AccessResultEntry; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/AccessResultEntry.pdsc + + export interface AccessResultEntry { + currentWildcardAclResult: AclAccessPermissionResult; + proposedWildcardAclResult: AclAccessPermissionResult; + currentSpecificAclResult: AclAccessPermissionResult; + proposedSpecificAclResult: AclAccessPermissionResult; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/AclAccessPermissionResult.pdsc + + export type AclAccessPermissionResult = + | 'ALLOW' + | 'DENY' + | 'UNDEFINED' + | 'METHOD_UNSPECIFIED_FOR_RESOURCE' + | 'PRINCIPAL_UNSPECIFIED_FOR_METHOD'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/ActionType.pdsc + + export type ActionType = 'ALLOW' | 'DENY'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/ActorType.pdsc + + export type ActorType = 'GROUP' | 'HEADLESS_USER' | 'USER'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/AppliedWildcardAcl.pdsc + + export interface AppliedWildcardAcl { + wildcardGroup: string; + wildcardAclList: WildcardAclIdentifier[]; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/ChangedByType.pdsc + + export type ChangedByType = 'HEADLESS_USER' | 'USER'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/ChangeType.pdsc + + export type ChangeType = 'CREATED' | 'DELETED'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/DatavaultAclFetchEvent.pdsc + + export interface DatavaultAclFetchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + peerPrincipal: Principal; + resourceUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/DatavaultRoleChangeEvent.pdsc + + export interface DatavaultRoleChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + principal?: Principal; + requestedBy?: string; + action?: RoleAction; + resource?: string; + id?: string; + previousRole?: Com.Linkedin.Avro2pegasus.Events.Common.Datavault.RoleSnapshot; + newRole?: Com.Linkedin.Avro2pegasus.Events.Common.Datavault.RoleSnapshot; + changeResult: Com.Linkedin.Avro2pegasus.Events.Common.Datavault.ActionResult; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/DatavaultServiceDeploymentEvent.pdsc + + export interface DatavaultServiceDeploymentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + isAllowWhenAclMissing: boolean; + isUsingDynamicAcls: boolean; + failDeploymentIfACLUnavailable?: boolean; + isFetchOnDemand: boolean; + hasPersistencePassPhrase?: boolean; + isPerResourceSensorEnabled: boolean; + loggingFlushIntervalInSeconds: number; + logFlushTimeoutInSeconds: number; + wildcardGroup?: string; + loadIntervalInSeconds?: number; + patternCacheMaxSize: number; + isWildcardResourceResultCached: boolean; + wildcardResultCacheMaxSize: number; + wildcardResultCacheTtlInSeconds: number; + allServicePrincipalBlackList: string[]; + resourceCount?: number; + datavaultVersion: string; + resourceAclsInCache?: number; + wildcardResultsInCache?: number; + resourceAclsFromAclService?: number; + wildcardResultFromAclService?: number; + aclLoadingDuration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/FabricTag.pdsc + + export type FabricTag = 'ALL' | 'LOCAL' | 'FOREIGN'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/FabricType.pdsc + + export type FabricType = 'DEV' | 'EI' | 'PROD' | 'CORP'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/HostRequestInfo.pdsc + + export interface HostRequestInfo { + hostname: string; + hostRequestCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/Method.pdsc + + export interface Method { + methodTypes: MethodType[]; + customMethods: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/MethodType.pdsc + + export type MethodType = + | 'POST' + | 'PUT' + | 'GET' + | 'DELETE' + | 'HEAD' + | 'PATCH' + | 'TRACE' + | 'OPTIONS' + | 'GET_ALL' + | 'BATCH_GET' + | 'BATCH_CREATE' + | 'BATCH_UPDATE' + | 'PARTIAL_UPDATE' + | 'BATCH_PARTIAL_UPDATE' + | 'BATCH_DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/MethodTypeEnum.pdsc + + export type MethodTypeEnum = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/OperationTypes.pdsc + + export type OperationTypes = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/Principal.pdsc + + export interface Principal { + principalType: PrincipalType; + principalId: string; + principalTag?: string; + principalInstance?: string; + principalFabric?: string; + principalUser?: string; + principalHostname?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/PrincipalType.pdsc + + export type PrincipalType = 'NOBODY' | 'USER' | 'GROUP' | 'SERVICE'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/ResourceAccessEvent.pdsc + + export interface ResourceAccessEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + resourceUrn: string; + principal: Principal; + requestedMethod: string; + isRequestAllowed: boolean; + accessCount: number; + bucketUrn?: string; + callerHostname?: string; + intervalTimeRange: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + isDefinedInAcl: boolean; + context?: string; + auditReconstructionData?: string; + proposedAclAccessPermissionResult?: AclAccessPermissionResult; + requesterHostsInfoList?: HostRequestInfo[]; + aclLastModifiedTime?: number; + accessResult?: AccessResult; + appliedWildcardAcl?: AppliedWildcardAcl; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/Role.pdsc + + export type Role = + | 'DEVELOPMENT_TEAM' + | 'FAST_DATAVAULT_ACCESS' + | 'RELIABILITY_TEAM' + | 'COLLABORATOR_TEAM' + | 'FAST_SHELL_ACCESS' + | 'RESOURCE_OWNER_TEAM' + | 'FAST_LOCKER' + | 'RESOURCE_ADMIN'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/RoleAction.pdsc + + export type RoleAction = 'CREATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/datavault/RoleChangeEvent.pdsc + + export interface RoleChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + changedAt: number; + changedBy: string; + changedByType: ChangedByType; + impersonator?: string; + changeType: ChangeType; + resource: string; + resourceType: string; + actorOfAclEntry: string; + actorType: ActorType; + role: Role; + scope?: Scope; + expiresAt?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/Scope.pdsc + + export interface Scope { + productTag?: string; + fabricUrn?: string; + fabricGroup?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/ServicePrincipal.pdsc + + export interface ServicePrincipal { + applicationName: string; + productTag?: string; + instance?: string; + fabricUrn?: string; + fabricType?: FabricType; + fabricTag?: FabricTag; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/WildcardAclIdentifier.pdsc + + export interface WildcardAclIdentifier { + wildcardId: number; + aclLastModifiedTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/datavault/WildcardPrincipal.pdsc + + export type WildcardPrincipal = + | 'OWNERS' + | 'DELEGATES' + | 'OPERATORS' + | 'ALL_LDAP_USERS' + | 'ALL_LDAP_GROUPS' + | 'ALL_PRINCIPALS' + | 'NOBODY' + | 'ALL_SERVICE_PRINCIPALS'; + } + namespace Developerportal { + // Generated from: com/linkedin/avro2pegasus/events/developerportal/ActionType.pdsc + + export type ActionType = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/developerportal/ApplicationVerificationRequestActionType.pdsc + + export type ApplicationVerificationRequestActionType = 'APPROVE' | 'REJECT'; + // Generated from: com/linkedin/avro2pegasus/events/developerportal/DeveloperApplicationActionEvent.pdsc + + export interface DeveloperApplicationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + applicationUrn: string; + actionType: ActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/developerportal/DeveloperApplicationCompanyVerificationEvent.pdsc + + export interface DeveloperApplicationCompanyVerificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + developerApplicationUrn: string; + organizationUrn: string; + requesterUrn: string; + actionType: ApplicationVerificationRequestActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/developerportal/DeveloperApplicationProductChangeEvent.pdsc + + export interface DeveloperApplicationProductChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + developerApplicationUrn: string; + developerProductUrn: string; + developerProductTierUrn: string; + type: ProductChangeType; + } + // Generated from: com/linkedin/avro2pegasus/events/developerportal/DeveloperApplicationProductRequestEvent.pdsc + + export interface DeveloperApplicationProductRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + developerApplicationUrn: string; + developerProductUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/developerportal/DeveloperWebhookActionEvent.pdsc + + export interface DeveloperWebhookActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + developerApplicationUrn: string; + webhookUrl: string; + actionType: WebhookActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/developerportal/DeveloperWebhookTestEvent.pdsc + + export interface DeveloperWebhookTestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + developerApplicationUrn: string; + webhookUrl: string; + eventType: string; + status: TestEventStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/developerportal/ProductChangeType.pdsc + + export type ProductChangeType = 'ADD' | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/developerportal/TestEventStatus.pdsc + + export type TestEventStatus = 'SUCCESS' | 'FAILURE' | 'TIMEOUT' | 'UNABLE_TO_SEND'; + // Generated from: com/linkedin/avro2pegasus/events/developerportal/WebhookActionType.pdsc + + export type WebhookActionType = 'CREATE' | 'UPDATE' | 'DELETE' | 'VALIDATE' | 'GET'; + } + namespace Dfw { + // Generated from: com/linkedin/avro2pegasus/events/dfw/action.pdsc + + export type action = 'ALLOW' | 'DENY'; + // Generated from: com/linkedin/avro2pegasus/events/dfw/DistributedFirewallAuditEvent.pdsc + + export interface DistributedFirewallAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hostName: string; + userName?: string; + eventType: type; + details?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/dfw/DistributedFirewallLogEvent.pdsc + + export interface DistributedFirewallLogEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hostName: string; + severity: severity; + sender: string; + message: string; + } + // Generated from: com/linkedin/avro2pegasus/events/dfw/DistributedFirewallPacketEvent.pdsc + + export interface DistributedFirewallPacketEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hostName: string; + action: action; + sourceIpAddress: string; + sourcePort?: number; + destinationIpAddress: string; + destinationPort?: number; + protocol: string; + } + // Generated from: com/linkedin/avro2pegasus/events/dfw/severity.pdsc + + export type severity = 'CRITICAL' | 'ERROR' | 'WARNING' | 'INFO' | 'DEBUG'; + // Generated from: com/linkedin/avro2pegasus/events/dfw/type.pdsc + + export type type = + | 'ENABLE_CONNTRACK' + | 'DISABLE_CONNTRACK' + | 'ADD_ZONE_OVERRIDE_ALLOW' + | 'ADD_ZONE_OVERRIDE_DENY' + | 'DELETE_ZONE_OVERRIDE_ALLOW' + | 'DELETE_ZONE_OVERRIDE_DENY' + | 'RULE_MODIFICATION' + | 'HEARTBEAT_DEAD' + | 'FIREDRILL_BLOCK' + | 'FIREDRILL_UNBLOCK'; + } + namespace Directory { + // Generated from: com/linkedin/avro2pegasus/events/directory/DirectoryInferredBindingFeedbackEvent.pdsc + + export interface DirectoryInferredBindingFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + feedbackReceivedTime: number; + inferredUserMemberUrn: string; + inferredUserEnterpriseProfileUrn: string; + feedbackProviderEnterpriseProfileUrn: string; + isInferredBindingCorrect: boolean; + enterpriseAccountUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/directory/DirectoryInviteActionEvent.pdsc + + export interface DirectoryInviteActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + inviterUrn: string; + inviteeUrn: string; + directoryUrn: string; + invitationSentTime: number; + directoryProjectUrn: string; + isInviteeLookupUser: boolean; + isInviteSkipped: boolean; + messageType: LedInviteMessageType; + } + // Generated from: com/linkedin/avro2pegasus/events/directory/LedInviteMessageType.pdsc + + export type LedInviteMessageType = 'GROUP_INMAIL' | 'TEXT' | 'EMAIL' | 'PUSH_NOTIFICATION'; + } + namespace Discovery { + // Generated from: com/linkedin/avro2pegasus/events/discovery/DiscoveryFunnelEvent.pdsc + + export interface DiscoveryFunnelEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + funnelStep: FunnelStep; + funnelBody: FunnelBody; + } + // Generated from: com/linkedin/avro2pegasus/events/discovery/FunnelBody.pdsc + + export interface FunnelBody { + impression?: Com.Linkedin.Avro2pegasus.Events.Common.Discovery.ImpressionRecord; + action?: Com.Linkedin.Avro2pegasus.Events.Common.Discovery.ActionRecord; + served?: Com.Linkedin.Avro2pegasus.Events.Common.Discovery.ServedRecord; + servedArray?: Com.Linkedin.Avro2pegasus.Events.Common.Discovery.ServedRecord[]; + recommended?: Com.Linkedin.Avro2pegasus.Events.Common.Discovery.RecommendedRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/discovery/FunnelStep.pdsc + + export type FunnelStep = 'IMPRESSION' | 'ACTION' | 'SERVED' | 'RECOMMENDED'; + } + namespace Easyapply { + // Generated from: com/linkedin/avro2pegasus/events/easyapply/PostApplyActionEvent.pdsc + + export interface PostApplyActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + postApplyActionType: PostApplyActionType; + isSettingEnabled: boolean; + oneClickApplyJobPostingUrns: string[]; + isDisplayedSettingEnabled?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/easyapply/PostApplyActionType.pdsc + + export type PostApplyActionType = + | 'TOGGLE_SAVED_ANSWER' + | 'TOGGLE_OPEN_CANDIDATE' + | 'ONE_CLICK_APPLY' + | 'BULK_ONE_CLICK_APPLY'; + // Generated from: com/linkedin/avro2pegasus/events/easyapply/ResumeAnswerChangeEvent.pdsc + + export interface ResumeAnswerChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + resumeSource: ResumeType; + pdfVersion?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/easyapply/ResumeType.pdsc + + export type ResumeType = 'UPLOAD' | 'GENERATED_FROM_PROFILE'; + // Generated from: com/linkedin/avro2pegasus/events/easyapply/TalentQuestionInteractionEvent.pdsc + + export interface TalentQuestionInteractionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + questionUrn: string; + interactionDuration: number; + answerLength?: number; + isPrefilled: boolean; + } + } + namespace Edge { + // Generated from: com/linkedin/avro2pegasus/events/edge/ActorType.pdsc + + export type ActorType = 'BULKLOAD' | 'DATAFIX' | 'NEARLINE' | 'ONLINE' | 'UNSPECIFIED'; + // Generated from: com/linkedin/avro2pegasus/events/edge/Operation.pdsc + + export type Operation = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/edge/UnifiedEdgeActionEvent.pdsc + + export interface UnifiedEdgeActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + fromUrn: string; + toUrn: string; + type: string; + operation: Operation; + state?: string; + actorUrn?: string; + actorType: ActorType; + attributes?: Com.Linkedin.Avro2pegasus.Common.Avro.AvroAnyRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/edge/UnifiedEdgeTelemetryAssociationKey.pdsc + + export interface UnifiedEdgeTelemetryAssociationKey { + fromUrn: string; + type: string; + toUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/edge/UnifiedEdgeTelemetryBatchGetEvent.pdsc + + export interface UnifiedEdgeTelemetryBatchGetEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestKeys: UnifiedEdgeTelemetryAssociationKey[]; + requestLatencyInNanoseconds: number; + numberOfElements?: number; + responseError?: UnifiedEdgeTelemetryException; + } + // Generated from: com/linkedin/avro2pegasus/events/edge/UnifiedEdgeTelemetryException.pdsc + + export interface UnifiedEdgeTelemetryException { + type: string; + message: string; + stackTrace: string; + } + // Generated from: com/linkedin/avro2pegasus/events/edge/UnifiedEdgeTelemetryFindByFromAndEdgeTypeEvent.pdsc + + export interface UnifiedEdgeTelemetryFindByFromAndEdgeTypeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + fromUrn: string; + type: string; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + states?: string[]; + requestLatencyInNanoseconds: number; + numberOfElements?: number; + responseError?: UnifiedEdgeTelemetryException; + } + // Generated from: com/linkedin/avro2pegasus/events/edge/UnifiedEdgeTelemetryFindByToAndEdgeTypeEvent.pdsc + + export interface UnifiedEdgeTelemetryFindByToAndEdgeTypeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + toUrn: string; + type: string; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + states?: string[]; + requestLatencyInNanoseconds: number; + numberOfElements?: number; + responseError?: UnifiedEdgeTelemetryException; + } + // Generated from: com/linkedin/avro2pegasus/events/edge/UnifiedEdgeTelemetryGetEvent.pdsc + + export interface UnifiedEdgeTelemetryGetEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestKey: UnifiedEdgeTelemetryAssociationKey; + requestLatencyInNanoseconds: number; + numberOfElements?: number; + responseError?: UnifiedEdgeTelemetryException; + } + } + namespace Editorial { + // Generated from: com/linkedin/avro2pegasus/events/editorial/ViralObjectLabel.pdsc + + export type ViralObjectLabel = 'UNPROFESSIONAL' | 'SPAM' | 'OKAY' | 'UNSURE'; + // Generated from: com/linkedin/avro2pegasus/events/editorial/ViralObjectLabelingEvent.pdsc + + export interface ViralObjectLabelingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + url: string; + label: ViralObjectLabel; + contentLabels?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + } + } + namespace Endorsements { + // Generated from: com/linkedin/avro2pegasus/events/endorsements/EndorsementFollowUpActionEvent.pdsc + + export interface EndorsementFollowUpActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + endorsementFollowUpTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/endorsements/EndorsementFollowUpImpressionEvent.pdsc + + export interface EndorsementFollowUpImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + endorsementFollowUpTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + vieweeMemberUrn: string; + step: number; + totalSteps: number; + skillName: string; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/events/endorsements/EndorsementInfo.pdsc + + export interface EndorsementInfo { + endorsementId: number; + endorserId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/endorsements/EndorsementsChangeEvent.pdsc + + export interface EndorsementsChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + changeType: Com.Linkedin.Avro2pegasus.Events.ChangeType; + endorsements: Com.Linkedin.Avro2pegasus.Events.Endorsement[]; + } + // Generated from: com/linkedin/avro2pegasus/events/endorsements/EndorsementsHighlight.pdsc + + export interface EndorsementsHighlight { + highlightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + highlightType: EndorsementsHighlightType; + associatedEntity?: string; + totalEndorsementsCount: number; + endorsements: EndorsementInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/endorsements/EndorsementsHighlightActionEvent.pdsc + + export interface EndorsementsHighlightActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + impressionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + highlightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/endorsements/EndorsementsHighlightType.pdsc + + export type EndorsementsHighlightType = + | 'SHARED_CONNECTIONS' + | 'ELITES' + | 'INFLUENCERS' + | 'RECENTLY_ENDORSED' + | 'SAME_SKILL' + | 'SAME_TITLE' + | 'SENIOR_LEADERS' + | 'SHARED_ENTITY' + | 'VIEWER_SHARED_ENTITY'; + // Generated from: com/linkedin/avro2pegasus/events/endorsements/FeaturedSkill.pdsc + + export interface FeaturedSkill { + skillName: string; + skillPosition: number; + highlights: EndorsementsHighlight[]; + } + // Generated from: com/linkedin/avro2pegasus/events/endorsements/FeaturedSkillsImpressionEvent.pdsc + + export interface FeaturedSkillsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + impressionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + impressedHighlights: ImpressedHighlight[]; + duration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/endorsements/ImpressedHighlight.pdsc + + export interface ImpressedHighlight { + highlightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + highlightPosition: number; + } + // Generated from: com/linkedin/avro2pegasus/events/endorsements/RawFeaturedSkillsEvent.pdsc + + export interface RawFeaturedSkillsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + vieweeMemberId: number; + featuredSkills: FeaturedSkill[]; + } + } + namespace Enterprise { + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ActionType.pdsc + + export type ActionType = + | 'LOGIN_AS_SEAT_ADMIN' + | 'DEACTIVATE_APPLICATION_INSTANCE' + | 'ACTIVATE_APPLICATION_INSTANCE' + | 'UPDATE_LICENSE_BUFFER' + | 'UPDATE_LICENSE_ASSIGNMENT_CAP' + | 'MANUAL_GRANT_ORDER_LINE' + | 'MANUAL_CANCEL_ORDER_LINE' + | 'MANUAL_REVOKE_ORDER_LINE' + | 'MANUAL_GRANT_PREORDER'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/AuthenticationError.pdsc + + export interface AuthenticationError { + errorMessage?: string; + errorType: AuthenticationErrorType; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/AuthenticationErrorType.pdsc + + export type AuthenticationErrorType = + | 'MEMBER_LOGIN_LIAT_NOT_AVAILABLE' + | 'MEMBER_LOGIN_SSO_REQUIRED' + | 'MEMBER_LOGIN_MEMBER_MISMATCH' + | 'MEMBER_LOGIN_ENTERPRISE_PROFILE_NOT_FOUND' + | 'MEMBER_LOGIN_ENTERPRISE_PROFILE_NOT_IN_RIGHT_FORMAT' + | 'SSO_LOGIN_SETTING_NOT_FOUND' + | 'SSO_LOGIN_SAML_RESPONSE_DECODING_FAILED' + | 'SSO_LOGIN_SAML_RESPONSE_STATUS_CODE_NOT_SUCCESS' + | 'SSO_LOGIN_ISSUER_NOT_FOUND_IN_ASSERTION' + | 'SSO_LOGIN_ISSUER_MISMATCH' + | 'SSO_LOGIN_SAML_RESPONSE_REPLAY_VALIDATION_FAILED' + | 'SSO_LOGIN_SIGNATURE_NOT_VALID' + | 'SSO_LOGIN_ASSERTION_NOT_VALID' + | 'SSO_LOGIN_NO_NAMEID_OR_EXTERNALID_IN_SAML_RESPONSE' + | 'SSO_LOGIN_NO_PROFILE_AND_NO_JIT' + | 'SSO_LOGIN_JIT_PROVISIONING_FAILED' + | 'OPENID_TOKEN_DECODING_FAILED' + | 'OPENID_TOKEN_SIGNATURE_FAILED' + | 'OPENID_TOKEN_VALIDATION_FAILED' + | 'OPENID_ENTERPRISE_PROFILE_MISMATCH' + | 'OPENID_INCORRECT_CONFIGURATION' + | 'OPENID_MISSING_ENTERPRISE_PROFILE' + | 'OPENID_RESPONSE_REPLAY_VALIDATION_FAILED' + | 'AUTHENTICATION_ENTERPRISE_PROFILE_ACCOUNT_MISMATCH' + | 'PARTIAL_AUTHENTICATION_LOGIN_SSO_REQUIRED' + | 'PARTIAL_AUTHENTICATION_MEMBER_LOGIN_REQUIRED' + | 'PARTIAL_AUTHENTICATION_ENTERPRISE_PROFILE_NOT_FOUND' + | 'LTI_INCORRECT_CONFIGURATION' + | 'LTI_INVALID_PARAMETERS' + | 'LTI_FAILED_NONCE_REPLAY_CHECK' + | 'LTI_FAILED_AUTHENTICATION' + | 'PARTIAL_AUTHENTICATION_INCORRECT_CONFIGURATION' + | 'OPENID_PROFILE_NOT_FOUND_BY_B2C_EMAIL' + | 'OPENID_PROFILE_CLAIMED_BY_ANOTHER_B2C_EMAIL' + | 'OPENID_EMAIL_ALREADY_CLAIMED' + | 'GOOGLE_INCORRECT_CONFIGURATION' + | 'GOOGLE_INVALID_PARAMETERS' + | 'GOOGLE_FAILED_AUTHENTICATION' + | 'GOOGLE_HOST_DOMAIN_MISMATCH' + | 'GOOGLE_HOST_DOMAIN_LIST_NOT_FOUND' + | 'GOOGLE_MISSING_THIRD_PARTY_DATA' + | 'GOOGLE_CUSTOMER_ATTRIBUTE_FAILED' + | 'GOOGLE_INVALID_EMAIL' + | 'SSO_LOGIN_JIT_PROVISIONING_BUDGET_GROUP_INVALID' + | 'SSO_LOGIN_JIT_PROVISIONING_LICENSE_TYPE_UNAVAILABLE' + | 'SSO_LOGIN_JIT_PROVISIONING_LICENSE_CREATION_FAILED' + | 'GOOGLE_GAAP_FRONT_END_ERROR' + | 'GOOGLE_FAILED_NONCE_REPLAY_CHECK' + | 'GOOGLE_DECRYPTION_FAILED' + | 'GOOGLE_SSO_CONFIG_NOT_FOUND' + | 'SSO_CUSTOM_PROFILE_ATTRIBUTE_REGEX_MISMATCH' + | 'UNSUPPORTED_AUTHENTICATION_TYPE' + | 'ENTERPRISE_AUTHENTICATION_SERVICE_CALL_FAILED' + | 'SSO_LOGIN_SAML_RESPONSE_REPLAY_CHECK_REQUEST_FAILED' + | 'UNCLASSIFIED' + | 'COMMON_INACTIVE_ENTERPRISE_PROFILE'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ChangedValue.pdsc + + export interface ChangedValue { + set: { [id: string]: string }; + delete: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ComplianceRequestConfiguration.pdsc + + export interface ComplianceRequestConfiguration { + exportedDataExpiryTime?: number; + requiredCompletionTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ComplianceRequestStatus.pdsc + + export type ComplianceRequestStatus = + | 'NEW' + | 'VALIDATED' + | 'REJECTED' + | 'REQUESTED' + | 'PROCESSING' + | 'FULFILLED' + | 'FAILED' + | 'CANCELLED'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ComplianceRequestType.pdsc + + export type ComplianceRequestType = + | 'GDPR_EXPORT' + | 'GDPR_DELETE' + | 'MEMBER_DELETE' + | 'MEMBER_EXPORT' + | 'ENTERPRISE_PROFILE_DELETE' + | 'ENTERPRISE_PROFILE_EXPORT' + | 'ENTERPRISE_ACCOUNT_DELETE' + | 'ENTERPRISE_ACCOUNT_EXPORT'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ComplianceTargetScope.pdsc + + export interface ComplianceTargetScope { + ltsTargetScopes: Array; + lssTargetScopes: Array; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/CuType.pdsc + + export type CuType = 'READ' | 'WRITE'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseActivationReminderSentEvent.pdsc + + export interface EnterpriseActivationReminderSentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + applicationUrn: string; + applicationInstanceUrn: string; + budgetGroupUrn: string; + licenseTypeUrn: string; + profileUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAppInstanceCreationEvent.pdsc + + export interface EnterpriseAppInstanceCreationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + applicationUrn: string; + applicationInstanceUrn: string; + creatorUrn: string; + createTimestamp: number; + sourceApplicationInstanceUrn?: string; + creationMethod?: Com.Linkedin.Avro2pegasus.Events.CreationMethod; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAppInstanceLicenseDeactivationEvent.pdsc + + export interface EnterpriseAppInstanceLicenseDeactivationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + applicationUrn: string; + applicationInstanceUrn: string; + licenseTypeUrn: string; + licenseAllocationCount: number; + licenseAssignmentCount: number; + licenseViolationSuspensionPolicyPercentage: number; + deactivationTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAppInstanceLicenseReactivationEvent.pdsc + + export interface EnterpriseAppInstanceLicenseReactivationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + applicationUrn: string; + applicationInstanceUrn: string; + licenseTypeUrn: string; + licenseAllocationCount: number; + licenseAssignmentCount: number; + licenseViolationSuspensionPolicyPercentage: number; + reactivationTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAppInstanceLicenseViolationEvent.pdsc + + export interface EnterpriseAppInstanceLicenseViolationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + applicationUrn: string; + applicationInstanceUrn: string; + licenseTypeUrn: string; + licenseAllocationCount: number; + licenseAssignmentCount: number; + licenseViolationPreventionPolicyPercentage: number; + violationTime?: number; + gracePeriodDays?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseApplicationInstanceMoveEvent.pdsc + + export interface EnterpriseApplicationInstanceMoveEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sourceApplicationInstanceUrn: string; + destinationApplicationInstanceUrn: string; + isMoveSuccessful: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAuditEvent.pdsc + + export interface EnterpriseAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + targetType?: TargetType; + targetUrns: string[]; + operationTime: number; + accountUrn?: string; + operationType: OperationType; + actionOperationName?: string; + operationResult: OperationResult; + descriptionKey?: string; + descriptionParameters: string[]; + eventOriginationService: OriginationService; + applicationInstanceUrn?: string; + changedDataValues?: ChangedValue; + actorUrn?: string; + customerUrn?: string; + note?: string; + actionType?: ActionType; + actionTypeString?: string; + targetTypeString?: string; + existingDataValues?: { [id: string]: string }; + actorUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAuthenticationMonitorAppEndEvent.pdsc + + export interface EnterpriseAuthenticationMonitorAppEndEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationHeader: EnterpriseAuthenticationMonitorHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAuthenticationMonitorAppStartEvent.pdsc + + export interface EnterpriseAuthenticationMonitorAppStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationHeader: EnterpriseAuthenticationMonitorHeader; + isReAuth: boolean; + authUrl?: string; + mobileAuthenticationMode?: MobileAuthenticationMode; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAuthenticationMonitorAuthenticationPreFlightEvent.pdsc + + export interface EnterpriseAuthenticationMonitorAuthenticationPreFlightEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationHeader: EnterpriseAuthenticationMonitorHeader; + authUrl?: string; + mobileAuthenticationMode?: MobileAuthenticationMode; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAuthenticationMonitorCredentialReceivedEvent.pdsc + + export interface EnterpriseAuthenticationMonitorCredentialReceivedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationHeader: EnterpriseAuthenticationMonitorHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAuthenticationMonitorCredentialRequestedEvent.pdsc + + export interface EnterpriseAuthenticationMonitorCredentialRequestedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationHeader: EnterpriseAuthenticationMonitorHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAuthenticationMonitorCredentialVerifiedEvent.pdsc + + export interface EnterpriseAuthenticationMonitorCredentialVerifiedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationHeader: EnterpriseAuthenticationMonitorHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAuthenticationMonitorHeader.pdsc + + export interface EnterpriseAuthenticationMonitorHeader { + authenticationRequestId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + accountUrn?: string; + applicationUrn?: string; + profileUrn?: string; + isSuccessful?: boolean; + memberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAuthenticationRequestEvent.pdsc + + export interface EnterpriseAuthenticationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + accountUrn: string; + applicationUrn?: string; + applicationInstanceUrn?: string; + profileUrn?: string; + profileBoundMemberUrn?: string; + loggedInMemberUrn?: string; + memberBindingStatus: MemberBindingStatus; + guestUrn?: string; + isSso: boolean; + isAutoAssignLicenseConfigured: boolean; + isOpenIdSso: boolean; + isLtiSso: boolean; + isAutoAssignLicenseOccurred: boolean; + samlResponse?: SamlResponse; + isSuccessful: boolean; + errorMessage?: string; + errorType?: EnterpriseSsoLoginErrorType; + authenticationModeUrn?: string; + authErrorType?: AuthenticationErrorType; + encodedSamlResponse?: string; + isGoogleSso?: boolean; + authenticationRequestId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseAuthenticationRequestV2Event.pdsc + + export interface EnterpriseAuthenticationRequestV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + accountUrn: string; + applicationUrn?: string; + applicationInstanceUrn?: string; + profileUrn?: string; + memberBoundedToProfile?: string; + profileMemberBindingStatus?: MemberBindingStatus; + actor: string; + createdAt: number; + nonSsoAuthType?: NonSsoAuthType; + ssoDetails?: SsoAuthenticationDetails; + authenticationError?: AuthenticationError; + authenticationModeUrn?: string; + authenticationRequestId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseComplianceComponent.pdsc + + export type EnterpriseComplianceComponent = + | 'LTS_COMPANY_PAGE' + | 'LTS_OMNI_JOBS' + | 'LTS_TALENT_INSIGHTS' + | 'LTS_ATS_MIDDLEWARE' + | 'LTS_PIPELINE_BUILDER' + | 'LTS_JOBS' + | 'LTS_HIRING_PLATFORM' + | 'LTS_INTELLIGENT_MATCHES' + | 'LSS_DEFAULT' + | 'LEARNING_ADMIN' + | 'LEARNING_CONTENT' + | 'LEARNING_DEFAULT' + | 'LEARNING_LEARNER' + | 'ELEVATE_DEFAULT' + | 'ENTERPRISE_PLATFORM' + | 'LTS_RECRUITER' + | 'LYNDA_MIGRATION' + | 'LYNDA_CONTENT' + | 'FOLLOWFEED_PARTITIONER' + | 'USCP' + | 'COMMERCE' + | 'NOTIFICATIONS_SERVICE'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseComplianceExecuteEvent.pdsc + + export interface EnterpriseComplianceExecuteEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + parentRequestId: number; + subrequestKeys: Array; + requestScope?: EnterpriseComplianceRequestScope; + requestType: ComplianceRequestType; + targetMemberUrn?: string; + targetProfileUrn?: string; + targetAccountUrn?: string; + targetCompanyUrn?: string; + targetSfdcId?: string; + targetCustomerUrn?: string; + targetScope?: ComplianceTargetScope; + targetSubstituteUrn?: string; + configuration: ComplianceRequestConfiguration; + signature: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseComplianceExport.pdsc + + export interface EnterpriseComplianceExport { + mediaUrn?: string; + isManifestFile: boolean; + url?: string; + assetUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseComplianceRequestScope.pdsc + + export type EnterpriseComplianceRequestScope = 'MEMBER_DATA' | 'ENTERPRISE_DATA'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseComplianceRequestUpdateEvent.pdsc + + export interface EnterpriseComplianceRequestUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + enterpriseApplicationUrn: string; + requestUrn: string; + component?: EnterpriseComplianceComponent; + status: ComplianceRequestStatus; + task: string; + errorMessages?: string[]; + exports?: Array; + estimatedDeletionTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseGroupEvent.pdsc + + export interface EnterpriseGroupEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + accountUrn: string; + groupUrn: string; + name?: string; + actorUrn: string; + type: EnterpriseGroupOperation; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseGroupItemEvent.pdsc + + export interface EnterpriseGroupItemEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + accountUrn: string; + groupUrn: string; + itemUrn: string; + actorUrn: string; + type: EnterpriseGroupItemOperation; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseGroupItemOperation.pdsc + + export type EnterpriseGroupItemOperation = 'UPSERT' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseGroupOperation.pdsc + + export type EnterpriseGroupOperation = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseImpressionEvent.pdsc + + export interface EnterpriseImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + userType: EnterpriseUserType; + enterpriseBusinessUrn?: string; + enterpriseContractUrn?: string; + enterpriseInvoiceUrn?: string; + pageNumber?: number; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseLicenseActivationEvent.pdsc + + export interface EnterpriseLicenseActivationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + accountUrn: string; + budgetGroupUrn: string; + licenseTypeUrn: string; + profileUrn: string; + applicationUrn: string; + memberUrn?: string; + applicationInstanceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseLicenseActivationReminderEvent.pdsc + + export interface EnterpriseLicenseActivationReminderEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + enterpriseAccountUrn: string; + enterpriseApplicationUrn: string; + enterpriseApplicationInstanceUrn: string; + enterpriseBudgetGroupUrn: string; + enterpriseLicenseTypeUrns: string[]; + enterpriseProfileUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseLicenseAgreementEvent.pdsc + + export interface EnterpriseLicenseAgreementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profileUrn: string; + applicationUrn: string; + version: number; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseLicenseProvisioningEvent.pdsc + + export interface EnterpriseLicenseProvisioningEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + budgetGroupUrn: string; + adminUrns: string[]; + provisioningInfo: EnterpriseLicenseProvisioningInfo[]; + accountUrn: string; + applicationUrn: string; + applicationInstanceUrn: string; + applicationData?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseLicenseProvisioningInfo.pdsc + + export interface EnterpriseLicenseProvisioningInfo { + licenseTypeUrn: string; + orderLineUrn?: string; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseLicenseReassignmentAbuseEvent.pdsc + + export interface EnterpriseLicenseReassignmentAbuseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + applicationUrn: string; + applicationInstanceUrn: string; + licenseTypeUrn: string; + licenseAllocationCount: number; + licenseAssignmentHistoryCount: number; + licenseAssignmentHistoryCountLimit: number; + licenseReassignmentAbusePreventionPercentage: number; + abuseTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseLicenseReassignmentWarningEvent.pdsc + + export interface EnterpriseLicenseReassignmentWarningEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + applicationUrn: string; + applicationInstanceUrn: string; + licenseTypeUrn: string; + licenseAllocationCount: number; + licenseAssignmentHistoryCount: number; + licenseAssignmentHistoryCountLimit: number; + licenseReassignmentAbusePreventionPercentage: number; + notificationTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseLicenseReplacementEvent.pdsc + + export interface EnterpriseLicenseReplacementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + budgetGroupUrn: string; + profileUrn: string; + applicationUrn: string; + applicationInstanceUrn: string; + previousLicenseTypeUrns: string[]; + currentLicenseTypeUrns: string[]; + actorUrn: string; + creationMethod?: Com.Linkedin.Avro2pegasus.Events.CreationMethod; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseMemberBindingEvent.pdsc + + export interface EnterpriseMemberBindingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profileUrn: string; + memberUrn?: string; + accountUrn: string; + enterpriseApplicationInstanceUrn?: string; + operation?: Operation; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseMemberLoginErrorType.pdsc + + export type EnterpriseMemberLoginErrorType = + | 'LIAT_NOT_AVAILABLE' + | 'SSO_REQUIRED' + | 'MEMBER_MISMATCH' + | 'ENTERPRISE_PROFILE_NOT_FOUND' + | 'ENTERPRISE_PROFILE_NOT_IN_RIGHT_FORMAT'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterprisePinotAuditedOperationEvent.pdsc + + export interface EnterprisePinotAuditedOperationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountId: number; + applicationInstanceId: number; + customerId: number; + actorUrns: string[]; + targetUrns: string[]; + targetTypeId: number; + operationTypeId?: number; + operationResultId: number; + operationTime: number; + actionType?: string; + changedDataValues?: string; + existingDataValues?: string; + eventOriginationService: string; + treeId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseProfileActivityEvent.pdsc + + export interface EnterpriseProfileActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + accountUrn: string; + profileUrn: string; + applicationInstanceUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseProfileMergeEvent.pdsc + + export interface EnterpriseProfileMergeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + accountUrn: string; + sourceProfileUrn: string; + destinationProfileUrn: string; + mergeScenario: ProfileMergeScenario; + errors: ProfileMergeError[]; + assignedLicensesKeys: LicenseAssignmentKey[]; + assignedRoleUrns: string[]; + assignedGroupUrns: string[]; + actorUrn: string; + assignedRoleKeys?: RoleAssignmentKey[]; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseRoleAssignmentEvent.pdsc + + export interface EnterpriseRoleAssignmentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + ownerUrn: string; + roleUrn: string; + targetUrn: string; + accountUrn: string; + applicationInstanceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseRoleAssignmentItem.pdsc + + export interface EnterpriseRoleAssignmentItem { + roleUrn: string; + targetUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseRoleAssignmentsEvent.pdsc + + export interface EnterpriseRoleAssignmentsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + roleAssignmentInfo: EnterpriseRoleAssignmentItem[]; + accountUrn: string; + ownerUrn: string; + roleAssignmentsType: EnterpriseRoleAssignmentType; + applicationInstanceUrn?: string; + applicationUrn?: string; + actor?: string; + creationMethod?: Com.Linkedin.Avro2pegasus.Events.CreationMethod; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseRoleAssignmentType.pdsc + + export type EnterpriseRoleAssignmentType = 'ASSIGN' | 'REVOKE' | 'PARK'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseScimOperation.pdsc + + export type EnterpriseScimOperation = 'CREATE' | 'UPDATE' | 'DELETE' | 'GET' | 'QUERY'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseScimRequestEvent.pdsc + + export interface EnterpriseScimRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + profileUrn?: string; + groupUrn?: string; + applicationInstanceUrn?: string; + scimApplicationSettingUrn: string; + licenseAssignments: ScimLicenseAssignment[]; + isDataSyncRequest: boolean; + operationType: EnterpriseScimOperation; + resourceType: EnterpriseScimResource; + isSuccess: boolean; + errorMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseScimResource.pdsc + + export type EnterpriseScimResource = 'USER' | 'GROUP'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseServiceCallToEspressoEvent.pdsc + + export interface EnterpriseServiceCallToEspressoEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rpcTraceTokens: RpcTraceToken[]; + databaseName: string; + tableName: string; + partitionKey: string; + cuConsumption: number; + cuType: CuType; + treeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + partitionId?: number; + servedHost?: string; + callTime?: number; + espressoKeyList?: fullEspressoKey[]; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseSftpFileActionEvent.pdsc + + export interface EnterpriseSftpFileActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mediaUrn?: string; + actionType: EnterpriseSftpFileActionType; + targetUrn?: string; + developerApplicationUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseSftpFileActionType.pdsc + + export type EnterpriseSftpFileActionType = 'GET' | 'PUT' | 'DELETE' | 'MKDIR' | 'RMDIR'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseSsoLoginErrorType.pdsc + + export type EnterpriseSsoLoginErrorType = + | 'SSO_SETTING_NOT_FOUND' + | 'SAML_RESPONSE_DECODING_FAILED' + | 'SAML_RESPONSE_STATUS_CODE_NOT_SUCCESS' + | 'ISSUER_NOT_FOUND_IN_ASSERTION' + | 'ISSUER_MISMATCH' + | 'SAML_RESPONSE_REPLAY_VALIDATION_FAILED' + | 'SIGNATURE_NOT_VALID' + | 'ASSERTION_NOT_VALID' + | 'NO_PROFILE_AND_NO_JIT' + | 'JIT_PROVISIONING_FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseSSORequestEvent.pdsc + + export interface EnterpriseSSORequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + accountUrn: string; + applicationUrn?: string; + applicationInstanceUrn?: string; + profileUrn?: string; + authenticationUrl: string; + samlRequest?: SamlRequest; + authenticationModeUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/EnterpriseUserType.pdsc + + export type EnterpriseUserType = 'CONTRACT_ADMIN' | 'BILLING_ADMIN' | 'INTERNAL_USER' | 'EXTERNAL_USER'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/fullEspressoKey.pdsc + + export interface fullEspressoKey { + FullEspressoKeyArray: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/LicenseAssignmentKey.pdsc + + export interface LicenseAssignmentKey { + budgetGroupUrn: string; + licenseTypeUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/LSSTargetScope.pdsc + + export interface LSSTargetScope { + contractUrn: string; + seatUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/LTSContractAndSeat.pdsc + + export interface LTSContractAndSeat { + contract: string; + seat?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/LTSTargetScope.pdsc + + export interface LTSTargetScope { + component: EnterpriseComplianceComponent; + contractAndSeats: LTSContractAndSeat[]; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/MemberBindingStatus.pdsc + + export type MemberBindingStatus = 'CONFIRMED' | 'UNCONFIRMED'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/MobileAuthenticationMode.pdsc + + export type MobileAuthenticationMode = 'WEBVIEW' | 'BROWSER'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/NonSsoAuthType.pdsc + + export type NonSsoAuthType = 'Member' | 'Partial'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/Operation.pdsc + + export type Operation = 'BIND' | 'UNBIND'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/OperationResult.pdsc + + export type OperationResult = 'SUCCESS' | 'ERROR' | 'FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/OperationType.pdsc + + export type OperationType = 'CREATE' | 'UPDATE' | 'DELETE' | 'ACTION' | 'USER_ACTION'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/OriginationService.pdsc + + export type OriginationService = + | 'ENTERPRISE_PLATFORM' + | 'LEARNING' + | 'ELEVATE' + | 'SALES' + | 'LOOKUP' + | 'RECRUITER' + | 'REFERRALS' + | 'ACCOUNT_CENTER' + | 'SUPPORT_PORTAL' + | 'CUSTOMER_SUPPORT_PORTAL' + | 'COMMERCE_PLATFORM' + | 'CUSTOMER_MASTER'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ProfileMergeError.pdsc + + export interface ProfileMergeError { + failedStep: ProfileMergeStep; + message?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ProfileMergeScenario.pdsc + + export type ProfileMergeScenario = 'MANUAL_TRIGGERED' | 'MEMBER_BINDING' | 'PROFILE_UPDATE'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ProfileMergeStep.pdsc + + export type ProfileMergeStep = + | 'POPULATE_PROFILE' + | 'MOVE_GROUP_ITEMS' + | 'MOVE_LICENSE_ASSIGNMENTS' + | 'MOVE_ROLE_ASSIGNMENTS' + | 'REMOVE_SOURCE_PROFILES' + | 'MOVE_PROFILE_APPLICATION_INSTANCE_VIEWS' + | 'VALIDATE_PROFILES' + | 'MOVE_PROFILE_ATTRIBUTES'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/RoleAssignmentKey.pdsc + + export interface RoleAssignmentKey { + aclRoleUrn: string; + applicationInstanceUrn?: string; + targetUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/RpcTraceToken.pdsc + + export interface RpcTraceToken { + machineName: string; + appName: string; + context?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/SamlAttribute.pdsc + + export interface SamlAttribute { + attributeName: string; + attributeValues: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/SamlRequest.pdsc + + export interface SamlRequest { + requestId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/SamlResponse.pdsc + + export interface SamlResponse { + inResponseTo?: string; + nameId: string; + issuer: string; + isSignatureValid: boolean; + attributes?: SamlAttribute[]; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/SamlResponseV2.pdsc + + export interface SamlResponseV2 { + samlRequestId?: string; + nameId: string; + issuer: string; + attributes?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ScimLicenseAssignment.pdsc + + export interface ScimLicenseAssignment { + budgetGroupUrn: string; + licenseTypeUrn: string; + isAssigned: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/ServiceCallToEspressoEventV2.pdsc + + export interface ServiceCallToEspressoEventV2 { + header: Com.Linkedin.Avro2pegasus.Events.Monitoring.EventHeader; + rpcTraceTokens: RpcTraceToken[]; + databaseName: string; + tableName: string; + cuConsumption: number; + cuType: CuType; + treeId?: Com.Linkedin.Avro2pegasus.Events.Monitoring.fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/SsoAuthenticationDetails.pdsc + + export interface SsoAuthenticationDetails { + ssoType: SSOType; + isAutoAssignLicenseConfigured: boolean; + isAutoAssignLicenseOccurred: boolean; + samlResponse?: SamlResponseV2; + encodedSamlResponse?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/SSOType.pdsc + + export type SSOType = 'SAML' | 'OpenID' | 'LTI' | 'CAS' | 'GOOGLE_OAUTH' | 'LIBRARY_AUTHENTICATION'; + // Generated from: com/linkedin/avro2pegasus/events/enterprise/SubrequestKeyItem.pdsc + + export interface SubrequestKeyItem { + requestId: string; + enterpriseApplicationUrn: string; + component: EnterpriseComplianceComponent; + } + // Generated from: com/linkedin/avro2pegasus/events/enterprise/TargetType.pdsc + + export type TargetType = + | 'ACCOUNT' + | 'PROFILE' + | 'LICENSE_ASSIGNMENT' + | 'LICENSE_ALLOCATION' + | 'GROUP' + | 'GROUP_ITEM' + | 'BUDGET_GROUP' + | 'APPLICATION_INSTANCE' + | 'LICENSE_USER_AGREEMENT' + | 'PROFILE_UPLOAD_JOB' + | 'PROFILE_EXPORT_JOB' + | 'ROLE_ASSIGNMENT' + | 'ACCOUNT_SETTING' + | 'APPLICATION_INSTANCE_SETTING' + | 'APPLICATION_INSTANCE_STATUS' + | 'APPLICATION_SETTING' + | 'AUTO_PROVISIONING' + | 'COLD_SIGNUP_CONFIGURATION' + | 'DEVELOPER_APPLICATION' + | 'FULFILLMENT_HANDLER' + | 'LICENSE_ALLOCATION_TRANSACTION' + | 'PROFILE_ACTIVATION_LINK' + | 'PROFILE_CONFIGURATION' + | 'PROVISION_ALLOCATION_CONFIGURATION' + | 'PROVISIONING' + | 'SCIM_APPLICATION_SETTING' + | 'UPLOAD_JOBS' + | 'SCIM_GROUP' + | 'SCIM_USER' + | 'LOGIN_AS_SEAT_ADMIN' + | 'LOGIN_AS_SEAT_PROFILE' + | 'OTHER' + | 'GROUP_OWNER' + | 'LICENSE_COMPLIANCE_CONFIGURATION' + | 'ACCOUNT_AUTHENTICATION_MODE' + | 'PRODUCT_ALLOCATION_TRANSACTION'; + } + namespace Entities { + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipCompanyActionEvent.pdsc + + export interface FlagshipCompanyActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + subItemUrn?: string; + company: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipCompanyImpressionItem.pdsc + + export interface FlagshipCompanyImpressionItem { + itemTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleTime: number; + duration?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + urns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipCompanyItemImpressionEvent.pdsc + + export interface FlagshipCompanyItemImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + company: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + items: FlagshipCompanyImpressionItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipCompanyItemType.pdsc + + export type FlagshipCompanyItemType = + | 'RECENT_UPDATES' + | 'ALL_JOBS' + | 'COMPANY_EMPLOYEES' + | 'IMMEDIATE_CONNECTIONS' + | 'SECOND_DEGREE_CONNECTIONS' + | 'IN_COMMON_PEOPLE' + | 'IN_COMMON_COMPANIES' + | 'IN_COMMON_SCHOOLS' + | 'ABOUT' + | 'MATCHED_JOBS' + | 'CAREERS_MATCHED_JOBS' + | 'DETAILS' + | 'LEADERSHIP' + | 'SHOWCASES' + | 'SIMILAR_COMPANIES' + | 'LOCATION' + | 'CAREER_TITLES' + | 'CAREER_RESOURCES' + | 'CAREER_EMPLOYEE_QUOTES' + | 'CAREER_INFO' + | 'CAREER_ADDITIONAL_INFO'; + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipCompanyServedEvent.pdsc + + export interface FlagshipCompanyServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + company: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + items: FlagshipCompanyServedItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipCompanyServedItem.pdsc + + export interface FlagshipCompanyServedItem { + itemTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + itemType: FlagshipCompanyItemType; + urns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipCompanyViewEvent.pdsc + + export interface FlagshipCompanyViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + company: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipGroupActionEvent.pdsc + + export interface FlagshipGroupActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + subItemUrn?: string; + group: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipGroupImpressionItem.pdsc + + export interface FlagshipGroupImpressionItem { + itemTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleTime: number; + duration?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + urns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipGroupItemImpressionEvent.pdsc + + export interface FlagshipGroupItemImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + group: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + items: FlagshipGroupImpressionItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipGroupItemType.pdsc + + export type FlagshipGroupItemType = 'SIMILAR_GROUPS' | 'ABOUT' | 'RULES' | 'OWNERS' | 'ADMINS' | 'MEMBERS'; + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipGroupServedEvent.pdsc + + export interface FlagshipGroupServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + group: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + items: FlagshipGroupServedItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipGroupServedItem.pdsc + + export interface FlagshipGroupServedItem { + itemTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + itemType: FlagshipGroupItemType; + urns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipGroupViewEvent.pdsc + + export interface FlagshipGroupViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + group: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipJobActionEvent.pdsc + + export interface FlagshipJobActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + subItemUrn?: string; + job: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipJobImpressionItem.pdsc + + export interface FlagshipJobImpressionItem { + itemTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleTime: number; + duration?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + urns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipJobItemImpressionEvent.pdsc + + export interface FlagshipJobItemImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + job: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + items: FlagshipJobImpressionItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipJobItemType.pdsc + + export type FlagshipJobItemType = + | 'APPLICANT_RANKING_PREMIUM' + | 'COMPANY_GROWTH_PREMIUM' + | 'NUMBER_OF_APPLICANTS_UPSELL' + | 'COMPANY_GROWTH_UPSELL' + | 'DESCRIPTION' + | 'JOB_POSTER' + | 'POSTER' + | 'IMMEDIATE_CONNECTIONS' + | 'SIMILAR_JOB_TITLES_EMPLOYEES' + | 'IN_COMMON_COMPANIES' + | 'IN_COMMON_SCHOOLS' + | 'BASIC_COMPANY_INFO' + | 'SIMILAR_JOBS' + | 'SKILLS_AND_EXPERIENCE' + | 'JOB_DETAILS' + | 'RECENT_UPDATES' + | 'APPLICANT_RANKING' + | 'SKILL_ANALYTICS' + | 'SENIORITY_ANALYTICS' + | 'EDUCATION_ANALYTICS' + | 'HIRING_TRENDS' + | 'TOP_COMPANIES' + | 'TOP_SCHOOLS'; + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipJobServedEvent.pdsc + + export interface FlagshipJobServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + job: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + items: FlagshipJobServedItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipJobServedItem.pdsc + + export interface FlagshipJobServedItem { + itemTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + itemType: FlagshipJobItemType; + urns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipJobViewEvent.pdsc + + export interface FlagshipJobViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + job: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipSchoolActionEvent.pdsc + + export interface FlagshipSchoolActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + subItemUrn?: string; + school: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipSchoolImpressionItem.pdsc + + export interface FlagshipSchoolImpressionItem { + itemTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleTime: number; + duration?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + urns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipSchoolItemImpressionEvent.pdsc + + export interface FlagshipSchoolItemImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + school: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + items: FlagshipSchoolImpressionItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipSchoolItemType.pdsc + + export type FlagshipSchoolItemType = + | 'RECENT_UPDATES' + | 'IMMEDIATE_CONNECTIONS' + | 'ABOUT' + | 'DETAILS' + | 'SIMILAR_SCHOOLS' + | 'SCHOOL_RANKING' + | 'NOTABLE_ALUMNI' + | 'SCHOOL_FACETS' + | 'ALUMNI_COMPANIES' + | 'STUDENTS_AND_ALUMNI' + | 'FINANCIAL_INFORMATION' + | 'STUDENTS_AND_FACULTY'; + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipSchoolServedEvent.pdsc + + export interface FlagshipSchoolServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + school: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + items: FlagshipSchoolServedItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipSchoolServedItem.pdsc + + export interface FlagshipSchoolServedItem { + itemTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + itemType: FlagshipSchoolItemType; + urns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipSchoolViewEvent.pdsc + + export interface FlagshipSchoolViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + school: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipShowcaseActionEvent.pdsc + + export interface FlagshipShowcaseActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + subItemUrn?: string; + showcase: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipShowcaseImpressionItem.pdsc + + export interface FlagshipShowcaseImpressionItem { + itemTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleTime: number; + duration?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + urns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipShowcaseItemImpressionEvent.pdsc + + export interface FlagshipShowcaseItemImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + showcase: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + items: FlagshipShowcaseImpressionItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipShowcaseItemType.pdsc + + export type FlagshipShowcaseItemType = + | 'RECENT_UPDATES' + | 'ALL_JOBS' + | 'COMPANY_EMPLOYEES' + | 'IMMEDIATE_CONNECTIONS' + | 'SECOND_DEGREE_CONNECTIONS' + | 'IN_COMMON_PEOPLE' + | 'IN_COMMON_COMPANIES' + | 'IN_COMMON_SCHOOLS' + | 'ABOUT' + | 'MATCHED_JOBS' + | 'CAREERS_MATCHED_JOBS' + | 'DETAILS' + | 'LEADERSHIP' + | 'SHOWCASES' + | 'SIMILAR_COMPANIES' + | 'LOCATION' + | 'CAREER_TITLES' + | 'CAREER_RESOURCES' + | 'CAREER_EMPLOYEE_QUOTES' + | 'CAREER_INFO' + | 'CAREER_ADDITIONAL_INFO'; + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipShowcaseServedEvent.pdsc + + export interface FlagshipShowcaseServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + showcase: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + items: FlagshipShowcaseServedItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipShowcaseServedItem.pdsc + + export interface FlagshipShowcaseServedItem { + itemTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + itemType: FlagshipShowcaseItemType; + urns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/FlagshipShowcaseViewEvent.pdsc + + export interface FlagshipShowcaseViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + showcase: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/RelevanceReasonResponseEvent.pdsc + + export interface RelevanceReasonResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + results: RelevanceReasonResult[]; + clientTrackingId: string; + featureLocationType?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobFeatureLocationType; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/RelevanceReasonResult.pdsc + + export interface RelevanceReasonResult { + requestedFlavors: Com.Linkedin.Avro2pegasus.Events.Jobs.JobRecommendationFlavor[]; + validScoredFlavors: ScoredJobRecommendationFlavor[]; + selectedFlavor?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobRecommendationFlavor; + memberUrn: string; + entityUrn: string; + model?: Com.Linkedin.Avro2pegasus.Events.RelevanceReasonRankingModel; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/RelevanceReasonSelectionEvent.pdsc + + export interface RelevanceReasonSelectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestedFlavors: Com.Linkedin.Avro2pegasus.Events.Jobs.JobRecommendationFlavor[]; + validScoredFlavors: ScoredJobRecommendationFlavor[]; + selectedFlavor?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobRecommendationFlavor; + entityUrn: string; + trackingId: string; + model: string; + featureLocationType?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobFeatureLocationType; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/ScoredJobRecommendationFlavor.pdsc + + export interface ScoredJobRecommendationFlavor { + jobFlavor: Com.Linkedin.Avro2pegasus.Events.Jobs.JobRecommendationFlavor; + score: number; + } + namespace Organization { + // Generated from: com/linkedin/avro2pegasus/events/entities/organization/FlagshipOrganizationActionEvent.pdsc + + export interface FlagshipOrganizationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organization: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + module: Com.Linkedin.Avro2pegasus.Common.Entities.FlagshipOrganizationModuleType; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + subItemUrn?: string; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/organization/FlagshipOrganizationModuleImpressionEvent.pdsc + + export interface FlagshipOrganizationModuleImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organization: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + appearanceTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + subItemUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/entities/organization/FlagshipOrganizationViewEvent.pdsc + + export interface FlagshipOrganizationViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organization: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + module?: Com.Linkedin.Avro2pegasus.Common.Entities.FlagshipOrganizationModuleType; + isPaidOrganization: boolean; + isPremiumUser: boolean; + targetedContent?: Com.Linkedin.Avro2pegasus.Common.Entities.FlagshipOrganizationTargetedContent; + } + } + } + namespace Errors { + // Generated from: com/linkedin/avro2pegasus/events/errors/BrowserTelemetryEvent.pdsc + + export interface BrowserTelemetryEvent { + eventTime: number; + action: BrowserTelemetryEventAction; + element?: string; + parameters?: { [id: string]: string }; + result?: BrowserTelemetryEventResult; + } + // Generated from: com/linkedin/avro2pegasus/events/errors/BrowserTelemetryEventAction.pdsc + + export type BrowserTelemetryEventAction = 'CLICK' | 'INPUT' | 'GET' | 'POST' | 'CONSOLE'; + // Generated from: com/linkedin/avro2pegasus/events/errors/BrowserTelemetryEventResult.pdsc + + export interface BrowserTelemetryEventResult { + status?: number; + body?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/errors/JavaScriptErrorEvent.pdsc + + export interface JavaScriptErrorEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + error: Com.Linkedin.Avro2pegasus.Events.Common.Exception; + protocol: Protocol; + host: string; + path: string; + query: string; + hash: string; + clientLibraryVersion?: string; + tags?: string[]; + originPageKey: string; + originTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + originAppId?: string; + originService?: string; + originServiceInstance?: string; + originServiceVersion?: string; + originTrackingInfo?: Com.Linkedin.Avro2pegasus.Events.OriginTrackingInfo; + telemetryTimelineEvents?: BrowserTelemetryEvent[]; + chromeVersion?: string; + browserDevice?: Com.Linkedin.Avro2pegasus.Events.Common.Webframeworks.BrowserDeviceStats; + callTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/errors/Protocol.pdsc + + export type Protocol = 'HTTP' | 'HTTPS'; + } + namespace Export { + // Generated from: com/linkedin/avro2pegasus/events/export/DataExportCompletionEvent.pdsc + + export interface DataExportCompletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + exportResults: ExportResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/export/DataTypeEnum.pdsc + + export type DataTypeEnum = + | 'ADDITIONAL_HONORS' + | 'ADDITIONAL_ORGANIZATIONS' + | 'ARTICLES' + | 'CAUSES_YOU_CARE_ABOUT' + | 'CERTIFICATIONS' + | 'CONTACTS' + | 'CONNECTIONS' + | 'COURSES' + | 'EDUCATION' + | 'EMAIL_ADDRESSES' + | 'HONORS' + | 'INBOX' + | 'INTERESTS' + | 'INVITATIONS' + | 'LANGUAGES' + | 'ORGANIZATIONS' + | 'ORGANIZATIONS_YOU_SUPPORT' + | 'PATENTS' + | 'PHONE_NUMBERS' + | 'POSITIONS' + | 'PROFILE' + | 'PROJECTS' + | 'PUBLICATIONS' + | 'SKILLS' + | 'TEST_SCORES' + | 'RECOMMENDATIONS_GIVEN' + | 'RECOMMENDATIONS_RECEIVED' + | 'REGISTRATION' + | 'RICH_MEDIA' + | 'VIDEOS' + | 'ANSWERS' + | 'QUESTIONS' + | 'JOB_POSTINGS' + | 'SAVED_JOB_ALERTS' + | 'SAVED_PEOPLE_SEARCHES' + | 'GROUPS' + | 'LINKEDIN_LEARNING' + | 'JOB_APPLICATIONS' + | 'JOB_APPLICANT_SAVED_ANSWERS' + | 'PROFINDER_PROJECTS' + | 'PROFINDER_PROPOSALS' + | 'PROFINDER_PROVIDER_PREFERENCES' + | 'PROFINDER_REVIEWS_GIVEN' + | 'PROFINDER_REVIEWS_RECEIVED' + | 'CALENDARS' + | 'JOB_SEEKER_PREFERENCES' + | 'JOB_APPLICATION_ANSWERS' + | 'SAVED_JOBS' + | 'RECEIPTS' + | 'RICH_MEDIA_LOCATIONS'; + // Generated from: com/linkedin/avro2pegasus/events/export/ExportResult.pdsc + + export interface ExportResult { + dataType: DataTypeEnum; + exportSuccessPercentage: number; + } + } + namespace Externalapi { + // Generated from: com/linkedin/avro2pegasus/events/externalapi/ExternalRestliAPIAccessEvent.pdsc + + export interface ExternalRestliAPIAccessEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + caller?: Com.Linkedin.Avro2pegasus.Events.Common.Externalapi.CallerInfo; + correlationInfo: Com.Linkedin.Avro2pegasus.Events.Common.Externalapi.ClientCorrelationInfo; + rawRequest: Com.Linkedin.Avro2pegasus.Events.Common.Externalapi.RawRequest; + primaryResource?: Com.Linkedin.Avro2pegasus.Events.Common.Externalapi.ParsedResourceWithRestriction; + decoResources?: Com.Linkedin.Avro2pegasus.Events.Common.Externalapi.ParsedResourceWithRestriction[]; + response: Com.Linkedin.Avro2pegasus.Events.Common.Externalapi.ResponseInfo; + } + } + namespace Externalsharing { + // Generated from: com/linkedin/avro2pegasus/events/externalsharing/BasicExternalShareInfo.pdsc + + export interface BasicExternalShareInfo { + externalId?: number; + externalHandle?: string; + shareText: string; + linkToAppend?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/externalsharing/FacebookShareEvent.pdsc + + export interface FacebookShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + basicExternalShareInfo: BasicExternalShareInfo; + link?: string; + linkName?: string; + linkCaption?: string; + linkDescription?: string; + pictureUrl?: string; + sourceUrl?: string; + actions?: FacebookShareEventAction[]; + privacySetting: FacebookShareEventPrivacySetting; + } + // Generated from: com/linkedin/avro2pegasus/events/externalsharing/FacebookShareEventAction.pdsc + + export interface FacebookShareEventAction { + name: string; + link: string; + } + // Generated from: com/linkedin/avro2pegasus/events/externalsharing/FacebookShareEventPrivacySetting.pdsc + + export interface FacebookShareEventPrivacySetting { + value: string; + allow?: string; + deny?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/externalsharing/TencentShareEvent.pdsc + + export interface TencentShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + basicExternalShareInfo: BasicExternalShareInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/externalsharing/TwitterShareEvent.pdsc + + export interface TwitterShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + basicExternalShareInfo: BasicExternalShareInfo; + mentions?: string; + content?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/externalsharing/WeiboShareEvent.pdsc + + export interface WeiboShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + basicExternalShareInfo: BasicExternalShareInfo; + } + } + namespace Externaltracking { + // Generated from: com/linkedin/avro2pegasus/events/externaltracking/ExternalTrackingInitiator.pdsc + + export type ExternalTrackingInitiator = 'UNKNOWN' | 'CHROME' | 'APP'; + // Generated from: com/linkedin/avro2pegasus/events/externaltracking/ExternalTrackingPageViewEvent.pdsc + + export interface ExternalTrackingPageViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + pageViewPageKey: string; + pageViewPath: string; + samplingFraction: number; + providers: ExternalTrackingProvider[]; + initiator: ExternalTrackingInitiator; + provider?: ExternalTrackingProvider; + originalTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/externaltracking/ExternalTrackingProvider.pdsc + + export type ExternalTrackingProvider = 'COMSCORE' | 'GOOGLE_ANALYTICS' | 'NIELSEN'; + } + namespace Federator { + // Generated from: com/linkedin/avro2pegasus/events/federator/ActionDetail.pdsc + + export interface ActionDetail { + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + actionType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/ActionImpressionHeader.pdsc + + export interface ActionImpressionHeader { + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/ActionTypeEnum.pdsc + + export type ActionTypeEnum = + | 'CLICK' + | 'VIRAL' + | 'LIKE' + | 'COMMENT' + | 'SHARE' + | 'DSI' + | 'COMBINED_ACTION' + | 'DISCOUNTED_COMBINED_ACTION' + | 'RANDOM_EFFECT_CLICK' + | 'RANDOM_EFFECT_VIRAL' + | 'RANDOM_EFFECT_LIKE' + | 'RANDOM_EFFECT_COMMENT' + | 'RANDOM_EFFECT_SHARE' + | 'RANDOM_EFFECT_DSI' + | 'SKIP' + | 'CLICK_BOUNCE' + | 'SIMPSON_RESPONSE' + | 'DSE_LIKE' + | 'DSE_COMMENT' + | 'DSE_SHARE' + | 'RANDOM_EFFECT_SKIP' + | 'RANDOM_EFFECT_COHORT_CLICK' + | 'RANDOM_EFFECT_COHORT_VIRAL' + | 'RANDOM_EFFECT_COHORT_LIKE' + | 'RANDOM_EFFECT_COHORT_COMMENT' + | 'RANDOM_EFFECT_COHORT_SHARE' + | 'RANDOM_EFFECT_COHORT_SKIP'; + // Generated from: com/linkedin/avro2pegasus/events/federator/ActivityInfo.pdsc + + export interface ActivityInfo { + relationType: string; + objects: ActivityObject[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/ActivityInfo1.pdsc + + export interface ActivityInfo1 { + relationType: string; + objects: ActivityObject1[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/ActivityObject.pdsc + + export interface ActivityObject { + roleType: RoleType; + roleObject: string; + roleObjectActivityInfo?: ActivityInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/ActivityObject1.pdsc + + export interface ActivityObject1 { + id: string; + roleType: RoleType; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/AggregatedItem.pdsc + + export interface AggregatedItem { + singleItems: FederatorResult[]; + scores: Scores; + position: number; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/CampaignCostType.pdsc + + export type CampaignCostType = 'CPM' | 'CPC' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/federator/CampaignType.pdsc + + export type CampaignType = 'SSU' | 'SJYMBII' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/federator/Digest.pdsc + + export interface Digest { + singleItems: FeedItem[]; + scores: Scores; + position: number; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/EnrichedActionAndImpressionEvent.pdsc + + export interface EnrichedActionAndImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + actionImpressionHeader: ActionImpressionHeader; + rankingHeader: RankingHeader; + contextId: string; + entities: EnrichedActionImpressionEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/EnrichedActionImpressionEntity.pdsc + + export interface EnrichedActionImpressionEntity { + feedTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + aggregation?: Com.Linkedin.Avro2pegasus.Events.Feed.Aggregation; + impressionDetail?: ImpressionDetail; + actionDetail?: ActionDetail; + rankingFeatures?: NumericalRankingFeature[]; + decoratedFeedUpdateData?: Com.Linkedin.Avro2pegasus.Events.Feed.DecoratedFeedUpdateData; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/EnterpriseActionType.pdsc + + export type EnterpriseActionType = 'BROADCAST' | 'SHARE' | 'FOLLOW'; + // Generated from: com/linkedin/avro2pegasus/events/federator/Feature.pdsc + + export interface Feature { + name: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/FeatureSection.pdsc + + export interface FeatureSection { + section: string; + features: Feature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/FederatorBlendingEvent.pdsc + + export interface FederatorBlendingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + input: FederatorInput; + results: Array; + memberFeatures: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/FederatorBlendingResult.pdsc + + export interface FederatorBlendingResult { + scoredEntity: Com.Linkedin.Avro2pegasus.Events.ScoredEntity; + activityInfo?: ActivityInfo; + sponsoredFlag: SponsoredFlag; + itemFeatures: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/FederatorInput.pdsc + + export interface FederatorInput { + requestId: string; + pageKey: string; + modelId: string; + appId?: string; + viewerUrn: string; + aboutUrns: string[]; + parameters: { [id: string]: string }; + paginationToken: string; + resultOffset: number; + count: number; + locale: string; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/FederatorResult.pdsc + + export interface FederatorResult { + scoredEntity: Com.Linkedin.Avro2pegasus.Events.ScoredEntity; + activityInfo?: ActivityInfo; + scores?: Scores; + sponsoredFlag: SponsoredFlag; + blendingRequestId: string; + forExploration: boolean; + d2Resource?: string; + restliFinder?: string; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + aggregation?: Com.Linkedin.Avro2pegasus.Events.Feed.Aggregation; + decoratedFeedUpdateData?: Com.Linkedin.Avro2pegasus.Events.Feed.DecoratedFeedUpdateData; + predictedProbabilities: Probability[]; + recommendationReasons?: Com.Linkedin.Avro2pegasus.Events.Feed.Reason[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/FederatorResultEvent.pdsc + + export interface FederatorResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + input: FederatorInput; + results: Array; + aggregatedItems?: AggregatedItem[]; + sponsoredResults?: SponsoredResults; + shadowBid?: number; + sponsoredRanges?: Range[]; + minSponsoredGap?: number; + firstPageInfo?: Com.Linkedin.Avro2pegasus.Events.PagingContext; + feedHyperParameters?: FeedHyperParameter[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/FeedHyperParameter.pdsc + + export interface FeedHyperParameter { + paramName: string; + paramValue: number; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/FeedItem.pdsc + + export interface FeedItem { + result: FederatorResult; + featureSections?: FeatureSection[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/FeedScoringEvent.pdsc + + export interface FeedScoringEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + input: FederatorInput; + totalResultsComputed?: number; + digestedItems?: Digest[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/FirstPassRankerResultEvent.pdsc + + export interface FirstPassRankerResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestId: string; + pageKey: string; + ranker: string; + modelId: string; + viewerUrn: string; + aboutUrns: string[]; + parameters: { [id: string]: string }; + resultOffset: number; + count: number; + locale: string; + results: Com.Linkedin.Avro2pegasus.Events.ScoredEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/ImpressionDetail.pdsc + + export interface ImpressionDetail { + visibleAt: number; + duration?: number; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/NumericalRankingFeature.pdsc + + export interface NumericalRankingFeature { + name: string[]; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/Probability.pdsc + + export interface Probability { + actionName: ActionTypeEnum; + probability: number; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/Range.pdsc + + export interface Range { + start: number; + end: number; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/RankingEntity.pdsc + + export interface RankingEntity { + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rankingFeatures: NumericalRankingFeature[]; + urn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/RankingEvent.pdsc + + export interface RankingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rankingHeader: RankingHeader; + entities: RankingEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/RankingHeader.pdsc + + export interface RankingHeader { + modelId: string; + requestId?: string; + globalNumericalFeatures?: NumericalRankingFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/RoleType.pdsc + + export type RoleType = 'ACTOR' | 'OBJECT' | 'TARGET'; + // Generated from: com/linkedin/avro2pegasus/events/federator/SalesActionEvent.pdsc + + export interface SalesActionEvent { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + viewerUrn: string; + accountUrn?: string; + moduleKey: string; + pageKey: string; + requestId?: string; + actionType?: Com.Linkedin.Avro2pegasus.Events.UnifiedActionType; + action?: UnifiedActionEvent; + enterpriseActionType?: EnterpriseActionType; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/SalesImpressionEvent.pdsc + + export interface SalesImpressionEvent { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + viewerUrn: string; + moduleKey: string; + pageKey: string; + experimentIds?: string; + searchRequest?: Com.Linkedin.Avro2pegasus.Events.Search.GenericSearchRequest; + previousContextId?: string; + impression?: UnifiedImpressionEvent; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/Scores.pdsc + + export interface Scores { + fprScore: number; + fprUtility: number; + calibratedFprUtility: number; + sprScore: number; + adjustedSprScore: number; + sprUtility: number; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/SponsoredFlag.pdsc + + export type SponsoredFlag = 'ORGANIC' | 'SPONSORED'; + // Generated from: com/linkedin/avro2pegasus/events/federator/SponsoredItem.pdsc + + export interface SponsoredItem { + sponsoredEntityUrn: string; + campaignUrn: string; + campaignType: CampaignType; + campaignCostType: CampaignCostType; + scores: Scores; + calibrationFactor?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/SponsoredResults.pdsc + + export interface SponsoredResults { + sponsoredItems: SponsoredItem[]; + adRequestId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/UnifiedAction.pdsc + + export type UnifiedAction = + | 'CLICK' + | 'HOVER' + | 'SHARE' + | 'DELETE_SHARE' + | 'LIKE' + | 'UNLIKE' + | 'COMMENT' + | 'DELETE_COMMENT' + | 'CONNECT' + | 'FOLLOW' + | 'UNFOLLOW' + | 'HIDE' + | 'UNHIDE' + | 'SAVE' + | 'UNSAVE' + | 'SEND_MESSAGE' + | 'ADD_TAG' + | 'DELETE_TAG' + | 'ADD_NOTE' + | 'DELETE_NOTE' + | 'ADD_STATUS' + | 'DELETE_STATUS' + | 'SWIPE' + | 'PUBLISH' + | 'PHONE_CALL' + | 'SEND_SMS' + | 'ADD' + | 'DELETE' + | 'ACTIVATE' + | 'DISMISS' + | 'IMPORT' + | 'LINK' + | 'LOGIN' + | 'LOGOUT' + | 'RENEW' + | 'SEARCH' + | 'TRANSFER_OWNERSHIP' + | 'EDIT' + | 'ADD_ATTACHMENT' + | 'EXPAND' + | 'COLLAPSE' + | 'NEXT' + | 'BACK' + | 'JOIN' + | 'PLAY'; + // Generated from: com/linkedin/avro2pegasus/events/federator/UnifiedActionEvent.pdsc + + export interface UnifiedActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contextId: string; + moduleKey?: string; + pageNumber: number; + position: string; + action: UnifiedAction; + target: string; + sponsoredFlag: SponsoredFlag; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + activityInfo?: ActivityInfo; + activityInfoMap?: { [id: string]: ActivityInfo1 }; + customProperties: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/UnifiedImpressionEvent.pdsc + + export interface UnifiedImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contextId: string; + requestId?: string; + moduleKey?: string; + modelId: string; + pageNumber: number; + results: UnifiedResult[]; + customProperties: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/federator/UnifiedResult.pdsc + + export interface UnifiedResult { + scoredEntity: Com.Linkedin.Avro2pegasus.Events.ScoredEntity; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + position: string; + sponsoredFlag: SponsoredFlag; + activityInfo?: ActivityInfo; + featureMap?: { [id: string]: number }; + activityInfoMap?: { [id: string]: ActivityInfo1 }; + customProperties?: { [id: string]: string }; + } + } + namespace Feed { + // Generated from: com/linkedin/avro2pegasus/events/feed/Accessory.pdsc + + export interface Accessory { + controlUrn: string; + accessoryEntityUrn?: string; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/activityTypeEnum.pdsc + + export type activityTypeEnum = 'SPONSORED' | 'VIRAL'; + // Generated from: com/linkedin/avro2pegasus/events/feed/Aggregation.pdsc + + export interface Aggregation { + positionInAggregation: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + typeOfAggregation: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/Comment.pdsc + + export interface Comment { + trackableCommentObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + trackableUpdateObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + threadUrn: string; + commenterUrn: string; + message: string; + level: number; + visibleTime: number; + duration: number; + associatedInputControlUrn?: string; + totalReplies: number; + totalLikes: number; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + commenterBadgeInfo?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/ConversationStartersCommentSubmitActionEvent.pdsc + + export interface ConversationStartersCommentSubmitActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + feedUpdateTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + updateUrn: string; + trigger: ConversationStartersTrigger; + conversationStartersListTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + conversationStarterTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleWithoutScrolling: boolean; + index: number; + commentUrn: string; + finalState: ConversationStartersFinalState; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/ConversationStartersFinalState.pdsc + + export type ConversationStartersFinalState = 'ORIGINAL' | 'EDITED' | 'DELETED'; + // Generated from: com/linkedin/avro2pegasus/events/feed/ConversationStartersImpressionEvent.pdsc + + export interface ConversationStartersImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + trigger: ConversationStartersTrigger; + feedUpdateTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + updateUrn: string; + conversationStartersListTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + conversationStarterTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleWithoutScrolling: boolean; + index: number; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/ConversationStartersSelectActionEvent.pdsc + + export interface ConversationStartersSelectActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + feedUpdateTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + updateUrn: string; + trigger: ConversationStartersTrigger; + conversationStartersListTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + conversationStarterTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleWithoutScrolling: boolean; + index: number; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/ConversationStartersTrigger.pdsc + + export type ConversationStartersTrigger = 'FEED_LOAD' | 'DWELL_TIME' | 'COMMENT' | 'REACTION' | 'FEED_DETAIL'; + // Generated from: com/linkedin/avro2pegasus/events/feed/DecoratedFeedUpdateData.pdsc + + export interface DecoratedFeedUpdateData { + avoData: FeedUpdateActorVerbObjectData; + attributedActivityUrn?: string; + createdTime?: number; + totalLikes?: number; + totalComments?: number; + rootActivity?: RootUpdate; + activityHashtagUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/DecoratedPromptUpdateData.pdsc + + export interface DecoratedPromptUpdateData { + avoData: FeedUpdateActorVerbObjectData; + createdTime: number; + totalLikes?: number; + totalComments?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/DecoratedVideoUpdateData.pdsc + + export interface DecoratedVideoUpdateData { + avoData: VideoUpdateActorVerbObjectData; + createdTime?: number; + totalLikes?: number; + totalComments?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/deviceTypeEnum.pdsc + + export type deviceTypeEnum = 'DESKTOP' | 'MOBILE' | 'TABLET'; + // Generated from: com/linkedin/avro2pegasus/events/feed/Entity.pdsc + + export interface Entity { + urn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleTime: number; + duration?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + associatedInputControlUrn?: string; + visibleHeight?: number; + urlTreatment?: UrlTreatment; + isExcludedFromSeen?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedAccessoryImpressionEvent.pdsc + + export interface FeedAccessoryImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sourceUpdateObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + accessories: Accessory[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedActionEvent.pdsc + + export interface FeedActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + requestId: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + updateUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn?: string; + actionType?: string; + searchId?: string; + accessoryEntityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedCommentActionEvent.pdsc + + export interface FeedCommentActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackableUpdateObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + threadUrn: string; + trackableCommentObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn: string; + actionType: string; + moduleKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedCommentImpressionEvent.pdsc + + export interface FeedCommentImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + comments: Comment[]; + moduleKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedDetailServedEvent.pdsc + + export interface FeedDetailServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + update: SingleFeedUpdate; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedDetailServedV2Event.pdsc + + export interface FeedDetailServedV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + update: FeedDetailUpdate; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedDetailUpdate.pdsc + + export interface FeedDetailUpdate { + updateUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + originTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + isSponsored: boolean; + reasons?: Reason[]; + totalLikes?: number; + totalComments?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedHighlightedUpdateEvent.pdsc + + export interface FeedHighlightedUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey?: string; + sourceTrackingId?: Com.Linkedin.Avro2pegasus.Events.Messages.MessageId; + highlightedUpdateSource: highlightedUpdateSource; + highlightedUpdates: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject[]; + highlightedUpdateTypes?: HighlightedUpdateType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedImpressionEvent.pdsc + + export interface FeedImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: Entity[]; + searchId?: string; + timeZone?: string; + timeZoneOffsetMinutes?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedServedEvent.pdsc + + export interface FeedServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + requestId: string; + paginationContextId: string; + entities: FeedUpdate[]; + contextEntityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedServedV2Event.pdsc + + export interface FeedServedV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + requestId: string; + paginationToken: string; + entities: FeedUpdateV2[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedUpdate.pdsc + + export interface FeedUpdate { + updateUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + isSponsored: boolean; + aggregation?: Aggregation; + decoratedData?: DecoratedFeedUpdateData; + reasons?: Reason[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedUpdateActorVerbObjectData.pdsc + + export interface FeedUpdateActorVerbObjectData { + actorUrn: string; + verbType: string; + trackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + objectUrn?: string; + objectType?: string; + containerEntityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedUpdateNotServed.pdsc + + export interface FeedUpdateNotServed { + updateUrn: string; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + isSponsored: boolean; + aggregation?: Aggregation; + notServedReason: UpdateNotServedReasonType; + avoData?: FeedUpdateActorVerbObjectData; + serveFailureReason?: string; + servedReasons?: Reason[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedUpdateNotServedEvent.pdsc + + export interface FeedUpdateNotServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + requestId: string; + paginationContextId: string; + entities: FeedUpdateNotServed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/FeedUpdateV2.pdsc + + export interface FeedUpdateV2 { + updateUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + isSponsored: boolean; + aggregation?: Aggregation; + reasons?: Reason[]; + totalLikes?: number; + totalComments?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/highlightedUpdateSource.pdsc + + export type highlightedUpdateSource = + | 'NETWORK_UPDATES_DIGEST_EMAIL' + | 'PUSH_NOTIFICATION' + | 'DESKTOP_NOTIFICATION' + | 'EMAIL' + | 'UNKNOWN' + | 'VOYAGER_APP'; + // Generated from: com/linkedin/avro2pegasus/events/feed/HighlightedUpdateType.pdsc + + export type HighlightedUpdateType = + | 'ACCEPTED_INVITATION' + | 'FOLLOW' + | 'PROFILE_UPDATE' + | 'UNSPECIFIED' + | 'VIRAL_ACTION' + | 'AGGREGATED_ACTION' + | 'MITN' + | 'SPONSORED_UPDATE_PREVIEW'; + // Generated from: com/linkedin/avro2pegasus/events/feed/impressionTypeEnum.pdsc + + export type impressionTypeEnum = 'ONCLICK' | 'VIEWABLE'; + // Generated from: com/linkedin/avro2pegasus/events/feed/pageContextEnum.pdsc + + export type pageContextEnum = 'FEED' | 'VIDEO_WITH_FORM' | 'VIDEO_WITH_WEB_PAGE' | 'FULL_SCREEN_PLAYER'; + // Generated from: com/linkedin/avro2pegasus/events/feed/PromptActionEvent.pdsc + + export interface PromptActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + promptTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn?: string; + actionType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/PromptEntity.pdsc + + export interface PromptEntity { + promptTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleAtTime: number; + duration?: number; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + associatedInputControlUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/PromptImpressionEvent.pdsc + + export interface PromptImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: PromptEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/PromptServedEvent.pdsc + + export interface PromptServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + entities: PromptUpdate[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/PromptUpdate.pdsc + + export interface PromptUpdate { + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + isSponsored: boolean; + decoratedData: DecoratedPromptUpdateData; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/Reason.pdsc + + export type Reason = + | 'BREAKING_NEWS' + | 'DAILY_DIGEST' + | 'EDITOR_PICK' + | 'SKILL_MATCH' + | 'CONNECTION_INTEREST' + | 'SHARE_TARGETING_FOLLOW_MATCH' + | 'CONTENT_BY_PYMK_COMMON_COMPANY' + | 'CONTENT_BY_PYMK_COMMON_SCHOOL' + | 'CONTENT_BY_PYMK_MUTUAL_CONNECTIONS' + | 'CONTENT_BY_PYMK_GENERIC' + | 'TRENDING_NEWS_IN_HASHTAG' + | 'SHARE_TARGETING_GROUP_MATCH' + | 'SHARE_TARGETING_HASHTAG_MATCH' + | 'EXCLUDED_FROM_SEEN_TIMELINE' + | 'SEEN_UPDATE'; + // Generated from: com/linkedin/avro2pegasus/events/feed/RootUpdate.pdsc + + export interface RootUpdate { + activityUrn: string; + avoData: FeedUpdateActorVerbObjectData; + activityHashtagUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/SingleFeedUpdate.pdsc + + export interface SingleFeedUpdate { + updateUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + originTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + isSponsored: boolean; + decoratedData?: DecoratedFeedUpdateData; + reasons?: Reason[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/SponsoredActionEvent.pdsc + + export interface SponsoredActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredEventHeader: SponsoredEventHeader; + controlUrn: string; + webClickSessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/SponsoredCarouselCardActionEvent.pdsc + + export interface SponsoredCarouselCardActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredEventHeader: SponsoredEventHeader; + landingPageURL: string; + renderedCardIndex: number; + serverCardIndex: number; + controlUrn: string; + webClickSessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/SponsoredCarouselCardImpressionEvent.pdsc + + export interface SponsoredCarouselCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredEventHeader: SponsoredEventHeader; + renderedCardIndex: number; + serverCardIndex: number; + sequenceNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/SponsoredEventHeader.pdsc + + export interface SponsoredEventHeader { + actionType: string; + activityType: activityTypeEnum; + adTrackingCode: string; + version: string; + deviceType: deviceTypeEnum; + feedPosition: number; + swapContext?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdSwapContext; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/SponsoredImpressionEvent.pdsc + + export interface SponsoredImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredEventHeader: SponsoredEventHeader; + impressionDuration: number; + impressionType: impressionTypeEnum; + sequenceNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/SponsoredPageLifeCycleEvent.pdsc + + export interface SponsoredPageLifeCycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredEventHeader: SponsoredEventHeader; + statusCode?: number; + webClickSessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/SponsoredPageRedirectEvent.pdsc + + export interface SponsoredPageRedirectEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredEventHeader: SponsoredEventHeader; + isClientUnwrappedUrlMatchSuccessful: boolean; + redirectTime: number; + clientUnwrappedURL: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/SponsoredURLRedirectEvent.pdsc + + export interface SponsoredURLRedirectEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredEventHeader: SponsoredEventHeader; + isClientUnwrappedUrlMatchSuccessful?: boolean; + redirectDuration: number; + clientUnwrappedURL: string; + webClickSessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/SponsoredVideoViewEvent.pdsc + + export interface SponsoredVideoViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sponsoredEventHeader: SponsoredEventHeader; + fullVideoDuration: number; + isVideoAudible: boolean; + pageContext: pageContextEnum; + sequenceNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/UpdateNotServedReasonType.pdsc + + export type UpdateNotServedReasonType = + | 'UNRESOLVABLE_ENTITY' + | 'INCOMPLETE_DECORATION' + | 'UNSUPPORTED_UPDATE' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/feed/UrlTreatment.pdsc + + export type UrlTreatment = 'AMP' | 'FULL' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/feed/VideoActionEvent.pdsc + + export interface VideoActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + videoTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn?: string; + actionType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/VideoEntity.pdsc + + export interface VideoEntity { + videoTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleAtTime: number; + duration?: number; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + associatedInputControlUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/VideoImpressionEvent.pdsc + + export interface VideoImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: VideoEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/VideoServedEvent.pdsc + + export interface VideoServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + entities: VideoUpdate[]; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/VideoUpdate.pdsc + + export interface VideoUpdate { + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + isSponsored: boolean; + decoratedData: DecoratedVideoUpdateData; + } + // Generated from: com/linkedin/avro2pegasus/events/feed/VideoUpdateActorVerbObjectData.pdsc + + export interface VideoUpdateActorVerbObjectData { + actorUrn: string; + verbType: string; + videoTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + objectType: string; + } + } + namespace Firedrill { + // Generated from: com/linkedin/avro2pegasus/events/firedrill/FiredrillStateChangeEvent.pdsc + + export interface FiredrillStateChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + firedrillUrn: string; + notes?: string; + oldState: Com.Linkedin.Avro2pegasus.Events.Common.Firedrill.FiredrillEventState; + newState: Com.Linkedin.Avro2pegasus.Events.Common.Firedrill.FiredrillEventState; + } + } + namespace Follow { + // Generated from: com/linkedin/avro2pegasus/events/follow/FollowAction.pdsc + + export type FollowAction = 'start' | 'stop'; + // Generated from: com/linkedin/avro2pegasus/events/follow/FollowActionEvent.pdsc + + export interface FollowActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/follow/FollowActionStatus.pdsc + + export type FollowActionStatus = 'SUCCESS' | 'FAILURE' | 'DUPLICATE'; + // Generated from: com/linkedin/avro2pegasus/events/follow/FollowEvent.pdsc + + export interface FollowEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + module?: string; + entityType: string; + entityId: number; + action: FollowAction; + notificationType?: NotificationType; + paid: boolean; + campaignId?: number; + creativeId?: number; + status?: FollowActionStatus; + followId?: number; + creationTime?: number; + memberInfo?: Com.Linkedin.Avro2pegasus.Events.MemberInfo; + distance?: number; + day?: number; + weeksSinceEpoch?: number; + month?: number; + historical?: boolean; + historicalId?: number; + followType?: FollowType; + entityUrn?: string; + autoFollow: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/follow/FollowImpressionEvent.pdsc + + export interface FollowImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + displayModule: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowDisplayModule; + entities: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/follow/FollowReasonRecommenderServedEvent.pdsc + + export interface FollowReasonRecommenderServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + useCase: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationUseCase; + resultTypes: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationResultType[]; + contexts: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationContext[]; + reasons: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationReason[]; + minRecsPerReason?: number; + maxRecsPerReason?: number; + locale?: string; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + lixes: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationLix[]; + ranker: string; + viewerCohort: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationViewerCohort; + models: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationModel[]; + finalContexts: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationContext[]; + queryFeatures: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationFeature[]; + results: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowReasonRecommenderResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/follow/FollowRecommenderServedEvent.pdsc + + export interface FollowRecommenderServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + useCase: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationUseCase; + resultTypes: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationResultType[]; + contexts: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationContext[]; + locale?: string; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + lixes: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationLix[]; + ranker: string; + viewerCohort: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationViewerCohort; + models: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationModel[]; + finalContexts: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationContext[]; + queryFeatures: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommendationFeature[]; + results: Com.Linkedin.Avro2pegasus.Events.Common.Follow.FollowRecommenderResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/follow/FollowType.pdsc + + export type FollowType = 'M2M_AUTO_FOLLOW_ON_INVITE' | 'M2M_MANUAL_FOLLOW'; + // Generated from: com/linkedin/avro2pegasus/events/follow/NotificationType.pdsc + + export type NotificationType = 'PEOPLE_FOLLOW' | 'PEOPLE_FOLLOW_MILESTONE'; + } + namespace Forecast { + // Generated from: com/linkedin/avro2pegasus/events/forecast/BidType.pdsc + + export type BidType = 'CPC' | 'CPM' | 'CPA'; + // Generated from: com/linkedin/avro2pegasus/events/forecast/DataPoint.pdsc + + export interface DataPoint { + time: number; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/forecast/DateRange.pdsc + + export interface DateRange { + startDate: number; + endDate: number; + granularity: number; + } + // Generated from: com/linkedin/avro2pegasus/events/forecast/Forecast.pdsc + + export interface Forecast { + app: string; + algorithm: string; + schemaVersion: number; + metric: string; + filters: string[]; + dateRange: DateRange; + normalizedDateRange: DateRange; + timeSeries: DataPoint[]; + forecastType?: ForecastType; + forecastVersion?: string; + competitingBidInUsd?: number; + bidType?: BidType; + frequencyCaps?: FrequencyCap[]; + campaignUrn?: string; + accountUrn?: string; + campaignObjectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + dailyBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + totalBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + campaignStartTime?: number; + campaignEndTime?: number; + auctionWinRate?: number; + ctr?: number; + frequencyCapDiscount?: number; + auctionToImpressionRate?: number; + validImpressionRate?: number; + optimizationTarget?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OptimizationTarget; + targetingCriteria?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.TargetingCriteria; + } + // Generated from: com/linkedin/avro2pegasus/events/forecast/ForecastEvent.pdsc + + export interface ForecastEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + forecasts: Forecast[]; + } + // Generated from: com/linkedin/avro2pegasus/events/forecast/ForecastType.pdsc + + export type ForecastType = 'AD_TOTAL_INVENTORY' | 'AD_CAMPAIGN_INVENTORY' | 'PAGE_VIEW' | 'MEMBER_COUNT'; + // Generated from: com/linkedin/avro2pegasus/events/forecast/FrequencyCap.pdsc + + export interface FrequencyCap { + periodDurationSec: number; + capCount: number; + } + } + namespace Frame { + // Generated from: com/linkedin/avro2pegasus/events/frame/FrameOnlineFeatureAccessLogEvent.pdsc + + export interface FrameOnlineFeatureAccessLogEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestCount: number; + successCount: number; + failureCount: number; + frameFeatureName: string; + latencyPercentile100: number; + latencyPercentile99: number; + latencyPercentile95: number; + latencyPercentile90: number; + latencyPercentile50: number; + samplingWindowSizeMinutes: number; + samplingEndTime: number; + } + } + namespace Fulfillment { + // Generated from: com/linkedin/avro2pegasus/events/fulfillment/FulfillmentItemActivityEvent.pdsc + + export interface FulfillmentItemActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + customerUrn: string; + fulfillmentUrn: string; + fulfillmentItemUrn?: string; + fulfillmentItemLineUrn?: string; + sourceUrn?: string; + sourceLineUrn?: string; + configurationUrn?: string; + productCode: string; + status: Com.Linkedin.Avro2pegasus.Events.Common.Fulfillment.FulfillmentItemActivityStatus; + displayMessage?: string; + } + } + namespace Fuse { + // Generated from: com/linkedin/avro2pegasus/events/fuse/FuseRequestTimeStamps.pdsc + + export interface FuseRequestTimeStamps { + messageCreationTime?: number; + requestArrivalTime: number; + expirationTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/fuse/FuseRuleUpdateEvent.pdsc + + export interface FuseRuleUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + actionName: string; + actionValue: string; + } + // Generated from: com/linkedin/avro2pegasus/events/fuse/FuseUsageControlRestrictionEvent.pdsc + + export interface FuseUsageControlRestrictionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestTimeStamps: FuseRequestTimeStamps; + creatorUrn: string; + ipAddress?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + organization?: string; + reason: string; + restrictionType: Com.Linkedin.Avro2pegasus.Events.IpRestrictionType; + failureReason?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/fuse/FuseUsageControlWhitelistEvent.pdsc + + export interface FuseUsageControlWhitelistEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestTimeStamps: FuseRequestTimeStamps; + creatorUrn: string; + cidrNotationIPAddress?: Com.Linkedin.Avro2pegasus.Events.CidrNotationIPAddress; + dnsDomain?: string; + organization?: string; + reason: string; + whitelistType: WhitelistType; + failureReason?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/fuse/UsageControlRestrictionEvent.pdsc + + export interface UsageControlRestrictionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ip?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + organization?: string; + restrictionType: Com.Linkedin.Avro2pegasus.Events.IpRestrictionType; + expirationTime?: number; + notes?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/fuse/UsageControlWhitelistIpEvent.pdsc + + export interface UsageControlWhitelistIpEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ip: Com.Linkedin.Avro2pegasus.Events.IPAddress; + expirationTime?: number; + notes?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/fuse/WhitelistType.pdsc + + export type WhitelistType = 'IP' | 'DNS_DOMAIN' | 'ORG'; + } + namespace Gaap { + // Generated from: com/linkedin/avro2pegasus/events/gaap/AuthErrorType.pdsc + + export type AuthErrorType = + | 'DENIED_BY_USER' + | 'REQUEST_TOKEN_ERROR' + | 'ACCESS_TOKEN_ERROR' + | 'UNKNOWN_ERROR' + | 'VERIFICATION_RESULT_ERROR' + | 'STATE_PARAMETER_ERROR' + | 'PRIMARY_METADATA_FETCH_ERROR' + | 'ID_TOKEN_VALIDATION_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/gaap/AuthStateType.pdsc + + export type AuthStateType = 'SUCCEEDED' | 'IN_PROGRESS' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/gaap/BindingChangeType.pdsc + + export type BindingChangeType = 'CREATED' | 'DELETED'; + // Generated from: com/linkedin/avro2pegasus/events/gaap/CredentialAuditType.pdsc + + export type CredentialAuditType = 'CREATE' | 'UPDATE' | 'VIEW_PASSWORD'; + // Generated from: com/linkedin/avro2pegasus/events/gaap/GaapAdminCredentialAuditEvent.pdsc + + export interface GaapAdminCredentialAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + corpuserUrn: string; + credentialUrn: string; + auditType: CredentialAuditType; + } + // Generated from: com/linkedin/avro2pegasus/events/gaap/GaapAuthorizationTransactionEvent.pdsc + + export interface GaapAuthorizationTransactionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + scriptUrn: string; + transactionId: string; + authState: AuthStateType; + authError?: AuthErrorType; + provider?: string; + scriptVersion?: string; + ownerUrn?: string; + rawReferrerRequestId?: string; + authInfoId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/gaap/GaapBindingChangeEvent.pdsc + + export interface GaapBindingChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ownerUrn: string; + credentialUrn: string; + changeType: BindingChangeType; + authInfoId?: string; + providerAccountId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/gaap/GaapFlowType.pdsc + + export type GaapFlowType = 'ONLINE' | 'NEARLINE' | 'HOOK'; + // Generated from: com/linkedin/avro2pegasus/events/gaap/GaapPlaygroundScriptRunEvent.pdsc + + export interface GaapPlaygroundScriptRunEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + userRequestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + userId: string; + scriptName: string; + scriptRuntime: number; + scriptInput: string; + scriptResults: string; + scriptError?: Com.Linkedin.Avro2pegasus.Common.Gaap.ScriptError; + scriptLog: string; + httpTransactionLog: Com.Linkedin.Avro2pegasus.Events.Common.HttpTransaction[]; + scriptCode: string; + } + // Generated from: com/linkedin/avro2pegasus/events/gaap/GaapStackRequestTrackingEvent.pdsc + + export interface GaapStackRequestTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + scriptUrn: string; + requestingService: string; + requestType: GaapFlowType; + } + // Generated from: com/linkedin/avro2pegasus/events/gaap/GaapTaskRunEvent.pdsc + + export interface GaapTaskRunEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + scriptUrn: string; + taskUrn: string; + taskState: TaskState; + scriptError?: Com.Linkedin.Avro2pegasus.Common.Gaap.ScriptError; + scriptVersion?: string; + scriptTrackingTag?: string; + serviceName?: string; + invalidResultCount?: number; + validResultCount?: number; + resultSizeBytes?: number; + ownerUrn?: string; + authInfoId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/gaap/GaapUnmappedFieldsEvent.pdsc + + export interface GaapUnmappedFieldsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn?: string; + scriptUrn: string; + taskUrn: string; + unmappedFields: Com.Linkedin.Avro2pegasus.Common.Gaap.FormField[]; + } + // Generated from: com/linkedin/avro2pegasus/events/gaap/TaskState.pdsc + + export type TaskState = 'SUCCEEDED' | 'FAILED'; + } + namespace Galene { + // Generated from: com/linkedin/avro2pegasus/events/galene/ArticleSocialSignalsEvent.pdsc + + export interface ArticleSocialSignalsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + articleUrn: string; + sharerMemberUrns: Array; + likerMemberUrns: Array; + commenterMemberUrns: Array; + totalShareCount: number; + totalLikeCount: number; + totalImpressionCount: number; + totalCommentCount: number; + totalClickToReadCount?: number; + } + } + namespace Geo { + // Generated from: com/linkedin/avro2pegasus/events/geo/TravelMode.pdsc + + export type TravelMode = 'DRIVING' | 'WALKING' | 'TRANSIT'; + } + namespace Globalalerts { + // Generated from: com/linkedin/avro2pegasus/events/globalalerts/AlertActionEvent.pdsc + + export interface AlertActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + alertUrn: string; + actionType: AlertActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/globalalerts/AlertActionType.pdsc + + export type AlertActionType = 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/globalalerts/AlertImpressionEvent.pdsc + + export interface AlertImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + alertUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/globalalerts/AlertServedEvent.pdsc + + export interface AlertServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + totalAlerts: number; + servedAlerts: ServedAlertsEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/globalalerts/ServedAlertsEntity.pdsc + + export interface ServedAlertsEntity { + alertUrn: string; + alertType: ServedAlertType; + } + // Generated from: com/linkedin/avro2pegasus/events/globalalerts/ServedAlertType.pdsc + + export type ServedAlertType = + | 'TERMS_AND_CONDITIONS' + | 'COOKIE_POLICY' + | 'COOKIE_USAGE' + | 'MAINTENANCE' + | 'EMAIL_STATUS' + | 'EMAIL_CONFIRMATION' + | 'EMAIL_BOUNCE' + | 'SUBSCRIPTION' + | 'SUBSCRIPTION_RENEW_NONRECURRING' + | 'SUBSCRIPTION_EXPIRES' + | 'SUBSCRIPTION_UPDATE_ITUNES' + | 'SUBSCRIPTION_PROBLEM_PROCESSING_DIRECT_DEBIT' + | 'SUBSCRIPTION_PROBLEM_PROCESSING_CREDIT' + | 'SUBSCRIPTION_HAS_EXPIRED' + | 'IE_DEPRECATION_BANNER'; + } + namespace Gobblinexport { + // Generated from: com/linkedin/avro2pegasus/events/gobblinexport/ExportFileMapping.pdsc + + export interface ExportFileMapping { + sourceUrn: string; + blobId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/gobblinexport/GobblinBridgeExportCompletionEvent.pdsc + + export interface GobblinBridgeExportCompletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestId: string; + exportResult: ExportFileMapping[]; + } + // Generated from: com/linkedin/avro2pegasus/events/gobblinexport/GobblinBridgeExportFailedEvent.pdsc + + export interface GobblinBridgeExportFailedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestId: string; + requestManifestFilePath: string; + errorMessage: string; + } + } + namespace Grid { + // Generated from: com/linkedin/avro2pegasus/events/grid/FailureContext.pdsc + + export interface FailureContext { + exceptionClass: string; + exceptionMessage: string; + } + // Generated from: com/linkedin/avro2pegasus/events/grid/GrantedKSudoSubject.pdsc + + export interface GrantedKSudoSubject { + executingIdentityUrn: string; + realIdentityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/grid/KSudoIdentityRequestEvent.pdsc + + export interface KSudoIdentityRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestTime: number; + callerPrincipalUrn: string; + requestingIpAddress: Com.Linkedin.Avro2pegasus.Events.IPAddress; + requestingHost: string; + isAuthorized: boolean; + isGranted: boolean; + requestedSubject: RequestedKSudoSubject; + grantedSubject?: GrantedKSudoSubject; + grantedLocatedServices: LocatedService[]; + failureContext?: FailureContext; + } + // Generated from: com/linkedin/avro2pegasus/events/grid/LocatedService.pdsc + + export interface LocatedService { + clusterUrn: string; + service: string; + } + // Generated from: com/linkedin/avro2pegasus/events/grid/RequestedKSudoSubject.pdsc + + export interface RequestedKSudoSubject { + executingIdentityUrn?: string; + realIdentityUrn?: string; + executor?: string; + useCase?: string; + } + } + namespace Gridbench { + // Generated from: com/linkedin/avro2pegasus/events/gridbench/FailureContext.pdsc + + export interface FailureContext { + exceptionClass: string; + exceptionMessage: string; + } + // Generated from: com/linkedin/avro2pegasus/events/gridbench/GridBenchCommandLineInvocationEvent.pdsc + + export interface GridBenchCommandLineInvocationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestTime: number; + runningDuration: number; + username: string; + requestingIpAddress: Com.Linkedin.Avro2pegasus.Events.IPAddress; + requestingHost: string; + fullCommand: string; + subCommand: string; + outputSize: number; + failureContext?: FailureContext; + } + } + namespace Group { + // Generated from: com/linkedin/avro2pegasus/events/group/GroupDefinitionChangeEvent.pdsc + + export interface GroupDefinitionChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupUrn?: string; + changeType: GroupDefinitionChangeType; + } + // Generated from: com/linkedin/avro2pegasus/events/group/GroupDefinitionChangeType.pdsc + + export type GroupDefinitionChangeType = 'CREATED' | 'DELETED'; + } + namespace Groups { + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupCommentActionType.pdsc + + export type GroupCommentActionType = 'CREATE' | 'DELETE' | 'EDIT' | 'UNDELETE'; + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupCommentResultActionEvent.pdsc + + export interface GroupCommentResultActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + groupUrn: string; + commentUrn: string; + authorUrn: string; + actionEnumType: GroupCommentActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupDiscussionActionType.pdsc + + export type GroupDiscussionActionType = 'CREATE' | 'DELETE' | 'EDIT' | 'UNDELETE'; + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupDiscussionResultActionEvent.pdsc + + export interface GroupDiscussionResultActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + discussionUrn: string; + authorUrn: string; + actionEnumType: GroupDiscussionActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupFeedDataServedEvent.pdsc + + export interface GroupFeedDataServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + items: ServedItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupFeedImpressionEvent.pdsc + + export interface GroupFeedImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: GroupFeedModuleEnum; + items: Item[]; + } + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupFeedModuleEnum.pdsc + + export type GroupFeedModuleEnum = + | 'HIGHLIGHTS' + | 'DISCUSSIONS_FEED' + | 'GROUP_RECOMMENDATIONS' + | 'NOTIFICATIONS' + | 'SINGLE_DISCUSSION' + | 'JOBS_FEED' + | 'GLOBAL_NAVIGATION' + | 'GROUP_LIST' + | 'ACTIVE_GROUP_LIST' + | 'HEADER' + | 'ABOUT' + | 'MEMBERS_LIST_PREVIEW' + | 'MEMBERS_LIST_CONFIRMED' + | 'MEMBERS_LIST_CONNECTIONS' + | 'MEMBERS_LIST_PENDING' + | 'MEMBERS_LIST_ADMIN' + | 'SEARCH' + | 'DISCUSSION_COMPOSE' + | 'LIKERS_LIST' + | 'INVITE_MEMBERS' + | 'MEMBER_PROFILE' + | 'RICH_MEDIA_VIEW'; + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupFlagActionType.pdsc + + export type GroupFlagActionType = 'FLAG' | 'UNFLAG'; + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupFlagResultActionEvent.pdsc + + export interface GroupFlagResultActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + groupUrn: string; + authorUrn: string; + actionEnumType: GroupFlagActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupInteractionEvent.pdsc + + export interface GroupInteractionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey?: GroupFeedModuleEnum; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + interactionEnumType: GroupInteractionTypeEnum; + controlName: string; + } + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupInteractionTypeEnum.pdsc + + export type GroupInteractionTypeEnum = + | 'FOCUS' + | 'UNFOCUS' + | 'KEYBOARD_SUBMIT' + | 'DRAG' + | 'PINCH_OPEN' + | 'PINCH_CLOSE' + | 'DOUBLE_PRESS' + | 'LONG_PRESS' + | 'SHORT_PRESS' + | 'SWIPE_UP' + | 'SWIPE_DOWN' + | 'SWIPE_LEFT' + | 'SWIPE_RIGHT' + | 'FLICK_UP' + | 'FLICK_DOWN' + | 'FLICK_LEFT' + | 'FLICK_RIGHT' + | 'SHAKE'; + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupLikeActionType.pdsc + + export type GroupLikeActionType = 'LIKE' | 'UNLIKE'; + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupLikeResultActionEvent.pdsc + + export interface GroupLikeResultActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + groupUrn: string; + authorUrn: string; + actionEnumType: GroupLikeActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupMembershipTransitionEvent.pdsc + + export interface GroupMembershipTransitionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + stateTransitionType: GroupMemberStateTransitionEnum; + resultingStateType: GroupMemberStateEnum; + groupUrn: string; + memberUrn: string; + originalStateType?: GroupMemberStateEnum; + } + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupMemberStateEnum.pdsc + + export type GroupMemberStateEnum = + | 'INVITED' + | 'REQUESTED' + | 'MEMBER' + | 'NONMEMBER' + | 'BLOCKED' + | 'INVITE_WITHDRAWN' + | 'REQUEST_WITHDRAWN' + | 'FORMER_MEMBER' + | 'OWNER' + | 'MODERATOR' + | 'REJECTED' + | 'MANAGER' + | 'RESTRICTED'; + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupMemberStateTransitionEnum.pdsc + + export type GroupMemberStateTransitionEnum = + | 'INVITE' + | 'REQUEST' + | 'ACCEPT_INVITE' + | 'ACCEPT_REQUEST' + | 'DECLINE_INVITE' + | 'DECLINE_REQUEST' + | 'LEAVE' + | 'REMOVE' + | 'BLOCK' + | 'UNBLOCK' + | 'WITHDRAW_INVITE' + | 'WITHDRAW_REQUEST' + | 'PROMOTE' + | 'DEMOTE' + | 'CREATE_GROUP' + | 'RESTRICT'; + // Generated from: com/linkedin/avro2pegasus/events/groups/GroupRecommendationCreateEvent.pdsc + + export interface GroupRecommendationCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupPostUrn: string; + actorUrn: string; + authorUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/groups/Item.pdsc + + export interface Item { + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + startTime: number; + duration?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/groups/ServedItem.pdsc + + export interface ServedItem { + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + modelUrn: string; + modelScore?: number; + } + } + namespace Growth { + // Generated from: com/linkedin/avro2pegasus/events/growth/BindProcessorFailureEvent.pdsc + + export interface BindProcessorFailureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + GaapBindingChangeEvent: Com.Linkedin.Avro2pegasus.Events.Gaap.GaapBindingChangeEvent; + failureType: BindProcessorFailureType; + failureInfo: string; + } + // Generated from: com/linkedin/avro2pegasus/events/growth/BindProcessorFailureType.pdsc + + export type BindProcessorFailureType = + | 'MISSING_REQUIRED_FIELD' + | 'INVALID_CREDENTIAL' + | 'CREDENTIAL_RESOLUTION_FAILURE' + | 'BIND_INTEGRATION_NON_SUCCESS_RESPONSE' + | 'UNBIND_INTEGRATION_NON_SUCCESS_RESPONSE'; + // Generated from: com/linkedin/avro2pegasus/events/growth/EmailProfileAssociationOptOutEvent.pdsc + + export interface EmailProfileAssociationOptOutEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + email?: string; + memberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/growth/EventsCommunicationScheduleCommunicationFailureEvent.pdsc + + export interface EventsCommunicationScheduleCommunicationFailureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + eventUrn: string; + eventCommunicationType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/growth/EventsCommunicationScheduleDeferFailureEvent.pdsc + + export interface EventsCommunicationScheduleDeferFailureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + eventUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/growth/ProfessionalEventActionEvent.pdsc + + export interface ProfessionalEventActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + professionalEvent: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionType: ProfessionalEventActionType; + controlUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/growth/ProfessionalEventActionType.pdsc + + export type ProfessionalEventActionType = + | 'FEED_POST' + | 'JOIN_EVENT' + | 'FOLLOW_HASHTAG' + | 'SHARE_EVENT' + | 'SHARE_PROMO_EDIT' + | 'SHARE_PROMO_POST' + | 'SEARCH_ATTENDEES' + | 'REQUEST_TO_JOIN_EVENT' + | 'WITHDRAW_REQUEST' + | 'ACCEPT_INVITATION' + | 'DECLINE_INVITATION' + | 'EVICT_ATTENDEE' + | 'INVITE_MEMBER' + | 'INVITE_MULTIPLE_MEMBERS' + | 'ACCEPT_REQUEST' + | 'ACCEPT_MULTIPLE_REQUESTS' + | 'REJECT_REQUEST' + | 'REJECT_MULTIPLE_REQUESTS' + | 'LEAVE_EVENT' + | 'CREATE_EVENT' + | 'CANCEL_EVENT' + | 'DELETE_EVENT' + | 'REPORT_EVENT' + | 'EDIT_EVENT' + | 'UPLOAD_LOGO' + | 'DELETE_LOGO' + | 'UPLOAD_BACKGROUND_IMAGE' + | 'DELETE_BACKGROUND_IMAGE'; + // Generated from: com/linkedin/avro2pegasus/events/growth/ProfessionalEventInterestPanelActionEvent.pdsc + + export interface ProfessionalEventInterestPanelActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + professionalEvent: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/growth/ProfessionalEventViewEvent.pdsc + + export interface ProfessionalEventViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + professionalEvent: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + } + namespace Guidededit { + // Generated from: com/linkedin/avro2pegasus/events/guidededit/GuidedEditEntryActionEvent.pdsc + + export interface GuidedEditEntryActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + userAction: Com.Linkedin.Avro2pegasus.Common.Guidededit.GuidedEditEntryAction; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + contextType?: Com.Linkedin.Avro2pegasus.Common.Guidededit.GuidedEditContextType; + } + // Generated from: com/linkedin/avro2pegasus/events/guidededit/GuidedEditEntryImpressionEvent.pdsc + + export interface GuidedEditEntryImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contextType: Com.Linkedin.Avro2pegasus.Common.Guidededit.GuidedEditContextType; + guidedEditCategoryName: Com.Linkedin.Avro2pegasus.Common.Guidededit.GuidedEditCategoryName; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/guidededit/GuidedEditFlowImpressionEvent.pdsc + + export interface GuidedEditFlowImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contextType: Com.Linkedin.Avro2pegasus.Common.Guidededit.GuidedEditContextType; + fieldNames?: Com.Linkedin.Avro2pegasus.Common.Guidededit.IsbFieldName[]; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/guidededit/GuidedEditFlowNavActionEvent.pdsc + + export interface GuidedEditFlowNavActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + userAction: Com.Linkedin.Avro2pegasus.Common.Guidededit.GuidedEditFlowNavAction; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/guidededit/GuidedEditFlowSaveActionEvent.pdsc + + export interface GuidedEditFlowSaveActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + positions?: Com.Linkedin.Avro2pegasus.Common.Guidededit.GuidedEditPositionsField; + educations?: Com.Linkedin.Avro2pegasus.Common.Guidededit.GuidedEditEducationsField; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/guidededit/SearchAppearancesClickEvent.pdsc + + export interface SearchAppearancesClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + companyUrn?: string; + keyword?: string; + position: number; + moduleType: Com.Linkedin.Avro2pegasus.Common.Guidededit.SearchAppearancesModuleType; + jobTitle?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/guidededit/SearchAppearancesImpressionEvent.pdsc + + export interface SearchAppearancesImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + modules: SearchAppearancesModuleInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/guidededit/SearchAppearancesModuleContent.pdsc + + export interface SearchAppearancesModuleContent { + companyUrn?: string; + keyword?: string; + jobTitle?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/guidededit/SearchAppearancesModuleInfo.pdsc + + export interface SearchAppearancesModuleInfo { + type: Com.Linkedin.Avro2pegasus.Common.Guidededit.SearchAppearancesModuleType; + contents: SearchAppearancesModuleContent[]; + } + } + namespace Hadoop { + // Generated from: com/linkedin/avro2pegasus/events/hadoop/AggregationScope.pdsc + + export type AggregationScope = 'JOB' | 'TASK'; + // Generated from: com/linkedin/avro2pegasus/events/hadoop/AzkabanContext.pdsc + + export interface AzkabanContext { + projectName: string; + projectVersion: string; + lastChangedDate: number; + hostName: string; + flowName: string; + jobName: string; + executionId: number; + executionEngine?: ExecutionEngine; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/Counter.pdsc + + export interface Counter { + counterGroup: string; + counterName: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/ExecutionContext.pdsc + + export interface ExecutionContext { + clusterName: string; + userName: string; + applicationId: string; + applicationName: string; + state: State; + containerId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/ExecutionEngine.pdsc + + export type ExecutionEngine = 'AZKABAN' | 'OOZIE' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/hadoop/HadoopFileSystemClientHeader.pdsc + + export interface HadoopFileSystemClientHeader { + clientVersion: string; + username: string; + destUriScheme: string; + destUriHostname?: string; + destUriPort?: number; + sourceHost: string; + sourceCluster?: string; + sourceYarnContainerId?: string; + sourceYarnApplicationId?: string; + sourceAzkabanContext?: Com.Linkedin.Avro2pegasus.Common.Hadoop.AzkabanContext; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/HadoopFileSystemDataTransfer.pdsc + + export interface HadoopFileSystemDataTransfer { + time?: number; + opType: RequestType; + path: string; + numBytes: number; + duration: number; + connectionSetupDuration: number; + exceptionClass?: string; + exceptionString?: string; + startTime?: number; + endTime?: number; + flushCount?: number; + flushTimes?: number[]; + seekCount?: number; + seeks?: SeekRecord[]; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/HadoopFileSystemDataTransferEvent.pdsc + + export interface HadoopFileSystemDataTransferEvent { + header: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hadoopHeader: HadoopFileSystemClientHeader; + transfers: HadoopFileSystemDataTransfer[]; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/HadoopFileSystemMetadataRequest.pdsc + + export interface HadoopFileSystemMetadataRequest { + time: number; + command: string; + opType: RequestType; + sourcePath: string; + destinationPath?: string; + duration: number; + isConnectionSetup: boolean; + exceptionClass?: string; + exceptionString?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/HadoopFileSystemMetadataRequestEvent.pdsc + + export interface HadoopFileSystemMetadataRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hadoopHeader: HadoopFileSystemClientHeader; + requests: HadoopFileSystemMetadataRequest[]; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/HadoopHeader.pdsc + + export interface HadoopHeader { + aggregationScope: AggregationScope; + startTime: number; + endTime: number; + executionContext: ExecutionContext; + azkabanContext?: AzkabanContext; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/HadoopLixTreatmentsEvent.pdsc + + export interface HadoopLixTreatmentsEvent { + azkabanContext: Com.Linkedin.Avro2pegasus.Common.Hadoop.AzkabanContext; + lixTreatments: Com.Linkedin.Avro2pegasus.Events.Lix.LixTreatment[]; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/HadoopMetricsEvent.pdsc + + export interface HadoopMetricsEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hadoopHeader: HadoopHeader; + counters?: Counter[]; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/RequestType.pdsc + + export type RequestType = 'READ' | 'WRITE'; + // Generated from: com/linkedin/avro2pegasus/events/hadoop/SeekRecord.pdsc + + export interface SeekRecord { + seekTime: number; + targetOffset: number; + } + // Generated from: com/linkedin/avro2pegasus/events/hadoop/State.pdsc + + export type State = 'SUCCEEDED' | 'FAILED' | 'RUNNING' | 'KILLED'; + } + namespace Handle { + // Generated from: com/linkedin/avro2pegasus/events/handle/EntityHandleChangeEvent.pdsc + + export interface EntityHandleChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + handleUrn: string; + scope: string; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + eventType: EventType; + type: HandleType; + state?: State; + stateUpdatedTime?: number; + isPrimary?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/handle/EventType.pdsc + + export type EventType = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/handle/HandleType.pdsc + + export type HandleType = 'EMAIL' | 'PHONE'; + // Generated from: com/linkedin/avro2pegasus/events/handle/InferredPhoneNumberRequestEvent.pdsc + + export interface InferredPhoneNumberRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + classifiedPhoneNumbers: ProcessedPhoneNumbers[]; + numberOfInvalidPhoneInputs: number; + } + // Generated from: com/linkedin/avro2pegasus/events/handle/MemberHandleAction.pdsc + + export type MemberHandleAction = + | 'ADD_EMAIL' + | 'ADD_PHONE' + | 'DELETE_EMAIL' + | 'DELETE_PHONE' + | 'SEND_EMAIL_CONFIRMATION_MESSAGE' + | 'RESET_EMAIL_BOUNCE' + | 'EMAIL_TRANSFER_SCOPE'; + // Generated from: com/linkedin/avro2pegasus/events/handle/MemberHandleActionEvent.pdsc + + export interface MemberHandleActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + handleUrn: string; + source: MemberHandleActionSource; + actionType: MemberHandleAction; + } + // Generated from: com/linkedin/avro2pegasus/events/handle/MemberHandleActionSource.pdsc + + export type MemberHandleActionSource = 'SETTINGS' | 'NAPE'; + // Generated from: com/linkedin/avro2pegasus/events/handle/MemberHandleChangeEvent.pdsc + + export interface MemberHandleChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + handleUrn: string; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + eventType: EventType; + type: HandleType; + source?: string; + state?: State; + stateUpdatedTime?: number; + isPrimary?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/handle/PhoneAccountChangeEvent.pdsc + + export interface PhoneAccountChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + phoneAccountUrn: string; + changeType: PhoneAccountEventType; + markedUnreachableTime?: number; + redListedTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/handle/PhoneAccountEventType.pdsc + + export type PhoneAccountEventType = 'REDLIST' | 'UNREDLIST' | 'MARKUNREACHABLE' | 'MARKREACHABLE'; + // Generated from: com/linkedin/avro2pegasus/events/handle/ProcessedPhoneNumbers.pdsc + + export interface ProcessedPhoneNumbers { + phoneNumberHash: string; + phoneNumberClassPropensityType?: Com.Linkedin.Avro2pegasus.Events.InferredNumberOwnerType; + phoneNumberClassPropensityScore?: number; + phoneNumberResult: Com.Linkedin.Avro2pegasus.Events.InferredNumberOwnerType; + } + // Generated from: com/linkedin/avro2pegasus/events/handle/State.pdsc + + export type State = 'CONFIRMED' | 'CLAIMED' | 'INFERRED' | 'RECOVERY' | 'TAKENOVER'; + } + namespace Helpcenter { + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/ActivityActionType.pdsc + + export type ActivityActionType = 'COMMENT' | 'UPVOTE'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/ApiType.pdsc + + export type ApiType = 'SOAP' | 'REST'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/CaseStatus.pdsc + + export type CaseStatus = 'CLOSED' | 'OPEN' | 'NEW'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/CaseStatusActionType.pdsc + + export type CaseStatusActionType = 'OPEN' | 'CLOSE' | 'REOPEN'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/CaseTypeFlag.pdsc + + export type CaseTypeFlag = 'RNT' | 'SFDC'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/ChatPresentation.pdsc + + export type ChatPresentation = 'IN_PRODUCT_HELP' | 'STANDALONE'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/ChatSessionActionType.pdsc + + export type ChatSessionActionType = 'INITIALIZE'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/ChatStatus.pdsc + + export type ChatStatus = 'AVAILABLE' | 'NOT_AVAILABLE'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/ClickableFooterElementType.pdsc + + export type ClickableFooterElementType = 'HYPERLINK' | 'BUTTON'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/ConsentActionType.pdsc + + export type ConsentActionType = 'ACCEPT' | 'REJECT'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/ContactUsHomeActionOption.pdsc + + export type ContactUsHomeActionOption = + | 'VIEW_CASE' + | 'CONTACT_US' + | 'SELF_SERVICE' + | 'SITE_FEEDBACK' + | 'ASK_COMMUNITY'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/FeedbackEvent.pdsc + + export interface FeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + feedbackId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + sourcePageKey?: string; + content?: string; + feedbackType?: string; + feedbackName?: string; + extraFeedback?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/ForumEntityActionType.pdsc + + export type ForumEntityActionType = + | 'ASK' + | 'ANSWER' + | 'FOLLOW' + | 'MARK' + | 'EDIT' + | 'UPVOTE' + | 'DOWNVOTE' + | 'COMMENT' + | 'CLOSE' + | 'DELETE' + | 'LOCK' + | 'MODERATE' + | 'UNFOLLOW' + | 'FAVORITE' + | 'UNFAVORITE' + | 'CANCELVOTE' + | 'ACCEPT' + | 'UNACCEPT' + | 'REOPEN' + | 'UNDELETE' + | 'UNLOCK' + | 'REPORT' + | 'CANCEL_REPORT' + | 'WIKIFY' + | 'CANCEL_WIKI' + | 'PUBLISH' + | 'CONVERT_TO_ANSWER' + | 'CONVERT_TO_COMMENT' + | 'CONVERT_TO_QUESTION' + | 'CREATE_CASE' + | 'UPVOTE_QUESTION'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/ForumHomeViewOrder.pdsc + + export type ForumHomeViewOrder = 'ACTIVITY' | 'AGE' | 'VOTES'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterBrowseViewEvent.pdsc + + export interface HelpCenterBrowseViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + entityInfo: HelpCenterEntityInfo; + resultsEntities?: HelpCenterInteractableEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterCaseAttachmentInfo.pdsc + + export interface HelpCenterCaseAttachmentInfo { + attachmentId: string; + attachmentName: string; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterCaseInfo.pdsc + + export interface HelpCenterCaseInfo { + caseId: string; + caseStatus: CaseStatus; + caseCreationAge: number; + caseUpdateAge: number; + messageCount: number; + caseTypeFlag?: CaseTypeFlag; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterCaseMessageActionEvent.pdsc + + export interface HelpCenterCaseMessageActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + caseInfo: HelpCenterCaseInfo; + messageId: string; + attachments?: HelpCenterCaseAttachmentInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterCaseStatusActionEvent.pdsc + + export interface HelpCenterCaseStatusActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + caseInfo: HelpCenterCaseInfo; + actionType: CaseStatusActionType; + errorInfo?: string; + isPaidMember?: boolean; + api?: ApiType; + userHistoryInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterUserHistoryInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterCaseViewEvent.pdsc + + export interface HelpCenterCaseViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + caseInfo: HelpCenterCaseInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterChatCheckEvent.pdsc + + export interface HelpCenterChatCheckEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + queueId: number; + availableAgentSessions: number; + expectedWaitDuration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterChatSessionActionEvent.pdsc + + export interface HelpCenterChatSessionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + actionType: ChatSessionActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterChatSessionImpressionEvent.pdsc + + export interface HelpCenterChatSessionImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + chatStatus: ChatStatus; + chatPresentation?: ChatPresentation; + inProductHelpApplicationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterContactViewEvent.pdsc + + export interface HelpCenterContactViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + cases?: HelpCenterInteractableCase[]; + openCaseCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterEntityFeedbackActionEvent.pdsc + + export interface HelpCenterEntityFeedbackActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + entityInfo: HelpCenterEntityInfo; + isHelpful: boolean; + unhelpfulReasonId?: number; + comments?: string; + helpCenterInterface?: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterInterfaceType; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterEntityInfo.pdsc + + export interface HelpCenterEntityInfo { + entityId: number; + entityType?: string; + entityUpdateAge?: number; + questionInfo?: HelpCenterForumQuestionInfo; + answerInfo?: HelpCenterForumAnswerInfo; + description?: string; + creationAge?: number; + creatorUrn?: string; + entityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterEntityTranslationFeedbackActionEvent.pdsc + + export interface HelpCenterEntityTranslationFeedbackActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + entityInfo: HelpCenterEntityInfo; + translationRating: number; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterEntityViewEvent.pdsc + + export interface HelpCenterEntityViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + entityInfo: HelpCenterEntityInfo; + relatedEntities?: HelpCenterInteractableEntity[]; + recentlyViewedEntities?: HelpCenterInteractableEntity[]; + featureEntities?: HelpCenterInteractableEntity[]; + helpCenterInterface?: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterInterfaceType; + entityVersion?: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterEntityVersionType; + personalizedSupport?: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterPersonalizedSupportInfo; + topics?: HelpCenterInteractableEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterEventHeader.pdsc + + export interface HelpCenterEventHeader { + hcProduct: string; + currentPageTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + previousPageTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + previousPageControlId?: string; + isSurveyPrompted: boolean; + overridePageLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + lixTreatmentRecords?: Com.Linkedin.Avro2pegasus.Events.Lix.LixTreatment[]; + hcInstanceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterForumAnswerInfo.pdsc + + export interface HelpCenterForumAnswerInfo { + isSolution: boolean; + commentCount: number; + upvoteCount: number; + forumAnswerUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterForumEntityActionEvent.pdsc + + export interface HelpCenterForumEntityActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + entityInfo: HelpCenterEntityInfo; + actionType: ForumEntityActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterForumHomeViewEvent.pdsc + + export interface HelpCenterForumHomeViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + order: ForumHomeViewOrder; + filters: string[]; + page: number; + entities: HelpCenterInteractableEntity[]; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + tabname?: TabTypeName; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterForumProfileViewEvent.pdsc + + export interface HelpCenterForumProfileViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + viewType: QuestionRelationshipType; + recentActivity: HelpCenterInteractableActivity[]; + followedQuestions: HelpCenterInteractableEntity[]; + askedQuestions: HelpCenterInteractableEntity[]; + answeredQuestions: HelpCenterInteractableEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterForumQuestionInfo.pdsc + + export interface HelpCenterForumQuestionInfo { + title: string; + tags: string[]; + isResolved: boolean; + answerCount: number; + commentCount: number; + upvoteCount: number; + viewCount: number; + authorMemberUrn?: string; + forumQuestionUrn?: string; + body?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterForumReportActionEvent.pdsc + + export interface HelpCenterForumReportActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + entityInfo: HelpCenterEntityInfo; + reason: string; + comments: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterForumSearchResultsViewEvent.pdsc + + export interface HelpCenterForumSearchResultsViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + inputQuery: string; + resultsPageNumber: number; + resultsEntities: HelpCenterInteractableEntity[]; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + filters?: string[]; + similarQueries?: HelpCenterInteractableQuery[]; + recentlyViewedEntities?: HelpCenterInteractableEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterGenericViewEvent.pdsc + + export interface HelpCenterGenericViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterHomePageViewEvent.pdsc + + export interface HelpCenterHomePageViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + suggestedQueries: HelpCenterInteractableQuery[]; + suggestedTopicGroups: HelpCenterInteractableEntity[]; + helpCenterInterface?: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterInterfaceType; + personalizedSupport?: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterPersonalizedSupportInfo; + recommendedTopics?: HelpCenterInteractableEntity[]; + shortcuts?: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterShortcutItemInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterImageViewerAccessedEvent.pdsc + + export interface HelpCenterImageViewerAccessedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + caseInfo: HelpCenterCaseInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInProductHelpArticleImpressionEvent.pdsc + + export interface HelpCenterInProductHelpArticleImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + articleUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInProductHelpContextualArticleClickEvent.pdsc + + export interface HelpCenterInProductHelpContextualArticleClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + articlePosition: number; + interactedArticleLinkText: string; + interactedArticleUrl: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInProductHelpHelpfulnessClickEvent.pdsc + + export interface HelpCenterInProductHelpHelpfulnessClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + helpfulnessVoteScenario: InProductHelpHelpfulnessVoteScenario; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInProductHelpHomeUrlClickEvent.pdsc + + export interface HelpCenterInProductHelpHomeUrlClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + appUrn: string; + topic: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInProductHelpSearchInteractionEvent.pdsc + + export interface HelpCenterInProductHelpSearchInteractionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + searchQuery?: string; + searchResultPositionClick?: number; + interactedSearchResultLinkText?: string; + interactedSearchResultUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInProductHelpViewEvent.pdsc + + export interface HelpCenterInProductHelpViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + pageUrl: string; + inProductHelpLandingPageScenario: InProductHelpLandingPageScenario; + articleUrn?: string; + appUrn: string; + topic: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInProductHelpWidgetFooterClickEvent.pdsc + + export interface HelpCenterInProductHelpWidgetFooterClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + footerItemText: string; + footerItemUrl?: string; + footerItemElementType: ClickableFooterElementType; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInProductHelpWidgetHeaderClickEvent.pdsc + + export interface HelpCenterInProductHelpWidgetHeaderClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + headerClickScenario: InProductHelpHeaderClickScenario; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInProductHelpWidgetResizeAndRepositionInteractionEvent.pdsc + + export interface HelpCenterInProductHelpWidgetResizeAndRepositionInteractionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + inProductHelpRepositionScenario: InProductHelpRepositionScenario; + xCoordinate: number; + yCoordinate: number; + height: number; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInteractableActivity.pdsc + + export interface HelpCenterInteractableActivity { + interactableEntity: HelpCenterInteractableEntity; + actorUrn: string; + actionType: ActivityActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInteractableCase.pdsc + + export interface HelpCenterInteractableCase { + caseInfo: HelpCenterCaseInfo; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInteractableEntity.pdsc + + export interface HelpCenterInteractableEntity { + entityInfo: HelpCenterEntityInfo; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInteractableQuery.pdsc + + export interface HelpCenterInteractableQuery { + queryString: string; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterInteractiveSearchViewEvent.pdsc + + export interface HelpCenterInteractiveSearchViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + inputQuery: string; + resultsPage: number; + searchResultPageTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + previousInteractiveSearchPageTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + interactionInfo: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterInteractionInfoItem[]; + interactiveSearchInfo: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterInteractiveSearchInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterLyndaConsentActionEvent.pdsc + + export interface HelpCenterLyndaConsentActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + actionType: ConsentActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterNewContactViewEvent.pdsc + + export interface HelpCenterNewContactViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + actionOption?: ContactUsHomeActionOption[]; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterSearchResultsViewEvent.pdsc + + export interface HelpCenterSearchResultsViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + inputQuery: string; + resultsPage: number; + resultsEntities?: HelpCenterInteractableEntity[]; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + similarQueries?: HelpCenterInteractableQuery[]; + recentlyViewedEntities?: HelpCenterInteractableEntity[]; + helpCenterInterface?: Com.Linkedin.Avro2pegasus.Events.Common.Helpcenter.HelpCenterInterfaceType; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterSmartAssistantImpressionEvent.pdsc + + export interface HelpCenterSmartAssistantImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + contactReason: string; + subject: string; + body: string; + resultsEntities?: HelpCenterInteractableEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterSmartAssistClickEvent.pdsc + + export interface HelpCenterSmartAssistClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + clickType: SmartAssistClickType; + createTicketLocation?: SmartAssistCreateTicketPosition; + articleUrn?: string; + elementListPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + elementText: string; + elementLocalizationKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterSupportHistoryViewEvent.pdsc + + export interface HelpCenterSupportHistoryViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + cases?: HelpCenterInteractableCase[]; + openCaseCount: number; + closedCaseCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterSurveyActionEvent.pdsc + + export interface HelpCenterSurveyActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + surveyPageIndex: number; + questionId?: number; + answerId?: number; + comments?: string; + actionType: SurveyQuestionActionType; + questionText?: string; + answerText?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterTopicViewEvent.pdsc + + export interface HelpCenterTopicViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + topicId: number; + topicPageNumber: number; + topicEntities?: HelpCenterInteractableEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/HelpCenterWebFormViewEvent.pdsc + + export interface HelpCenterWebFormViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + helpCenterEventHeader: HelpCenterEventHeader; + webFormID: string; + } + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/InProductHelpHeaderClickScenario.pdsc + + export type InProductHelpHeaderClickScenario = 'BACK' | 'HOME' | 'SEARCH' | 'CLOSE'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/InProductHelpHelpfulnessVoteScenario.pdsc + + export type InProductHelpHelpfulnessVoteScenario = 'YES' | 'NO'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/InProductHelpLandingPageScenario.pdsc + + export type InProductHelpLandingPageScenario = 'HOME' | 'ARTICLE'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/InProductHelpRepositionScenario.pdsc + + export type InProductHelpRepositionScenario = 'DRAG' | 'VERTICAL_RESIZE_EXPAND' | 'VERTICAL_RESIZE_SHRINK'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/QuestionRelationshipType.pdsc + + export type QuestionRelationshipType = 'RECENT' | 'FOLLOWING' | 'ASKED' | 'ANSWERED'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/SmartAssistClickType.pdsc + + export type SmartAssistClickType = 'CREATE_TICKET_BUTTON' | 'ARTICLE_EXPAND_BUTTON' | 'TOPIC_PILL'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/SmartAssistCreateTicketPosition.pdsc + + export type SmartAssistCreateTicketPosition = 'IN_ARTICLE_DROPDOWN' | 'IN_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/SurveyQuestionActionType.pdsc + + export type SurveyQuestionActionType = 'OPEN' | 'NEXT' | 'PREVIOUS' | 'SUBMIT' | 'CLOSE'; + // Generated from: com/linkedin/avro2pegasus/events/helpcenter/TabTypeName.pdsc + + export type TabTypeName = 'QUESTION' | 'USERHUB'; + } + namespace Hiringprofessionalrecommendation { + // Generated from: com/linkedin/avro2pegasus/events/hiringprofessionalrecommendation/HiringProfessionalRecommendationActionEvent.pdsc + + export interface HiringProfessionalRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + memberUrn: string; + action: Com.Linkedin.Avro2pegasus.Events.Common.Hiringprofessionalrecommendation.HiringProfessionalRecommendationAction; + hiringProfessionalRecommendationItem: Com.Linkedin.Avro2pegasus.Events.Common.Hiringprofessionalrecommendation.HiringProfessionalRecommendationItem; + trackingId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/hiringprofessionalrecommendation/HiringProfessionalRecommendationImpressionEvent.pdsc + + export interface HiringProfessionalRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + memberUrn: string; + hiringProfessionalRecommendationArray: Com.Linkedin.Avro2pegasus.Events.Common.Hiringprofessionalrecommendation.HiringProfessionalRecommendationItem[]; + trackingId: string; + } + } + namespace Holden { + // Generated from: com/linkedin/avro2pegasus/events/holden/AutonomousSystemNumber.pdsc + + export interface AutonomousSystemNumber { + id: number; + name: string; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointApiEvent.pdsc + + export interface CatchpointApiEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + test: CatchpointApiTest; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointApiStepMetrics.pdsc + + export interface CatchpointApiStepMetrics { + webpageResponseDuration: number; + connectDuration: number; + dnsDuration: number; + contentLoadDuration: number; + loadDuration: number; + redirectDuration: number; + sendDuration: number; + sslDuration: number; + waitDuration: number; + wireDuration: number; + responseDuration: number; + clientDuration: number; + hostCount: number; + connectionCount: number; + requestCount: number; + failedRequestCount: number; + redirectCount: number; + availabilityPercentage: number; + contentAvailabilityPercentage: number; + timeToFirstByteDuration?: number; + totalDownloadedBytes?: number; + jsErrorCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointApiTest.pdsc + + export interface CatchpointApiTest { + id: number; + name: string; + typeId: number; + monitorTypeId: number; + startTime: number; + node: Com.Linkedin.Avro2pegasus.Common.Holden.CatchpointNode; + tracepoints: Com.Linkedin.Avro2pegasus.Common.Holden.CatchpointTracepoint[]; + steps: CatchpointApiStepMetrics[]; + rawResponse: string; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointDnsEvent.pdsc + + export interface CatchpointDnsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + test: CatchpointDnsTest; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointDnsStepMetrics.pdsc + + export interface CatchpointDnsStepMetrics { + responseDuration: number; + availabilityPercentage: number; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointDnsTest.pdsc + + export interface CatchpointDnsTest { + id: number; + name: string; + typeId: number; + monitorTypeId: number; + startTime: number; + node: Com.Linkedin.Avro2pegasus.Common.Holden.CatchpointNode; + tracepoints: Com.Linkedin.Avro2pegasus.Common.Holden.CatchpointTracepoint[]; + steps: CatchpointDnsStepMetrics[]; + rawResponse: string; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointMachineLearningResults.pdsc + + export interface CatchpointMachineLearningResults { + isGood: boolean; + classifierScore: number; + classifierModel: string; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointPingEvent.pdsc + + export interface CatchpointPingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + test: CatchpointPingTest; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointPingStepMetrics.pdsc + + export interface CatchpointPingStepMetrics { + packetLossPercentage: number; + averageRoundTripTime: number; + availabilityPercentage: number; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointPingTest.pdsc + + export interface CatchpointPingTest { + id: number; + name: string; + typeId: number; + monitorTypeId: number; + startTime: number; + node: Com.Linkedin.Avro2pegasus.Common.Holden.CatchpointNode; + tracepoints: Com.Linkedin.Avro2pegasus.Common.Holden.CatchpointTracepoint[]; + steps: CatchpointPingStepMetrics[]; + rawResponse: string; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointTracerouteEvent.pdsc + + export interface CatchpointTracerouteEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + test: CatchpointTracerouteTest; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointTracerouteStepMetrics.pdsc + + export interface CatchpointTracerouteStepMetrics { + packetLossPercentage: number; + averageRoundTripTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointTracerouteTest.pdsc + + export interface CatchpointTracerouteTest { + id: number; + name: string; + typeId: number; + monitorTypeId: number; + startTime: number; + node: Com.Linkedin.Avro2pegasus.Common.Holden.CatchpointNode; + tracepoints: Com.Linkedin.Avro2pegasus.Common.Holden.CatchpointTracepoint[]; + steps: CatchpointTracerouteStepMetrics[]; + rawResponse: string; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointWebTransactionEvent.pdsc + + export interface CatchpointWebTransactionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + test: CatchpointWebTransactionTest; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointWebTransactionStepMetrics.pdsc + + export interface CatchpointWebTransactionStepMetrics { + webpageResponseDuration: number; + connectDuration: number; + dnsDuration: number; + contentLoadDuration: number; + loadDuration: number; + redirectDuration: number; + sendDuration: number; + sslDuration: number; + waitDuration: number; + wireDuration: number; + responseDuration: number; + clientDuration: number; + documentCompleteDuration: number; + domLoadDuration: number; + renderStartDuration: number; + timeToTitleDuration: number; + hostCount: number; + connectionCount: number; + requestCount: number; + failedRequestCount: number; + redirectCount: number; + availabilityPercentage: number; + contentAvailabilityPercentage: number; + timeToFirstByteDuration?: number; + totalDownloadedBytes?: number; + jsErrorCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/holden/CatchpointWebTransactionTest.pdsc + + export interface CatchpointWebTransactionTest { + id: number; + name: string; + typeId: number; + monitorTypeId: number; + startTime: number; + node: Com.Linkedin.Avro2pegasus.Common.Holden.CatchpointNode; + tracepoints: Com.Linkedin.Avro2pegasus.Common.Holden.CatchpointTracepoint[]; + steps: CatchpointWebTransactionStepMetrics[]; + rawResponse: string; + } + } + namespace House { + // Generated from: com/linkedin/avro2pegasus/events/house/AlertLevel.pdsc + + export type AlertLevel = 'LOW' | 'MEDIUM' | 'HIGH' | 'INFO' | 'CRITICAL'; + // Generated from: com/linkedin/avro2pegasus/events/house/ArcturusAlertEvent.pdsc + + export interface ArcturusAlertEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + source?: string; + destination?: string; + alertSource: string; + message: string; + carbonBlackLink?: string; + jiraLink?: string; + action?: string; + watchList?: string; + campaign?: string; + cs1Label?: string; + cs1?: string; + cs2Label?: string; + cs2?: string; + cs3Label?: string; + cs3?: string; + cs4Label?: string; + cs4?: string; + cs5Label?: string; + cs5?: string; + cs6Label?: string; + cs6?: string; + cs7Label?: string; + cs7?: string; + cs8Label?: string; + cs8?: string; + cs9Label?: string; + cs9?: string; + cs10Label?: string; + cs10?: string; + alertLevel: AlertLevel; + corpUserUrn?: string; + isBot?: boolean; + hmacKeyID?: string; + hmacSignature?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/house/AuthType.pdsc + + export type AuthType = 'NONE' | 'PUBLICKEY' | 'PASSWORD'; + // Generated from: com/linkedin/avro2pegasus/events/house/CEFEvent.pdsc + + export interface CEFEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + act?: string; + app?: string; + c6a1?: string; + c6a1Label?: string; + c6a2?: string; + c6a2Label?: string; + c6a3?: string; + c6a3Label?: string; + c6a4?: string; + c6a4Label?: string; + cfp1?: string; + cfp1Label?: number; + cfp2?: string; + cfp2Label?: number; + cfp3?: string; + cfp3Label?: number; + cfp4?: string; + cfp4Label?: number; + cn1?: number; + cn1Label?: string; + cn2?: number; + cn2Label?: string; + cn3?: number; + cn3Label?: string; + cnt: number; + cs1?: string; + cs1Label?: string; + cs2?: string; + cs2Label?: string; + cs3?: string; + cs3Label?: string; + cs4?: string; + cs4Label?: string; + cs5?: string; + cs5Label?: string; + cs6?: string; + cs6Label?: string; + destinationDnsDomain?: string; + destinationServiceName?: string; + destinationTranslatedAddress?: string; + destinationTranslatedPort?: number; + deviceCustomDate1?: number; + deviceCustomDate1Label?: string; + deviceCustomDate2?: number; + deviceCustomDate2Label?: string; + deviceDirection?: DeviceTrafficDirections; + deviceDnsDomain?: string; + deviceExternalId?: string; + deviceFacility?: string; + deviceInboundInterface?: string; + deviceNtDomain?: string; + deviceOutboundInterface?: string; + devicePayloadId?: string; + deviceProcessName?: string; + deviceTranslatedAddress?: string; + dhost?: string; + dmac?: string; + dntdom?: string; + dpid?: number; + dpriv?: UserPrivilege; + dproc?: string; + dpt?: number; + dst?: string; + dtz?: string; + duid?: string; + duser?: string; + dvc?: string; + dvchost?: string; + dvcmac?: string; + dvcpid?: number; + end?: number; + externalId?: string; + fileCreateTime?: number; + fileHash?: string; + fileId?: string; + fileModificationTime?: number; + filePath?: string; + filePermission?: string; + fileType?: string; + flexDate1?: number; + flexDate1Label?: string; + flexNumber1?: number; + flexNumber1Label?: string; + flexNumber2?: number; + flexNumber2Label?: string; + flexString1?: number; + flexString1Label?: string; + flexString2?: number; + flexString2Label?: string; + fname?: string; + fsize?: number; + in?: number; + msg?: string; + oldFileCreateTime?: number; + oldFileHash?: string; + oldFileId?: string; + oldFileModificationTime?: number; + oldFileName?: string; + oldFilePath?: string; + oldFilePermission?: string; + oldFileSize?: number; + oldFileType?: string; + out?: string; + outcome?: string; + proto?: string; + reason?: string; + request?: string; + requestClientApplication?: string; + requestContext?: string; + requestCookies?: string; + requestMethod?: string; + rt?: number; + shost?: string; + smac?: string; + sntdom?: string; + sourceDnsDomain?: string; + sourceServiceName?: string; + sourceTranslatedAddress?: string; + sourceTranslatedPort?: number; + spid?: number; + spriv?: UserPrivilege; + sproc?: string; + spt?: number; + src?: string; + start?: number; + suid?: string; + suser?: string; + type: CEFEventType; + cn4?: number; + cn4Label?: string; + cn5?: number; + cn5Label?: string; + cn6?: number; + cn6Label?: string; + cn7?: number; + cn7Label?: string; + cn8?: number; + cn8Label?: string; + cn9?: number; + cn9Label?: string; + cn10?: number; + cn10Label?: string; + cs7?: string; + cs7Label?: string; + cs8?: string; + cs8Label?: string; + cs9?: string; + cs9Label?: string; + cs10?: string; + cs10Label?: string; + extendedCefRecord: ExtendedCEFRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/house/CEFEventType.pdsc + + export type CEFEventType = 'BASEEVENT' | 'AGGREGATED' | 'CORRELATION' | 'ACTION'; + // Generated from: com/linkedin/avro2pegasus/events/house/DeviceTrafficDirections.pdsc + + export type DeviceTrafficDirections = 'INBOUND' | 'OUTBOUND'; + // Generated from: com/linkedin/avro2pegasus/events/house/DNSEvent.pdsc + + export interface DNSEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + message: string; + clientAddress: string; + query?: string; + response?: string; + dnsRecordType: string; + subdomain?: string; + domain: string; + topLevelDomain: string; + subdomainEntropy: number; + domainEntropy: number; + networkProtocol?: NetworkProtocol; + } + // Generated from: com/linkedin/avro2pegasus/events/house/EncryptedIndicatorOfCompromiseEvent.pdsc + + export interface EncryptedIndicatorOfCompromiseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + type: Com.Linkedin.Avro2pegasus.Events.Common.House.IndicatorOfCompromiseType; + encryptedCampaign?: string; + encryptedIndicator: string; + encryptionKeyId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/house/EventType.pdsc + + export type EventType = 'AUTHENTICATION' | 'FAILURE' | 'DISCONNECT' | 'OPEN' | 'CLOSE' | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/house/ExtendedCEFRecord.pdsc + + export interface ExtendedCEFRecord { + es1?: string; + es1Label?: string; + es2?: string; + es2Label?: string; + es3?: string; + es3Label?: string; + es4?: string; + es4Label?: string; + es5?: string; + es5Label?: string; + es6?: string; + es6Label?: string; + es7?: string; + es7Label?: string; + es8?: string; + es8Label?: string; + es9?: string; + es9Label?: string; + es10?: string; + es10Label?: string; + en1?: number; + en1Label?: string; + en2?: number; + en2Label?: string; + en3?: number; + en3Label?: string; + en4?: number; + en4Label?: string; + en5?: number; + en5Label?: string; + en6?: number; + en6Label?: string; + en7?: number; + en7Label?: string; + en8?: number; + en8Label?: string; + en9?: number; + en9Label?: string; + en10?: number; + en10Label?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/house/GenericSyslogEvent.pdsc + + export interface GenericSyslogEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + message: string; + username?: string; + source?: string; + eventType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/house/IndicatorOfCompromiseEvent.pdsc + + export interface IndicatorOfCompromiseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + type: Com.Linkedin.Avro2pegasus.Events.Common.House.IndicatorOfCompromiseType; + campaign?: string; + indicator: string; + } + // Generated from: com/linkedin/avro2pegasus/events/house/LinuxAuditEvent.pdsc + + export interface LinuxAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + source: string; + sequenceNumber: number; + auditTimeNanos: number; + messages: Array<{ [id: string]: string }>; + } + // Generated from: com/linkedin/avro2pegasus/events/house/NetworkProtocol.pdsc + + export type NetworkProtocol = 'TCP' | 'UDP'; + // Generated from: com/linkedin/avro2pegasus/events/house/Protocol.pdsc + + export type Protocol = 'SSH1' | 'SSH2'; + // Generated from: com/linkedin/avro2pegasus/events/house/RejectReason.pdsc + + export type RejectReason = 'BAD_CERT' | 'INVALID_KEY_NAME' | 'BAD_REQUEST' | 'INTERNAL_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/house/SaltRekeyAuditEvent.pdsc + + export interface SaltRekeyAuditEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + requestTime: number; + masterHost: string; + sourceHost: string; + minionKey: string; + minionCertSignature: string; + keyName: string; + status: Status; + rejectReason?: RejectReason; + rejectMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/house/SecurityArchiveEvent.pdsc + + export interface SecurityArchiveEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + applicationProtocol?: string; + requestUrl?: string; + requestMethod?: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + deviceReceiptTime?: number; + sourceAddress?: string; + sourceUserName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/house/SecurityAuditEvent.pdsc + + export interface SecurityAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + applicationName: string; + action?: string; + user?: string; + source?: string; + destination?: string; + sourcePort?: number; + destinationPort?: number; + requestQuery?: string; + reason?: string; + message: string; + appOutcome?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/house/SSHLogEvent.pdsc + + export interface SSHLogEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + message: string; + username?: string; + shost?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + port?: number; + protocol?: Protocol; + authType?: AuthType; + eventType?: EventType; + } + // Generated from: com/linkedin/avro2pegasus/events/house/Status.pdsc + + export type Status = 'REPLACED' | 'CREATED' | 'REJECTED'; + // Generated from: com/linkedin/avro2pegasus/events/house/TrustAndSafetyAuditEvent.pdsc + + export interface TrustAndSafetyAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ip?: string; + upstreamApplication?: string; + requestMethod?: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + resourceMethod?: string; + resource?: string; + httpStatusCode?: number; + scope?: string; + requestMap?: { [id: string]: string }; + requestUri?: string; + requestQueryParameters?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/house/UserPrivilege.pdsc + + export type UserPrivilege = 'ADMINISTRATOR' | 'GUEST' | 'USER'; + namespace Azure { + // Generated from: com/linkedin/avro2pegasus/events/house/azure/AzureDataLakeStorageGen1DiagnosticEvent.pdsc + + export interface AzureDataLakeStorageGen1DiagnosticEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + AzureDataLakeStorageGen1DiagnosticPropertyEvent: AzureDataLakeStorageGen1DiagnosticPropertyEvent; + time: number; + resourceId: string; + category: string; + operationName: string; + resultType: string; + resultSignature: string; + callerIpAddress: Com.Linkedin.Avro2pegasus.Events.IPAddress; + correlationId: string; + identity: string; + } + // Generated from: com/linkedin/avro2pegasus/events/house/azure/AzureDataLakeStorageGen1DiagnosticPropertyEvent.pdsc + + export interface AzureDataLakeStorageGen1DiagnosticPropertyEvent { + userId: string; + streamName: string; + endTime: number; + startTime: number; + clientRequestId: string; + requestContentLengthBytes: number; + path: string; + httpMethod: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + } + } + } + namespace Hp { + // Generated from: com/linkedin/avro2pegasus/events/hp/HireRuleTriggerConditionType.pdsc + + export type HireRuleTriggerConditionType = + | 'INMAIL_SENT_BY_RECRUITER' + | 'INMAIL_ACCEPTED_BY_CANDIDATE' + | 'INMAIL_DECLINED_BY_CANDIDATE' + | 'CANDIDATE_ARCHIVED' + | 'CANDIDATE_ADDED_INTO_PROJECT' + | 'CANDIDATE_MOVED_INTO_STAGE'; + // Generated from: com/linkedin/avro2pegasus/events/hp/HireRuleV2Step.pdsc + + export type HireRuleV2Step = + | 'START_PROCESS_RULE_TRIGGER' + | 'FIND_HIRE_RULE_V2' + | 'ENQUEUE_KAFKA_TIME_TRIGGER_V2' + | 'START_PROCESS_KAFKA_TIME_TRIGGER_V2' + | 'ENQUEUE_KAFKA_TRIGGER_RULE_PROCESSING_V2' + | 'FINISH_PROCESS_RULE_TRIGGER' + | 'FINISH_PROCESS_KAFKA_TIME_TRIGGER_V2' + | 'START_PROCESS_CONDITION_STEP' + | 'EXECUTE_CONDITION_STEP_TASK' + | 'FINISH_PROCESS_CONDITION_STEP' + | 'START_PROCESS_ACTION_STEP' + | 'EXECUTE_ACTION_STEP_TASK' + | 'FINISH_PROCESS_ACTION_STEP'; + // Generated from: com/linkedin/avro2pegasus/events/hp/HireRuleV2StepErrorType.pdsc + + export type HireRuleV2StepErrorType = + | 'FULFILLMENT_FAILURE' + | 'UNSUPPORTED_CONDITION' + | 'UNSUPPORTED_CONJUNCTION_CLAUSE' + | 'DB_ACCESS_ERROR' + | 'UNAUTHORIZED_ACCESS' + | 'QUANTUM_EVENT_ENQUEUE_FAILURE' + | 'QUANTUM_EVENT_ABORTED' + | 'VALIDATION_ERROR' + | 'HTTP_STATUS_ERROR' + | 'HIT_FUSE_LIMIT' + | 'INTERNAL_SERVER_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/hp/HireRuleV2StepExecutedEvent.pdsc + + export interface HireRuleV2StepExecutedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + debugId?: string; + step: HireRuleV2Step; + errorType?: HireRuleV2StepErrorType; + triggerConditionType: HireRuleTriggerConditionType; + scopeUrn?: string; + hireRuleUrn?: string; + entityUrn?: string; + hiringContextUrn: string; + } + } + namespace Humanannotation { + // Generated from: com/linkedin/avro2pegasus/events/humanannotation/AggregatedAnnotation.pdsc + + export interface AggregatedAnnotation { + fieldName: string; + aggregatedAnnotation?: string; + confidenceScore?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/humanannotation/Annotation.pdsc + + export interface Annotation { + id: number; + contributorId: number; + contributorTrust: number; + isTainted: boolean; + fieldAnnotations: FieldAnnotation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/humanannotation/FieldAnnotation.pdsc + + export interface FieldAnnotation { + fieldName: string; + annotation?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/humanannotation/HumanAnnotationUnitCompletionEvent.pdsc + + export interface HumanAnnotationUnitCompletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + unitId: number; + fields: UnitField[]; + createdTimeSeconds: number; + updatedTimeSeconds: number; + agreement?: number; + missedCount: number; + jobId: number; + annotations: Annotation[]; + state: UnitState; + aggregatedResults: AggregatedAnnotation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/humanannotation/UnitField.pdsc + + export interface UnitField { + fieldName: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/humanannotation/UnitState.pdsc + + export type UnitState = 'NEW' | 'IN_PROGRESS' | 'FINALIZED' | 'TEST_UNIT'; + } + namespace Identity { + // Generated from: com/linkedin/avro2pegasus/events/identity/BackgroundPictureCharacteristics.pdsc + + export interface BackgroundPictureCharacteristics { + originalImageUrn: string; + displayImageUrn: string; + contentCertificationToken?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/BirthDateCharacteristics.pdsc + + export interface BirthDateCharacteristics { + isDayPresent: boolean; + isMonthPresent: boolean; + isYearPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/BrowseMapActionEvent.pdsc + + export interface BrowseMapActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + connectionDistance: Com.Linkedin.Avro2pegasus.Events.Common.NetworkDistance; + sourceMemberUrn: string; + targetMemberUrn: string; + actionType: BrowsemapActionType; + viewedMemberUrn?: string; + browsemapPosition?: BrowseMapPosition; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/BrowsemapActionType.pdsc + + export type BrowsemapActionType = 'CLICK'; + // Generated from: com/linkedin/avro2pegasus/events/identity/BrowseMapPosition.pdsc + + export interface BrowseMapPosition { + index: number; + listSize: number; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/CardContent.pdsc + + export interface CardContent { + sectionType?: Com.Linkedin.Avro2pegasus.Common.Identity.ProfileDashboardSectionType; + cardType: Com.Linkedin.Avro2pegasus.Common.Identity.ProfileDashboardCardType; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/CertificationCharacteristics.pdsc + + export interface CertificationCharacteristics { + isAuthorityPresent: boolean; + isCompanyPresent: boolean; + isEndMonthYearPresent: boolean; + isLicenseNumberPresent: boolean; + isNamePresent: boolean; + isStartMonthYearPresent: boolean; + isUrlPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/Contributor.pdsc + + export interface Contributor { + name: string; + memberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/CourseCharacteristics.pdsc + + export interface CourseCharacteristics { + isNamePresent: boolean; + isNumberPresent: boolean; + isOccupationPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/EducationCharacteristics.pdsc + + export interface EducationCharacteristics { + isActivitiesPresent: boolean; + isDegreePresent: boolean; + isDegreeNamePresent: boolean; + isEndMonthYearPresent: boolean; + isEndMonthYearInTheFuture: boolean; + fieldsOfStudy: FieldOfStudyCharacteristics[]; + isGradePresent: boolean; + isNotesPresent: boolean; + isProgramPresent: boolean; + isSchoolPresent: boolean; + isSchoolNamePresent: boolean; + isStartMonthYearPresent: boolean; + yearsSinceStartMonthYear: number; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ExceptionErrorDetails.pdsc + + export interface ExceptionErrorDetails { + errorType: ExceptionErrorType; + fieldPathSpec?: string; + changeType?: FieldEditChangeType; + message: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ExceptionErrorType.pdsc + + export type ExceptionErrorType = 'TERMS_OF_SERVICE' | 'DATA_VALIDATION'; + // Generated from: com/linkedin/avro2pegasus/events/identity/ExternalMatchOptOutEvent.pdsc + + export interface ExternalMatchOptOutEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + emailTrackingId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/FieldEditChangeType.pdsc + + export type FieldEditChangeType = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/identity/FieldOfStudyCharacteristics.pdsc + + export interface FieldOfStudyCharacteristics { + isCommitmentLevelPresent: boolean; + isFieldOfStudyPresent: boolean; + isFieldOfStudyNamePresent: boolean; + isGradePresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/GoalsActionEvent.pdsc + + export interface GoalsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + cardType?: Com.Linkedin.Avro2pegasus.Events.Common.Identity.ProfileOpportunityCardType; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + vieweeUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/GoalsImpressionEvent.pdsc + + export interface GoalsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + cardType?: Com.Linkedin.Avro2pegasus.Events.Common.Identity.ProfileOpportunityCardType; + vieweeUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/highlightCategory.pdsc + + export type highlightCategory = + | 'COMMON_GROUPS' + | 'COMMON_CONNECTIONS' + | 'COMMON_EDUCATIONS' + | 'COMMON_POSITIONS' + | 'OTHERS' + | 'SHARED_LOCATION' + | 'CONTACT_INTERESTS' + | 'DESCRIPTIVE_COMPANY' + | 'DESCRIPTIVE_SCHOOL' + | 'DESCRIPTIVE_REGION' + | 'DESCRIPTIVE_SENIOR_COMPANY' + | 'BUSINESS_INSIGHTS' + | 'JOB_REFERRAL_RECOMMENDATIONS'; + // Generated from: com/linkedin/avro2pegasus/events/identity/HighlightImpression.pdsc + + export interface HighlightImpression { + highlightTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + visibleTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + highlightCategory: highlightCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/HonorCharacteristics.pdsc + + export interface HonorCharacteristics { + isDescriptionPresent: boolean; + isIssueDatePresent: boolean; + isIssuerPresent: boolean; + isOccupationPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/InventorCharacteristics.pdsc + + export interface InventorCharacteristics { + isMemberIdPresent: boolean; + isNamePresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/LanguageCharacteristics.pdsc + + export interface LanguageCharacteristics { + isProficiencyPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/LocalSkillExpertActionEvent.pdsc + + export interface LocalSkillExpertActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + localSkillExpertTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + newLocalSkillExpertMemberUrn?: string; + oldLocalSkillExpertMemberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/LocalSkillExpertImpressionEvent.pdsc + + export interface LocalSkillExpertImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + localSkillExpertTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + candidateUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/LocalSkillExpertServedEvent.pdsc + + export interface LocalSkillExpertServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + localSkillExpertTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + vieweeMemberUrn: string; + skillUrn: string; + candidateUrns: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/LocationCharacteristics.pdsc + + export interface LocationCharacteristics { + isCountryCodePresent: boolean; + isPostalCodePresent: boolean; + isStandardizedLocationUrnPresent: boolean; + isUserSelectedGeoPlaceCodePresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/OrganizationCharacteristics.pdsc + + export interface OrganizationCharacteristics { + isDescriptionPresent: boolean; + isEndMonthYearPresent: boolean; + isNamePresent: boolean; + isOccupationPresent: boolean; + isPositionPresent: boolean; + isStartMonthYearPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PatentCharacteristics.pdsc + + export interface PatentCharacteristics { + isApplicationNumberPresent: boolean; + isDescriptionPresent: boolean; + isFilingDatePresent: boolean; + inventors: InventorCharacteristics[]; + isIssueDatePresent: boolean; + isNumberPresent: boolean; + isUrlPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PictureInfoCharacteristics.pdsc + + export interface PictureInfoCharacteristics { + isHidden: boolean; + isActive: boolean; + contentCertificationToken?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PositionChangeEvent.pdsc + + export interface PositionChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + propUrn: string; + activityUrn: string; + newPositionUrn: string; + oldPositionUrn?: string; + effectiveTime: number; + positionChangeType: PositionChangeType; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PositionChangeType.pdsc + + export type PositionChangeType = + | 'COMPANY_CHANGE' + | 'PROMOTION' + | 'ADDITIONAL_POSITION' + | 'LOCATION_CHANGE' + | 'POSITION_CHANGE'; + // Generated from: com/linkedin/avro2pegasus/events/identity/PositionCharacteristics.pdsc + + export interface PositionCharacteristics { + isCompanyPresent: boolean; + isCompanyNamePresent: boolean; + isDescriptionPresent: boolean; + isEndMonthYearPresent: boolean; + location: PositionLocationCharacteristics; + isLocationNamePresent: boolean; + isStartMonthYearPresent: boolean; + isTitlePresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PositionLocationCharacteristics.pdsc + + export interface PositionLocationCharacteristics { + isCountryCodePresent: boolean; + isRegionCodePresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileCharacteristics.pdsc + + export interface ProfileCharacteristics { + isBackgroundImagePresent: boolean; + birthDate: BirthDateCharacteristics; + certifications: CertificationCharacteristics[]; + courses: CourseCharacteristics[]; + educations: EducationCharacteristics[]; + honors: HonorCharacteristics[]; + isIndustryIdPresent: boolean; + isIndustryNamePresent: boolean; + languages: LanguageCharacteristics[]; + location: LocationCharacteristics; + organizations: OrganizationCharacteristics[]; + patents: PatentCharacteristics[]; + pictureInfo: PictureInfoCharacteristics; + positions: PositionCharacteristics[]; + projects: ProjectCharacteristics[]; + publications: PublicationCharacteristics[]; + skills: SkillCharacteristics[]; + isSummaryPresent: boolean; + summaryLength: number; + supportedLocalesCount: number; + testScores: TestScoreCharacteristics[]; + volunteeringExperiences: VolunteeringExperienceCharacteristics[]; + volunteeringInterests: VolunteeringInterestsCharacteristics; + websites: WebsiteCharacteristics[]; + isAccountActive?: boolean; + profilePicture?: ProfilePictureCharacteristics; + backgroundPicture?: BackgroundPictureCharacteristics; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileCharacteristicsEditEvent.pdsc + + export interface ProfileCharacteristicsEditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + before: ProfileCharacteristics; + after: ProfileCharacteristics; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileDashboardImpressionEvent.pdsc + + export interface ProfileDashboardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contents: CardContent[]; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileEditEvent.pdsc + + export interface ProfileEditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + profileInstance?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + sections: Sections[]; + pageKey?: string; + lastUpdateId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileEditExceptionEvent.pdsc + + export interface ProfileEditExceptionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + exception: Com.Linkedin.Avro2pegasus.Events.Common.Exception; + errorDetails: ExceptionErrorDetails[]; + patchDocument?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileEditPhotoInferenceActionEvent.pdsc + + export interface ProfileEditPhotoInferenceActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + topLeft: Com.Linkedin.Avro2pegasus.Events.Common.NormalizingFactor; + topRight: Com.Linkedin.Avro2pegasus.Events.Common.NormalizingFactor; + bottomLeft: Com.Linkedin.Avro2pegasus.Events.Common.NormalizingFactor; + bottomRight: Com.Linkedin.Avro2pegasus.Events.Common.NormalizingFactor; + suggestedTopLeft: Com.Linkedin.Avro2pegasus.Events.Common.NormalizingFactor; + suggestedTopRight: Com.Linkedin.Avro2pegasus.Events.Common.NormalizingFactor; + suggestedBottomLeft: Com.Linkedin.Avro2pegasus.Events.Common.NormalizingFactor; + suggestedBottomRight: Com.Linkedin.Avro2pegasus.Events.Common.NormalizingFactor; + machineLearningModelVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileEditV2Event.pdsc + + export interface ProfileEditV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rawProfile: string; + originalPatch: string; + decoratedPatch: string; + autoNetworkUpdatesPrefs: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileFieldName.pdsc + + export type ProfileFieldName = + | 'ACTIVITIES' + | 'CAUSE' + | 'COMPANY_NAME' + | 'COUNTRY_CODE' + | 'DEGREE_NAME' + | 'DESCRIPTION' + | 'END_MONTH_YEAR' + | 'FIELDS_OF_STUDY' + | 'FIRSTNAME' + | 'GRADE' + | 'HEADLINE' + | 'INDUSTRY_ID' + | 'LASTNAME' + | 'LOCATION_NAME' + | 'PICTURE_INFO' + | 'POSTAL_CODE' + | 'ROLE' + | 'START_MONTH_YEAR' + | 'SCHOOL_NAME' + | 'TITLE'; + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileHighlightActionEvent.pdsc + + export interface ProfileHighlightActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + highlightTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + controlUrn?: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileHighlightImpressionEvent.pdsc + + export interface ProfileHighlightImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + vieweeUrn: string; + highlights: HighlightImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileOpportunityCardActionEvent.pdsc + + export interface ProfileOpportunityCardActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profileOpportunityCardType: Com.Linkedin.Avro2pegasus.Events.Common.Identity.ProfileOpportunityCardType; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + vieweeUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileOpportunityCardImpressionEvent.pdsc + + export interface ProfileOpportunityCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + ProfileOpportunityCardType: Com.Linkedin.Avro2pegasus.Events.Common.Identity.ProfileOpportunityCardType; + vieweeUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfilePictureCharacteristics.pdsc + + export interface ProfilePictureCharacteristics { + originalImageUrn: string; + displayImageUrn: string; + contentCertificationToken?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfilePromotionServedEvent.pdsc + + export interface ProfilePromotionServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + promotionsServed: PromotionInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileSearchAppearanceEvent.pdsc + + export interface ProfileSearchAppearanceEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + daysSinceEpoch: number; + weeksSinceEpochSunday: number; + searchTime: number; + searcheeId: number; + searchId: string; + companyId: number; + titleId: number; + keywords: string[]; + hashedKeyword: number; + occupationId?: number; + hashedKeywords?: number; + timestamp?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileSectionName.pdsc + + export type ProfileSectionName = + | 'SUMMARY' + | 'EXPERIENCE' + | 'SKILLS_AND_EXPERTISE' + | 'EDUCATION' + | 'RECOMMENDATIONS' + | 'ADDITIONAL_INFO' + | 'PERSONAL_INFO' + | 'CONTACT_SETTINGS' + | 'APPLICATIONS' + | 'COURSES' + | 'CERTIFICATIONS' + | 'HONORS_AND_AWARDS' + | 'LANGUAGES' + | 'ORGANIZATIONS' + | 'PROJECTS' + | 'PATENTS' + | 'PUBLICATIONS' + | 'TEST_SCORES' + | 'VOLUNTEER_EXPERIENCE_AND_CAUSES' + | 'VANITY_NAME' + | 'FEATURED_ITEMS'; + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileSkillAssessmentPromoActionEvent.pdsc + + export interface ProfileSkillAssessmentPromoActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + skillAssessmentTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileSkillAssessmentPromoImpressionEvent.pdsc + + export interface ProfileSkillAssessmentPromoImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + skillAssessmentTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileSkillAssessmentQuestionFeedbackEvent.pdsc + + export interface ProfileSkillAssessmentQuestionFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + skillAssessmentQuestionUrn: string; + feedbackIssueType: ProfileSkillAssessmentQuestionFeedbackIssueType; + feedbackDetails?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileSkillAssessmentQuestionFeedbackIssueType.pdsc + + export type ProfileSkillAssessmentQuestionFeedbackIssueType = + | 'QUESTION' + | 'ANSWER_CHOICES' + | 'TECHNICAL' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileSkillAssessmentReportDeleteEvent.pdsc + + export interface ProfileSkillAssessmentReportDeleteEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + skillUrn: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileSkillAssessmentWithAccessibilityStartEvent.pdsc + + export interface ProfileSkillAssessmentWithAccessibilityStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + skillUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileUniqueViewEvent.pdsc + + export interface ProfileUniqueViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + viewerUrn: string; + vieweeUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileViewServedEvent.pdsc + + export interface ProfileViewServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viewees: ProfileViewVieweeInformation[]; + useCase: Com.Linkedin.Avro2pegasus.Events.Common.Identity.ProfileServedUseCase; + projectionPathSpecs: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProfileViewVieweeInformation.pdsc + + export interface ProfileViewVieweeInformation { + vieweeUrn: string; + networkDistanceFromViewer: Com.Linkedin.Avro2pegasus.Events.Common.NetworkDistance; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProjectCharacteristics.pdsc + + export interface ProjectCharacteristics { + isDescriptionPresent: boolean; + isEndMonthYearPresent: boolean; + members: ProjectMemberCharacteristics[]; + isOccupationPresent: boolean; + isStartMonthYearPresent: boolean; + isUrlPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/ProjectMemberCharacteristics.pdsc + + export interface ProjectMemberCharacteristics { + isMemberIdPresent: boolean; + isNamePresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PromotionInfo.pdsc + + export interface PromotionInfo { + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + promotionType: promotionType; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/promotionType.pdsc + + export type promotionType = + | 'CONNECTION_ANNIVERSARY' + | 'CURRENT_POSITION_ADDED' + | 'EDUCATION_OVERLAP_END_ANNIVERSARY' + | 'POSITION_OVERLAP_END_ANNIVERSARY' + | 'PROMOTION' + | 'SHARED_CURRENT_COMPANY_ADDED' + | 'UNREAD_MESSAGES' + | 'OPEN_PROFILE_PREMIUM_UPSELL'; + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationAuthorCharacteristics.pdsc + + export interface PublicationAuthorCharacteristics { + isMemberIdPresent: boolean; + isNamePresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationCharacteristics.pdsc + + export interface PublicationCharacteristics { + authors: PublicationAuthorCharacteristics[]; + isDescriptionPresent: boolean; + isPublisherPresent: boolean; + isUrlPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationFromEmailAddCoauthorsEvent.pdsc + + export interface PublicationFromEmailAddCoauthorsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + authorUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationFromEmailEntryEvent.pdsc + + export interface PublicationFromEmailEntryEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rawRequestHref: string; + publicationId?: string; + name?: string; + description?: string; + publisher?: string; + url?: string; + date?: number; + authorUrns: string[]; + emailTrackingId?: string; + recommendationId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationFromEmailImpressionEvent.pdsc + + export interface PublicationFromEmailImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationFromEmailNonSavingActionEvent.pdsc + + export interface PublicationFromEmailNonSavingActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + type: PublicationFromEmailNonSavingActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationFromEmailNonSavingActionType.pdsc + + export type PublicationFromEmailNonSavingActionType = 'START_EDIT' | 'SKIP_PUB_ADD' | 'SKIP_AUTHOR_ADD'; + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationFromEmailNotMeEvent.pdsc + + export interface PublicationFromEmailNotMeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rawRequestHref: string; + publicationId?: string; + authorUrns: string[]; + emailTrackingId?: string; + recommendationId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationFromEmailNotYouEvent.pdsc + + export interface PublicationFromEmailNotYouEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationFromEmailSaveEvent.pdsc + + export interface PublicationFromEmailSaveEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + type: PublicationFromEmailSaveEventType; + updatedName?: string; + updatedDescription?: string; + updatedPublisher?: string; + updatedUrl?: string; + updateDate?: number; + updatedAuthorUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/PublicationFromEmailSaveEventType.pdsc + + export type PublicationFromEmailSaveEventType = 'CREATE_SUCCESS' | 'CREATE_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/identity/SectionField.pdsc + + export interface SectionField { + fieldName: ProfileFieldName; + changeType: Com.Linkedin.Avro2pegasus.Events.ChangeType; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/Sections.pdsc + + export interface Sections { + sectionName: ProfileSectionName; + sectionEntityUrn?: string; + changeType: Com.Linkedin.Avro2pegasus.Events.ChangeType; + fieldNames?: ProfileFieldName[]; + sectionFields?: SectionField[]; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/SkillCharacteristics.pdsc + + export interface SkillCharacteristics { + isProficiencyPresent: boolean; + isSkillPresent: boolean; + isYearsOfExperiencePresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/SuggestedContributorActionEvent.pdsc + + export interface SuggestedContributorActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contributor: Contributor; + actionType: SuggestedEditActionType; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/SuggestedContributorImpressionEvent.pdsc + + export interface SuggestedContributorImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contributors: Contributor[]; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/SuggestedEditActionEvent.pdsc + + export interface SuggestedEditActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rawProfileElementUrn: string; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: SuggestedEditActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/SuggestedEditActionType.pdsc + + export type SuggestedEditActionType = 'ACCEPT' | 'REJECT' | 'DISMISS' | 'CANCEL'; + // Generated from: com/linkedin/avro2pegasus/events/identity/SuggestedEditImpressionEvent.pdsc + + export interface SuggestedEditImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rawProfileElementUrns: string[]; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + suggestionSource?: SuggestionSource; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/SuggestionSource.pdsc + + export type SuggestionSource = + | 'EMAIL' + | 'GUIDED_EDIT' + | 'NOTIFICATION' + | 'ADD_SKILLS' + | 'POSITION_EDIT_TITLE' + | 'ME_TAB' + | 'ONBOARDING' + | 'PROFILE_VIEW' + | 'GUIDED_EDIT_V2' + | 'JOBS'; + // Generated from: com/linkedin/avro2pegasus/events/identity/SupportedNonprofitCharacteristics.pdsc + + export interface SupportedNonprofitCharacteristics { + isCompanyIdPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/TestScoreCharacteristics.pdsc + + export interface TestScoreCharacteristics { + isDatePresent: boolean; + isDescriptionPresent: boolean; + isOccupationPresent: boolean; + isScorePresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/TopSkillsActionEvent.pdsc + + export interface TopSkillsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + topSkillsTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + selectedTopSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/TopSkillsImpressionEvent.pdsc + + export interface TopSkillsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + topSkillsTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + candidateSkillUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/VolunteeringExperienceCharacteristics.pdsc + + export interface VolunteeringExperienceCharacteristics { + isCausePresent: boolean; + isCompanyPresent: boolean; + isCompanyNamePresent: boolean; + isDescriptionPresent: boolean; + isEndMonthYearPresent: boolean; + isStartMonthYearPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/VolunteeringInterestsCharacteristics.pdsc + + export interface VolunteeringInterestsCharacteristics { + isBoardMemberInterestPresent: boolean; + isProBonoInterestPresent: boolean; + supportedNonprofits: SupportedNonprofitCharacteristics[]; + isSupportedPredefinedCausesPresent: boolean; + isSupportedUserDefinedCausesPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/identity/WebsiteCharacteristics.pdsc + + export interface WebsiteCharacteristics { + isLabelPresent: boolean; + } + } + namespace Impeller { + // Generated from: com/linkedin/avro2pegasus/events/impeller/AgeOfQuerySetsEvent.pdsc + + export interface AgeOfQuerySetsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + querySetInfo: QuerySetWithAge[]; + } + // Generated from: com/linkedin/avro2pegasus/events/impeller/QuerySetWithAge.pdsc + + export interface QuerySetWithAge { + querySetPath: string; + age: number; + } + } + namespace Impersonation { + // Generated from: com/linkedin/avro2pegasus/events/impersonation/CelebrityImpersonationEvent.pdsc + + export interface CelebrityImpersonationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + celebrities?: Com.Linkedin.Avro2pegasus.Events.Common.Impersonation.MsftCelebrityResponse[]; + vectorUrn: string; + } + } + namespace Impression { + // Generated from: com/linkedin/avro2pegasus/events/impression/EntityRecommendationImpression.pdsc + + export interface EntityRecommendationImpression { + entityId: number; + entityScore: number; + entityType: Com.Linkedin.Avro2pegasus.Events.Entity; + } + // Generated from: com/linkedin/avro2pegasus/events/impression/EntityRecommendationType.pdsc + + export type EntityRecommendationType = + | 'SIMILAR_PROFILES' + | 'JOB_MATCH' + | 'JYMBII' + | 'COMPANY_JYMBII' + | 'EMPLOYEE_JYMBII' + | 'REFERRAL_ENGINE' + | 'GYML' + | 'SIM_JOBS' + | 'SIM_GROUPS' + | 'CYMWTF' + | 'SIM_COMPANIES' + | 'EYMBII' + | 'SIM_EVENTS' + | 'PROFILE_LINKAGE' + | 'PYMBII' + | 'PYMBII_RECRUITER' + | 'PYMBII_SUBS' + | 'PYMBII_SUBS_INMAIL' + | 'PYMBII_FOLLOW' + | 'PYMH' + | 'RECRUITER_SEARCH' + | 'LEAD_RECOMMENDATIONS' + | 'ACCOUNT_RECOMMENDATIONS' + | 'EXISTING_LEADS' + | 'EXISTING_ACCOUNTS' + | 'SIMILAR_SLIDESHOWS'; + // Generated from: com/linkedin/avro2pegasus/events/impression/ImpressionDetails.pdsc + + export interface ImpressionDetails { + itemId: number; + itemType: ItemType; + details: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/impression/ItemType.pdsc + + export type ItemType = 'person' | 'job' | 'group' | 'company' | 'nus' | 'news' | 'ayn'; + // Generated from: com/linkedin/avro2pegasus/events/impression/JobMatchReferralImpression.pdsc + + export interface JobMatchReferralImpression { + entityId: number; + entityType: Com.Linkedin.Avro2pegasus.Events.Entity; + entityPosition: number; + entityRaterId: number; + entityRating: string; + } + } + namespace Ingestedcontent { + // Generated from: com/linkedin/avro2pegasus/events/ingestedcontent/ImageStorageRequestedEvent.pdsc + + export interface ImageStorageRequestedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ingestionRequestId: string; + ingestedContentUrn: string; + digitalmediaAssetUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ingestedcontent/IngestionChannel.pdsc + + export type IngestionChannel = 'ONLINE' | 'NEARLINE'; + // Generated from: com/linkedin/avro2pegasus/events/ingestedcontent/IngestionRequestedEvent.pdsc + + export interface IngestionRequestedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ingestionRequestId: string; + originalUrl: string; + ingestedContentUrn?: string; + ingestionTime: number; + ingestionChannel: IngestionChannel; + clientMemberUrn?: string; + clientIpAddress?: string; + rpcTrace?: string; + requesterAppName?: string; + } + } + namespace Ingestion { + // Generated from: com/linkedin/avro2pegasus/events/ingestion/ContentIngestionEvent.pdsc + + export interface ContentIngestionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + url: string; + reason: ContentIngestionReason; + contentSummaryUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ingestion/ContentIngestionReason.pdsc + + export type ContentIngestionReason = + | 'PUBLISH' + | 'SHARE' + | 'OFFSITE_READ' + | 'VOLUME' + | 'EXTRACT_ONLY' + | 'REFRESH'; + // Generated from: com/linkedin/avro2pegasus/events/ingestion/Image.pdsc + + export interface Image { + url: string; + width?: number; + height?: number; + size?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ingestion/IngestedFeedEntryEvent.pdsc + + export interface IngestedFeedEntryEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + publishedTime: number; + url: string; + title: string; + description: string; + feedUrn?: string; + source?: OriginatingSource; + publisherUrn?: string; + author?: string; + markupFulltext?: string; + images?: Image[]; + stockTagInfo?: Stock[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ingestion/OriginatingSource.pdsc + + export type OriginatingSource = 'ATOM_RSS' | 'PULSE'; + // Generated from: com/linkedin/avro2pegasus/events/ingestion/Stock.pdsc + + export interface Stock { + stockSymbol: string; + } + } + namespace Ingraphs { + // Generated from: com/linkedin/avro2pegasus/events/ingraphs/InGraphAppCounterUpdate.pdsc + + export interface InGraphAppCounterUpdate { + incrementBy: number; + name: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ingraphs/InGraphsAppCounterEvent.pdsc + + export interface InGraphsAppCounterEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + counterUpdates: InGraphAppCounterUpdate[]; + } + } + namespace Interest { + // Generated from: com/linkedin/avro2pegasus/events/interest/CommentRecommendationsScoringEvent.pdsc + + export interface CommentRecommendationsScoringEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + actionRecommendationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + contextFeatures: Com.Linkedin.Avro2pegasus.Events.Common.NameTermValueFeatures; + commentRecommendationsFeatures: Com.Linkedin.Avro2pegasus.Events.Common.Interest.CommentRecommendationFeatures[]; + } + // Generated from: com/linkedin/avro2pegasus/events/interest/CommentRecommendationsServedEvent.pdsc + + export interface CommentRecommendationsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn?: string; + entityText?: string; + entityType: Com.Linkedin.Avro2pegasus.Events.Common.Interest.ActionRecommendationEntityType; + model: string; + inferenceWallTime: number; + actionRecommendationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + commentRecommendations: Com.Linkedin.Avro2pegasus.Events.Common.Interest.CommentRecommendations; + } + // Generated from: com/linkedin/avro2pegasus/events/interest/ContentSearchResultsServedEvent.pdsc + + export interface ContentSearchResultsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + vertical: ContentVertical; + interestQuery: string; + rawQuery: string; + searchTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + modelId: string; + queryFeatures?: Com.Linkedin.Avro2pegasus.Events.Common.Interest.FeatureVector; + results: Com.Linkedin.Avro2pegasus.Events.Common.Interest.Result[]; + interestFeedUseCase?: Com.Linkedin.Avro2pegasus.Events.Common.Interest.InterestFeedUseCase; + queryType?: Com.Linkedin.Avro2pegasus.Events.Common.Interest.QueryType; + } + // Generated from: com/linkedin/avro2pegasus/events/interest/ContentSkillSuggestionServedEvent.pdsc + + export interface ContentSkillSuggestionServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + modelId: string; + contentUrn: string; + activityText: string; + features: Com.Linkedin.Avro2pegasus.Events.Common.Interest.FeatureVector; + results: Com.Linkedin.Avro2pegasus.Events.Common.Interest.Result[]; + } + // Generated from: com/linkedin/avro2pegasus/events/interest/ContentVertical.pdsc + + export type ContentVertical = 'ACTIVITIES' | 'ARTICLES'; + // Generated from: com/linkedin/avro2pegasus/events/interest/FollowedEntityRecommendationServedEvent.pdsc + + export interface FollowedEntityRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + recommendations: Com.Linkedin.Avro2pegasus.Events.Common.Interest.RecommendedContentFromFollowedEntity[]; + queryType: Com.Linkedin.Avro2pegasus.Events.Common.Interest.QueryType; + } + // Generated from: com/linkedin/avro2pegasus/events/interest/HashtagRecommendationsServedEvent.pdsc + + export interface HashtagRecommendationsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + text: string; + hashtagPrefix: string; + objects: string[]; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + modelId: string; + queryFeatures?: Com.Linkedin.Avro2pegasus.Events.Common.Interest.FeatureVector; + results: Com.Linkedin.Avro2pegasus.Events.Common.Interest.Result[]; + } + // Generated from: com/linkedin/avro2pegasus/events/interest/OutOfNetworkActivitiesServedEvent.pdsc + + export interface OutOfNetworkActivitiesServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + interestQuery: string; + rawQuery: string; + modelId: string; + searchTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + queryFeatures: Com.Linkedin.Avro2pegasus.Events.Common.Interest.FeatureVector; + results: Com.Linkedin.Avro2pegasus.Events.Common.Interest.Result[]; + } + // Generated from: com/linkedin/avro2pegasus/events/interest/StorylineEngagementPinotEvent.pdsc + + export interface StorylineEngagementPinotEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + time: number; + origin: string; + position: number; + storylineUrn: string; + model: string; + industryId: number; + impressions: number; + clicks: number; + } + // Generated from: com/linkedin/avro2pegasus/events/interest/StorylineIndexSnapshotEvent.pdsc + + export interface StorylineIndexSnapshotEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + storylineIndexTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + features: Com.Linkedin.Avro2pegasus.Events.Common.Interest.FeatureVector; + } + // Generated from: com/linkedin/avro2pegasus/events/interest/StorylineRankingResultsServedEvent.pdsc + + export interface StorylineRankingResultsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberId: number; + modelId: string; + features: Com.Linkedin.Avro2pegasus.Events.Common.Interest.FeatureVector; + results: Com.Linkedin.Avro2pegasus.Events.Common.Interest.Result[]; + storylineIndexTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + } + namespace Internalmentorship { + // Generated from: com/linkedin/avro2pegasus/events/internalmentorship/MentorshipContactActionEvent.pdsc + + export interface MentorshipContactActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + actionType: MentorshipContactActionType; + recommendationMemberUrn: string; + recommendationType: MentorshipRecommendationType; + } + // Generated from: com/linkedin/avro2pegasus/events/internalmentorship/MentorshipContactActionType.pdsc + + export type MentorshipContactActionType = 'MESSAGE' | 'EMAIL' | 'SLACK' | 'VIEW'; + // Generated from: com/linkedin/avro2pegasus/events/internalmentorship/MentorshipRecommendationType.pdsc + + export type MentorshipRecommendationType = 'MENTOR' | 'MENTEE'; + } + namespace Interviewprep { + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepAnswerFrameworkClickEvent.pdsc + + export interface InterviewPrepAnswerFrameworkClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepAnswerFrameworkImpressionEvent.pdsc + + export interface InterviewPrepAnswerFrameworkImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + interviewPrepLearningContentUrn?: string; + questionUrn: string; + assessmentUrn?: string; + mediaUrn?: string; + categoryUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepCategorySelectionEvent.pdsc + + export interface InterviewPrepCategorySelectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + parentCategoryUrn?: string; + categoryUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepEntryPointFeaturedQuestionSelectionEvent.pdsc + + export interface InterviewPrepEntryPointFeaturedQuestionSelectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + assessmentUrn: string; + questionUrn: string; + index: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + entryPointContext: Com.Linkedin.Avro2pegasus.Events.Common.Interviewprep.InterviewPrepEntryPointContext; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepEntryPointImpressionEvent.pdsc + + export interface InterviewPrepEntryPointImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + assessmentUrn: string; + questionUrns?: string[]; + entryPointContext: Com.Linkedin.Avro2pegasus.Events.Common.Interviewprep.InterviewPrepEntryPointContext; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepEntryPointSelectionEvent.pdsc + + export interface InterviewPrepEntryPointSelectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + assessmentUrn: string; + entryPointContext: Com.Linkedin.Avro2pegasus.Events.Common.Interviewprep.InterviewPrepEntryPointContext; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepLearningContentClickActionEvent.pdsc + + export interface InterviewPrepLearningContentClickActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepLearningContentImpressionEvent.pdsc + + export interface InterviewPrepLearningContentImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + learningContentUrn: string; + learningContentType: InterviewPrepLearningContentType; + questionUrn?: string; + assessmentUrn?: string; + mediaUrn?: string; + categoryUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepLearningContentType.pdsc + + export type InterviewPrepLearningContentType = + | 'LEARNING_GUIDE' + | 'QUESTION_TIPS' + | 'CATEGORY_INTRO' + | 'ASSESSMENT_INTRO'; + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepNewCategoryRequestEvent.pdsc + + export interface InterviewPrepNewCategoryRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestedCategoryName: string; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepQuestionImpressionEvent.pdsc + + export interface InterviewPrepQuestionImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + questionUrn: string; + assessmentUrn?: string; + categoryUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepQuestionResponseImpressionEvent.pdsc + + export interface InterviewPrepQuestionResponseImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + questionUrn: string; + assessmentUrn?: string; + mediaUrn?: string; + shareableLinkKey?: string; + responseUrn: string; + categoryUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepQuestionResponseSubmissionEvent.pdsc + + export interface InterviewPrepQuestionResponseSubmissionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaUrn?: string; + responseUrn: string; + categoryUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepQuestionSelectionEvent.pdsc + + export interface InterviewPrepQuestionSelectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + index: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + questionUrn: string; + assessmentUrn?: string; + categoryUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepSampleAnswerClickEvent.pdsc + + export interface InterviewPrepSampleAnswerClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/interviewprep/InterviewPrepSampleAnswerImpressionEvent.pdsc + + export interface InterviewPrepSampleAnswerImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + interviewPrepLearningContentUrn?: string; + questionUrn: string; + assessmentUrn?: string; + mediaUrn?: string; + categoryUrn?: string; + } + } + namespace Invitations { + // Generated from: com/linkedin/avro2pegasus/events/invitations/channel.pdsc + + export type channel = + | 'CONNECTHUB' + | 'GLOBAL_NAV' + | 'EMAIL' + | 'INVITATIONS_FRONTEND' + | 'PROFILE' + | 'PYMK' + | 'EMAIL_WITHOUT_LOGIN' + | 'OTHER' + | 'ONBOARDING' + | 'PROP' + | 'ABI' + | 'PUSH_NOTIFICATION'; + // Generated from: com/linkedin/avro2pegasus/events/invitations/DropReason.pdsc + + export type DropReason = 'FUSE_LIMIT' | 'FUSE_LIMIT_HOUR' | 'FUSE_LIMIT_DAY' | 'FUSE_LIMIT_WEEK'; + // Generated from: com/linkedin/avro2pegasus/events/invitations/ExperimentSetting.pdsc + + export interface ExperimentSetting { + name: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/Feature.pdsc + + export interface Feature { + featureName: string; + featureValue: number; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/FlowType.pdsc + + export type FlowType = 'ABI' | 'INVITATION'; + // Generated from: com/linkedin/avro2pegasus/events/invitations/Invitation.pdsc + + export interface Invitation { + invitationUrn: string; + state: InvitationState; + inviterUrn: string; + inviteeUrn: string; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationCachedEvent.pdsc + + export interface InvitationCachedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + invitationTransactionId: string; + invitationTrackingInfo: InvitationTrackingInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationClickEvent.pdsc + + export interface InvitationClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + invitationType: InvitationTargetType; + inviteeUrns?: string[]; + inviteeEmails?: string[]; + product: string; + subproduct: string; + invitationTrackingInfo?: InvitationTrackingInfo[]; + transactionId?: string; + flow?: FlowType; + dropReason?: DropReason; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationClientImpressionEvent.pdsc + + export interface InvitationClientImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + invitationTrackingInfo: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationErrorMessage.pdsc + + export type InvitationErrorMessage = + | 'CANT_INVITE_YOURSELF' + | 'CANT_INVITE_CONNECTION_WAS_BROKEN' + | 'CANT_RESEND_YET' + | 'DUPLICATE_INVITATION' + | 'INVALID_ARGUMENTS' + | 'INVALID_INVITATION_STATE' + | 'MAX_INVITATION_SENT' + | 'MEMBERS_ALREADY_CONNECTED' + | 'RED_LISTED_EMAIL' + | 'URI_SYNTAX_ERROR' + | 'NO_SUCH_INVITATION' + | 'NO_CONFIRMED_EMAIL' + | 'RESTRICTED_ACTION' + | 'CANT_INVITE_CONNECTION_LIMIT_REACHED' + | 'NO_SUCH_MEMBER' + | 'INTERNAL_EXCEPTION' + | 'NO_SUCH_PROFILE' + | 'IWE_INVITATION_LIMIT' + | 'UNAUTHORIZED_ACTION' + | 'IWE_RESTRICTED' + | 'NO_SUCH_POSITION' + | 'NO_SUCH_EDUCATION' + | 'INVITEES_ALL_BLOCKED' + | 'OTHER' + | 'COMMUNICTATION_EXCEPTION' + | 'DATA_EXCEPTION' + | 'INVALID_VALIDATION_TOKEN' + | 'INVITATION_BLOCKED' + | 'NO_CONFIRMED_HANDLE' + | 'STORAGE_EXCEPTION' + | 'DENIED_BY_ABUSE_SCORING' + | 'CANT_ACCEPT_CONNECTION_LIMIT_REACHED' + | 'CANT_ACCEPT_INVITER_IS_RESTRICTED' + | 'CANT_INVITE_FROM_SPAM_INVITER' + | 'CANONICAL_EMAIL_INVITEE_FUSE_LIMIT_REACHED' + | 'CANT_ACCEPT_INVITE_TO_SELF' + | 'PHONE_NUMBER_CAPPING_LIMIT_REACHED' + | 'CLIENT_VALIDATION_ERROR' + | 'SPAM_CUSTOM_MESSAGE_INCLUDED' + | 'FUSE_LIMIT_HOUR' + | 'FUSE_LIMIT_DAY' + | 'FUSE_LIMIT_WEEK' + | 'INVITE_CREDIT_LIMIT_REACHED'; + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationHandoffEvent.pdsc + + export interface InvitationHandoffEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + invitationId: number; + invitationTrackingInfo: InvitationTrackingInfo; + deliveryId?: string; + error?: InvitationErrorMessage; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationImpressionEvent.pdsc + + export interface InvitationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + invitationTransactionId: string; + product: string; + productContainer: string; + invitationTrackingInfo?: InvitationTrackingInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationQueueEvent.pdsc + + export interface InvitationQueueEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + invitationId?: number; + invitationType: InvitationTargetType; + inviteeUrn?: string; + inviteeEmail?: string; + handleUrn?: string; + error?: InvitationErrorMessage; + invitationTrackingInfo?: InvitationTrackingInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationRelevanceDetailEvent.pdsc + + export interface InvitationRelevanceDetailEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + invitationUrn: string; + invitationType: InvitationTargetType; + modelName: string; + modelVersion: string; + features: Feature[]; + experimentSettings: ExperimentSetting[]; + finalScore?: number; + invitationRelevantLevel: invitationRelevantLevel; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/invitationRelevantLevel.pdsc + + export type invitationRelevantLevel = 'NOTABLE' | 'NOT_RELEVANT' | 'NOT_COMPUTED'; + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationRequestEvent.pdsc + + export interface InvitationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + invitationTrackingInfo: InvitationTrackingInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationSaveEvent.pdsc + + export interface InvitationSaveEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + invitationId: number; + inviteeMemberUrn?: string; + inviteeEmail?: string; + handleUrn?: string; + error?: InvitationErrorMessage; + hasCustomMessage?: boolean; + invitationTrackingInfo?: InvitationTrackingInfo; + invitationType?: InvitationTargetType; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationSourceType.pdsc + + export type InvitationSourceType = + | 'ABI' + | 'PYMK' + | 'PROFILE' + | 'MICROSOFT_PEOPLE_CARD' + | 'PROXIMITY' + | 'COLLEAGUES' + | 'OTHER' + | 'SALES_NAVIGATOR' + | 'BUSINESS_CARD'; + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationState.pdsc + + export type InvitationState = + | 'UNSENT' + | 'PENDING' + | 'WITHDRAWN' + | 'ABORTED' + | 'BOUNCED' + | 'IGNORED' + | 'ACCEPTED' + | 'REJECTED' + | 'EXPIRED' + | 'BLOCKED'; + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationStateChangeError.pdsc + + export type InvitationStateChangeError = + | 'INVALID_STATE_TRANSITION' + | 'NO_SUCH_INVITATION' + | 'DATA_EXCEPTION' + | 'STORAGE_EXCEPTION' + | 'COMMUNICATION_EXCEPTION'; + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationStateChangeEvent.pdsc + + export interface InvitationStateChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + invitationUrn: string; + inviteeUrn: string; + inviterUrn: string; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + state: InvitationState; + source?: InvitationSourceType; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationStateChangeFrontendRequestEvent.pdsc + + export interface InvitationStateChangeFrontendRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + invitationTrackingInfo: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject[]; + channel: channel; + invitationType?: InvitationTargetType; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationStateChangeServerSideRequestEvent.pdsc + + export interface InvitationStateChangeServerSideRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + invitationStateChangeRequestTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + primaryInvitation: Invitation; + error?: InvitationErrorMessage; + secondaryInvitations: SecondaryInvitation[]; + requestedState: InvitationState; + invitationType?: InvitationTargetType; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationTargetType.pdsc + + export type InvitationTargetType = 'MEMBER' | 'GUEST' | 'EVENT' | 'ORGANIZATION' | 'CONTENT_SERIES'; + // Generated from: com/linkedin/avro2pegasus/events/invitations/InvitationTrackingInfo.pdsc + + export interface InvitationTrackingInfo { + invitationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + recipientUrn: string; + contextUrn?: string; + inviterUrn?: string; + inviterActorUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/NoncompliantInvitation.pdsc + + export interface NoncompliantInvitation { + inviterUrn: string; + recipientUrn: string; + invitationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/NoncompliantInvitationRequestEvent.pdsc + + export interface NoncompliantInvitationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + noncompliantInvitations: NoncompliantInvitation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/invitations/SecondaryInvitation.pdsc + + export interface SecondaryInvitation { + invitation: Invitation; + error?: InvitationErrorMessage; + } + } + namespace Jitacl { + // Generated from: com/linkedin/avro2pegasus/events/jitacl/AccessControlEntry.pdsc + + export interface AccessControlEntry { + targetPrincipalUrn: string; + expirationTime?: number; + businessJustification: string; + requestedAccessType: AccessType[]; + status: JitAclStatusCode; + statusMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jitacl/AccessType.pdsc + + export type AccessType = 'READ' | 'WRITE'; + // Generated from: com/linkedin/avro2pegasus/events/jitacl/JitAclChangeEvent.pdsc + + export interface JitAclChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + targetResourceUrn: string; + datasystemUrns: string[]; + requestingPrincipalUrn: string; + accessControlList: AccessControlEntry[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jitacl/JitAclStatusCode.pdsc + + export type JitAclStatusCode = + | 'JIT_ACL_CREATED' + | 'JIT_ACL_EXPIRED' + | 'ACCESS_DENIED' + | 'ERROR_CREATING_ACLS' + | 'ERROR_REMOVING_ACLS'; + } + namespace Jobdedup { + // Generated from: com/linkedin/avro2pegasus/events/jobdedup/DedupJobPostingsDroppedEvent.pdsc + + export interface DedupJobPostingsDroppedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + dedupResultInfo: DedupResultInfo; + memberUrn: string; + droppedJobPostingUrns: string[]; + candidatesCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobdedup/DedupMembersDroppedEvent.pdsc + + export interface DedupMembersDroppedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + dedupResultInfo: DedupResultInfo; + jobPostingUrn: string; + droppedMemberUrns: string[]; + candidatesCount?: number; + candidateMemberUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobdedup/DedupResultInfo.pdsc + + export interface DedupResultInfo { + channel: JobPostingDedupChannel; + referenceId?: string; + jobActionTypes: JobActionType[]; + jobPostingDuplicationType: JobPostingDuplicationType; + lookBackTimeSpan: Com.Linkedin.Avro2pegasus.Events.Common.TimeSpan; + } + // Generated from: com/linkedin/avro2pegasus/events/jobdedup/JobActionType.pdsc + + export type JobActionType = 'SAVE' | 'APPLY' | 'NOTIFY'; + // Generated from: com/linkedin/avro2pegasus/events/jobdedup/JobActionWithDedupEvent.pdsc + + export interface JobActionWithDedupEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + jobPostingUrn: string; + jobActionType: JobActionType; + jobPostingHash: string; + jobPostingDuplicationType: JobPostingDuplicationType; + actionPerformedTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobdedup/JobPostingDedupChannel.pdsc + + export type JobPostingDedupChannel = + | 'INSTANT_JOBS' + | 'INSTANT_ALERTS' + | 'SAVED_SEARCH_JOB_ALERT_EMAILS' + | 'SAVED_SEARCH_JOB_ALERT_NOTIFICATIONS'; + // Generated from: com/linkedin/avro2pegasus/events/jobdedup/JobPostingDuplicationType.pdsc + + export type JobPostingDuplicationType = 'TITLE_COMPANY_LOCATION_DUPLICATION'; + } + namespace Jobposterbadge { + // Generated from: com/linkedin/avro2pegasus/events/jobposterbadge/JobPosterBadgeConsumedEventType.pdsc + + export type JobPosterBadgeConsumedEventType = + | 'JOB_OPPORTUNITY_MESSAGE_DELIVER_EVENT' + | 'COMM_GENERIC_MESSAGE_SEND_EVENT'; + // Generated from: com/linkedin/avro2pegasus/events/jobposterbadge/JobPosterBadgeDetails.pdsc + + export interface JobPosterBadgeDetails { + numberOfOverdueReplies: number; + numberOfOnTimeReplies: number; + numberOfRepliesToGetBadge: number; + replyRate: number; + isValidBadgeBeforeProcessing: boolean; + isValidBadgeAfterProcessing: boolean; + shouldGrantBadge: boolean; + isRepliedOnTime?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/jobposterbadge/JobPosterBadgeProcessedEvent.pdsc + + export interface JobPosterBadgeProcessedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPosterMemberUrn: string; + jobSeekerMemberUrn: string; + consumedEventType: JobPosterBadgeConsumedEventType; + consumedEventHeaderTime: number; + failures?: JobPosterBadgeProcessingFailure[]; + skipProcessingReason?: JobPosterBadgeSkipProcessingReason; + details?: JobPosterBadgeDetails; + } + // Generated from: com/linkedin/avro2pegasus/events/jobposterbadge/JobPosterBadgeProcessingFailure.pdsc + + export type JobPosterBadgeProcessingFailure = 'UPDATE_CONVERSATION_STATUS_FAILED' | 'UPDATE_BADGE_FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/jobposterbadge/JobPosterBadgeSkipProcessingReason.pdsc + + export type JobPosterBadgeSkipProcessingReason = + | 'REACH_OUT_MESSAGE_NOT_EXIST' + | 'LAST_MESSAGE_ALREADY_REPLIED' + | 'MESSAGE_BETWEEN_FIRST_DEGREE_CONNECTIONS' + | 'MESSAGE_TYPE_MISMATCH'; + } + namespace Jobs { + // Generated from: com/linkedin/avro2pegasus/events/jobs/actionType.pdsc + + export type actionType = 'CLICK' | 'DISMISS' | 'SWIPE_LEFT' | 'SWIPE_RIGHT'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/additionalInfoPair.pdsc + + export interface additionalInfoPair { + key: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/AmbiguousCompanyStandardizationEvent.pdsc + + export interface AmbiguousCompanyStandardizationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + partnerJobCode: string; + partnerUrn: string; + companyName: string; + sourceUrl?: string; + scoredCompanies: Com.Linkedin.Avro2pegasus.Events.ScoredEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/ApplyWithLinkedInWidgetActionEvent.pdsc + + export interface ApplyWithLinkedInWidgetActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn?: string; + companyUrn?: string; + companyJobCode?: string; + obfuscatedMemberId: string; + action: ApplyWithLinkedInWidgetActionType; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + companyApplyUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/ApplyWithLinkedInWidgetActionType.pdsc + + export type ApplyWithLinkedInWidgetActionType = 'CLICK' | 'SUBMIT' | 'SIGNIN_CLICK'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/ApplyWithLinkedInWidgetImpressionEvent.pdsc + + export interface ApplyWithLinkedInWidgetImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + isLoggedIn: boolean; + jobPostingUrn?: string; + companyUrn?: string; + companyJobCode?: string; + partnerDomain: string; + source?: string; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + obfuscatedMemberId?: string; + companyApplyUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/CampaignExecutionEvent.pdsc + + export interface CampaignExecutionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipient: string; + communicationChannel: Channel; + campaignName: string; + isSuccessful: boolean; + failureStage?: CampaignExecutionStage; + failureReason?: string; + communicationHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/CampaignExecutionStage.pdsc + + export type CampaignExecutionStage = 'FETCH' | 'ASSEMBLE' | 'DELIVER'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/CardType.pdsc + + export type CardType = 'APPLICATION_VIEWED' | 'APPLY_REMINDER' | 'INMAIL_REMINDER' | 'RESUME_DOWNLOADED'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/Channel.pdsc + + export type Channel = 'EMAIL' | 'PUSH' | 'IN_APP_NOTIFICATION'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/ClosedBasicJobEvent.pdsc + + export interface ClosedBasicJobEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobId: number; + memberId?: number; + jobTitle: string; + companyName?: string; + jobFunctions?: string; + country?: string; + postalCode?: string; + locationDesc?: string; + jobType?: string; + experience?: string; + jobCode?: string; + salary?: string; + description?: string; + showPosterInfo: string; + posterHeadline?: string; + contactEmailId?: number; + role: string; + state?: string; + createdTime: number; + listedTime?: number; + expirationTime?: number; + closedTime?: number; + lastModifiedTime: number; + sendConfirmationEmail: string; + txn: number; + grantId?: number; + isReclaimed?: string; + geoPlaceCode?: string; + latitudeDeg?: number; + longitudeDeg?: number; + regionCode?: number; + geoPostalCode?: string; + externalApplyUrl?: string; + externalOriginId?: number; + externalOriginType?: string; + companyId?: number; + partnerId?: number; + partnerJobCode?: string; + creatorLanguage?: string; + skillsDescription?: string; + companyDescription?: string; + description2?: string; + description3?: string; + geoPlaceMaskCode?: string; + referralFeeDesc?: string; + industries?: string; + referralFee2Desc?: string; + trackingPixelUrl?: string; + orderId?: number; + descriptionRtData?: string; + companyDescriptionRtData?: string; + skillsRtData?: string; + updateReason?: string; + originalListedTime?: number; + creatorId?: number; + veteranCommit?: string; + isSponsored?: string; + campaignId?: number; + flexStore?: string; + contactEmail?: string; + versionTag?: number; + ggModiTs?: number; + ggStatus?: string; + ggPriority?: number; + listingType?: string; + deduperHash?: string; + deletedTs?: number; + employeeSchedules?: string; + employeeTypes?: string; + workRemoteAllowed?: string; + addressLocality?: string; + addressRegion?: string; + streetAddress?: string; + addressPostalCode?: string; + locationVisibility?: string; + suspendReasons?: number; + subListingType?: string; + geoId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/CompanyUpdateReason.pdsc + + export type CompanyUpdateReason = + | 'FIRST_UPDATE' + | 'COMPANY_CHANGE' + | 'GREY_LOGO_JOB' + | 'INCORRECT_COMPANY_CUSTOMER' + | 'INCORRECT_JOBS_CUSTOMER' + | 'INCORRECT_COMPANY_INTERNAL' + | 'INCORRECT_JOBS_INTERNAL'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/DocumentData.pdsc + + export interface DocumentData { + documentUrn: string; + score: number; + emptyFeatureCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/EmptyJobSearchResultPageImpressionEvent.pdsc + + export interface EmptyJobSearchResultPageImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + companyName?: string; + companyUrn?: string; + keyword?: string; + city?: string; + stateCode?: string; + countryCode: string; + searchId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/EntityRelevanceFeedbacksFinderEvent.pdsc + + export interface EntityRelevanceFeedbacksFinderEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + finderType: FinderType; + owner: string; + timeRange?: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + feedbackTypes?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.EntityRelevanceFeedbackType[]; + channels?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.EntityRelevanceFeedbackChannel[]; + entityRelevanceFeedbackUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/ExperienceLevel.pdsc + + export type ExperienceLevel = + | 'NOT_APPLICABLE' + | 'INTERNSHIP' + | 'ENTRY_LEVEL' + | 'ASSOCIATE' + | 'MID_SENIOR_LEVEL' + | 'DIRECTOR' + | 'EXECUTIVE'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/FeedImpressionEventFields.pdsc + + export interface FeedImpressionEventFields { + associatedInputControlUrn?: string; + urlTreatment?: Com.Linkedin.Avro2pegasus.Events.Feed.UrlTreatment; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/FeedType.pdsc + + export type FeedType = 'MARKETING' | 'TALENT_HUB'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/FinderType.pdsc + + export type FinderType = 'OWNER'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/FlagshipJobPostingCreationFlowChangeStatus.pdsc + + export type FlagshipJobPostingCreationFlowChangeStatus = 'UNCHANGED' | 'CHANGED'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/FlagshipJobPostingCreationFlowField.pdsc + + export type FlagshipJobPostingCreationFlowField = + | 'COMPANY_NAME' + | 'COMPANY_LOCATION' + | 'JOB_TITLE' + | 'EMPLOYMENT_TYPE' + | 'JOB_DESCRIPTION'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/FlagshipJobPostingCreationFlowFieldChangeStatus.pdsc + + export interface FlagshipJobPostingCreationFlowFieldChangeStatus { + field: FlagshipJobPostingCreationFlowField; + changeStatus: FlagshipJobPostingCreationFlowChangeStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/FlagshipMemberJobPostingCreationFlowExitEvent.pdsc + + export interface FlagshipMemberJobPostingCreationFlowExitEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + fieldChangeStatuses: FlagshipJobPostingCreationFlowFieldChangeStatus[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/GuestJobSearchResultsFeedbackEvent.pdsc + + export interface GuestJobSearchResultsFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + feedbackRating: number; + feedbackText?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/Job2SkillsVersionNumber.pdsc + + export type Job2SkillsVersionNumber = 'V1' | 'V2'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobActionEvent.pdsc + + export interface JobActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + actionType: JobActionType; + referenceId: string; + jobPosting: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobActionSourceEventName.pdsc + + export type JobActionSourceEventName = + | 'JOB_ACTION_EVENT' + | 'FLAGSHIP_JOB_ACTION_EVENT' + | 'ZEPHYR_FLAGSHIP_JOB_ACTION_EVENT' + | 'JOB_APPLY_CLICK_EVENT' + | 'ZEPHYR_JOB_APPLY_CLICK_EVENT'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobActionType.pdsc + + export type JobActionType = + | 'SAVE' + | 'UNSAVE' + | 'EXTERNAL_APPLY_START' + | 'EASY_APPLY_START' + | 'INTERNAL_APPLY_START' + | 'INTERNAL_APPLY_SUBMIT' + | 'SHARE' + | 'REMOVE' + | 'LIKE' + | 'UNLIKE' + | 'REPORT' + | 'UNDO_REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobAlertCreationStatus.pdsc + + export type JobAlertCreationStatus = + | 'SUCCESS_CREATE' + | 'UNACCEPTABLE_SEARCH_TYPE' + | 'UNACCEPTABLE_OWNER_TYPE' + | 'UNACCEPTABLE_FREQUENCY' + | 'OVER_QUOTA' + | 'MEMBER_EMAIL_ADDRESS' + | 'OBJECTIONABLE_QUERY' + | 'EMPTY_QUERY' + | 'EMAIL_IN_REDLIST' + | 'NO_RESULT_QUERY' + | 'QUERY_TOO_LONG' + | 'NON_PERSONAL_EMAIL_ADDRESS' + | 'NO_RESPONSE'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobApplicationEvent.pdsc + + export interface JobApplicationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobId: number; + applicantId: number; + externalOriginType: string; + externalOriginId: number; + numApplicants?: number; + jobTitle: string; + posterId?: number; + referenceId?: string; + trackingCode?: string; + isSponsored?: boolean; + applicationId?: number; + hasResume?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobApplyClickEvent.pdsc + + export interface JobApplyClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + isOffsiteApplication: boolean; + applicantId: number; + jobId: number; + isSponsored: boolean; + referenceId?: string; + trackingCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobAttributes.pdsc + + export interface JobAttributes { + jobPostingUrn: string; + jobPosterUrn: string; + jobOwnerUrn: string; + jobState: JobState; + companyUrn?: string; + companyName: string; + countryCode: string; + regionCode?: number; + postalCode?: string; + titleUrn?: string; + titleName: string; + experienceLevel: ExperienceLevel; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobBillingType.pdsc + + export type JobBillingType = 'BASIC' | 'PREPAID' | 'POSTPAID'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobBudgetRecommendation.pdsc + + export interface JobBudgetRecommendation { + dailyBudget: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + adjustedDailyBudget: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + totalBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + adjustedTotalBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + applicantForecastCount: number; + minDailyBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + maxDailyBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + minTotalBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + maxTotalBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + applicantForecastCountForFreemiumPromotion?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobBudgetSelection.pdsc + + export interface JobBudgetSelection { + dailyBudgetAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + totalBudgetAmount?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + applicantForecastCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobCandidateManagementActionEvent.pdsc + + export interface JobCandidateManagementActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: string; + modelId?: string; + jobUrn: string; + posterUrn: string; + entityType: JobCandidateManagementEntityType; + targetUrn: string; + action: JobCandidateManagementActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobCandidateManagementActionType.pdsc + + export type JobCandidateManagementActionType = + | 'LABEL_GOOD_FIT' + | 'LABEL_POSSIBLE_FIT' + | 'LABEL_NOT_A_FIT' + | 'VIEW_PROFILE' + | 'SEND_INMAIL' + | 'REVIEW_PROFILE' + | 'FORWARD_PROFILE' + | 'DOWNLOAD_RESUME'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobCandidateManagementEntityProperty.pdsc + + export type JobCandidateManagementEntityProperty = 'FEATURED' | 'NORMAL'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobCandidateManagementEntityType.pdsc + + export type JobCandidateManagementEntityType = 'APPLICANT' | 'TALENT_MATCH'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobCandidateManagementImpressionEvent.pdsc + + export interface JobCandidateManagementImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: string; + modelId?: string; + jobUrn: string; + posterUrn: string; + entityType: JobCandidateManagementEntityType; + results: JobCandidateManagementResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobCandidateManagementResult.pdsc + + export interface JobCandidateManagementResult { + scoredEntity: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2; + position: number; + properties?: JobCandidateManagementEntityProperty[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobCandidateRecommendationsChannel.pdsc + + export type JobCandidateRecommendationsChannel = 'ZEPHYR'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobCandidateRecommendationsEvent.pdsc + + export interface JobCandidateRecommendationsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + recommendations: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobCandidateRecommendation[]; + excludedRecommendations: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobCandidateRecommendation[]; + relevanceModelId: string; + cutoffScore: number; + capSearchQuery: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobCandidateRecommendationsImpressionEvent.pdsc + + export interface JobCandidateRecommendationsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + impressedCandidateMemberUrns: string[]; + channel: JobCandidateRecommendationsChannel; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobChargeState.pdsc + + export type JobChargeState = 'ERROR' | 'PENDING' | 'SUBMITTED'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobClickEvent.pdsc + + export interface JobClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + jobId?: number; + memberId?: number; + companyId?: number; + jobClickType: JobClickType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobClickType.pdsc + + export type JobClickType = + | 'TALENT_MATCH' + | 'TALENT_MATCH_HIGHLIGHT' + | 'TALENT_MATCH_UNHIGHLIGHT' + | 'TALENT_MATCH_SEND_INMAIL' + | 'TALENT_MATCH_SEND_MESSAGE' + | 'TALENT_MATCH_DELETE_BAD_MATCH' + | 'TALENT_MATCH_DELETE_NO_REASON' + | 'TALENT_MATCH_DELETE_OTHER_REASON' + | 'WIZARD_COMPANY_FOLLOW' + | 'WIZARD_FINISH' + | 'WIZARD_PYMK_CONNECT' + | 'RECOMMENDED' + | 'RECOMMENDED_SEE_MORE' + | 'RECOMMENDED_DELETE_NOT_RELEVANT' + | 'RECOMMENDED_DELETE_NOT_INTERESTED' + | 'SIMILAR' + | 'SIMILAR_SEE_MORE' + | 'SAVE' + | 'UNSAVE'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobCreationEntityType.pdsc + + export type JobCreationEntityType = 'JOB' | 'REFERRAL_JOB'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobDedupeSource.pdsc + + export type JobDedupeSource = 'ASYNC_POST_DEDUPE' | 'SYNC_PRE_DEDUPE' | 'SYNC_POST_DEDUPE'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobDetailsPeopleToContactImpressionEvent.pdsc + + export interface JobDetailsPeopleToContactImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + peopleRecommendations: Com.Linkedin.Avro2pegasus.Common.Jobs.PeopleRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobDetailsSalaryImpressionEvent.pdsc + + export interface JobDetailsSalaryImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobDistributionEvent.pdsc + + export interface JobDistributionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + target: JobDistributionTarget; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobDistributionPartner.pdsc + + export type JobDistributionPartner = + | 'TEST' + | 'SNAGAJOB' + | 'ZIPRECRUITER' + | 'JUJU' + | 'JOBRAPIDO' + | 'CAREERCAST' + | 'CAREERJET' + | 'RECRUITNET' + | 'JOBISJOB' + | 'JOOBLE' + | 'CAREERBLISS' + | 'CAREERBUILDER' + | 'JOBS2CAREERS' + | 'JOBCASE' + | 'XPATJOBS' + | 'ADZUNA' + | 'ARBEITSAGENTUR' + | 'POLEEMPLOI' + | 'BUSCOJOBS' + | 'TRABAJANDO' + | 'NEUVOO' + | 'DOCCAFE' + | 'STARTWIRE' + | 'CRUNCHBASE' + | 'STACKOVERFLOW' + | 'PORTFOLIUM'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobDistributionTarget.pdsc + + export interface JobDistributionTarget { + partner: JobDistributionPartner; + paymentType: PaymentType; + campaignName?: string; + cpc?: number; + trafficSegment?: number; + currencyCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobDistributionV2Event.pdsc + + export interface JobDistributionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + jobBoardUrn: string; + jobDistributionFeedUrn: string; + jobDistributionCampaignUrn?: string; + trackingUrl: string; + biddingPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + azkabanFlowExecutionUrn: string; + feedGeneratedTime: number; + feedType?: FeedType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobEmailAlertFrequency.pdsc + + export type JobEmailAlertFrequency = 'NONE' | 'DAILY' | 'WEEKLY'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobEmailAlertSettingSaveEvent.pdsc + + export interface JobEmailAlertSettingSaveEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + frequency: JobEmailAlertFrequency; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobEvaluatedSearchTermEvent.pdsc + + export interface JobEvaluatedSearchTermEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + companyName?: string; + companyUrn?: string; + keyword?: string; + keywordType?: JobKeywordType; + city?: string; + state?: string; + countryCode: string; + resultCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobFeatureLocationType.pdsc + + export type JobFeatureLocationType = + | 'ADS' + | 'COMPANY_PAGES' + | 'MOBILE_COMPANY_PAGES' + | 'FEATURE_HOME' + | 'MOBILE_FEATURE_HOME' + | 'FEED' + | 'MOBILE_FEED' + | 'JOB_RANKER' + | 'JOBSEEKER_EMAIL' + | 'MESSAGING' + | 'NETWORK' + | 'NOTIFICATIONS' + | 'RECRUITER' + | 'MOBILE_RECRUITER' + | 'RECRUITER_EMAIL' + | 'SEARCH' + | 'MOBILE_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobFieldProcessorExecutionPerformanceEvent.pdsc + + export interface JobFieldProcessorExecutionPerformanceEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + fieldProcessorId?: number; + fieldProcessorType: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobFieldProcessorType; + fieldProcessorClassName: string; + dynamicFieldProcessorParameterRule?: string; + executionTime: number; + sourceId: string; + spiderId?: string; + fieldProcessorRank: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobHadApplicationDeletedEvent.pdsc + + export interface JobHadApplicationDeletedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + jobApplicationUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobHighlightCard.pdsc + + export interface JobHighlightCard { + cardType: JobHighlightCardType; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + jobUrn?: string; + jobApplicationUrn?: string; + inMailSenderUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobHighlightCardType.pdsc + + export interface JobHighlightCardType { + objectUrn: string; + type: CardType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobImpressionEvent.pdsc + + export interface JobImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + jobId: number; + jobImpressionType: JobImpressionType; + impressions: Com.Linkedin.Avro2pegasus.Events.Jobs.Impression.JobImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobImpressionEventV2.pdsc + + export interface JobImpressionEventV2 { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberUrn: string; + referenceId?: string; + clientRequestId?: string; + impressionType: JobImpressionTypeV2; + channel: string; + modelId?: string; + results?: JobScoredEntity[]; + customAttributes?: { [id: string]: string }; + pagingSessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobImpressionType.pdsc + + export type JobImpressionType = 'RECOMMENDED' | 'SIMILAR' | 'TALENT_MATCH'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobImpressionTypeV2.pdsc + + export type JobImpressionTypeV2 = + | 'JOB_SEARCH' + | 'JYMBII' + | 'SPONSORED_JYMBII' + | 'COMPANY_JYMBII' + | 'WIDGET' + | 'INTERNAL_JYMBII' + | 'SIMILAR_JOBS' + | 'BROWSE_MAP' + | 'ACTIVITY_BROWSE_MAP' + | 'TALENT_MATCH' + | 'PREMIUM' + | 'BECAUSE_YOU_VIEWED' + | 'JOBS_IN_YOUR_NETWORK' + | 'TOP_APPLICANT' + | 'DREAM_COMPANY' + | 'SAVED_JOBS' + | 'APPLIED_JOBS' + | 'FLAVOR' + | 'VIEWED_JOBS' + | 'ALERT_JOBS' + | 'ARCHIVED_JOBS' + | 'OFFSITE_REMINDER_JOBS' + | 'INSTANT_JOBS' + | 'BLENDED_SRP' + | 'INSTANT_JOB_SEARCH_ALERT'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobIngestionBlacklistStatus.pdsc + + export type JobIngestionBlacklistStatus = + | 'COMPANY_BLACKLISTED' + | 'EMPLOYER_OPTED_OUT' + | 'SOURCE_EXPORT_STATE' + | 'GLOBAL_EXPORT_BLOCK' + | 'MULTIPLEX_ELIGIBLE' + | 'IGNORED' + | 'NO_UPDATE_NEEDED' + | 'COUNTRY_NOT_ENABLED' + | 'TOO_OLD' + | 'INVALID_FIELD' + | 'LOCAL_DUPLICATE' + | 'LOCATION_INVALID'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobIngestionCompanyResolutionEvent.pdsc + + export interface JobIngestionCompanyResolutionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + providedCompanyName: string; + rawJobUrn: string; + configuredCompanyUrn?: string; + jobDerivedCompanies: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobDerivedCompanyResult[]; + resolvedCompanyUrn: string; + isPublished: boolean; + jobSourceUrn?: string; + jobPostingUrn?: string; + blacklistReason?: JobIngestionBlacklistStatus; + partnerJobCode?: string; + jobIngestionEmployerUrn?: string; + industryUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobIngestionCompanyUpdateEvent.pdsc + + export interface JobIngestionCompanyUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + scrapedCompanyName?: string; + previousCompanyUrn?: string; + newCompanyUrn?: string; + companyUpdateReason: CompanyUpdateReason; + jobIngestionEmployerUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobIngestionCompleteAction.pdsc + + export type JobIngestionCompleteAction = + | 'CREATE' + | 'UPDATE' + | 'RENEW' + | 'CLOSE' + | 'DROP' + | 'DUPLICATE' + | 'NEW_MULTIPLEX_JOB'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobIngestionDroppedReason.pdsc + + export type JobIngestionDroppedReason = + | 'MISSING_FIELDS' + | 'DUPLICATE' + | 'LOW_QUALITY' + | 'SPAM' + | 'UNSUPPORTED_LANGUAGE' + | 'PARSE_ERROR' + | 'DOWNSTREAM_ERROR' + | 'BLACKLIST_RULE' + | 'VALIDATION_ERROR' + | 'BLACKLISTED' + | 'DO_NOT_PUBLISH' + | 'UNEXPECTED_INGESTION_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobIngestionFeedbackEvent.pdsc + + export interface JobIngestionFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + partnerUrn: string; + partnerJobCode: string; + jobUrn?: string; + duplicateOfJobUrn?: string; + jobAction: JobIngestionCompleteAction; + jobDroppedReason?: JobIngestionDroppedReason; + jobMissingFields?: JobIngestionRequiredFields[]; + blacklistRuleUrn?: string; + blacklistStatus?: JobIngestionBlacklistStatus; + multiplexedPartnerJobCode?: string; + numberOfMultiplexJobsCreated?: number; + companyUrn?: string; + jobDedupeSource?: JobDedupeSource; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobIngestionRequiredFields.pdsc + + export type JobIngestionRequiredFields = + | 'SOURCE_URL' + | 'COMPANY_URN' + | 'FORMATTED_DESCRIPTION' + | 'EMPLOYMENT_STATUS' + | 'DETECTED_LANGUAGE' + | 'EXPERIENCE_LEVEL' + | 'FUNCTIONS' + | 'INDUSTRIES'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobKeywordType.pdsc + + export type JobKeywordType = 'OCCUPATION' | 'SKILL' | 'INDUSTRY' | 'FUNCTION'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobListingType.pdsc + + export type JobListingType = 'PREMIUM' | 'BASIC'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobOpportunityMessageDeliverEvent.pdsc + + export interface JobOpportunityMessageDeliverEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientUrn: string; + senderUrn: string; + mailboxItemUrn?: string; + messagingMessageUrn?: string; + jobPostingUrn: string; + jobOpportunityMessageType: Com.Linkedin.Avro2pegasus.Jobs.JobOpportunityMessageType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPosterComplianceChangeEvent.pdsc + + export interface JobPosterComplianceChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + verificationType: JobPosterComplianceVerificationType; + jobPosterUrn?: string; + organizationUrn?: string; + previousStatus: JobPosterVerificationStatusData; + currentStatus: JobPosterVerificationStatusData; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPosterComplianceVerificationType.pdsc + + export type JobPosterComplianceVerificationType = 'PERSONAL_IDENTITY' | 'COMPANY_LICENSE' | 'EMPLOYMENT'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPosterReachOutBulkSendEvent.pdsc + + export interface JobPosterReachOutBulkSendEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + numberOfRecommendedCandidates: number; + numberOfContactedCandidates: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPosterVerificationStatus.pdsc + + export type JobPosterVerificationStatus = 'PENDING' | 'REJECTED' | 'APPROVED'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPosterVerificationStatusData.pdsc + + export interface JobPosterVerificationStatusData { + status: JobPosterVerificationStatus; + modifiedTime: number; + actorUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingApplicantTrackingSystemDetectionEvent.pdsc + + export interface JobPostingApplicantTrackingSystemDetectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + applyUrl: string; + applicantTrackingSystemUrn?: string; + jobSourceUrn?: string; + hasAppendedTrkParams: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingChangeEvent.pdsc + + export interface JobPostingChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + jobPostingData: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobPostingChangeData; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingChannelFeedbackEvent.pdsc + + export interface JobPostingChannelFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + pageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn: string; + seatUrn: string; + userFlow: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + channel: JobPostingChannelType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingChannelType.pdsc + + export type JobPostingChannelType = + | 'RADIO' + | 'MAIL' + | 'LNKD' + | 'ONLINE_AD' + | 'EVENT' + | 'TV' + | 'PODCAST' + | 'STREAMING_AUDIO' + | 'OTHER' + | 'EMAIL' + | 'SIRIUSXM_SATELLITE_RADIO'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseEvent.pdsc + + export interface JobPostingCloseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + jobListingType: JobListingType; + contractUrn?: string; + seatUrn?: string; + closeTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseSurveyCloseJobResponse.pdsc + + export interface JobPostingCloseSurveyCloseJobResponse { + reason: JobPostingCloseSurveyCloseReason; + platformUsed?: JobPostingCloseSurveyPlatform; + userComments?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseSurveyCloseReason.pdsc + + export type JobPostingCloseSurveyCloseReason = + | 'HIRED' + | 'ENOUGH_APPLICANTS' + | 'NOT_ENOUGH_QUALITY_APPLICANTS' + | 'NO_LONGER_HIRING' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseSurveyCustomerSatisfactionResponse.pdsc + + export interface JobPostingCloseSurveyCustomerSatisfactionResponse { + jobPostingRating?: number; + jobPostingUserComments?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseSurveyPlatform.pdsc + + export type JobPostingCloseSurveyPlatform = + | 'LINKEDIN_JOB_POSTS' + | 'ANOTHER_LINKEDIN_PRODUCT' + | 'INDEED' + | 'ZIP_RECRUITER' + | 'STAFFING_AGENCY' + | 'REFERRAL' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseSurveyResponseEvent.pdsc + + export interface JobPostingCloseSurveyResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + whyCloseJobResponse?: JobPostingCloseSurveyWhyCloseJobResponse; + willPostAnotherJobResponse?: JobPostingCloseSurveyWillPostAnotherJobResponse; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseSurveyResponseV2Event.pdsc + + export interface JobPostingCloseSurveyResponseV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + jobPostingUrn: string; + closeJobResponse?: JobPostingCloseSurveyCloseJobResponse; + customerSatisfactionResponse?: JobPostingCloseSurveyCustomerSatisfactionResponse; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseSurveyWhyCloseJobAnswer.pdsc + + export type JobPostingCloseSurveyWhyCloseJobAnswer = + | 'HIRED' + | 'ENOUGH_APPLICANTS' + | 'NOT_ENOUGH_QUALITY_APPLICANTS' + | 'RUN_OUT_OF_BUDGET' + | 'NO_LONGER_HIRING' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseSurveyWhyCloseJobResponse.pdsc + + export interface JobPostingCloseSurveyWhyCloseJobResponse { + answers: JobPostingCloseSurveyWhyCloseJobAnswer[]; + moreInfoFromUser?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseSurveyWillPostAnotherJobAnswer.pdsc + + export type JobPostingCloseSurveyWillPostAnotherJobAnswer = 'YES' | 'I_DO_NOT_KNOW' | 'NO'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCloseSurveyWillPostAnotherJobResponse.pdsc + + export interface JobPostingCloseSurveyWillPostAnotherJobResponse { + answers: JobPostingCloseSurveyWillPostAnotherJobAnswer[]; + moreInfoFromUser?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingCustomerSatisfactionRespondEvent.pdsc + + export interface JobPostingCustomerSatisfactionRespondEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + rating?: number; + isSatisfiedWithCandidateQuality?: boolean; + isSatisfiedWithJobPostCharge?: boolean; + isSatisfiedWithApplicantsQuantity?: boolean; + userComments?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingEducationSuggestion.pdsc + + export interface JobPostingEducationSuggestion { + degreeUrn: string; + fieldOfStudyUrn: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingEducationSuggestionSaveEvent.pdsc + + export interface JobPostingEducationSuggestionSaveEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn: string; + savedEducationSuggestions: JobPostingEducationSuggestion[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingEducationSuggestionServedEvent.pdsc + + export interface JobPostingEducationSuggestionServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn?: string; + jobPostingSuggestionConfiguration: JobPostingSuggestionConfiguration; + educationSuggestions: JobPostingEducationSuggestion[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingEntity.pdsc + + export interface JobPostingEntity { + jobPostingUrn: string; + referenceId: string; + duration?: number; + visibleTime?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + visibleHeight?: number; + searchImpressionV2EventSpec?: SearchImpressionV2EventFields; + jobRecommendationImpressionEventSpec?: JobRecommendationImpressionEventFields; + feedImpressionEventSpec?: FeedImpressionEventFields; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingEvent.pdsc + + export interface JobPostingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobId: number; + externalOriginType: string; + externalOriginId: number; + jobExpirationDate: number; + companyName?: string; + companyMediaId?: string; + jobTitle: string; + posterId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingExperienceSuggestionSaveEvent.pdsc + + export interface JobPostingExperienceSuggestionSaveEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn: string; + savedMinimumExperienceRange: JobsNumberRange; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingExperienceSuggestionServedEvent.pdsc + + export interface JobPostingExperienceSuggestionServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn?: string; + jobPostingSuggestionConfiguration: JobPostingSuggestionConfiguration; + minimumExperienceRange: JobsNumberRange; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingFlowOperation.pdsc + + export type JobPostingFlowOperation = + | 'WOW_PAGE_CLICK' + | 'WOW_PAGE_CONTINUE' + | 'FORM_PAGE_CONTINUE' + | 'TARGETING_PAGE_CONTINUE' + | 'BUDGET_PAGE_CONTINUE' + | 'OPTIMIZE_PAGE_CONTINUE' + | 'SPONSOR_PAGE_CONTINUE' + | 'UNIFIED_WOW_PAGE_CLICK' + | 'UNIFIED_WOW_PAGE_CONTINUE' + | 'GUEST_WOW_PAGE_CREATE_ACCOUNT' + | 'EMAIL_VERIFICATION_MODAL_CONFIRM_EMAIL'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingFlowOperationEvent.pdsc + + export interface JobPostingFlowOperationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contractUrn?: string; + seatUrn?: string; + editorUrn?: string; + jobPostingUrn?: string; + hiringProjectUrn?: string; + operation: JobPostingFlowOperation; + jobPostingFlowPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + userFlowUuid: string; + wowPageContinueData?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.WowPageContinueData; + formPageContinueData?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.FormPageContinueData; + targetingPageContinueData?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.TargetingPageContinueData; + budgetPageContinueData?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.BudgetPageContinueData; + optimizePageContinueData?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.OptimizePageContinueData; + sponsorPageContinueData?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.SponsorPageContinueData; + isRepeatedJobPoster?: boolean; + action?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobPostingFormAction; + unifiedWowPageContinueData?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.UnifiedWowPageContinueData; + guestWowPageCreateAccountData?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.GuestWowCreateAccountData; + emailVerificationModalConfirmEmailData?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.EmailVerificationData; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingFormData.pdsc + + export interface JobPostingFormData { + jobFunctions: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobFunction[]; + jobDescription?: string; + industryUrns: string[]; + employmentStatus?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.EmploymentStatus; + experienceLevel?: ExperienceLevel; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingImpressionType.pdsc + + export type JobPostingImpressionType = 'JYMBII' | 'JOB_SEARCH' | 'BROWSE_MAP' | 'SIMILAR_JOBS' | 'FLAVOR'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingListEvent.pdsc + + export interface JobPostingListEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + jobListingType: JobListingType; + contractUrn?: string; + seatUrn?: string; + listingTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingManagementActionType.pdsc + + export type JobPostingManagementActionType = 'CREATE' | 'EDIT'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingOnHiringPlatformActionEvent.pdsc + + export interface JobPostingOnHiringPlatformActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + hiringContextUrn: string; + seatUrn: string; + jobPostingUrn: string; + hiringProjectUrn: string; + action: JobPostingOnMcmAction; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingOnMcmAction.pdsc + + export type JobPostingOnMcmAction = + | 'RENEW_JOB' + | 'CLOSE_JOB' + | 'CREATE_CAMPAIGN' + | 'STOP_CAMPAIGN' + | 'RESUME_CAMPAIGN' + | 'UPDATE_CAMPAIGN_BID_BUDGET'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingRankingFlavor.pdsc + + export type JobPostingRankingFlavor = 'NULL'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingRejectApplicantsRespondEvent.pdsc + + export interface JobPostingRejectApplicantsRespondEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + hiredMemberUrns?: string[]; + rejectedGroup?: JobPostingRejectedGroup; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingRejectApplicantsSubmitEvent.pdsc + + export interface JobPostingRejectApplicantsSubmitEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + rejectedGroup?: JobPostingRejectedGroup; + confirmedHireIdentityUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingRejectedGroup.pdsc + + export type JobPostingRejectedGroup = 'ARCHIVED_APPLICANTS' | 'ALL_APPLICANTS_EXCLUDE_HIRED'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingReviewEmailNotificationMessage.pdsc + + export interface JobPostingReviewEmailNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPostingUrn: string; + hiringProjectUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingSalaryFeedbackEvent.pdsc + + export interface JobPostingSalaryFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + isAccurate: boolean; + feedbackText?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingSkillEditAction.pdsc + + export type JobPostingSkillEditAction = 'ADD' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingSkillSuggestion.pdsc + + export interface JobPostingSkillSuggestion { + skillUrn: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingSkillSuggestionActionV2Event.pdsc + + export interface JobPostingSkillSuggestionActionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn?: string; + actionType: JobPostingSkillEditAction; + updatedSkillSuggestion?: JobPostingSkillSuggestion; + updatedSkillName: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingSkillSuggestionSaveEvent.pdsc + + export interface JobPostingSkillSuggestionSaveEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn: string; + savedSkillSuggestions: JobPostingSkillSuggestion[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingSkillSuggestionServedEvent.pdsc + + export interface JobPostingSkillSuggestionServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn?: string; + jobPostingSuggestionConfiguration: JobPostingSuggestionConfiguration; + skillSuggestions: JobPostingSkillSuggestion[]; + jobDescription?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingStateTransitionType.pdsc + + export type JobPostingStateTransitionType = + | 'DRAFT_CREATE' + | 'DRAFT_UPDATE' + | 'LIST' + | 'LISTED_UPDATE' + | 'CLOSE' + | 'CLOSED_UPDATE' + | 'DELETE' + | 'SUSPEND' + | 'SUSPENDED_UPDATE'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingSuggestionConfiguration.pdsc + + export interface JobPostingSuggestionConfiguration { + finderName: JobPostingSuggestionFinderName; + geoUrn: string; + industryUrns: string[]; + titleUrn?: string; + companyUrn?: string; + seniorityUrn?: string; + functionUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingSuggestionFinderName.pdsc + + export type JobPostingSuggestionFinderName = 'TITLE' | 'CRITERIA'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingTitleSuggestionActionEvent.pdsc + + export interface JobPostingTitleSuggestionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + jobPostingUrn: string; + rawTitleName: string; + titleVersion: string; + selectedTitle?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + additionalTitle?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPostingTitleSuggestionServedEvent.pdsc + + export interface JobPostingTitleSuggestionServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + jobPostingUrn?: string; + rawTitleName: string; + titleStandardizerVersion: string; + titleSuggestions: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobPromotionFetchEvent.pdsc + + export interface JobPromotionFetchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn?: string; + seatUrn?: string; + editorUrn?: string; + jobPromotionType: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobPromotionType; + ineligibleReason?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobPromotionErrorType; + promoOffer?: string; + promoCode?: string; + promoId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendationActionEvent.pdsc + + export interface JobRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recommendation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + isSponsored: boolean; + controlUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendationCenterImpressionEvent.pdsc + + export interface JobRecommendationCenterImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + impressions: Com.Linkedin.Avro2pegasus.Events.Jobs.Impression.JobRecommendationCenterImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendationCenterReferClickEvent.pdsc + + export interface JobRecommendationCenterReferClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + jobIds: number[]; + recipientId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendationFlavor.pdsc + + export type JobRecommendationFlavor = + | 'TOP_N' + | 'IN_NETWORK' + | 'ACTIVITY' + | 'INTERESTED_IN_COMPANY' + | 'HIDDEN_GEM' + | 'TRENDING' + | 'HIGH_GROWTH_COMPANY' + | 'SCHOOL_RECRUIT' + | 'COMPANY_RECRUIT' + | 'TOP_APPLICANT' + | 'MATCHING_PAST_POSITION_EXPERIENCE' + | 'MATCHING_SKILLS' + | 'SALARY' + | 'SALARY_PREMIUM' + | 'HIGH_GROWTH_COMPANY_PREMIUM' + | 'MATCHING_DEGREE_FIELD_OF_STUDY' + | 'JOB_SEEKER_QUALIFIED' + | 'REFERRAL' + | 'INTERESTED_JOBS' + | 'EXPIRING_SOON_JOBS' + | 'JOBS_SINCE_LAST_VISIT' + | 'TOP_JOBS' + | 'PREFERRED_COMMUTE' + | 'TOP_APPLICANT_FREE' + | 'BECAUSE_YOU_VIEWED' + | 'RESPONSIVE_JOBS' + | 'SKILL_ASSESSMENTS' + | 'PRE_SCREENING_QUESTIONS'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendationImpressionEntity.pdsc + + export interface JobRecommendationImpressionEntity { + recommendation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + isSponsored: boolean; + visibleTime: number; + duration?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + relevanceReason?: JobRecommendationFlavor; + relevanceReasons: JobRecommendationFlavor[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendationImpressionEvent.pdsc + + export interface JobRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: JobRecommendationImpressionEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendationImpressionEventFields.pdsc + + export interface JobRecommendationImpressionEventFields { + isSponsored: boolean; + relevanceReasons: JobRecommendationFlavor[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendationServedEntity.pdsc + + export interface JobRecommendationServedEntity { + recommendation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + isSponsored: boolean; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + channel?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendationServedEvent.pdsc + + export interface JobRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: JobRecommendationServedEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendationSmsEvent.pdsc + + export interface JobRecommendationSmsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + jobSearchParams: JobSearchParams; + jobCount: number; + jobCountThreshold: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobRecommendedRevealImpressionEvent.pdsc + + export interface JobRecommendedRevealImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + displayIndex: number; + numDisplayed: number; + revealedJobId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobResponsePredictionEvent.pdsc + + export interface JobResponsePredictionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + impressionType?: JobPostingImpressionType; + impressionChannel?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobPostingImpressionChannel; + impressionPortal?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobPostingImpressionPortal; + scoreType: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobResponsePredictionScoreType; + requesterUrn: string; + timeline: Timeline; + modelId: string; + numDocuments: number; + requestTrackingId: string; + requestedRequestFeatureCount?: number; + emptyRequestFeatureCount?: number; + requestedDocumentFeatureCount?: number; + documentData: DocumentData[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsAutoBiddingParams.pdsc + + export interface JobsAutoBiddingParams { + candidateQualityAdjustmentMultiplier?: number; + budgetDeliveryAdjustedBid?: number; + dailyBudgetUSD?: number; + expectedSpendRatio?: number; + actualSpendRatio?: number; + jobType?: JobType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsBudgetSelectionEvent.pdsc + + export interface JobsBudgetSelectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + userFlow: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + pageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn: string; + seatUrn: string; + jobAttributes: JobAttributes; + budgetRecommendation?: JobBudgetRecommendation; + budgetSelection: JobBudgetSelection; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobScoredEntity.pdsc + + export interface JobScoredEntity { + jobUrn: string; + score: number; + position: number; + recommendationFlavor?: JobRecommendationFlavor; + hasInApplyTag?: boolean; + hasNewTag?: boolean; + snippetLength?: number; + isSmartSnippet?: boolean; + isSponsored?: boolean; + hasCompanyLogo?: boolean; + jobPostTime?: number; + recommendationFlavors?: JobRecommendationFlavor[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchAlertCreationEvent.pdsc + + export interface JobSearchAlertCreationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchId: string; + savedSearchId?: number; + status: JobAlertCreationStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchAlertStateTransitionEvent.pdsc + + export interface JobSearchAlertStateTransitionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ownerUrn: string; + savedSearchUrn?: string; + stateTransitionType: JobSearchAlertStateTransitionType; + stateTransitionResult: JobSearchAlertStateTransitionResultType; + transitionNote?: JobSearchAlertStateTransitionNoteType; + source?: JobSearchAlertTransitionSourceType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchAlertStateTransitionNoteType.pdsc + + export type JobSearchAlertStateTransitionNoteType = + | 'UNACCEPTABLE_SEARCH_TYPE' + | 'UNACCEPTABLE_OWNER_TYPE' + | 'UNACCEPTABLE_FREQUENCY' + | 'OVER_QUOTA' + | 'MEMBER_EMAIL_ADDRESS' + | 'OBJECTIONABLE_QUERY' + | 'EMPTY_QUERY' + | 'EMAIL_IN_REDLIST' + | 'NO_RESULT_QUERY' + | 'QUERY_TOO_LONG' + | 'NON_PERSONAL_EMAIL' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchAlertStateTransitionResultType.pdsc + + export type JobSearchAlertStateTransitionResultType = 'SUCCESS' | 'FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchAlertStateTransitionType.pdsc + + export type JobSearchAlertStateTransitionType = + | 'CREATE' + | 'ACTIVATE' + | 'UPDATE' + | 'DELETE' + | 'PAUSED' + | 'RESUMED'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchAlertTransitionSourceType.pdsc + + export type JobSearchAlertTransitionSourceType = + | 'JSERP' + | 'JSA' + | 'ONBOARDING' + | 'AUTOMATIC' + | 'DREAM_COMPANY'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchFeedbackEvent.pdsc + + export interface JobSearchFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + isPositiveSentiment?: boolean; + feedback?: string; + reason: JobSearchFeedbackReason[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchFeedbackImpressionEvent.pdsc + + export interface JobSearchFeedbackImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleIndex: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchFeedbackReason.pdsc + + export type JobSearchFeedbackReason = 'BUG' | 'CONFUSED' | 'FILTERS' | 'RELEVANCE'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchImpressionEvent.pdsc + + export interface JobSearchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchImpressionEvent: Com.Linkedin.Avro2pegasus.Events.Search.SearchImpressionEvent; + relatedSearches?: string[]; + savedSearchId?: number; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchParams.pdsc + + export interface JobSearchParams { + titleUrn?: string; + locationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchResultTextFeedbackEvent.pdsc + + export interface JobSearchResultTextFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn?: string; + feedbackText: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchSuggestionActionEvent.pdsc + + export interface JobSearchSuggestionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionOrigin: JobSearchSuggestionResultOrigin; + entityActionType: JobSearchSuggestionActionType; + requestId: string; + target: JobSearchSuggestionResult; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchSuggestionActionType.pdsc + + export type JobSearchSuggestionActionType = 'CLICK'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchSuggestionImpressionEvent.pdsc + + export interface JobSearchSuggestionImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionOrigin: JobSearchSuggestionResultOrigin; + requestId: string; + results: JobSearchSuggestionResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchSuggestionResult.pdsc + + export interface JobSearchSuggestionResult { + suggestionId?: number; + suggestionType: string; + displayText?: string; + resultIndex: number; + visibleIndex: number; + score?: number; + additionalInfo?: additionalInfoPair[]; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchSuggestionResultDataSource.pdsc + + export type JobSearchSuggestionResultDataSource = + | 'RECRUITER_SMART_SEARCH' + | 'GUIDED' + | 'SEGMENTS_CUSTOMIZATION'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchSuggestionResultOrigin.pdsc + + export type JobSearchSuggestionResultOrigin = + | 'JOB_SEARCH_STARTERS' + | 'JOB_SEARCH_ALERTS' + | 'JOB_SEARCH_HISTORY_KEYWORD' + | 'JOB_SEARCH_HISTORY_LOCATION' + | 'JOB_SEARCH_LOCATION' + | 'JOB_SEARCH_RECENT_KEYWORD' + | 'JOB_SEARCH_RECENT_LOCATION' + | 'JOB_SEARCH_INLINE_SUGGESTIONS'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSearchSuggestionServedEvent.pdsc + + export interface JobSearchSuggestionServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionDataSource: JobSearchSuggestionResultDataSource; + requestId: string; + results: JobSearchSuggestionResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSeekerScreenerSurveyEvent.pdsc + + export interface JobSeekerScreenerSurveyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + questions: ScreenerSurveyQuestion[]; + action: ScreenerSurveyAction; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSetRelevanceFeedbackEvent.pdsc + + export interface JobSetRelevanceFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + referenceId: string; + userInput: UserInputType; + jobsPostingRecommendationUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSetRelevanceFeedbackImpressionEvent.pdsc + + export interface JobSetRelevanceFeedbackImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + referenceId: string; + jobsPostingRecommendationUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsHighlightCardActionEvent.pdsc + + export interface JobsHighlightCardActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + cardType: JobHighlightCardType; + action: actionType; + controlName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsHighlightsEndOfTheDeckEvent.pdsc + + export interface JobsHighlightsEndOfTheDeckEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsHighlightServedCardsEvent.pdsc + + export interface JobsHighlightServedCardsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + cards: JobHighlightCard[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsHighlightViewedCardEvent.pdsc + + export interface JobsHighlightViewedCardEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + cardType: JobHighlightCardType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsHomeViewEvent.pdsc + + export interface JobsHomeViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + isJobSeekerSubscriber: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSimilarClickEvent.pdsc + + export interface JobSimilarClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + sourceJobId: number; + jobId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobSkill.pdsc + + export interface JobSkill { + skillUrn: string; + skillScore?: number; + skillSource: SkillSource; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsMooCalibrationInfo.pdsc + + export interface JobsMooCalibrationInfo { + postRankingCalibratedClickScore: number; + postRankingCalibratedApplyScore: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsNumberRange.pdsc + + export interface JobsNumberRange { + min: number; + max: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsTargetingAttributes.pdsc + + export interface JobsTargetingAttributes { + skillUrns: string[]; + degreeUrns: string[]; + yearsOfExperience?: JobsNumberRange; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsTargetingAttributesPrefilledEvent.pdsc + + export interface JobsTargetingAttributesPrefilledEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + userFlowUuid: string; + targetingPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn: string; + seatUrn: string; + editorUrn: string; + prefillType: JobsTargetingAttributesPrefillType; + includedAttributes: JobsTargetingAttributes; + job2SkillsVersion: Job2SkillsVersionNumber; + jobSkills: JobSkill[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsTargetingAttributesPrefillType.pdsc + + export type JobsTargetingAttributesPrefillType = 'INFERRED' | 'STORED'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsTargetingAttributesSavedEvent.pdsc + + export interface JobsTargetingAttributesSavedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + userFlowUuid: string; + targetingPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + jobPostingUrn: string; + seatUrn: string; + editorUrn: string; + includedAttributes: JobsTargetingAttributes; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsTargetingPartialMatchEvent.pdsc + + export interface JobsTargetingPartialMatchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + memberUrn: string; + bidAdjustmentMultiplier?: number; + qualityScore?: number; + modelParameters?: JobsTargetingPartialMatchModelParameters; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobsTargetingPartialMatchModelParameters.pdsc + + export interface JobsTargetingPartialMatchModelParameters { + modelVersion: string; + pushVersion: string; + sampleSize: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobState.pdsc + + export type JobState = 'DRAFT' | 'BEING_LISTED' | 'LISTED' | 'CLOSED' | 'DELETED' | 'REVIEW' | 'SUSPENDED'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobStatisticsInfo.pdsc + + export interface JobStatisticsInfo { + accumulatedViewCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobToMemberScoredResult.pdsc + + export interface JobToMemberScoredResult { + modelId: string; + scoredHitsWithContext: MemberScoredHitWithContext[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobToMemberScoringEvent.pdsc + + export interface JobToMemberScoringEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + referenceId: string; + scoringQueryContext: JobToMemberScoringQueryContext; + channel: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobToMemberScoringChannel; + denormalizedQuery?: string; + scoredResults: JobToMemberScoredResult; + experimentationModels?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobToMemberScoringQueryContext.pdsc + + export interface JobToMemberScoringQueryContext { + sourceJobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobType.pdsc + + export type JobType = 'POST_PAID' | 'PRE_PAID'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobViewEvent.pdsc + + export interface JobViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberUrn?: string; + jobUrn: string; + referenceId?: string; + clientRequestId?: string; + trackingCode?: string; + isSponsored?: boolean; + recommendationFlavor?: JobRecommendationFlavor; + isJobSeekerSubscriber?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobViewImpressionEvent.pdsc + + export interface JobViewImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + entityId: number; + entityType: Com.Linkedin.Avro2pegasus.Events.Entity; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/JobViewportImpressionEvent.pdsc + + export interface JobViewportImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + referenceId: string; + jobPostingUrns: string[]; + duration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/LinkedInMatchWidgetProfileClickEvent.pdsc + + export interface LinkedInMatchWidgetProfileClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + integrationContextUrn: string; + dataProviderUrn: string; + jobPostingUrn?: string; + atsJobPostingId?: string; + applicationMemberUrn: string; + atsJobApplicationId: string; + matchStrength: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/LinkedInMatchWidgetViewEvent.pdsc + + export interface LinkedInMatchWidgetViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + integrationContextUrn: string; + dataProviderUrn: string; + jobPostingUrn?: string; + atsJobPostingId?: string; + applicationMemberUrn?: string; + atsJobApplicationId: string; + matchStrength: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/MemberDeletedJobApplicationsEvent.pdsc + + export interface MemberDeletedJobApplicationsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + numberOfDeletedApplications: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/MemberJobActivityRelevanceEvent.pdsc + + export interface MemberJobActivityRelevanceEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + activityTime: number; + jobPostingUrn: string; + memberUrn: string; + memberAction: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.MemberAction; + actionReasons: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.ActionReason[]; + isDelete: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/MemberJobPostingLifecycleActivityEvent.pdsc + + export interface MemberJobPostingLifecycleActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + jobPostingUrn: string; + type: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.MemberJobActivityType; + actorUrn: string; + performedAt: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/MemberScoredHitWithContext.pdsc + + export interface MemberScoredHitWithContext { + memberUrn: string; + normalizedScore?: number; + savedSearchUrn?: string; + threshold?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/MooJobPostingsRankingEvent.pdsc + + export interface MooJobPostingsRankingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mooRequestId: string; + impressionType?: JobPostingImpressionType; + mooFlavorsRankingParameters: MooPerFlavorRankingParameters[]; + impressionChannel?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobPostingImpressionChannel; + impressionPortal?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobPostingImpressionPortal; + isRankedByInputScores?: boolean; + clickScoreModelId?: string; + applyScoreModelId?: string; + qualityApplicantScoreModelId?: string; + revenueSplitCalibrationInfo?: RevenueSplitCalibrationModelInfo[]; + jobBudgetGroup?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobBudgetGroup; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/MooPerFlavorRankingParameters.pdsc + + export interface MooPerFlavorRankingParameters { + flavor: JobPostingRankingFlavor; + flavorScore: number; + mooJobPostingsRankingParameters: MooPerJobPostingRankingParameters[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/MooPerJobPostingRankingParameters.pdsc + + export interface MooPerJobPostingRankingParameters { + jobPostingUrn: string; + jobPostingInputScore: number; + mooScore: number; + clickScore?: number; + applyScore?: number; + originalBid?: number; + pacingScore?: number; + shadowBid?: number; + bidAdjustment?: number; + qualityApplicantScore?: number; + isOnTarget?: boolean; + finalBid?: number; + autoBiddingParams?: JobsAutoBiddingParams; + projectedCharge?: number; + calibrationInfo?: JobsMooCalibrationInfo; + applyScoreGivenClick?: number; + shadowBidMultiplier?: number; + bidMultiplier?: number; + jobStatistics?: JobStatisticsInfo; + jobRankingSlotType?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobRankingSlotType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/OffsiteApplyWebViewEvent.pdsc + + export interface OffsiteApplyWebViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + referenceId?: string; + webViewSessionId: string; + eventType: WebViewEventType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/OrganizationMemberEmailVerificationEvent.pdsc + + export interface OrganizationMemberEmailVerificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberUrn: string; + companyUrn: string; + emailDomain: string; + jobPostingUrn?: string; + verificationStatus: VerificationStatus; + verificationFailureReason?: VerificationFailureReason; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/PayForPerformanceJobChargeFinalizedEvent.pdsc + + export interface PayForPerformanceJobChargeFinalizedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobUrn: string; + daySinceEpoc: number; + chargeFinalizedTime: number; + paymentTransactionId: string; + chargeState: JobChargeState; + currencyCode: string; + dailyBillingStats: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.PostpaidBillingStats; + dailyBudget: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.PostpaidDailyBudget; + effectiveDailyBudget: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.PostpaidDailyBudget; + lifetimeBillingStats?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.PostpaidBillingStats; + lifetimeBudget?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.PostpaidLifetimeBudget; + effectiveLifetimeBudget?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.PostpaidLifetimeBudget; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/PaymentType.pdsc + + export type PaymentType = 'PPC' | 'FREE' | 'PAID'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/PostApplyCardEntity.pdsc + + export interface PostApplyCardEntity { + cardType: PostApplyPromoCardType; + hasAvailableActions: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/PostApplyCardViewportImpressionEvent.pdsc + + export interface PostApplyCardViewportImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + postApplyCardEntities: PostApplyCardEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/PostApplyPromoCardType.pdsc + + export type PostApplyPromoCardType = 'SKILL_ASSESSMENTS' | 'REFERRALS' | 'INTERVIEW_PREP'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/RevenueSplitCalibrationModelInfo.pdsc + + export interface RevenueSplitCalibrationModelInfo { + modelType: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.MooJobRankingRequestRelevanceModelType; + modelId: string; + calibrationFactor: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/ScreenerSurveyAction.pdsc + + export type ScreenerSurveyAction = 'SUBMIT' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/ScreenerSurveyQuestion.pdsc + + export interface ScreenerSurveyQuestion { + questionUrn: string; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + isAnswered: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/SearchImpressionV2EventFields.pdsc + + export interface SearchImpressionV2EventFields { + isCacheHit: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/SimpleJobPostingTaskEvent.pdsc + + export interface SimpleJobPostingTaskEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + partnerUrn: string; + partnerJobCode: string; + companyUrn: string; + companyJobCode: string; + simpleJobPostingTaskUrn?: string; + jobCreationEntityType: JobCreationEntityType; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/SkillSource.pdsc + + export type SkillSource = + | 'UNIDENTIFIED' + | 'EXPLICIT' + | 'IMPLICIT' + | 'INFERRED' + | 'TITLE' + | 'SKILL_SECTION' + | 'REQUIREMENTS' + | 'RESPONSIBILITIES'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/SourceEventName.pdsc + + export type SourceEventName = + | 'JOB_RECOMMENDATION_IMPRESSION_EVENT' + | 'JOB_VIEWPORT_IMPRESSION_EVENT' + | 'FEED_IMPRESSION_EVENT' + | 'SEARCH_IMPRESSIONV2_EVENT'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/Timeline.pdsc + + export interface Timeline { + modelExecutionLatency?: number; + featureFetchLatency?: number; + overallLatency: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/UnifiedJobActionEvent.pdsc + + export interface UnifiedJobActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sourceEventRequestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + sourceEventMobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sourceEventHeader: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sourceEventName: JobActionSourceEventName; + action: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobActionType; + jobPostingUrn: string; + isSponsored: boolean; + referenceId?: string; + trackingCode?: string; + controlUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/UnifiedJobViewportImpressionEvent.pdsc + + export interface UnifiedJobViewportImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sourceEventName: SourceEventName; + jobPostingEntities: JobPostingEntity[]; + sourceEventHeader?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sourceEventRequestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + sourceEventMobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/UnifyJobApplicationCancelEvent.pdsc + + export interface UnifyJobApplicationCancelEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + questionGroupingType: Com.Linkedin.Avro2pegasus.Events.Common.Unify.QuestionGroupingType; + currentPageNumber: number; + totalPageCount: number; + referenceId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/UnifyJobApplicationNonDefaultResumeSelectedEvent.pdsc + + export interface UnifyJobApplicationNonDefaultResumeSelectedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + resumeSource: Com.Linkedin.Avro2pegasus.Events.Common.Unify.ResumeSource; + referenceId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/UnifyJobApplicationResumeRenderEvent.pdsc + + export interface UnifyJobApplicationResumeRenderEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + resumeSource: Com.Linkedin.Avro2pegasus.Events.Common.Unify.ResumeSource; + referenceId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/UnifyJobApplicationStartEvent.pdsc + + export interface UnifyJobApplicationStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + referenceId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/UnifyJobApplicationSubmitEvent.pdsc + + export interface UnifyJobApplicationSubmitEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + referenceId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/UPJobPostingCreateEvent.pdsc + + export interface UPJobPostingCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/UserInputType.pdsc + + export type UserInputType = 'YES' | 'NO'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/VerificationFailureReason.pdsc + + export type VerificationFailureReason = + | 'INVALID_EMAIL_DOMAIN' + | 'EXPIRED_EMAIL_VERIFIER' + | 'UNMATCHED_EMAIL_DOMAIN' + | 'EMAIL_ALREADY_USED' + | 'MAXIMUM_ATTEMPT'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/VerificationStatus.pdsc + + export type VerificationStatus = 'VERIFIED' | 'UNVERIFIED' | 'BLOCKED'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/VolumeDiscountJobCreditImpressionEvent.pdsc + + export interface VolumeDiscountJobCreditImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + volumeDiscountJobCreditOptionsOffered: VolumeDiscountJobCreditOption[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/VolumeDiscountJobCreditOption.pdsc + + export interface VolumeDiscountJobCreditOption { + redeemAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + paymentAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/VolumeDiscountJobCreditSelectionActionEvent.pdsc + + export interface VolumeDiscountJobCreditSelectionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + volumeDiscountJobCreditOptionsOffered: VolumeDiscountJobCreditOption[]; + volumeDiscountJobCreditOptionSelected: VolumeDiscountJobCreditOption; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/WebViewEventType.pdsc + + export type WebViewEventType = + | 'LAUNCHED' + | 'START_URL_REQUEST' + | 'LOADED' + | 'DISMISSED' + | 'LOAD_FAILED' + | 'INTERACTIVE'; + namespace Impression { + // Generated from: com/linkedin/avro2pegasus/events/jobs/impression/JobImpression.pdsc + + export interface JobImpression { + entityId: number; + entityType: Com.Linkedin.Avro2pegasus.Events.Entity; + entityScore: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/impression/JobRecommendationCenterImpression.pdsc + + export interface JobRecommendationCenterImpression { + entityId: number; + entityType: Com.Linkedin.Avro2pegasus.Events.Entity; + jobId: number; + } + } + namespace Matchingnearline { + // Generated from: com/linkedin/avro2pegasus/events/jobs/matchingnearline/CareersInstantExperiencePipelineStartEvent.pdsc + + export interface CareersInstantExperiencePipelineStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + referenceId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + jobPostingUrn: string; + inputTopicName: string; + inputTopicEventTime: number; + processStartTime: number; + stageReferenceId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/matchingnearline/InstantJobAlertDroppingEvent.pdsc + + export interface InstantJobAlertDroppingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + referenceId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + jobPostingUrn: string; + memberUrn?: string; + savedSearchUrn?: string; + droppedStage: string; + experimentationModels: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/matchingnearline/JobPostingToAlertMismatchEvent.pdsc + + export interface JobPostingToAlertMismatchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + referenceId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + jobPostingUrn: string; + memberUrn: string; + savedSearchUrn: string; + mismatchReasons: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/matchingnearline/JobStreamMatchingNotificationReadyEvent.pdsc + + export interface JobStreamMatchingNotificationReadyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + referenceId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + jobPostingUrn: string; + recipientUrn: string; + parentUrn?: string; + surfacedContentUrn?: string; + notificationType: JobStreamMatchingNotificationType; + streamMatchModelId?: string; + experimentationModels?: string[]; + stageReferenceId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/matchingnearline/JobStreamMatchingNotificationType.pdsc + + export type JobStreamMatchingNotificationType = 'INSTANT_JOB_ALERT'; + // Generated from: com/linkedin/avro2pegasus/events/jobs/matchingnearline/JobStreamMatchingPipelineAuditEvent.pdsc + + export interface JobStreamMatchingPipelineAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + jobPostingUrn: string; + stageName: string; + outputCount: number; + ordinal: number; + outputGrouping?: JobStreamMatchingPipelineAuditEventOutputGroupingPair[]; + experimentationModels?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobs/matchingnearline/JobStreamMatchingPipelineAuditEventOutputGroupingPair.pdsc + + export interface JobStreamMatchingPipelineAuditEventOutputGroupingPair { + key: string; + value: string; + } + } + } + namespace Jobseeker { + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/EmploymentSchedule.pdsc + + export interface EmploymentSchedule { + isFullTimeChecked?: boolean; + isPartTimeChecked?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobPostingUpsellInfo.pdsc + + export interface JobPostingUpsellInfo { + jobPosting: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + applicantCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerAdCampaignEvent.pdsc + + export interface JobSeekerAdCampaignEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + campaignTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + campaignId: string; + clickTime: number; + conversionTime: number; + query: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerApplicantRankingFields.pdsc + + export interface JobSeekerApplicantRankingFields { + applicantCount?: number; + applicantRank?: number; + applicantRankPercentile?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerAppRatingEvent.pdsc + + export interface JobSeekerAppRatingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + starCount: number; + maxStarCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerCompanyViewEvent.pdsc + + export interface JobSeekerCompanyViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + company: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerEntityImpression.pdsc + + export interface JobSeekerEntityImpression { + entity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerEntityImpressionEvent.pdsc + + export interface JobSeekerEntityImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + entities: JobSeekerEntityImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerJobPostingActionEvent.pdsc + + export interface JobSeekerJobPostingActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + jobPostingActionType: JobSeekerJobPostingActionType; + jobPosting: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerJobPostingActionType.pdsc + + export type JobSeekerJobPostingActionType = + | 'SAVE' + | 'UNSAVE' + | 'APPLY_EXTERNAL' + | 'APPLY_INTERNAL' + | 'APPLY_INTERNAL_SUBMIT' + | 'UNAPPLY' + | 'SHARE' + | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerJobPostingImpressionEntity.pdsc + + export interface JobSeekerJobPostingImpressionEntity { + jobPosting: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + isSponsored: boolean; + recommendationFlavor?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobRecommendationFlavor; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerJobPostingImpressionEvent.pdsc + + export interface JobSeekerJobPostingImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + entities: JobSeekerJobPostingImpressionEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerJobPostingSalaryFeedbackEvent.pdsc + + export interface JobSeekerJobPostingSalaryFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPosting: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + isAccurate: boolean; + feedbackText?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerJobPostingViewEvent.pdsc + + export interface JobSeekerJobPostingViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + jobPosting: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + postingDuration?: number; + recommendationFlavor?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobRecommendationFlavor; + applicantCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerLaunchEvent.pdsc + + export interface JobSeekerLaunchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + launchType: JobSeekerLaunchType; + launchOrigin: JobSeekerLaunchOrigin; + badgeCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerLaunchOrigin.pdsc + + export type JobSeekerLaunchOrigin = 'USER_INITIATED' | 'NOTIFICATION' | 'DEEP_LINK' | 'CROSS_LINK'; + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerLaunchType.pdsc + + export type JobSeekerLaunchType = 'COLD' | 'WARM'; + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerMemberViewEvent.pdsc + + export interface JobSeekerMemberViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + member: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + company?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + connectionDistance?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerPremiumInsightsCardNameType.pdsc + + export type JobSeekerPremiumInsightsCardNameType = + | 'APPLICANT_RANKING' + | 'SENIORITY' + | 'TOP_SKILLS' + | 'EDUCATION_LEVELS' + | 'TOP_LOCATIONS' + | 'GROWTH_TRENDS' + | 'TOP_SCHOOLS' + | 'TOP_COMPANIES'; + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerPremiumInsightsImpressionEvent.pdsc + + export interface JobSeekerPremiumInsightsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + jobPosting: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + premiumInsightsCardsTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + cardType: JobSeekerPremiumInsightsCardNameType; + cardPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + cardCount: number; + applicantRankingFields?: JobSeekerApplicantRankingFields; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerPremiumOnboardingImpressionEvent.pdsc + + export interface JobSeekerPremiumOnboardingImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + subsFamily: Com.Linkedin.Avro2pegasus.Events.Premium.ProductSubsFamily; + orderUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerPremiumUpsellImpressionEvent.pdsc + + export interface JobSeekerPremiumUpsellImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + upsellControlUrn?: string; + upsellType: JobSeekerPremiumUpsellType; + jobPostingUpsellInfo?: JobPostingUpsellInfo; + upsellOrderOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerPremiumUpsellType.pdsc + + export type JobSeekerPremiumUpsellType = 'INMAIL_UPSELL' | 'JOB_POSTING_UPSELL'; + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerSearchFacets.pdsc + + export interface JobSeekerSearchFacets { + sortedBy?: JobSeekerSearchSortByType; + distanceInMiles?: number; + companyUrns: string[]; + functionUrns: string[]; + industryUrns: string[]; + seniorityUrns: string[]; + postedDaysAgoRanges: Com.Linkedin.Avro2pegasus.Events.Common.ClosedIntRange[]; + isApplyWithLinkedInProfileChecked?: boolean; + employmentSchedule?: EmploymentSchedule; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerSearchLocation.pdsc + + export interface JobSeekerSearchLocation { + rawLocation: string; + locationType?: Com.Linkedin.Avro2pegasus.Events.Search.SearchLocationType; + locationUrn?: string; + placeCode?: string; + countryCode?: string; + regionCode?: string; + postalCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerSearchOrigin.pdsc + + export type JobSeekerSearchOrigin = + | 'NEW_SEARCH' + | 'SAVED_SEARCH' + | 'RECENT_SEARCH' + | 'DEEP_LINK' + | 'CROSS_LINK' + | 'JOB_RECOMMENDATION' + | 'JOB_ALERT_NOTIFICATION' + | 'JOB_NOTIFICATION_TAB' + | 'EMAIL_DEEP_LINK'; + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerSearchRequestEvent.pdsc + + export interface JobSeekerSearchRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + searchSessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + searchOrigin: JobSeekerSearchOrigin; + searchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + savedSearchId?: string; + query: string; + location?: JobSeekerSearchLocation; + facets?: JobSeekerSearchFacets; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerSearchSessionEvent.pdsc + + export interface JobSeekerSearchSessionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + searchSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerSearchSortByType.pdsc + + export type JobSeekerSearchSortByType = 'MOST_RELEVANT' | 'MOST_RECENT'; + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerSignInEvent.pdsc + + export interface JobSeekerSignInEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + signInType: JobSeekerSignInType; + isResume: boolean; + installTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerSignInType.pdsc + + export type JobSeekerSignInType = 'GUEST' | 'JOIN' | 'CREDENTIALS' | 'SSO'; + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerTypeaheadActionEvent.pdsc + + export interface JobSeekerTypeaheadActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + typeaheadActionType: JobSeekerTypeaheadActionType; + typeaheadItem: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerTrackingItem; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerTypeaheadActionType.pdsc + + export type JobSeekerTypeaheadActionType = 'REPLACE' | 'APPEND'; + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerTypeaheadImpressionEntity.pdsc + + export interface JobSeekerTypeaheadImpressionEntity { + typeaheadItem: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerTrackingItem; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerTypeaheadImpressionEvent.pdsc + + export interface JobSeekerTypeaheadImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + items: JobSeekerTypeaheadImpressionEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerTypeaheadRequestEvent.pdsc + + export interface JobSeekerTypeaheadRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + typeaheadSessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + typeaheadType: JobSeekerTypeaheadType; + typeaheadId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + query?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerTypeaheadSessionEvent.pdsc + + export interface JobSeekerTypeaheadSessionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobSeekerHeader: Com.Linkedin.Avro2pegasus.Common.Jobseeker.JobSeekerEventHeader; + searchSessionId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + typeaheadSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/jobseeker/JobSeekerTypeaheadType.pdsc + + export type JobSeekerTypeaheadType = 'KEYWORDS' | 'LOCATION' | 'STARTERS'; + } + namespace K2 { + // Generated from: com/linkedin/avro2pegasus/events/k2/deploymentResultType.pdsc + + export type deploymentResultType = 'SUCCESS' | 'FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/k2/K2DeploymentEvent.pdsc + + export interface K2DeploymentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + id: string; + createdByUrn: string; + applicationUrn: string; + deployableVersion: string; + fabricUrn: string; + createdTime: number; + deploymentResult: deploymentResultType; + failureReason?: string; + } + } + namespace Kafka { + // Generated from: com/linkedin/avro2pegasus/events/kafka/UnifiedKafkaAuditingEvent.pdsc + + export interface UnifiedKafkaAuditingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + tier: string; + auditingTopic: string; + count: number; + beginTime: number; + sizeInBytes?: number; + failureCount?: number; + cluster: string; + clusterFabricUrn: string; + server?: string; + instance?: string; + appName?: string; + fabricUrn: string; + enqueueTime?: number; + messageId: number; + topicRetentionMillis?: number; + replicationFactor?: number; + pipeline: string; + principal?: string; + onBehalfOf?: string; + compressedSizeInBytes?: number; + originalActorFabricUrn?: string; + originalActorServer?: string; + originalActorAppName?: string; + originalActorInteractingCluster?: string; + } + } + namespace Kafkamessage { + // Generated from: com/linkedin/avro2pegasus/events/kafkamessage/KafkaMessage.pdsc + + export interface KafkaMessage { + kafkaMessageSegmentHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaMessageSegmentHeader; + payload: number; + } + } + namespace Lax { + // Generated from: com/linkedin/avro2pegasus/events/lax/AdDevice.pdsc + + export interface AdDevice { + isTrackingAllowed?: boolean; + deviceType?: string; + make?: string; + model?: string; + os?: string; + osVersion?: string; + isJSSupported?: boolean; + deviceId?: Com.Linkedin.Avro2pegasus.Events.AdTargetId; + carrier?: string; + language?: string; + connectionTypeInt?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdExchangeBidFeedbackEvent.pdsc + + export interface AdExchangeBidFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + exchangeRequestId?: string; + httpStatus?: number; + latency?: number; + sampleRate?: number; + exchangeId: string; + reasons: Reason[]; + sponsoredCreativeUrn?: string; + bundleId?: string; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdExchangeBidResponseEvent.pdsc + + export interface AdExchangeBidResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + laxRequest?: LaxRequest; + biddersResponse: BidderResponse[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdExchangeClickEvent.pdsc + + export interface AdExchangeClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + exchangeHeader: Com.Linkedin.Avro2pegasus.Events.Ads.AdExchangeHeader; + landingPageUrl?: string; + macro?: Com.Linkedin.Avro2pegasus.Events.Ads.ExchangeMacro; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + isInterstitial?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdExchangeFastPuntEvent.pdsc + + export interface AdExchangeFastPuntEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + laxRequest: LaxRequest; + impressions: Impression[]; + sampleRate: number; + bidderPuntReasons?: FastPuntReason[]; + globalPuntReason?: string; + allowedAdFormats?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdExchangeImpressionEvent.pdsc + + export interface AdExchangeImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + exchangeHeader: Com.Linkedin.Avro2pegasus.Events.Ads.AdExchangeHeader; + macro?: Com.Linkedin.Avro2pegasus.Events.Ads.ExchangeMacro; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + isInterstitial?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdExchangeVideoActionEvent.pdsc + + export interface AdExchangeVideoActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + exchangeHeader: Com.Linkedin.Avro2pegasus.Events.Ads.AdExchangeHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + videoEngagementType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.VideoAdsEngagementType; + videoAdsErrorMessage?: string; + macro?: Com.Linkedin.Avro2pegasus.Events.Ads.ExchangeMacro; + adFormat: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + isInterstitial?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdExchangeWinEvent.pdsc + + export interface AdExchangeWinEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + exchangeHeader: Com.Linkedin.Avro2pegasus.Events.Ads.AdExchangeHeader; + macro: Com.Linkedin.Avro2pegasus.Events.Ads.ExchangeMacro; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + isInterstitial?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdFieldType.pdsc + + export type AdFieldType = 'REQUIRED' | 'PREFERRED' | 'NOT_ASKED'; + // Generated from: com/linkedin/avro2pegasus/events/lax/AdLayoutType.pdsc + + export type AdLayoutType = + | 'CONTENT_WALL' + | 'APP_WALL' + | 'NEWS_FEED' + | 'CHAT_LIST' + | 'CAROUSEL' + | 'CONTENT_STREAM' + | 'GRID_ADJOINING_THE_CONTENT'; + // Generated from: com/linkedin/avro2pegasus/events/lax/AdMobileApp.pdsc + + export interface AdMobileApp { + id: string; + contentCategories?: string[]; + domain?: string; + version?: string; + bundle?: string; + name?: string; + storeUrl?: string; + publisherName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdPrivateMarketDeal.pdsc + + export interface AdPrivateMarketDeal { + externalId?: string; + bidFloor?: number; + bidFloorCurrency?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdSite.pdsc + + export interface AdSite { + siteId: string; + name: string; + domain?: string; + siteCategories?: string[]; + pageCategories?: string[]; + pageUrl?: string; + referrerUrl?: string; + searchStr?: string; + keywords?: string; + isHavingPrivacyPolicy?: boolean; + isMobileOptimized?: boolean; + publisherId?: string; + publisherName?: string; + publisherDomain?: string; + publisherCategories?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/AdUnitType.pdsc + + export type AdUnitType = + | 'PAID_SEARCH_UNIT' + | 'RECOMMENDATION_WIDGETS' + | 'PROMOTED_LISTINGS' + | 'IN_AD_WITH_NATIVE_ELEMENT_UNITS' + | 'CUSTOM'; + // Generated from: com/linkedin/avro2pegasus/events/lax/Asset.pdsc + + export interface Asset { + fieldType: AdFieldType; + lengthLimit: number; + responseLength?: number; + response?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/BannerAd.pdsc + + export interface BannerAd { + height?: number; + width?: number; + adTemplateUrn?: string; + landingPageUrl?: string; + finalLandingPageDomain?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/Bid.pdsc + + export interface Bid { + bidPrice?: number; + creativeUrn?: string; + isPicked: boolean; + validationFailure?: string; + impression?: Impression; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/BidderResponse.pdsc + + export interface BidderResponse { + bidderId: number; + impression?: Impression; + noBidReason: string; + bids?: Bid[]; + privateMarketDealId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/ExchangeExtensionRecord.pdsc + + export interface ExchangeExtensionRecord { + name: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/FastPuntReason.pdsc + + export interface FastPuntReason { + bidderId: number; + puntReasonString: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/FinalDecision.pdsc + + export type FinalDecision = 'EXCHANGE' | 'UPSTREAM'; + // Generated from: com/linkedin/avro2pegasus/events/lax/Geo.pdsc + + export interface Geo { + latitude?: number; + longitude?: number; + country?: string; + region?: string; + metro?: string; + city?: string; + zip?: string; + locationType?: LocationType; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/Image.pdsc + + export interface Image { + fieldType: AdFieldType; + requiredMinimumWidth?: number; + requiredMinimumHeight?: number; + requiredWidth?: number; + requiredHeight?: number; + responseWidth?: number; + responseHeight?: number; + url?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/Impression.pdsc + + export interface Impression { + sourceImpressionId: string; + laxImpressionId?: string; + nativeAd?: NativeAd; + bidFloor?: number; + bidFloorCurrency?: string; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + displayManager?: string; + displayManagerVersion?: string; + isInterstitial?: boolean; + tagId?: string; + isSecure?: boolean; + exchangeSpecificExtensions?: ExchangeExtensionRecord[]; + bannerAd?: BannerAd; + videoAd?: VideoAd; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/LaxRequest.pdsc + + export interface LaxRequest { + laxRequestId: string; + supplySourceId: string; + sourceRequestId: string; + sourceUserId: string; + app?: AdMobileApp; + device?: AdDevice; + geo?: Geo; + auctionTypeInt: number; + floorPrice?: number; + currency?: string; + exchangeRate?: number; + blockedAdvertiserCategories: string[]; + blockedAdvertiserDomains: string[]; + timeout?: number; + site?: AdSite; + isPrivateAuction?: boolean; + privateMarketDeals?: AdPrivateMarketDeal[]; + idAssociationSources?: string[]; + finalDecision?: FinalDecision; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/LocationType.pdsc + + export type LocationType = 'GPS' | 'IP_ADDRESS' | 'USER_PROVIDED'; + // Generated from: com/linkedin/avro2pegasus/events/lax/MediaFile.pdsc + + export interface MediaFile { + width?: number; + height?: number; + bitRate?: number; + mimeType?: string; + fileUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/NativeAd.pdsc + + export interface NativeAd { + adLayout?: AdLayoutType; + adUnit?: AdUnitType; + placementCount: number; + title?: Asset; + description?: Asset; + sponsor?: Asset; + rating?: number; + downloads?: number; + likes?: number; + phone?: string; + impressionTrackingUrls: string[]; + clickTrackingUrls: string[]; + winTrackingUrl: string; + logoImage?: Image; + iconImage?: Image; + mainImage?: Image; + landingPageUrl?: string; + finalLandingPageDomain?: string; + contextId?: number; + contextSubTypeId?: number; + placementTypeId?: number; + videoAsset?: VideoAd; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/Reason.pdsc + + export interface Reason { + reason?: Com.Linkedin.Avro2pegasus.Events.Common.Lax.BidFeedbackReason; + reasonDescription?: string; + reasonDetail?: string; + bidPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + clearPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + impressionId?: string; + exchangeReasonId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lax/VideoAd.pdsc + + export interface VideoAd { + assetId?: string; + minDurationSeconds?: number; + maxDurationSeconds?: number; + durationSeconds?: number; + mediaFiles?: MediaFile[]; + landingPageUrl?: string; + finalLandingPageDomain?: string; + } + } + namespace Leadgen { + // Generated from: com/linkedin/avro2pegasus/events/leadgen/LeadgenDataSource.pdsc + + export type LeadgenDataSource = 'SALES_FORM' | 'ELOQUA' | 'SILO' | 'THIRDPARTY' | 'MICROSOFT' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/leadgen/SalesLeadPostEvent.pdsc + + export interface SalesLeadPostEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + dataSource: LeadgenDataSource; + sourcePageUrl?: string; + isMatched: boolean; + } + } + namespace Leap { + // Generated from: com/linkedin/avro2pegasus/events/leap/ActionType.pdsc + + export type ActionType = + | 'SCHEDULE' + | 'EDIT' + | 'DELETE' + | 'VIEW_CONTENT' + | 'VIEW_BROADCAST' + | 'OPEN_SHARE_MODAL' + | 'VIEW_BROADCASTER_PROFILE' + | 'VIEW_BROADCASTER_LI_PROFILE'; + // Generated from: com/linkedin/avro2pegasus/events/leap/AuditEngagementType.pdsc + + export type AuditEngagementType = 'CLICK' | 'COMMENT' | 'LIKE' | 'RESHARE'; + // Generated from: com/linkedin/avro2pegasus/events/leap/Broadcast.pdsc + + export interface Broadcast { + broadcastUrn: string; + adminUrn?: string; + contentUrn?: string; + targetUrl?: string; + imageUrl?: string; + suggestionUrn?: string; + title?: string; + comment?: string; + scheduledPublicationTime?: number; + groupUrns?: string[]; + networks?: ShareNetworkType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/BroadcastActionEvent.pdsc + + export interface BroadcastActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + leapSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: ActionType; + broadcast: Broadcast; + insight?: LeapInsightType; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/FollowActionType.pdsc + + export type FollowActionType = 'FOLLOW' | 'UNFOLLOW'; + // Generated from: com/linkedin/avro2pegasus/events/leap/GaapTask.pdsc + + export interface GaapTask { + taskId: string; + scriptName: string; + inputData?: string; + outputData?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapEmployeeFeedEntity.pdsc + + export interface LeapEmployeeFeedEntity { + broadcastUrn: string; + contentUrn: string; + groupUrn: string; + broadcasterUrn: string; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + insight?: LeapInsightType; + engagementCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapEmployeeFeedImpressionEvent.pdsc + + export interface LeapEmployeeFeedImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + moduleKey: string; + leapSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + viewedBroadcasts: LeapEmployeeFeedEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapFollowActionEvent.pdsc + + export interface LeapFollowActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + leapSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: FollowActionType; + followeeUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapInitiateContractExportEvent.pdsc + + export interface LeapInitiateContractExportEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + complianceRequestUrn: string; + contractUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapInitiateSeatExportEvent.pdsc + + export interface LeapInitiateSeatExportEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + complianceRequestUrn: string; + seatUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapInsightType.pdsc + + export type LeapInsightType = 'TRENDING_WITH_COWORKERS' | 'PROMOTE_YOUR_COMPANY' | 'NETWORK_HAS_NOT_SEEN'; + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapPinotAuditEvent.pdsc + + export interface LeapPinotAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + leapShareUrn: string; + engagementType: AuditEngagementType; + engagementCount: number; + message?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapProfileActionEvent.pdsc + + export interface LeapProfileActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + leapSession: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + action: ProfileActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapProfileEntity.pdsc + + export interface LeapProfileEntity { + memberUrn: string; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapProfileImpressionEvent.pdsc + + export interface LeapProfileImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + moduleKey: string; + leapSession: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + viewedProfiles: LeapProfileEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapSeatActionEvent.pdsc + + export interface LeapSeatActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + leapSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: SeatActionType; + seatUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapShare.pdsc + + export interface LeapShare { + leapShareUrn: string; + broadcast?: Broadcast; + contentUrn?: string; + shortlink?: string; + comment?: string; + scheduledPublicationTime?: number; + publishedTime?: number; + network: ShareNetworkType; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapShareActionEvent.pdsc + + export interface LeapShareActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + leapSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: ShareActionType; + shareUrn: string; + insight?: LeapInsightType; + shareOrigin?: ShareOrigin; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapShareAuditEvent.pdsc + + export interface LeapShareAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + leapShareUrn: string; + leapShare?: LeapShare; + lifecycleStep: shareLifecycleStep; + message?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapShareGaapTaskAuditEvent.pdsc + + export interface LeapShareGaapTaskAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + leapShareUrn: string; + gaapTask: GaapTask; + processingStage: processingStage; + engagementTypes: AuditEngagementType[]; + message?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapShareImpressionEvent.pdsc + + export interface LeapShareImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + shareUrn: string; + activityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapShareQuantumAuditEvent.pdsc + + export interface LeapShareQuantumAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + leapShareUrn: string; + quantumEvent: Com.Linkedin.Avro2pegasus.Events.Quantum.QuantumEvent; + processingStage: QuantumEventProcessingStage; + engagementTypes: AuditEngagementType[]; + message?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapShortlinkClickEvent.pdsc + + export interface LeapShortlinkClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn?: string; + contractUrn: string; + shareUrn: string; + isClassifiedAsCrawler: boolean; + userAgent?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapTopicActionEvent.pdsc + + export interface LeapTopicActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + leapSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: TopicActionType; + topicUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapTopicEntity.pdsc + + export interface LeapTopicEntity { + topicUrn: string; + isSubscribed: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/LeapTopicsImpressionEvent.pdsc + + export interface LeapTopicsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + moduleKey: string; + leapSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + viewedTopics: LeapTopicEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/leap/processingStage.pdsc + + export type processingStage = 'STARTING' | 'COMPLETED' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/leap/ProfileActionType.pdsc + + export type ProfileActionType = 'CLICK_TO_VIEW_PROFILE'; + // Generated from: com/linkedin/avro2pegasus/events/leap/QuantumEventProcessingStage.pdsc + + export type QuantumEventProcessingStage = 'SCHEDULING' | 'PROCESSING' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/leap/SeatActionType.pdsc + + export type SeatActionType = 'CREATE' | 'EDIT' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/leap/ShareActionType.pdsc + + export type ShareActionType = + | 'SCHEDULE' + | 'EDIT' + | 'DELETE' + | 'VIEW_CONTENT' + | 'INTELLIGENT_SCHEDULE' + | 'SHARE_NOW'; + // Generated from: com/linkedin/avro2pegasus/events/leap/shareLifecycleStep.pdsc + + export type shareLifecycleStep = 'CREATE' | 'PUBLISH' | 'RESCHEDULE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/leap/ShareNetworkType.pdsc + + export type ShareNetworkType = 'LINKEDIN' | 'TWITTER' | 'FACEBOOK' | 'WEIBO'; + // Generated from: com/linkedin/avro2pegasus/events/leap/ShareOrigin.pdsc + + export type ShareOrigin = 'ELEVATE_FEED' | 'DAILY_DIGEST_EMAIL' | 'LSS_NOTIFICATION_FEED'; + // Generated from: com/linkedin/avro2pegasus/events/leap/TopicActionType.pdsc + + export type TopicActionType = 'SELECT_TOPIC_FILTER' | 'DESELCT_TOPIC_FILTER'; + } + namespace Learning { + // Generated from: com/linkedin/avro2pegasus/events/learning/AccessControlPolicyEvaluationResult.pdsc + + export interface AccessControlPolicyEvaluationResult { + policyName: string; + decision: AccessDecision; + decisionMessage?: string; + contributingConditions?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/AccessDecision.pdsc + + export type AccessDecision = 'PERMIT' | 'DENY'; + // Generated from: com/linkedin/avro2pegasus/events/learning/AffiliateDecryptionPortalLoginEvent.pdsc + + export interface AffiliateDecryptionPortalLoginEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + corpUserUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/AffiliateOrderIdDecryptionEvent.pdsc + + export interface AffiliateOrderIdDecryptionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + impactRadiusCampaignId: number; + impactRadiusActionTrackerId: number; + actionTime: number; + impactRadiusPartnerId: string; + impactRadiusPartnerName: string; + encryptedOrderId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/Aggregation.pdsc + + export interface Aggregation { + positionInAggregation: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + typeOfAggregation: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/AggregationTimeUnit.pdsc + + export type AggregationTimeUnit = 'DAY' | 'WEEK' | 'MONTH' | 'FULL'; + // Generated from: com/linkedin/avro2pegasus/events/learning/ArticleProgressState.pdsc + + export type ArticleProgressState = 'IN_PROGRESS' | 'DONE' | 'COMPLETED'; + // Generated from: com/linkedin/avro2pegasus/events/learning/AssessmentStatusType.pdsc + + export type AssessmentStatusType = 'IN_PROGRESS' | 'COMPLETED' | 'REVIEWING_SKIPPED'; + // Generated from: com/linkedin/avro2pegasus/events/learning/BrowseResult.pdsc + + export interface BrowseResult { + groupType: string; + groupPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + learningBrowseResult: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchBrowseResult; + resultPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + resultName?: string; + startTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/ChannelType.pdsc + + export type ChannelType = 'LEARNING' | 'FLAGSHIP'; + // Generated from: com/linkedin/avro2pegasus/events/learning/CourseEntity.pdsc + + export interface CourseEntity { + trackableCourseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleAt: number; + visibleDurationOnScreen: number; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + positionInAggregation?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + materialInteractiveType: LearningMaterialInteractiveType; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/CourseNotServedReasonType.pdsc + + export type CourseNotServedReasonType = 'UNRESOLVABLE_ENTITY' | 'INCOMPLETE_DECORATION' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/learning/CourseRecommendationActionType.pdsc + + export type CourseRecommendationActionType = 'SELECT_COURSE'; + // Generated from: com/linkedin/avro2pegasus/events/learning/CourseRecommendationUseCase.pdsc + + export type CourseRecommendationUseCase = + | 'PROFILE_SELF' + | 'PROFILE_NON_SELF' + | 'PROFILE_PUBLIC' + | 'MYPREMIUM_INSIGHT_CARD' + | 'MYPREMIUM_STANDALONE_SECTION' + | 'JOBS_HOME_CAROUSEL' + | 'JOB_DETAILS_RIGHT_RAIL_SECTION'; + // Generated from: com/linkedin/avro2pegasus/events/learning/CourseViewingStatusType.pdsc + + export type CourseViewingStatusType = 'IN_PROGRESS' | 'COMPLETED'; + // Generated from: com/linkedin/avro2pegasus/events/learning/CustomContentProgressState.pdsc + + export type CustomContentProgressState = 'IN_PROGRESS' | 'COMPLETED'; + // Generated from: com/linkedin/avro2pegasus/events/learning/EngagementMetricType.pdsc + + export type EngagementMetricType = + | 'SECONDS_VIEWED' + | 'COMPLETIONS' + | 'LOGINS' + | 'MARKED_AS_DONE' + | 'PROGRESS_PERCENTAGE' + | 'AICC_CHANGE' + | 'CERTIFICATE' + | 'CERTIFICATE_DOWNLOAD' + | 'CERTIFICATE_UNITS_EARNED'; + // Generated from: com/linkedin/avro2pegasus/events/learning/EnterpriseLearningActivationCompletedEvent.pdsc + + export interface EnterpriseLearningActivationCompletedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationHeader: Com.Linkedin.Avro2pegasus.Events.Enterprise.EnterpriseAuthenticationMonitorHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/EnterpriseLearningActivationFlowEvent.pdsc + + export interface EnterpriseLearningActivationFlowEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + channel: Com.Linkedin.Avro2pegasus.Events.Common.Learning.EnterpriseLearningActivationChannelType; + channelVariation: string; + accountBindingSetting?: Com.Linkedin.Avro2pegasus.Events.Common.Learning.EnterpriseLearningAccountBindingType; + authenticationHeader?: Com.Linkedin.Avro2pegasus.Events.Enterprise.EnterpriseAuthenticationMonitorHeader; + invitationTrackingId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/EnterpriseLearningInvitationSentEvent.pdsc + + export interface EnterpriseLearningInvitationSentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationHeader: Com.Linkedin.Avro2pegasus.Events.Enterprise.EnterpriseAuthenticationMonitorHeader; + channel: Com.Linkedin.Avro2pegasus.Events.Common.Learning.EnterpriseLearningActivationChannelType; + invitationTrackingId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + channelVersion?: number; + isCustomizedInvitation?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/EnterpriseLearningLoginMethodEvent.pdsc + + export interface EnterpriseLearningLoginMethodEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationRequestId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + availableLoginMethods: Com.Linkedin.Avro2pegasus.Events.Common.Learning.LoginMethodEvent[]; + primaryLoginMethod?: Com.Linkedin.Avro2pegasus.Events.Common.Learning.LoginMethodEvent; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/Entity.pdsc + + export interface Entity { + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleAt: number; + visibleDurationOnScreen?: number; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + positionInAggregation?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/JobDetailsCourseRecommendationActionEvent.pdsc + + export interface JobDetailsCourseRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionType: CourseRecommendationActionType; + actionPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/JobDetailsCourseRecommendationImpressionEvent.pdsc + + export interface JobDetailsCourseRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recommendations: Com.Linkedin.Avro2pegasus.Common.Learning.LearningContentRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/JobDetailsCourseRecommendationServedEvent.pdsc + + export interface JobDetailsCourseRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + useCase: CourseRecommendationUseCase; + recommendations: Com.Linkedin.Avro2pegasus.Common.Learning.LearningContentRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/JobsHomeCourseRecommendationActionEvent.pdsc + + export interface JobsHomeCourseRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionType: CourseRecommendationActionType; + actionPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/JobsHomeCourseRecommendationImpressionEvent.pdsc + + export interface JobsHomeCourseRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recommendations: Com.Linkedin.Avro2pegasus.Common.Learning.LearningContentRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/JobsHomeCourseRecommendationServedEvent.pdsc + + export interface JobsHomeCourseRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + useCase: CourseRecommendationUseCase; + recommendations: Com.Linkedin.Avro2pegasus.Common.Learning.LearningContentRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearnerInterestServed.pdsc + + export interface LearnerInterestServed { + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearnerInterestsServedEvent.pdsc + + export interface LearnerInterestsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + parentOccupationTitleUrn?: string; + libraryUrn?: string; + isLibraryInferred: boolean; + learnerType: LearnerType; + interestsServed: LearnerInterestServed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearnerSubscriptionType.pdsc + + export type LearnerSubscriptionType = 'SUBSCRIBER' | 'NON_SUBSCRIBER'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearnerType.pdsc + + export type LearnerType = 'UNBOUND_ENTERPRISE' | 'BOUND_ENTERPRISE' | 'CONSUMER'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningActivityActionEvent.pdsc + + export interface LearningActivityActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + activityGroup: Com.Linkedin.Avro2pegasus.Common.Learning.LearningActivityGroup; + learningEntity?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Common.Learning.LearningActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningActivityEntities.pdsc + + export interface LearningActivityEntities { + learningActivityEntity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + activityPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningActivityImpression.pdsc + + export interface LearningActivityImpression { + learningEntity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + learningActivityGroup: Com.Linkedin.Avro2pegasus.Common.Learning.LearningActivityGroup; + visibleAt: number; + visibleDurationTime: number; + entityPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningActivityImpressionEvent.pdsc + + export interface LearningActivityImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + activity: LearningActivityImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningActivityServedEvent.pdsc + + export interface LearningActivityServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + results: LearningActivityServedGroup[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningActivityServedGroup.pdsc + + export interface LearningActivityServedGroup { + activityGroup: Com.Linkedin.Avro2pegasus.Common.Learning.LearningActivityGroup; + activityEntities: LearningActivityEntities[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningAdminCollectionEngagementEvent.pdsc + + export interface LearningAdminCollectionEngagementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + learningEngagementHeader?: LearningEngagementHeader; + engagementTime: number; + lyndaLearningCollectionUrn: string; + viewedDurationSeconds?: number; + progressPercentage?: number; + isCompletion: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningArticleEngagementEvent.pdsc + + export interface LearningArticleEngagementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + learningEngagementHeader?: LearningEngagementHeader; + engagementTime: number; + articleUrn: string; + progressPercentage?: number; + progressState: ArticleProgressState; + trackingId: TrackingId; + markedAsHidden: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningAssessmentEngagementEvent.pdsc + + export interface LearningAssessmentEngagementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + engagementTime: number; + assessmentUrn: string; + attemptId: number; + statusType: AssessmentStatusType; + score?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningBrowseActionEvent.pdsc + + export interface LearningBrowseActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rawSearchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: Com.Linkedin.Avro2pegasus.Common.Learning.LearningActionCategory; + resultId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + resultUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningBrowseImpressionEvent.pdsc + + export interface LearningBrowseImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rawSearchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + query: string; + browseUrn?: string; + searchOrigin: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchResultPageOrigin; + results: BrowseResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCertificateActionEvent.pdsc + + export interface LearningCertificateActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + certificateUrn: string; + actionType: Com.Linkedin.Avro2pegasus.Common.Learning.LearningActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCertificateClaimedEvent.pdsc + + export interface LearningCertificateClaimedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + certificateUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCertificateEngagementEvent.pdsc + + export interface LearningCertificateEngagementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + engagementTime: number; + learnerCertificateUrn: string; + isDownloadAction: boolean; + unitsEarned?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningChooserViewEvent.pdsc + + export interface LearningChooserViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + learningUpsell?: Com.Linkedin.Avro2pegasus.Common.Learning.LearningUpsellTrackingObject; + upsellOrderOrigin?: string; + externalPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + contextUrn?: string; + refererUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentActionEvent.pdsc + + export interface LearningContentActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + commonActionData: Com.Linkedin.Avro2pegasus.Common.Learning.LearningCommonAction; + contentPlacement: Com.Linkedin.Avro2pegasus.Common.Learning.LearningContentPlacement; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentCompletedEvent.pdsc + + export interface LearningContentCompletedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + contentTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentCompletedOnLyndaEvent.pdsc + + export interface LearningContentCompletedOnLyndaEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + completedAt?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentDeviceInteractionEvent.pdsc + + export interface LearningContentDeviceInteractionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contentTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentImpressionEvent.pdsc + + export interface LearningContentImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + commonImpressionData: Com.Linkedin.Avro2pegasus.Common.Learning.LearningCommonImpression; + contentPlacement: Com.Linkedin.Avro2pegasus.Common.Learning.LearningContentPlacement; + position: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentMessageShareEvent.pdsc + + export interface LearningContentMessageShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentPurchaseEvent.pdsc + + export interface LearningContentPurchaseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + purchaseFulfillmentTime: number; + contentUrn: string; + orderUrn: string; + orderLineUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentPurchaseServedEvent.pdsc + + export interface LearningContentPurchaseServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + contentUrns: string[]; + cartUrn: string; + upsellOrderOrigin?: string; + learningUpsell?: Com.Linkedin.Avro2pegasus.Common.Learning.LearningUpsellTrackingObject; + previousPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentRefundEvent.pdsc + + export interface LearningContentRefundEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cancelFulfillmentTime: number; + contentUrn: string; + orderUrn: string; + originalPurchaseOrderUrn: string; + originalPurchaseOrderLineUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentUnlockEvent.pdsc + + export interface LearningContentUnlockEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + claimToken: string; + memberUrn: string; + claimedTime: number; + expiryTime: number; + contentUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentViewEvent.pdsc + + export interface LearningContentViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contentType: LearningContentViewType; + contentTrackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + interactiveStatus?: LearningMaterialInteractiveType; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentViewProgressEvent.pdsc + + export interface LearningContentViewProgressEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + offsetInSeconds: number; + contentIntervalsWatched: number; + contentTrackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + viewedDurationSeconds?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningContentViewType.pdsc + + export type LearningContentViewType = 'COURSE' | 'VIDEO' | 'QUIZ' | 'LEARNING_PATH'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCourseActionEvent.pdsc + + export interface LearningCourseActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + courseUrn: string; + trackableCourseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + trackableCurrentCourseObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn: string; + actionType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCourseEngagementV2Event.pdsc + + export interface LearningCourseEngagementV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + engagementTime: number; + courseUrn: string; + viewedDurationSeconds?: number; + totalCompletedVideoDurationInSeconds?: number; + statusType: CourseViewingStatusType; + percentCompleted: number; + isCompletion: boolean; + markedAsDone?: boolean; + lastViewedContent?: string; + isMigratedFromLynda: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCourseImpressionEvent.pdsc + + export interface LearningCourseImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + courseUrn: string; + entities: CourseEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCourseNotServed.pdsc + + export interface LearningCourseNotServed { + trackableCourseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + aggregation?: Aggregation; + notServedReason: CourseNotServedReasonType; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCourseNotServedEvent.pdsc + + export interface LearningCourseNotServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + courseUrn: string; + entities: LearningCourseNotServed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCourseServed.pdsc + + export interface LearningCourseServed { + trackableCourseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + aggregation?: Aggregation; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCourseServedEvent.pdsc + + export interface LearningCourseServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + materialInteractiveType: LearningMaterialInteractiveType; + material: LearningCourseServed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningCourseViewEvent.pdsc + + export interface LearningCourseViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningDocumentEngagementEvent.pdsc + + export interface LearningDocumentEngagementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + learningEngagementHeader?: LearningEngagementHeader; + engagementTime: number; + documentUrn: string; + progressPercentage: number; + isCompleted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningDocumentPageViewingStatusEvent.pdsc + + export interface LearningDocumentPageViewingStatusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + documentUrn: string; + pageIndex: number; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningEngagementHeader.pdsc + + export interface LearningEngagementHeader { + browserId?: string; + pageKey?: string; + interfaceLocale?: string; + referer?: string; + userAgent?: string; + ipAsBytes?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + osName?: string; + osVersion?: string; + appState?: NativeApplicationState; + appName?: string; + pageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningEngagementMetricsEvent.pdsc + + export interface LearningEngagementMetricsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + minutesSinceEpoch: number; + daysSinceEpoch: number; + memberId: number; + enterpriseAccountId: number; + enterpriseProfileId: number; + groupIds: number[]; + contentUrn?: string; + contentType?: string; + contentProviderUrn?: string; + channelType: Com.Linkedin.Avro2pegasus.Events.Common.Learning.LearningChannelType; + deviceTypeId: number; + customAttributes: string[]; + progressPercentage: number; + completion: number; + secondsViewed: number; + view: number; + markedAsDone: number; + login: number; + certificatesDownloaded: number; + certificateUnitsEarned: number; + outsideLms: number; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningEnterpriseAiccSessionInitializedEvent.pdsc + + export interface LearningEnterpriseAiccSessionInitializedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + aiccSessionUrn: string; + aiccSessionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningEnterpriseContentAssignedEvent.pdsc + + export interface LearningEnterpriseContentAssignedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + assignedContent: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + assignerUrn: string; + assigneesUrns: string[]; + dueOn?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + assignmentMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningEnterpriseReportDownloadEvent.pdsc + + export interface LearningEnterpriseReportDownloadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + enterpriseAccountUrn: string; + enterpriseProfileUrn: string; + reportDefinitionUrn: string; + reportDuration: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + enterpriseGroupUrns: string[]; + aggregationTimeUnit: AggregationTimeUnit; + reportStatus: ReportStatus; + fileSize?: number; + reportExecutionTime?: number; + numRecords?: number; + reportType?: ReportType; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningEnterpriseReportEvent.pdsc + + export interface LearningEnterpriseReportEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + millisecondsSinceEpoch: number; + enterpriseAccountId: number; + enterpriseProfileId: number; + groupIds: number[]; + objectUrn: string; + metricTypeId: number; + metricValue: number; + deviceTypeId: number; + enterpriseCustomAttributes?: string[]; + channelType?: ChannelType; + contentType?: string; + engagementMetricType?: EngagementMetricType; + contentProviderUrn?: string; + contentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningFeedActionEvent.pdsc + + export interface LearningFeedActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn: string; + actionType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningFeedImpressionEvent.pdsc + + export interface LearningFeedImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: Entity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningFeedServed2Event.pdsc + + export interface LearningFeedServed2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + entities: LearningRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningFeedServedEvent.pdsc + + export interface LearningFeedServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + entities: LearningRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningFeedUpdateNotServedEvent.pdsc + + export interface LearningFeedUpdateNotServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + entities: LearningRecommendationNotServed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningFreemiumClaimEvent.pdsc + + export interface LearningFreemiumClaimEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + claimId: string; + claimToken: string; + createdTime: number; + creatorUrn: string; + consumedTime?: number; + consumerUrn?: string; + expiresTime: number; + isGuestAccessible: boolean; + contentUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningInsightType.pdsc + + export type LearningInsightType = + | 'ENTERPRISE_ACTIVATION' + | 'LIKED_BY_YOUR_NETWORK' + | 'LIKED_BY_YOUR_COWORKERS' + | 'LIKED_BY_YOUR_ROLE' + | 'LIKED_BY_YOUR_COWORKERS_NO_CONNECTIONS' + | 'LIKED_BY_YOUR_ROLE_NO_CONNECTIONS'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningInstantTrialModalAction.pdsc + + export type LearningInstantTrialModalAction = 'ACCEPT' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningInstantTrialModalActionEvent.pdsc + + export interface LearningInstantTrialModalActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + action: LearningInstantTrialModalAction; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningInstantTrialModalImpressionEvent.pdsc + + export interface LearningInstantTrialModalImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + upsellTrk: string; + trialDurationInDays: number; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningLoginAttemptEvent.pdsc + + export interface LearningLoginAttemptEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationMonitorHeader: Com.Linkedin.Avro2pegasus.Events.Enterprise.EnterpriseAuthenticationMonitorHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningLoginErrorEvent.pdsc + + export interface LearningLoginErrorEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationMonitorHeader: Com.Linkedin.Avro2pegasus.Events.Enterprise.EnterpriseAuthenticationMonitorHeader; + loginRequest: Com.Linkedin.Avro2pegasus.Common.Learning.LearningLoginRequest; + errorOrigin: LearningLoginErrorOrigin; + errorType: LearningLoginFrontendErrorType; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningLoginErrorOrigin.pdsc + + export type LearningLoginErrorOrigin = 'CHECKPOINT' | 'LEARNING_LOGIN_FRONTEND'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningLoginFrontendErrorType.pdsc + + export type LearningLoginFrontendErrorType = + | 'LLFE_TOO_MANY_REDIRECTS_PER_STEP' + | 'LLFE_LOGIN_TRANSITION_INVALID' + | 'LLFE_NO_MEMBER_IDENTITIES' + | 'LLFE_MEMBER_NOT_LOGGED_IN' + | 'LLFE_PROFILE_NOT_LOGGED_IN' + | 'LLFE_BIND_NOT_REQUIRED' + | 'LLFE_MEMBER_ALREADY_BOUND_TO_CURRENT_PROFILE' + | 'LLFE_MEMBER_ALREADY_BOUND_IN_CURRENT_ACCOUNT' + | 'LLFE_LOGIN_METHOD_NOT_FOR_PROFILE' + | 'LLFE_GENERIC_BINDING_FAILURE' + | 'LLFE_NO_ENTERPRISE_PROFILE_ON_BINDING' + | 'LLFE_NO_PRIMARY_LOGIN_OTHER_LOGINS' + | 'LLFE_NO_PRIMARY_LOGIN_NO_LOGIN' + | 'LLFE_INVALID_ACCOUNT_STRING' + | 'LLFE_MEMBER_PROFILE_FETCH_FAILED' + | 'LLFE_INVALID_USER_NAME' + | 'LLFE_TOO_MANY_LOGIN_ATTEMPTS' + | 'LLFE_GENERAL_LOGIN_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningLoginRedirectEvent.pdsc + + export interface LearningLoginRedirectEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + authenticationMonitorHeader: Com.Linkedin.Avro2pegasus.Events.Enterprise.EnterpriseAuthenticationMonitorHeader; + redirectType: RedirectType; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningManagementSystemContentSyncEvent.pdsc + + export interface LearningManagementSystemContentSyncEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + enterpriseAccountUrn: string; + learningPushIntegrationSubscriptionUrn: string; + integrationType: LearningManagementSystemIntegrationType; + syncType: LearningManagementSystemContentSyncType; + stepType: LearningManagementSystemContentSyncStepType; + isSuccessful: boolean; + isFinal: boolean; + failureReason?: string; + sendDetails?: LearningManagementSystemContentSyncSendDetails; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningManagementSystemContentSyncSendDetails.pdsc + + export interface LearningManagementSystemContentSyncSendDetails { + learningPushIntegrationJobUrn: string; + messageSequenceNumber: number; + completedMessageCount: number; + totalMessageCount: number; + serverResponse?: LearningManagementSystemContentSyncServerResponse; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningManagementSystemContentSyncServerResponse.pdsc + + export interface LearningManagementSystemContentSyncServerResponse { + serverHostname: string; + statusCode: number; + rawResponse?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningManagementSystemContentSyncStepType.pdsc + + export type LearningManagementSystemContentSyncStepType = 'ENQUEUED_QUERY' | 'ENQUEUED_SEND' | 'SEND'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningManagementSystemContentSyncType.pdsc + + export type LearningManagementSystemContentSyncType = 'BOOTSTRAP' | 'DELTA' | 'BACKFILL'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningManagementSystemIntegrationType.pdsc + + export type LearningManagementSystemIntegrationType = 'OCN' | 'XAPI' | 'LTI' | 'AICC'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningManagementSystemInvocationActivityEvent.pdsc + + export interface LearningManagementSystemInvocationActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + enterpriseAccountUrn: string; + enterpriseProfileUrn: string; + objectUrn: string; + metricTypeId: number; + metricValue: number; + deviceTypeId: number; + learningActivityTime: number; + integrationType: LearningManagementSystemIntegrationType; + integrationName?: string; + isSuccessful: boolean; + statusCode?: number; + encodedRawResponse?: string; + encodedRequest?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningMaterialInteractiveType.pdsc + + export type LearningMaterialInteractiveType = 'UNLOCKED' | 'LOCKED'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningNavItem.pdsc + + export interface LearningNavItem { + navItem: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + libraryUrn: string; + groupName: string; + groupPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + itemPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningNavLibraryActionEvent.pdsc + + export interface LearningNavLibraryActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + navItem?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + libraryUrn: string; + groupName: string; + action: Com.Linkedin.Avro2pegasus.Common.Learning.LearningActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningNavLibraryImpressionEvent.pdsc + + export interface LearningNavLibraryImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + navItems: LearningNavItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningOnboardingStateEvent.pdsc + + export interface LearningOnboardingStateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + expectedIdentityUrn: string; + isMemberAuthenticated: boolean; + isEnterpriseAuthenticated: boolean; + isFullyAuthenticated: boolean; + isOnboardingCompleted?: boolean; + isProfileBindingCompleted?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningPathEngagementEvent.pdsc + + export interface LearningPathEngagementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + engagementTime: number; + learningPathUrn: string; + lastViewedContent: string; + statusType: LearningPathStatusType; + isSuspension: boolean; + isCompletion: boolean; + isResumption: boolean; + percentCompleted: number; + isMigratedFromLynda: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningPathStatusType.pdsc + + export type LearningPathStatusType = 'IN_PROGRESS' | 'SUSPENDED' | 'COMPLETED'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningRecommendation.pdsc + + export interface LearningRecommendation { + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + aggregation?: Aggregation; + modelUrn?: string; + annotationUrn?: string; + contextType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningRecommendationActionEvent.pdsc + + export interface LearningRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recommendationGroup: Com.Linkedin.Avro2pegasus.Common.Learning.LearningRecommendationGroup; + learningRecommendation?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Common.Learning.LearningActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningRecommendationChannel.pdsc + + export type LearningRecommendationChannel = + | 'LEARNING_HOMEPAGE' + | 'LEARNING_BITES' + | 'LEARNING_TOP3' + | 'NEPTUNE_RIGHT_RAIL_BITES' + | 'NEPTUNE_LEFT_RAIL_BITES' + | 'PROFILE_SELF' + | 'PROFILE_NON_SELF' + | 'LINKEDIN_HOMEPAGE' + | 'LEARNING_ONBOARDING_SOFT_LANDING' + | 'LEARNING_COURSE_CONSIDERATION_PAGE' + | 'LEARNING_ONBOARDING_INTEREST_SELECTION' + | 'LEARNING_ME_INTEREST_SELECTION' + | 'LEARNING_COURSE_CONSUMPTION_PAGE' + | 'LEARNING_HOMEPAGE_HERO'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningRecommendationImpression.pdsc + + export interface LearningRecommendationImpression { + learningRecommendation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + learningRecommendationGroup: Com.Linkedin.Avro2pegasus.Common.Learning.LearningRecommendationGroup; + visibleAt: number; + visibleDurationTime: number; + recommendationPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningRecommendationImpressionEvent.pdsc + + export interface LearningRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recommendations: LearningRecommendationImpression[]; + recommendationChannel?: LearningRecommendationChannel; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningRecommendationNotServed.pdsc + + export interface LearningRecommendationNotServed { + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + aggregation?: Aggregation; + notServedReason: RecNotServedReasonType; + modelUrn?: string; + annotationUrn?: string; + contextType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningRecommendationServedEvent.pdsc + + export interface LearningRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + results: LearningRecommendationServedGroup[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningRecommendationServedGroup.pdsc + + export interface LearningRecommendationServedGroup { + recommendationGroup: Com.Linkedin.Avro2pegasus.Common.Learning.LearningRecommendationGroup; + recommendations: LearningRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningRecommendationServedV2Event.pdsc + + export interface LearningRecommendationServedV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + recommendationChannel: LearningRecommendationChannel; + subscriptionType: LearnerSubscriptionType; + insightsType?: LearningInsightType; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningResendActivationEmailEvent.pdsc + + export interface LearningResendActivationEmailEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + accountUrn: string; + profileUrn: string; + actorUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningResourceAccessRequestEvaluatedEvent.pdsc + + export interface LearningResourceAccessRequestEvaluatedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + clientRequestId: string; + subjectUrn: string; + resourceName: string; + action: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + entityUrn?: string; + contentProviderUrn?: string; + overallAccessDecision: AccessDecision; + evaluationTime: number; + evaluatedPolicies: AccessControlPolicyEvaluationResult[]; + isOrganicTraffic: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSearchActionEvent.pdsc + + export interface LearningSearchActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rawSearchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchActionType; + result: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + isDuplicateOfV2: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSearchActionV2Event.pdsc + + export interface LearningSearchActionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rawSearchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: Com.Linkedin.Avro2pegasus.Common.Learning.LearningActionCategory; + resultId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + resultUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSearchFilter.pdsc + + export interface LearningSearchFilter { + filterName: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchFilterName; + filterSelection: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSearchImpressionEvent.pdsc + + export interface LearningSearchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rawSearchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + query: string; + searchOrigin: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchResultPageOrigin; + platformType: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchPlatformType; + filterOrder: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchFilterOrder; + filterLevel: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchFilterLevel; + filterEntity: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchFilterEntity; + isMemberAppliedFilter: boolean; + results: SearchResultItem[]; + filterSoftware?: string; + filterTime?: string; + filterContentBy?: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchFilterContentBy; + isDuplicateOfV2: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSearchImpressionV2Event.pdsc + + export interface LearningSearchImpressionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rawSearchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + query: string; + searchOrigin: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchResultPageOrigin; + platformType: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchPlatformType; + isMemberAppliedFilter: boolean; + searchFilterStates: LearningSearchFilter[]; + results: SearchResult[]; + spellcheckPrompt?: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchSpellcheckPrompt; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSearchServedEvent.pdsc + + export interface LearningSearchServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + source: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchResultSource; + results: ServedSearchResultItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSessionEngagementEvent.pdsc + + export interface LearningSessionEngagementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + learningEngagementHeader?: LearningEngagementHeader; + engagementTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSkillRecActionEvent.pdsc + + export interface LearningSkillRecActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + trackableSkillObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn: string; + actionType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSkillRecImpressionEvent.pdsc + + export interface LearningSkillRecImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + skills: Skill[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSkillRecommendation.pdsc + + export interface LearningSkillRecommendation { + trackableSkillObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSkillRecServedEvent.pdsc + + export interface LearningSkillRecServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + skillsRecommendations: LearningSkillRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSkillUpdateActionEvent.pdsc + + export interface LearningSkillUpdateActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + skillUrn: string; + actionType: string; + updateContext: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSkillUpdateContext; + skillUpdateReason: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSocialProofBadgeActionEvent.pdsc + + export interface LearningSocialProofBadgeActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn?: string; + actionType: string; + reason: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSocialProofReason; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSocialProofBadgeImpressionEvent.pdsc + + export interface LearningSocialProofBadgeImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + reason: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSocialProofReason; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSocialProofImpressionEvent.pdsc + + export interface LearningSocialProofImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + courseUrn?: string; + entities: SocialEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSocialProofServedEvent.pdsc + + export interface LearningSocialProofServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + trackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + socialProofs: LearningCourseServed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningStudyGroupsActionEvent.pdsc + + export interface LearningStudyGroupsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contentUrn: string; + commonActionData: Com.Linkedin.Avro2pegasus.Common.Learning.LearningCommonAction; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSubscriptionEvent.pdsc + + export interface LearningSubscriptionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + subscriptionSnapshotTime: number; + activeSubscriptions: Com.Linkedin.Avro2pegasus.Events.SubscriptionState[]; + orderUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningSubscriptionPurchaseServedEvent.pdsc + + export interface LearningSubscriptionPurchaseServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + primaryCartUrn: string; + optionalCartUrns: string[]; + upsellOrderOrigin?: string; + chooserPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + triggerControlUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningUpsellImpressionV2Event.pdsc + + export interface LearningUpsellImpressionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + upsellTrackingCode: string; + upsellType: LearningUpsellType; + contextUrn?: string; + contentPrice?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + upsellOrderOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningUpsellType.pdsc + + export type LearningUpsellType = 'ENTERPRISE' | 'CONSUMER_SUBSCRIPTION' | 'A_LA_CARTE' | 'SHOPPING_CART'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningVideoEngagementEvent.pdsc + + export interface LearningVideoEngagementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + learningEngagementHeader?: LearningEngagementHeader; + engagementTime: number; + videoUrn: string; + viewedDurationSeconds?: number; + viewedClockTimeDurationSeconds?: number; + progressPercentage?: number; + isCompletion: boolean; + isActivityTransfer: boolean; + isAutoPlaying?: boolean; + isMigratedFromLynda: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LearningWeblinkEngagementEvent.pdsc + + export interface LearningWeblinkEngagementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + engagementTime: number; + weblinkUrn: string; + progressState: CustomContentProgressState; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationActionEvent.pdsc + + export interface LyndaMigrationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + lyndaUserUrn: string; + memberUrn: string; + actionType: LyndaMigrationActionType; + migrationRunId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationActionType.pdsc + + export type LyndaMigrationActionType = + | 'MIGRATION_INITIATED' + | 'ACCOUNT_CREATION' + | 'EMAIL_CONFIRMED' + | 'PAYMENT_METHOD_COMPLETED' + | 'SUBSCRIPTION_CREATED' + | 'DATA_PULL_INITIATED' + | 'DATA_PULL_COMPLETED'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationActionV2Event.pdsc + + export interface LyndaMigrationActionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + lyndaUserUrn: string; + memberUrn: string; + actionType: LyndaMigrationActionType; + migrationRunId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationEnterpriseLearnersInvitedEvent.pdsc + + export interface LyndaMigrationEnterpriseLearnersInvitedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + enterpriseAccountUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationEnterprisePushCompletedEvent.pdsc + + export interface LyndaMigrationEnterprisePushCompletedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + enterpriseAccountUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationFailureEvent.pdsc + + export interface LyndaMigrationFailureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + lyndaUserUrn?: string; + memberUrn?: string; + isFatal: boolean; + failureType: LyndaMigrationFailureType; + migrationRunId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationFailureType.pdsc + + export type LyndaMigrationFailureType = + | 'UNCLASSIFIED' + | 'MIGRATION_SETUP' + | 'CANCEL_LYNDA_SUBSCRIPTION' + | 'ALREADY_PREMIUM' + | 'SETUP_SUBSCRIPTION'; + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationFailureV2Event.pdsc + + export interface LyndaMigrationFailureV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + lyndaUserUrn?: string; + memberUrn?: string; + isFatal: boolean; + failureType: LyndaMigrationFailureType; + migrationRunId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationInputImpressionEvent.pdsc + + export interface LyndaMigrationInputImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + lyndaUserUrn: string; + memberUrn?: string; + inputType: LyndaMigrationInputType; + migrationRunId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationInputImpressionV2Event.pdsc + + export interface LyndaMigrationInputImpressionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + lyndaUserUrn: string; + memberUrn?: string; + inputType: LyndaMigrationInputType; + migrationRunId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/LyndaMigrationInputType.pdsc + + export type LyndaMigrationInputType = 'EMAIL_CONFIRMATION' | 'CVV' | 'PAYMENT_METHOD' | 'LOGIN_REGISTRATION'; + // Generated from: com/linkedin/avro2pegasus/events/learning/MyPremiumCourseRecommendationActionEvent.pdsc + + export interface MyPremiumCourseRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionType: CourseRecommendationActionType; + actionPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/MyPremiumCourseRecommendationImpressionEvent.pdsc + + export interface MyPremiumCourseRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + useCase: CourseRecommendationUseCase; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/MyPremiumCourseRecommendationServedEvent.pdsc + + export interface MyPremiumCourseRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recommendations: Com.Linkedin.Avro2pegasus.Common.Learning.MyPremiumCourseRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/NativeApplicationState.pdsc + + export type NativeApplicationState = + | 'APPLICATION_FOREGROUND_ACTIVE' + | 'APPLICATION_FOREGROUND_INACTIVE' + | 'APPLICATION_BACKGROUND'; + // Generated from: com/linkedin/avro2pegasus/events/learning/ProfileCourseRecommendationActionEvent.pdsc + + export interface ProfileCourseRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionType: CourseRecommendationActionType; + actionPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/ProfileCourseRecommendationImpressionEvent.pdsc + + export interface ProfileCourseRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + useCase: CourseRecommendationUseCase; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/ProfileCourseRecommendationServedEvent.pdsc + + export interface ProfileCourseRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + vieweeUrn: string; + recommendations: Com.Linkedin.Avro2pegasus.Common.Learning.ProfileCourseRecommendation[]; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/PublishingTaskOperationStatus.pdsc + + export type PublishingTaskOperationStatus = + | 'SEQUENCING_REQUIRED' + | 'READY_FOR_EXECUTION' + | 'AWAITING_DEPENDENCIES' + | 'IN_PROGRESS' + | 'COMPLETE' + | 'FAILED' + | 'ABORTED' + | 'SKIPPED' + | 'COMPLETED'; + // Generated from: com/linkedin/avro2pegasus/events/learning/PublishingTaskOperationUpdate.pdsc + + export interface PublishingTaskOperationUpdate { + operationName: string; + input: string; + status: PublishingTaskOperationStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/PublishingTaskStatus.pdsc + + export type PublishingTaskStatus = 'NEW' | 'PUBLISHING' | 'PUBLISHED' | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/learning/PublishingTaskUpdate.pdsc + + export interface PublishingTaskUpdate { + status: PublishingTaskStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/PublishingTaskUpdatedEvent.pdsc + + export interface PublishingTaskUpdatedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + taskUrn: string; + sourceUrns: string[]; + taskUpdate?: PublishingTaskUpdate; + operationUpdate?: PublishingTaskOperationUpdate; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/RecNotServedReasonType.pdsc + + export type RecNotServedReasonType = + | 'UNRESOLVABLE_ENTITY' + | 'INCOMPLETE_DECORATION' + | 'UNSUPPORTED_RECOMMENDATION' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/learning/RedirectType.pdsc + + export type RedirectType = 'BINDING_ACTION' | 'BINDING_OPTION' | 'ENTERPRISE_LOGIN' | 'MEMBER_LOGIN'; + // Generated from: com/linkedin/avro2pegasus/events/learning/ReportStatus.pdsc + + export type ReportStatus = 'SUCCESS' | 'FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/learning/ReportType.pdsc + + export type ReportType = + | 'LEARNER_USAGE_DETAIL' + | 'TOTAL_USAGE_SUMMARY' + | 'LEARNER_SUMMARY' + | 'VIDEO_SUMMARY' + | 'LEARNER_VIDEO_DETAIL' + | 'COURSE_COMPLETIONS' + | 'MOST_POPULAR_COURSES' + | 'LEARNER_ACTIVITY_OUTSIDE_LMS_SESSION' + | 'CUSTOM_CONTENT_LEARNER_SUMMARY' + | 'MOST_POPULAR_CUSTOM_CONTENTS' + | 'RECOMMENDATION_HISTORY_DETAIL' + | 'RECOMMENDATION_SUMMARY' + | 'GROUPS_SUMMARY' + | 'LEARNER_MANAGEMENT_DETAIL'; + // Generated from: com/linkedin/avro2pegasus/events/learning/SearchResult.pdsc + + export interface SearchResult { + learningSearchResult: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchBrowseResult; + resultPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + startTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/SearchResultItem.pdsc + + export interface SearchResultItem { + learningResult: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchResultHit; + startTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/ServedSearchResultItem.pdsc + + export interface ServedSearchResultItem { + learningResult: Com.Linkedin.Avro2pegasus.Common.Learning.LearningSearchResultHit; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/Skill.pdsc + + export interface Skill { + trackableSkillObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleAt: number; + visibleDurationOnScreen?: number; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + positionInAggregation?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/SocialEntity.pdsc + + export interface SocialEntity { + courseTrackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleAt: number; + visibleDurationOnScreen?: number; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + positionInAggregation?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/learning/TrackingId.pdsc + + export type TrackingId = string; + } + namespace Lego { + // Generated from: com/linkedin/avro2pegasus/events/lego/LegoPageImpressionEvent.pdsc + + export interface LegoPageImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingToken: string; + pageTrackingId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + isSyncTrack?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/lego/LegoWidgetActionEvent.pdsc + + export interface LegoWidgetActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingToken: string; + widgetTrackingId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + actionCategory: WidgetActionCategory; + actionName?: string; + actionCount?: number; + isSyncTrack?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/lego/LegoWidgetImpressionEvent.pdsc + + export interface LegoWidgetImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingToken: string; + widgetTrackingId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + visibility?: WidgetVisibility; + isSyncTrack?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/lego/PinotLegoActivityEvent.pdsc + + export interface PinotLegoActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + legoUnitId: string; + type: Com.Linkedin.Avro2pegasus.Events.Common.Lego.PinotLegoActivityType; + createdTime: number; + actorUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lego/WidgetActionCategory.pdsc + + export type WidgetActionCategory = 'PRIMARY_ACTION' | 'SECONDARY_ACTION' | 'SKIP' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/lego/WidgetVisibility.pdsc + + export type WidgetVisibility = 'SHOW' | 'NO_DATA'; + } + namespace Lighthouse { + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/CompanyResolutionInfo.pdsc + + export interface CompanyResolutionInfo { + organizationUrn: string; + companyResolveType: CompanyResolveType; + confidenceScore: number; + companyCompareResults: string[]; + companyMatchedRules: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/CompanyResolveType.pdsc + + export type CompanyResolveType = + | 'GET_COMPANY_FROM_COMPANY_DOMAIN' + | 'FIND_COMPANY_ID_BY_STANDARDIZED_COMPANIES' + | 'FIND_COMPANY_ID_BY_KEYWORD_COMPANY_NAME' + | 'FIND_COMPANY_ID_BY_KEYWORD_COMPANY_DOMAIN' + | 'FIND_COMPANY_BY_CRM_BASED_STANDARDIZED_COMPANIES'; + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/CrmField.pdsc + + export type CrmField = + | 'EMAIL' + | 'PHONE' + | 'FIRST_NAME' + | 'LAST_NAME' + | 'TITLE' + | 'COMPANY_NAME' + | 'COMPANY_ID' + | 'WEB_SITE' + | 'COMPANY_DOMAIN' + | 'INDUSTRY' + | 'EMPLOYEE_COUNT_RANGE' + | 'COUNTRY' + | 'STATE' + | 'CITY' + | 'STREET' + | 'POSTAL_CODE'; + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/CrmRecordType.pdsc + + export type CrmRecordType = 'LEAD' | 'CONTACT' | 'ACCOUNT' | 'USER'; + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/CrmSource.pdsc + + export type CrmSource = 'SALESFORCE' | 'MICROSOFT_DYNAMICS'; + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/DocumentAssetContext.pdsc + + export interface DocumentAssetContext { + pageIndex: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/LighthouseAdminSyncContractConnectionReportEvent.pdsc + + export interface LighthouseAdminSyncContractConnectionReportEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + startTime: number; + errorMessage?: string; + crmSource: CrmSource; + channelStatuses: Com.Linkedin.Avro2pegasus.Events.Common.Lighthouse.LighthouseAdminSyncCrmChannelStatus[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/LighthouseAdminSyncOptInEvent.pdsc + + export interface LighthouseAdminSyncOptInEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + startTime: number; + adminKey: Com.Linkedin.Avro2pegasus.Events.LighthouseAdminKey; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/LighthouseAdminSyncSyncingSeatReportEvent.pdsc + + export interface LighthouseAdminSyncSyncingSeatReportEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + startTime: number; + errorMessage?: string; + contractUrn: string; + crmSource: CrmSource; + syncingSeatUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/LssGdprInitiateExportEvent.pdsc + + export interface LssGdprInitiateExportEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + complianceRequestUrn: string; + isContractScope: boolean; + contractUrn: string; + seatUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/MemberResolutionInfo.pdsc + + export interface MemberResolutionInfo { + memberUrn: string; + memberResolveType: MemberResolveType; + confidenceScore: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/MemberResolveType.pdsc + + export type MemberResolveType = + | 'GET_MEMBER_ID_FROM_EMAIL_PHONE' + | 'FIND_MEMBER_WITH_NAME_CURRENT_COMPANY_TITLE' + | 'FIND_MEMBER_WITH_NAME_PAST_COMPANY_TITLE' + | 'FIND_MEMBER_WITH_NAME_CURRENT_COMPANY' + | 'FIND_MEMBER_WITH_NAME_PAST_COMPANY' + | 'FIND_MEMBER_WITH_NAME_TITLE' + | 'FIND_MEMBER_WITH_NAME_OR_COMPANY_OR_TITLE' + | 'GET_MEMBER_FROM_EMAIL' + | 'FIND_MEMBER_WITH_UER_OPTIMIZED_QUERY'; + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/NotificationSettingFrequency.pdsc + + export type NotificationSettingFrequency = 'ALWAYS' | 'DISABLED' | 'REMOVED'; + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/NotificationSettingType.pdsc + + export type NotificationSettingType = + | 'EMAIL_WVMP_NOTIFICATION' + | 'PUSH_WVMP_NOTIFICATION' + | 'EMAIL_POINTDRIVE_VIEW_NOTIFICATION'; + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesActionV2Event.pdsc + + export interface SalesActionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viewerUrn: string; + target: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + actionType: Com.Linkedin.Avro2pegasus.Events.UnifiedActionType; + actionDetail?: string; + moduleKey?: string; + requestId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesBundleAssetDownloadEvent.pdsc + + export interface SalesBundleAssetDownloadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingConsentUrn: string; + viewingSessionUrn: string; + assetUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesBundleAssetViewEvent.pdsc + + export interface SalesBundleAssetViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingConsentUrn: string; + viewingSessionUrn: string; + assetUrn: string; + assetContext?: DocumentAssetContext; + duration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesCrm.pdsc + + export type SalesCrm = + | 'SALESFORCE' + | 'DYNAMICS' + | 'ORACLE' + | 'SAP' + | 'HUB_SPOT' + | 'SUGAR_CRM' + | 'NET_SUITE' + | 'MISSING' + | 'ZOHO' + | 'ACT_ON' + | 'DOCUSIGN' + | 'INFOR' + | 'INSIGHT_SQUARED' + | 'HUBSPOT' + | 'NETSUITE' + | 'NUDGE_AI' + | 'OUTREACH' + | 'RING_CENTRAL' + | 'SALESLOFT' + | 'SUGAR' + | 'TABLEAU' + | 'ZOOM' + | 'SENDBLOOM' + | 'GETACCEPT' + | 'ELOQUA' + | 'ENGAGIO' + | 'MARKETO' + | 'POWERAPPS' + | 'INSIDESALES' + | 'DEMANDBASE' + | 'BLUEJEANS' + | 'ADOBE_SIGN' + | 'TACT' + | 'YESWARE' + | 'PEGA' + | 'HUBSPOT_MA' + | 'GROOVE' + | 'CLARI' + | 'LEADFEEDER' + | 'MIXMAX' + | 'ALTIFY' + | 'VALIDITY' + | 'VEEVA' + | 'CIRRUS' + | 'LUCID' + | 'VOICERA' + | 'DRIFT' + | 'INTERCOM' + | 'G2CROWD' + | 'SAMPLE'; + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesCrmEntityResolutionEvent.pdsc + + export interface SalesCrmEntityResolutionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + crmInstanceUrn: string; + crmEntityId: string; + crmRecordType: CrmRecordType; + crmFields: CrmField[]; + memberResolutionInfo?: MemberResolutionInfo; + companyResolutionInfo?: CompanyResolutionInfo; + crmEntityHash?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesCrmImpressionEvent.pdsc + + export interface SalesCrmImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + crmViewerUrn: string; + widgetWidth: number; + widgetHeight: number; + crmSourceType: SalesCrm; + crmEdition: string; + crmOrganizationId: string; + modules?: string[]; + clientId?: string; + version?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesCrmOpportunityStageSyncEvent.pdsc + + export interface SalesCrmOpportunityStageSyncEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + prospectUrn?: string; + crmOpportunityStage: SalesFunnelStage; + syncTime: number; + crmInstanceUrn?: string; + businessProspectUrn?: string; + leadMemberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesEntity.pdsc + + export interface SalesEntity { + trackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleTime?: number; + duration?: number; + score?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + associatedInputControlUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesEntityImpressionEvent.pdsc + + export interface SalesEntityImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viewedEntityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesFunnelStage.pdsc + + export type SalesFunnelStage = 'PROSPECT' | 'OPPORTUNITY' | 'CUSTOMER'; + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesImpressionV2Event.pdsc + + export interface SalesImpressionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viewerUrn: string; + userflowId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + pageNumber: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + entities: SalesEntity[]; + moduleKey?: string; + requestId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesInMailOptOutEvent.pdsc + + export interface SalesInMailOptOutEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesNavigatorApplicationPlatformAnalyticsGenerateCsvEvent.pdsc + + export interface SalesNavigatorApplicationPlatformAnalyticsGenerateCsvEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + capQueueId: number; + analyticsDataType: Com.Linkedin.Avro2pegasus.Events.Common.Lighthouse.SalesNavigatorApplicationPlatformAnalyticsDataType; + generateStartTime: number; + generateEndTime: number; + rows: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesNavigatorApplicationPlatformAnalyticsUploadCsvEvent.pdsc + + export interface SalesNavigatorApplicationPlatformAnalyticsUploadCsvEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + capQueueId: number; + analyticsDataType: Com.Linkedin.Avro2pegasus.Events.Common.Lighthouse.SalesNavigatorApplicationPlatformAnalyticsDataType; + fileSizeKB: number; + uploadStartTime: number; + uploadEndTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesNavigatorApplicationPlatformAnalyticsUserRequestEvent.pdsc + + export interface SalesNavigatorApplicationPlatformAnalyticsUserRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + capQueueId: number; + analyticsDataType: Com.Linkedin.Avro2pegasus.Events.Common.Lighthouse.SalesNavigatorApplicationPlatformAnalyticsDataType; + startTime: number; + endTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesNotificationDroppedEvent.pdsc + + export interface SalesNotificationDroppedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + communicationHeader: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + isMobileRequest: boolean; + notificationType: string; + recipientUrn: string; + entityUrn: string; + parentUrn?: string; + droppedReason: SalesNotificationDroppedReason; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesNotificationDroppedReason.pdsc + + export type SalesNotificationDroppedReason = + | 'INTERNAL_ERROR' + | 'SPAM_FILTERING' + | 'CONNECTION_TIMEOUT' + | 'INVALID_CONTENT' + | 'CONTENT_UNAVAILABLE'; + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesNotificationServedEvent.pdsc + + export interface SalesNotificationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + communicationHeader: Com.Linkedin.Avro2pegasus.Events.Common.Communications.CommunicationChainTrackingHeader; + isMobileRequest: boolean; + notificationType: string; + recipientUrn: string; + entityUrn: string; + parentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesNotificationSettingUpdateEvent.pdsc + + export interface SalesNotificationSettingUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + contractUrn: string; + seatUrn: string; + type: NotificationSettingType; + notificationSettingFrequency: NotificationSettingFrequency; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesRecommendationResult.pdsc + + export interface SalesRecommendationResult { + trackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + scoredEntity: Com.Linkedin.Avro2pegasus.Events.ScoredEntity; + } + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/SalesRecommendationServedEvent.pdsc + + export interface SalesRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + salesUrn: string; + modelId: string; + requestId?: string; + resultList: SalesRecommendationResult[]; + } + namespace Search { + // Generated from: com/linkedin/avro2pegasus/events/lighthouse/search/SalesSearchServedEvent.pdsc + + export interface SalesSearchServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + searchResult: Com.Linkedin.Avro2pegasus.Events.Common.Lighthouse.SearchResult; + searchRequest: Com.Linkedin.Avro2pegasus.Events.Common.Lighthouse.SearchRequest; + searchMetadata?: Com.Linkedin.Avro2pegasus.Events.Common.Lighthouse.SearchMetadata; + requestId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + searchSessionId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + searchId: string; + } + } + } + namespace Listeningplatform { + // Generated from: com/linkedin/avro2pegasus/events/listeningplatform/AlertConfiguration.pdsc + + export interface AlertConfiguration { + id: number; + name: string; + metric: string; + emailRecipients: string[]; + detectionType: DetectionType; + detectionProperties: string; + } + // Generated from: com/linkedin/avro2pegasus/events/listeningplatform/CriterionAuditEvent.pdsc + + export interface CriterionAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + criterionUrn: string; + name: string; + description: string; + actor: string; + alertConfiguration?: AlertConfiguration[]; + } + // Generated from: com/linkedin/avro2pegasus/events/listeningplatform/DetectionType.pdsc + + export type DetectionType = 'Threshold' | 'Percentage'; + } + namespace Litms { + // Generated from: com/linkedin/avro2pegasus/events/litms/ExternalMarketingTagFireEvent.pdsc + + export interface ExternalMarketingTagFireEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + tags: Tag[]; + } + // Generated from: com/linkedin/avro2pegasus/events/litms/Tag.pdsc + + export interface Tag { + tagUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/litms/TagManagementSystemLoadEvent.pdsc + + export interface TagManagementSystemLoadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + } + namespace Lix { + // Generated from: com/linkedin/avro2pegasus/events/lix/ABTestMetricDashboardUserEvent.pdsc + + export interface ABTestMetricDashboardUserEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + userName: string; + action: ActionType; + fabricUrn: string; + lastRecordTime?: number; + size?: number; + experimentUrn?: string; + metricGroup?: string; + metric?: string; + variancePairList?: VariancePair[]; + segmentId?: number; + startTime?: number; + endTime?: number; + dimensionFilter?: string; + statusCode?: number; + processingDuration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/ActionType.pdsc + + export type ActionType = + | 'DASHBOARD' + | 'EXPERIMENT' + | 'CHART' + | 'POWERSUMMARY' + | 'POWERPERMETRIC' + | 'POWERCAL' + | 'XOD' + | 'MIE' + | 'INTRADAY'; + // Generated from: com/linkedin/avro2pegasus/events/lix/AdExternalLixAssignmentEvent.pdsc + + export interface AdExternalLixAssignmentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + lixAssignments: AdLixUrnAssignmentsRecord[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/AdExternalLixCountEvent.pdsc + + export interface AdExternalLixCountEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + dataCollectionTimeRange: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + experimentEvaluationCounts: AdLixEvaluationCountRecord[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/AdLixEvaluationCountRecord.pdsc + + export interface AdLixEvaluationCountRecord { + adExperimentId: number; + treatmentIndex: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/AdLixExperimentAssignmentRecord.pdsc + + export interface AdLixExperimentAssignmentRecord { + adExperimentId: number; + treatmentIndex: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/AdLixUrnAssignmentsRecord.pdsc + + export interface AdLixUrnAssignmentsRecord { + evaluationUrn: string; + experimentAssignments: AdLixExperimentAssignmentRecord[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/ExperimentChangeEventType.pdsc + + export type ExperimentChangeEventType = 'ACTIVATION' | 'CHANGE' | 'TERMINATION'; + // Generated from: com/linkedin/avro2pegasus/events/lix/LixCustomAttributeUpdateEvent.pdsc + + export interface LixCustomAttributeUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + attributes: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/LixExperimentChangeAcknowledgementEvent.pdsc + + export interface LixExperimentChangeAcknowledgementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + experimentChangeUrn: string; + acknowledgementTimestamp: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/LixExperimentChangeEvent.pdsc + + export interface LixExperimentChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + experimentChangeUrn: string; + testUrn: string; + experimentUrn: string; + eventType: ExperimentChangeEventType; + experimentDsl?: string; + isTrackingEnabled?: boolean; + changeTimestamp: number; + userUrn: string; + serviceUrns?: string[]; + downstreamServiceUrns?: string[]; + upstreamServiceUrns?: string[]; + treatmentDataTuples?: TreatmentDataTuple[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/LixTreatment.pdsc + + export interface LixTreatment { + urn: string; + experimentId: number; + treatment: string; + segmentId: number; + testkey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/LixTreatmentCountEvent.pdsc + + export interface LixTreatmentCountEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + startTime: number; + endTime: number; + experimentId: number; + treatmentIndex: number; + segmentIndex: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/LixTreatmentsEvent.pdsc + + export interface LixTreatmentsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + urns: UrnRecord[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/TreatmentDataTuple.pdsc + + export interface TreatmentDataTuple { + treatment: string; + treatmentDataIds?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/TreatmentRecord.pdsc + + export interface TreatmentRecord { + experimentId: number; + treatmentIndex: number; + segmentIndex?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/UrnRecord.pdsc + + export interface UrnRecord { + urnId: string; + urnType: string; + treatments: TreatmentRecord[]; + primaryEvaluationUrn?: string; + additionalTrackingUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lix/VariancePair.pdsc + + export interface VariancePair { + varianceA?: string; + varianceB?: string; + } + } + namespace Login { + // Generated from: com/linkedin/avro2pegasus/events/login/FilterType.pdsc + + export type FilterType = 'BLOCK_FILTER' | 'GUEST_FILTER' | 'RESTRICTED_IP_FILTER' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/login/KeepMeLoggedInActionEvent.pdsc + + export interface KeepMeLoggedInActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + currentState: KeepMeLoggedInState; + } + // Generated from: com/linkedin/avro2pegasus/events/login/KeepMeLoggedInState.pdsc + + export type KeepMeLoggedInState = 'ENABLED' | 'DISABLED'; + // Generated from: com/linkedin/avro2pegasus/events/login/LoginIdentity.pdsc + + export interface LoginIdentity { + identityUrn: string; + expirationTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/login/LoginRedirectionCookieInfo.pdsc + + export interface LoginRedirectionCookieInfo { + isSignatureCorrect: boolean; + isDenialIdCorrect?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/login/LoginRedirectionQueryParamInfo.pdsc + + export interface LoginRedirectionQueryParamInfo { + isSignatureCorrect: boolean; + denialId?: string; + trigger?: string; + filterType?: FilterType; + redirectionTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/login/LoginServerPasswordChangeEvent.pdsc + + export interface LoginServerPasswordChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + passwordChangeType: PasswordChangeType; + memberUrn: string; + rpcTrace: string; + resetMethod?: PasswordResetMethod; + isPersistSessionsRequested: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/login/LoginTokenLifecycleEvent.pdsc + + export interface LoginTokenLifecycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + loginTokenType: Com.Linkedin.Avro2pegasus.Common.Login.LoginTokenType; + stage: Stage; + submissionID: string; + hashedLoginTokenId: string; + parentPageKey?: string; + linkType?: string; + loginIdentities?: LoginIdentity[]; + authenticationRequestId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/login/LogoutEvent.pdsc + + export interface LogoutEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + appName?: string; + logoutResult: LogoutResult; + logoutReason?: LogoutReason; + loginSessionId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/login/LogoutReason.pdsc + + export type LogoutReason = 'USER_INITIATED' | 'UNAUTHORIZED'; + // Generated from: com/linkedin/avro2pegasus/events/login/LogoutResult.pdsc + + export type LogoutResult = 'PASS' | 'FAIL' | 'CSRF_INVALID'; + // Generated from: com/linkedin/avro2pegasus/events/login/PasswordChangeType.pdsc + + export type PasswordChangeType = 'CREATE' | 'CHANGE' | 'RESET' | 'INVALIDATE'; + // Generated from: com/linkedin/avro2pegasus/events/login/PasswordResetMethod.pdsc + + export type PasswordResetMethod = 'EMAIL' | 'PHONE'; + // Generated from: com/linkedin/avro2pegasus/events/login/SentinelRedirectToLoginPageViewEvent.pdsc + + export interface SentinelRedirectToLoginPageViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + isLegitimateRequest: boolean; + redirectionParamInfo: LoginRedirectionQueryParamInfo; + redirectionCookieInfo?: LoginRedirectionCookieInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/login/SSOLoginEvent.pdsc + + export interface SSOLoginEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + appName: string; + SSOLoginResult: SSOLoginResult; + } + // Generated from: com/linkedin/avro2pegasus/events/login/SSOLoginResult.pdsc + + export type SSOLoginResult = 'SUCCESS' | 'FAIL'; + // Generated from: com/linkedin/avro2pegasus/events/login/Stage.pdsc + + export type Stage = 'CREATED' | 'VERIFIED' | 'REJECTED_BSCOOKIE_MISMATCH' | 'REJECTED' | 'USED'; + } + namespace Lookup { + // Generated from: com/linkedin/avro2pegasus/events/lookup/InferredBindingFeedbackSourceType.pdsc + + export type InferredBindingFeedbackSourceType = 'USER_ONBOARDING' | 'NEW_MEMBER' | 'USER_FEEDBACK'; + // Generated from: com/linkedin/avro2pegasus/events/lookup/LedInviteMessageType.pdsc + + export type LedInviteMessageType = 'GROUP_INMAIL' | 'TEXT' | 'EMAIL' | 'PUSH_NOTIFICATION'; + // Generated from: com/linkedin/avro2pegasus/events/lookup/LookupInferredBindingFeedbackEvent.pdsc + + export interface LookupInferredBindingFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + feedbackReceivedTime: number; + inferredUserMemberUrn: string; + inferredUserEnterpriseProfileUrn: string; + feedbackProviderEnterpriseProfileUrn: string; + isInferredBindingCorrect: boolean; + enterpriseAccountUrn: string; + modelVersionId?: string; + inferenceTime?: number; + inferredBindingFeedbackSource?: InferredBindingFeedbackSourceType; + } + // Generated from: com/linkedin/avro2pegasus/events/lookup/LookupInviteActionEvent.pdsc + + export interface LookupInviteActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + inviterUrn: string; + inviteeUrn: string; + directoryUrn: string; + invitationSentTime: number; + directoryProjectUrn: string; + isInviteeLookupUser: boolean; + isInviteSkipped: boolean; + messageType: LedInviteMessageType; + } + // Generated from: com/linkedin/avro2pegasus/events/lookup/LookupSearchActionV2Event.pdsc + + export interface LookupSearchActionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + lookupSearchHeader: Com.Linkedin.Avro2pegasus.Events.Search.LookupSearchHeader; + entityActionType: Com.Linkedin.Avro2pegasus.Events.Search.LookupSearchResultActionType; + searchResult: Com.Linkedin.Avro2pegasus.Events.Search.LookupSearchResultHit; + } + // Generated from: com/linkedin/avro2pegasus/events/lookup/LookupSearchImpressionEvent.pdsc + + export interface LookupSearchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + lookupSearchHeader: Com.Linkedin.Avro2pegasus.Events.Search.LookupSearchHeader; + pageNumber: number; + facets: string[]; + results: Com.Linkedin.Avro2pegasus.Events.Search.LookupSearchResultHit[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lookup/LookupSearchInputFocusEvent.pdsc + + export interface LookupSearchInputFocusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + lookupSearchHeader: Com.Linkedin.Avro2pegasus.Events.Search.LookupSearchHeader; + facets: string[]; + } + } + namespace Lpc { + // Generated from: com/linkedin/avro2pegasus/events/lpc/OutlookPeopleCardViewRawEvent.pdsc + + export interface OutlookPeopleCardViewRawEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + rawPayload: string; + signature?: string; + } + } + namespace Lps { + // Generated from: com/linkedin/avro2pegasus/events/lps/BlueprintCreateEvent.pdsc + + export interface BlueprintCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + multiProductUrn: string; + blueprintVersion: number; + creationTime: number; + changelogMessage: string; + actorUrn: string; + impersonatorUrn?: string; + errorMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lps/EventType.pdsc + + export type EventType = + | 'RELEASE_START' + | 'RELEASE_END' + | 'DEPLOYMENT_ATTEMPT_START' + | 'DEPLOYMENT_ATTEMPT_END'; + // Generated from: com/linkedin/avro2pegasus/events/lps/MaestroReleaseEvent.pdsc + + export interface MaestroReleaseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + eventType: EventType; + releaseId: string; + blueprintVersion?: number; + productUrn: string; + productVersion: string; + productTag?: string; + fabricUrn: string; + requestType: Com.Linkedin.Avro2pegasus.Common.Lps.RequestType; + time: number; + actorUrn: string; + impersonatorUrn?: string; + status?: Com.Linkedin.Avro2pegasus.Common.Lps.ReleaseResultStatus; + displayName?: string; + failedTaskType?: Com.Linkedin.Avro2pegasus.Common.Lps.TaskType; + deploymentProcessorOrigin?: string; + configRevision?: number; + previousVersion?: string; + deploymentProcessorRequestId?: string; + message?: string; + isDeploymentConverged?: boolean; + deploymentFailureCategory?: Com.Linkedin.Avro2pegasus.Common.Lps.DeploymentFailureCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/lps/TaskEndEvent.pdsc + + export interface TaskEndEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + maestroEventEndData: Com.Linkedin.Avro2pegasus.Common.Lps.MaestroEventEndData; + taskType: Com.Linkedin.Avro2pegasus.Common.Lps.TaskType; + } + // Generated from: com/linkedin/avro2pegasus/events/lps/TaskStartEvent.pdsc + + export interface TaskStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + maestroEventStartData: Com.Linkedin.Avro2pegasus.Common.Lps.MaestroEventStartData; + taskType: Com.Linkedin.Avro2pegasus.Common.Lps.TaskType; + } + } + namespace Lynda { + // Generated from: com/linkedin/avro2pegasus/events/lynda/accessTypeId.pdsc + + export type accessTypeId = 'VIDEO_VIEW' | 'EXERCISE_FILE' | 'VIDEO_DOWNLOAD' | 'OFFLINE_VIDEO_VIEW'; + // Generated from: com/linkedin/avro2pegasus/events/lynda/calendarClientId.pdsc + + export type calendarClientId = 'GOOGLE' | 'YAHOO' | 'APPLE' | 'OUTLOOK'; + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaAccessedProductEvent.pdsc + + export interface LyndaAccessedProductEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + lyndaHeader: LyndaCommonHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + courseUrn: string; + accessType: accessTypeId; + chapterUrn: string; + videoUrn: string; + authorUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaCategoryViewEvent.pdsc + + export interface LyndaCategoryViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + categoryUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaCommonHeader.pdsc + + export interface LyndaCommonHeader { + browserId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaConverstionType.pdsc + + export type LyndaConverstionType = 'PAID' | 'TRIAL'; + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaCourseViewEvent.pdsc + + export interface LyndaCourseViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + courseUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaLandingEvent.pdsc + + export interface LyndaLandingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + lyndaPromotionTrackingId: string; + entityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaPageViewV2Event.pdsc + + export interface LyndaPageViewV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + lyndaHeader: LyndaCommonHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaPlayerPlayPauseV2Event.pdsc + + export interface LyndaPlayerPlayPauseV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + lyndaHeader: LyndaCommonHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + state: Com.Linkedin.Avro2pegasus.Events.Player.PlayerState; + reason: PlayPauseChangedReason; + } + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaPlayerPositionChangedV2Event.pdsc + + export interface LyndaPlayerPositionChangedV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + lyndaHeader: LyndaCommonHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + state: Com.Linkedin.Avro2pegasus.Events.Player.PlayerState; + } + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaRegistrationEvent.pdsc + + export interface LyndaRegistrationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + conversionType: LyndaConverstionType; + orderUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/lynda/LyndaReminderCreationEvent.pdsc + + export interface LyndaReminderCreationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + lyndaHeader: LyndaCommonHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + courseUrn: string; + daysOfTheWeek: Com.Linkedin.Avro2pegasus.Events.DayOfWeek[]; + startDate: number; + reminderDurationInMinutes: number; + calendarClient: calendarClientId; + } + // Generated from: com/linkedin/avro2pegasus/events/lynda/PlayPauseChangedReason.pdsc + + export type PlayPauseChangedReason = + | 'USER_TRIGGERED' + | 'EXITED_VIEWPORT' + | 'ENTERED_VIEWPORT' + | 'VIDEO_PRIORITY_CHANGED'; + } + namespace Marketing { + // Generated from: com/linkedin/avro2pegasus/events/marketing/MarketingFirstInteractionEvent.pdsc + + export interface MarketingFirstInteractionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + marketingCampaignUrn?: string; + trk?: string; + accountCampaignId?: string; + campaignName?: string; + advertisementGroupId?: string; + keyword?: string; + matchType?: string; + googleClickId?: string; + advertisementId?: string; + placement?: string; + network?: string; + queryString?: string; + } + } + namespace Mce { + // Generated from: com/linkedin/avro2pegasus/events/mce/dummyComplianceArray.pdsc + + export interface dummyComplianceArray { + fieldPath?: string; + policy?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mce/DummyMetadataChangeEvent.pdsc + + export interface DummyMetadataChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + dummyComplianceEntry?: dummyComplianceArray[]; + } + } + namespace Me { + // Generated from: com/linkedin/avro2pegasus/events/me/ActorVerbObject.pdsc + + export interface ActorVerbObject { + actorUrn: string; + verbType: string; + objectUrn?: string; + rootObjectUrn?: string; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/me/AnalyticsEntryPointImpression.pdsc + + export interface AnalyticsEntryPointImpression { + analyticsEntryPoint: SocialUpdateAnalyticsEntryPointType; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + visibleTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/me/AnalyticsHighlightImpression.pdsc + + export interface AnalyticsHighlightImpression { + analyticsHighlight: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + visibleTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/me/AnalyticsModuleImpression.pdsc + + export interface AnalyticsModuleImpression { + analyticsModule: SocialUpdateAnalyticsModuleType; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + visibleTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/me/DroppedNotificationInfo.pdsc + + export interface DroppedNotificationInfo { + notificationUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/me/InsightInfo.pdsc + + export interface InsightInfo { + insight: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + insightType: InsightType; + actorVerbObjects: ActorVerbObject[]; + } + // Generated from: com/linkedin/avro2pegasus/events/me/InsightType.pdsc + + export type InsightType = + | 'NETWORK_HIGHLIGHT' + | 'SUGGESTED_ENDORSEMENTS' + | 'JOBS_YOU_MAY_BE_INTERESTED_IN' + | 'CONNECTIONS_IN_COMMON'; + // Generated from: com/linkedin/avro2pegasus/events/me/MeInsightActionEvent.pdsc + + export interface MeInsightActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + insight: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/me/MeNotificationActionEvent.pdsc + + export interface MeNotificationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + notification: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/me/MeNotificationImpressionEvent.pdsc + + export interface MeNotificationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + notifications: NotificationImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/me/MeNotificationServedEvent.pdsc + + export interface MeNotificationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + notifications: NotificationInfo[]; + serverProcessingDuration?: number; + droppedNotifications: DroppedNotificationInfo[]; + unseenValidNotificationCount: number; + unseenDroppedNotificationCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/me/MeNotificationType.pdsc + + export type MeNotificationType = + | 'AGGREGATE_FOLLOW' + | 'AGGREGATE_PROFILE_VIEW' + | 'COMMENT_ON_ACTIVITY_NOTIFICATION' + | 'ENDORSEMENT' + | 'FOLLOW' + | 'MENTION' + | 'POST_NOTIFICATION' + | 'PROFILE_VIEW' + | 'SHARE_NOTIFICATION' + | 'SOCIAL_ACTIVITY_ON_MENTION' + | 'PREMIUM_UPSELL' + | 'SUGGESTED_ACTION' + | 'NEW_TO_VOYAGER' + | 'GROUP_DISCUSSION_NOTIFICATION' + | 'SOCIAL_ACTIVITY_ON_JOB_UPDATE' + | 'SUGGESTED_CERTIFICATION' + | 'SUGGESTED_PATENT' + | 'SUGGESTED_PUBLICATION' + | 'JYMBII' + | 'ARTICLE_POST' + | 'SOCIAL_ACTIVITY_ON_COMMENT' + | 'PROFINDER_SERVICE_PROPOSAL_REMINDER' + | 'SOCIAL_UPDATE_ANALYTICS_NOTIFICATION' + | 'VIDEO_PUBLISH' + | 'VIDEO_SOCIAL' + | 'BIRTHDAY_NOTIFICATION' + | 'JOB_CHANGE_NOTIFICATION' + | 'WORK_ANNIVERSARY_NOTIFICATION' + | 'COURSES_YMBII' + | 'NEW_JOB_SEARCH_RESULTS' + | 'CALENDAR_NOTIFICATION' + | 'MENTIONED_IN_NEWS' + | 'SHARED_BY_YOUR_NETWORK' + | 'PUBLISHED_BY_YOUR_NETWORK' + | 'CONTENT_PROCESSING_COMPLETE' + | 'INMAIL_REMINDER' + | 'MENTOR_RECOMMENDATION' + | 'MENTEE_INTEREST' + | 'MENTOR_MATCH' + | 'FOLLOW_RECOMMENDATION' + | 'DAILY_DIGEST' + | 'COMPANY_EXIT_ANNIVERSARY_NOTIFICATION' + | 'CONNECTION_ANNIVERSARY_NOTIFICATION' + | 'MEET_NEW_HIRE_NOTIFICATION' + | 'CONTACT_JOIN' + | 'SEARCH_APPEARANCES' + | 'SKILL_ADVANCEMENT_INSIGHT' + | 'JOB_ADVANCEMENT_INSIGHT' + | 'TALKING_ABOUT' + | 'CANDIDATE_FEEDBACK_NOTIFICATION' + | 'OFFSITE_CONTENT_CREATION' + | 'FIRST_TIME_CONTENT_CREATION' + | 'INFREQUENT_CONTENT_CREATION' + | 'APPLY_REMINDER' + | 'BREAKING_NEWS' + | 'VIEWED_JOB_REMINDER' + | 'SOCIAL_ACTIVITY_ON_ARTICLE' + | 'JOB_APPLICATION_VIEWED' + | 'PROFINDER_PROVIDER_NEW_LEAD' + | 'COMPANY_INSIGHT' + | 'JOB_INSIGHT' + | 'WHERE_YOU_LEFT_OFF' + | 'JYMBII_V2' + | 'JOB_APPLICATION_VIEWED_V2' + | 'HIRING_TREND_INSIGHT' + | 'CONTENT_CREATION_WEEKLY_SUMMARY' + | 'WVMP_WHILE_ANONYMOUS' + | 'SPEAKEASY_MENTION' + | 'MENTOR_RECOMMENDATION_REMINDER' + | 'MENTEE_INTEREST_REMINDER' + | 'MENTOR_MATCH_REMINDER' + | 'AUTHOR_CONNECTION_INTERESTED' + | 'COMMENTER_CONNECTION_INTERESTED' + | 'MEETING_NOTIFICATION' + | 'SALARY_WORK_ANNIVERSARY' + | 'PROFILE_EDIT_INSIGHT' + | 'DREAM_COMPANY' + | 'GROUPS_INVITE' + | 'GROUPS_INVITE_ACCEPTED' + | 'GROUPS_JOIN_REQUEST' + | 'GROUPS_JOIN_REQUEST_ACCEPTED' + | 'GROUPS_MEMBER_PROMOTED' + | 'RESHARE' + | 'SOCIAL_ACTIVITY_GROUPS_POST' + | 'SOCIAL_ACTIVITY_GROUPS_MENTION' + | 'GROUPS_MENTION' + | 'GROUPS_POST_FLAGGED' + | 'MENTEE_RECOMMENDATION' + | 'BECOME_OPEN_CANDIDATE' + | 'SKILL_POST_NOTIFICATION' + | 'ONLINE_JOB_NEW_APPLICANT' + | 'MOST_POPULAR_POST' + | 'SHARED_BY_YOUR_GROUP' + | 'MOVED_CITY' + | 'PROFILE_ENGAGEMENT_INSIGHT_POSITION' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION' + | 'PROFILE_ENGAGEMENT_INSIGHT_PHOTO' + | 'NEW_JOBS_IN_SAVED_SEARCH' + | 'CONTACT_WORK_ANNIVERSARY' + | 'EMPLOYEE_EXPERIENCE' + | 'PROFILE_ENGAGEMENT_INSIGHT_INDUSTRY' + | 'AUTOMATED_SOURCING_CANDIDATES' + | 'SALES_LEAD_POSITION_CHANGE' + | 'PREMIUM_REPORT' + | 'APPLICANT_PROFILE_VIEWED' + | 'HELPCENTER_FORUM_ANSWER_POSTED' + | 'HELPCENTER_FORUM_ANSWER_ACCEPTED' + | 'HELPCENTER_CASE_UPDATE' + | 'CYMBII_COMMENT' + | 'CYMBII_COMMENT_MENTION' + | 'CYMBII_SUBSCRIBED' + | 'CYMBII_COMMENT_SUBSCRIBED' + | 'PREMIUM_CAREER_CONTENT_RECOMMENDED' + | 'NETWORK_YOU_MAY_KNOW' + | 'COMMENTED_ON_YOUR_UPDATE' + | 'REACTED_TO_YOUR_UPDATE' + | 'REACTED_TO_UPDATE_MENTIONING_YOU' + | 'COMMENTED_ON_UPDATE_MENTIONING_YOU' + | 'REACTED_TO_YOUR_COMMENT' + | 'REACTED_TO_COMMENT_MENTIONING_YOU' + | 'MENTIONED_YOU_IN_THIS' + | 'REPLIED_TO_COMMENT_MENTIONING_YOU' + | 'ALSO_COMMENTED_ON_THIS' + | 'REPLIED_TO_YOUR_COMMENT' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE_DEGREE' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE_FIELD_OF_STUDY' + | 'PROFILE_ENGAGEMENT_INSIGHT_POSITION_UPDATE_DATES' + | 'PROFILE_ENGAGEMENT_INSIGHT_EDUCATION_UPDATE_FOS' + | 'SALARY_INSIGHTS_AFTER_SIX_MONTH_WORK_ANNIVERSARY' + | 'SALARY_INSIGHTS_AFTER_ONE_YEAR_WORK_ANNIVERSARY' + | 'SALARY_INSIGHTS_AFTER_JOBS_APPLIED' + | 'UNANSWERED_REFERRAL_REQUEST' + | 'MARKETPLACE_MESSAGE_NUDGE' + | 'MEMBER_REGISTERED_FOR_EVENT' + | 'EVENT_REMINDER' + | 'EVENT_STARTING' + | 'EVENT_CONNECTION_ACTIVITY' + | 'SHARED_BY_YOUR_CONTACT' + | 'UBIQUITOUS_PARTICIPATION_NEW_JOB_APPLICANT' + | 'JOB_RECOMMENDATION' + | 'INVESTOR_RECOMMENDATION' + | 'ENTREPRENEUR_RECOMMENDATION' + | 'LEARNING_ENTERPRISE_LEARNER_ACTIVATION' + | 'COMPANY_REVIEW_APPROVED' + | 'COMPANY_REVIEW_REJECTED' + | 'COMPANY_REVIEW_DELETED' + | 'COMMENTED_ON_YOUR_PROP' + | 'REACTED_TO_YOUR_PROP' + | 'COMPANY_REVIEW_RECOMMENDED_BY_INDUSTRY' + | 'USE_V2' + | 'SHARED_BY_YOUR_EXTENDED_NETWORK' + | 'UPDATE_ON_YOUR_COMPANY_REVIEW_ANSWER' + | 'NEW_ANSWER_FOR_COMPANY_REVIEW_QUESTION_YOU_ANSWERED' + | 'NEW_ANSWER_FOR_CR_QUESTION_YOU_ANSWERED' + | 'INACTIVE_MENTEE' + | 'HIRE_INMAIL_REMINDER'; + // Generated from: com/linkedin/avro2pegasus/events/me/NotificationElement.pdsc + + export interface NotificationElement { + entityUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + communicationChainTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/me/NotificationImpression.pdsc + + export interface NotificationImpression { + notification: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + visibleTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + insight?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/me/NotificationInfo.pdsc + + export interface NotificationInfo { + notification: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + notificationType: MeNotificationType; + mostRecentPublicationTime: number; + actorVerbObjects: ActorVerbObject[]; + insight?: InsightInfo; + contentUrn?: string; + notificationElements: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject[]; + notificationElementsV2: NotificationElement[]; + notificationTypeV2?: string; + contentFacetUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsEntryPointImpressionEvent.pdsc + + export interface SocialUpdateAnalyticsEntryPointImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + socialUpdate: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + analyticsEntryPoints: AnalyticsEntryPointImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsEntryPointServedEvent.pdsc + + export interface SocialUpdateAnalyticsEntryPointServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + socialUpdate: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + socialUpdateType: SocialUpdateType; + numViews: number; + } + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsEntryPointType.pdsc + + export type SocialUpdateAnalyticsEntryPointType = 'FEED_DETAIL' | 'POSTS' | 'SHARES'; + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsHeaderServedEvent.pdsc + + export interface SocialUpdateAnalyticsHeaderServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + socialUpdate: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + socialUpdateType: SocialUpdateType; + numViews: number; + numLikes: number; + numComments: number; + } + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsHighlightImpressionEvent.pdsc + + export interface SocialUpdateAnalyticsHighlightImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + analyticsHighlights: AnalyticsHighlightImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsHighlightInfo.pdsc + + export interface SocialUpdateAnalyticsHighlightInfo { + numViewers: number; + analyticsHighlight: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + socialUpdateAnalyticsHighlightType: SocialUpdateAnalyticsHighlightType; + } + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsHighlightType.pdsc + + export type SocialUpdateAnalyticsHighlightType = 'COMPANY' | 'OCCUPATION' | 'REFERRER_SOURCE' | 'REGION'; + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsModuleImpressionEvent.pdsc + + export interface SocialUpdateAnalyticsModuleImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + socialUpdate: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + analyticsModules: AnalyticsModuleImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsModuleType.pdsc + + export type SocialUpdateAnalyticsModuleType = 'HIGHLIGHTS' | 'REACH' | 'SUGGESTED_ARTICLE'; + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsReachInfo.pdsc + + export interface SocialUpdateAnalyticsReachInfo { + numInNetworkViewers: number; + numOutOfNetworkViewers: number; + } + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsServedEvent.pdsc + + export interface SocialUpdateAnalyticsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + socialUpdate: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + socialUpdateType: SocialUpdateType; + analyticsHighlights: SocialUpdateAnalyticsHighlightInfo[]; + reachInfo?: SocialUpdateAnalyticsReachInfo; + suggestedArticlesInfo?: SocialUpdateAnalyticsSuggestedArticlesInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateAnalyticsSuggestedArticlesInfo.pdsc + + export interface SocialUpdateAnalyticsSuggestedArticlesInfo { + suggestedArticleUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/me/SocialUpdateType.pdsc + + export type SocialUpdateType = 'POST' | 'SHARE'; + // Generated from: com/linkedin/avro2pegasus/events/me/ViewReferrerSource.pdsc + + export type ViewReferrerSource = + | 'LINKEDIN_ADVERTISEMENTS' + | 'LINKEDIN_COLLEGE_PAGES' + | 'LINKEDIN_COMPANY_PAGES' + | 'LINKEDIN_CONTACTS' + | 'LINKEDIN_DEFAULT' + | 'LINKEDIN_ENDORSEMENTS' + | 'LINKEDIN_GROUPS' + | 'LINKEDIN_HOME' + | 'LINKEDIN_INBOX' + | 'LINKEDIN_JOBS' + | 'LINKEDIN_MESSAGING' + | 'LINKEDIN_MOBILE' + | 'LINKEDIN_MY_NETWORK' + | 'LINKEDIN_PROFILE' + | 'LINKEDIN_PROFILE_EDIT' + | 'LINKEDIN_PULSE' + | 'LINKEDIN_PYMK' + | 'LINKEDIN_RECOMMENDATIONS' + | 'LINKEDIN_RECRUITER' + | 'LINKEDIN_SEARCH' + | 'LINKEDIN_SIMILAR_PEOPLE' + | 'LINKEDIN_WVMP' + | 'ABOUT_ME' + | 'BAIDU' + | 'BING' + | 'FACEBOOK' + | 'FORBES' + | 'GOOGLE' + | 'GOOGLE_PLUS' + | 'LYNDA' + | 'TUMBLR' + | 'TWITTER' + | 'YAHOO' + | 'OTHER' + | 'NONE'; + // Generated from: com/linkedin/avro2pegasus/events/me/WvmpOverviewInsightInfo.pdsc + + export interface WvmpOverviewInsightInfo { + numViewers: number; + wvmpOverviewInsight: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + wvmpOverviewInsightType: WvmpOverviewInsightType; + insight?: InsightInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/me/WvmpOverviewInsightType.pdsc + + export type WvmpOverviewInsightType = + | 'COMPANY' + | 'OCCUPATION' + | 'REFERRER_SOURCE' + | 'SUMMARY' + | 'NOTABLE_VIEWERS' + | 'REGION'; + // Generated from: com/linkedin/avro2pegasus/events/me/WvmpProfileViewActionEvent.pdsc + + export interface WvmpProfileViewActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profileView: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/me/WvmpProfileViewImpression.pdsc + + export interface WvmpProfileViewImpression { + profileView: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + renderedTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + insight?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/me/WvmpProfileViewImpressionEvent.pdsc + + export interface WvmpProfileViewImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profileViews: WvmpProfileViewImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/me/WvmpProfileViewInfo.pdsc + + export interface WvmpProfileViewInfo { + profileView: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + viewedTime: number; + viewerUrns: string[]; + numViewers: number; + source: ViewReferrerSource; + insight?: InsightInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/me/WvmpProfileViewServedEvent.pdsc + + export interface WvmpProfileViewServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + profileViews: WvmpProfileViewInfo[]; + wvmpOverviewInsight?: WvmpOverviewInsightInfo; + } + namespace Wvmp { + // Generated from: com/linkedin/avro2pegasus/events/me/wvmp/WvmpOverviewInsightImpression.pdsc + + export interface WvmpOverviewInsightImpression { + wvmpOverviewInsight: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + visibleTime: number; + duration: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + insight?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/me/wvmp/WvmpOverviewInsightImpressionEvent.pdsc + + export interface WvmpOverviewInsightImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + wvmpOverviewInsights: WvmpOverviewInsightImpression[]; + } + } + namespace WvmpOverview { + // Generated from: com/linkedin/avro2pegasus/events/me/wvmpOverview/WvmpInsightActionEvent.pdsc + + export interface WvmpInsightActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + insight: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/me/wvmpOverview/WvmpOverviewInsightActionEvent.pdsc + + export interface WvmpOverviewInsightActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + wvmpOverviewInsight: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + } + } + } + namespace Media { + // Generated from: com/linkedin/avro2pegasus/events/media/AccountAccessType.pdsc + + export type AccountAccessType = 'FREE' | 'PAID' | 'ENTERPRISE' | 'GUEST'; + // Generated from: com/linkedin/avro2pegasus/events/media/BufferingCauseType.pdsc + + export type BufferingCauseType = 'SEEK' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/media/BufferingType.pdsc + + export type BufferingType = 'INIT' | 'SEEK' | 'LATENCY' | 'BANDWIDTH'; + // Generated from: com/linkedin/avro2pegasus/events/media/DeliveryMode.pdsc + + export type DeliveryMode = 'STREAMING' | 'PROGRESSIVE'; + // Generated from: com/linkedin/avro2pegasus/events/media/EventType.pdsc + + export type EventType = 'START' | 'END'; + // Generated from: com/linkedin/avro2pegasus/events/media/MediaBitrateChangedEvent.pdsc + + export interface MediaBitrateChangedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaHeader: MediaHeader; + mediaTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + viewingDisplaySize?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + encodedDisplaySize?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + newBitrate: number; + audioCodec?: string; + videoCodec?: string; + newSegmentDuration: number; + targetSegmentDuration: number; + frameRate: number; + mediaLiveState?: Com.Linkedin.Avro2pegasus.Events.Common.Media.MediaLiveState; + } + // Generated from: com/linkedin/avro2pegasus/events/media/MediaBufferingEndEvent.pdsc + + export interface MediaBufferingEndEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + bufferingType?: BufferingType; + initializationStartTime: number; + bufferingStartTime: number; + duration: number; + mediaHeader?: MediaHeader; + mediaLiveState?: Com.Linkedin.Avro2pegasus.Events.Common.Media.MediaLiveState; + } + // Generated from: com/linkedin/avro2pegasus/events/media/MediaBufferingEvent.pdsc + + export interface MediaBufferingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + bufferingCauseType: BufferingCauseType; + eventType: EventType; + eventOccurredAt: number; + } + // Generated from: com/linkedin/avro2pegasus/events/media/MediaBufferingStartEvent.pdsc + + export interface MediaBufferingStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + bufferingType?: BufferingType; + initializationStartTime: number; + bufferingStartTime: number; + mediaHeader?: MediaHeader; + mediaLiveState?: Com.Linkedin.Avro2pegasus.Events.Common.Media.MediaLiveState; + } + // Generated from: com/linkedin/avro2pegasus/events/media/MediaHeader.pdsc + + export interface MediaHeader { + cdnProvider?: string; + accountAccessType?: AccountAccessType; + streamProtocol?: StreamingProtocol; + playerType?: PlayerType; + playerVersion?: string; + mediaSource?: string; + deliveryMode?: DeliveryMode; + mediaType: MediaType; + } + // Generated from: com/linkedin/avro2pegasus/events/media/MediaInitializationEndEvent.pdsc + + export interface MediaInitializationEndEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + initializationStartTime: number; + duration: number; + mediaHeader?: MediaHeader; + timeVisible?: number; + mediaLiveState?: Com.Linkedin.Avro2pegasus.Events.Common.Media.MediaLiveState; + } + // Generated from: com/linkedin/avro2pegasus/events/media/MediaInitializationEvent.pdsc + + export interface MediaInitializationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + eventType: EventType; + eventOccurredAt: number; + } + // Generated from: com/linkedin/avro2pegasus/events/media/MediaInitializationStartEvent.pdsc + + export interface MediaInitializationStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + initializationStartTime: number; + mediaHeader?: MediaHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/media/MediaPlaybackErrorEvent.pdsc + + export interface MediaPlaybackErrorEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaHeader: MediaHeader; + mediaTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + errorType: MediaPlaybackErrorType; + errorMessage?: string; + errorException?: Com.Linkedin.Avro2pegasus.Events.Common.Exception; + } + // Generated from: com/linkedin/avro2pegasus/events/media/MediaPlaybackErrorType.pdsc + + export type MediaPlaybackErrorType = + | 'CUSTOM' + | 'NETWORK' + | 'DECODING' + | 'SOURCE_FILE' + | 'ENCRYPTION' + | 'AUDIO' + | 'RENDERING'; + // Generated from: com/linkedin/avro2pegasus/events/media/MediaPlaybackErrorV2Event.pdsc + + export interface MediaPlaybackErrorV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaHeader: MediaHeader; + mediaTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + errorType: MediaPlaybackErrorType; + errorMessage?: string; + url?: string; + mediaLiveState?: Com.Linkedin.Avro2pegasus.Events.Common.Media.MediaLiveState; + } + // Generated from: com/linkedin/avro2pegasus/events/media/MediaType.pdsc + + export type MediaType = 'VIDEO' | 'IMAGE'; + // Generated from: com/linkedin/avro2pegasus/events/media/MediaUploadState.pdsc + + export type MediaUploadState = 'STARTED' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' | 'REFRESHED' | 'CANCELLED'; + // Generated from: com/linkedin/avro2pegasus/events/media/MediaUploadUseCase.pdsc + + export type MediaUploadUseCase = 'VIDEO_SHARING' | 'IMAGE_SHARING' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/media/PartUploadCompletedEvent.pdsc + + export interface PartUploadCompletedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + digitalMediaArtifactUrn: string; + uploadSessionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + uploadMechanism: Com.Linkedin.Avro2pegasus.Events.Media.Upload.UploadMechanism; + partUploadMetadata: Com.Linkedin.Avro2pegasus.Events.Media.Upload.PartUploadMetadata; + uploadDuration: number; + numberOfRetries: number; + } + // Generated from: com/linkedin/avro2pegasus/events/media/PartUploadFailureEvent.pdsc + + export interface PartUploadFailureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + digitalMediaArtifactUrn: string; + uploadSessionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + uploadMechanism: Com.Linkedin.Avro2pegasus.Events.Media.Upload.UploadMechanism; + partUploadMetadata: Com.Linkedin.Avro2pegasus.Events.Media.Upload.PartUploadMetadata; + bytesTransferred: number; + uploadDuration: number; + errorType: uploadFailureErrorType; + responseBody?: string; + statusCode?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/media/PlayerType.pdsc + + export type PlayerType = 'HTML5' | 'AV_FOUNDATION' | 'EXO_PLAYER'; + // Generated from: com/linkedin/avro2pegasus/events/media/RichMediaDeleteAction.pdsc + + export type RichMediaDeleteAction = 'DELETE_REQUESTED' | 'DELETE_COMPLETED'; + // Generated from: com/linkedin/avro2pegasus/events/media/RichMediaDeleteEvent.pdsc + + export interface RichMediaDeleteEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + userUrn?: string; + contentUrn: string; + action: RichMediaDeleteAction; + csUserUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/media/StreamingProtocol.pdsc + + export type StreamingProtocol = 'HDS' | 'HLS' | 'MS_SMOOTH_STREAMING'; + // Generated from: com/linkedin/avro2pegasus/events/media/uploadFailureErrorType.pdsc + + export type uploadFailureErrorType = + | 'SERVER_ERROR' + | 'NETWORK_ERROR' + | 'USER_CANCELLED' + | 'CLIENT_ERROR' + | 'UNKNOWN' + | 'TERMINATED'; + // Generated from: com/linkedin/avro2pegasus/events/media/UploadStatusEvent.pdsc + + export interface UploadStatusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + digitalMediaArtifactUrn?: string; + uploadSessionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + uploadUseCase: MediaUploadUseCase; + uploadMechanism?: Com.Linkedin.Avro2pegasus.Events.Media.Upload.UploadMechanism; + fileSizeInBytes: number; + uploadState: MediaUploadState; + durationSinceUploadStarted: number; + mediaFileInfo?: Com.Linkedin.Avro2pegasus.Events.Mediaupload.MediaFileInfo; + mediaContentCreationSessionTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.Media.MediaContentCreationSessionTrackingObject; + videoDuration?: number; + } + namespace Upload { + // Generated from: com/linkedin/avro2pegasus/events/media/upload/PartUploadMetadata.pdsc + + export interface PartUploadMetadata { + partUploadId: string; + firstByteOffset?: number; + lastByteOffset?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/media/upload/UploadMechanism.pdsc + + export type UploadMechanism = 'SINGLE' | 'MULTIPART' | 'PARTIAL_MULTIPART'; + } + } + namespace Mediaoverlays { + // Generated from: com/linkedin/avro2pegasus/events/mediaoverlays/MediaOverlayImpression.pdsc + + export interface MediaOverlayImpression { + mediaOverlayTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + externalTrackingId?: string; + externalMediaOverlayId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaoverlays/MediaOverlayImpressionEvent.pdsc + + export interface MediaOverlayImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: MediaOverlayImpression[]; + useCase?: MediaOverlayUseCaseType; + timeZoneOffsetMinutes?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaoverlays/MediaOverlayServedEntity.pdsc + + export interface MediaOverlayServedEntity { + mediaOverlayTrackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaoverlays/MediaOverlayServedEvent.pdsc + + export interface MediaOverlayServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: MediaOverlayServedEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaoverlays/MediaOverlaySharedEvent.pdsc + + export interface MediaOverlaySharedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + digitalmediaAssetUrn: string; + entities: MediaOverlayTrackingObject[]; + timeZoneOffsetMinutes?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaoverlays/MediaOverlayTrackingObject.pdsc + + export interface MediaOverlayTrackingObject { + internalMediaOverlayTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + externalTrackingId?: string; + externalMediaOverlayId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaoverlays/MediaOverlayUseCaseType.pdsc + + export type MediaOverlayUseCaseType = 'IMAGE' | 'VIDEO'; + } + namespace Mediaupload { + // Generated from: com/linkedin/avro2pegasus/events/mediaupload/ImageInfo.pdsc + + export interface ImageInfo { + mediaFileInfo: MediaFileInfo; + width: number; + height: number; + compressionQuality?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaupload/ImageUploadEvent.pdsc + + export interface ImageUploadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + commonMediaUploadEventInfo: MediaUploadCommonEventInfo; + originalImage?: ImageInfo; + processedImage?: ImageInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaupload/MediaFileInfo.pdsc + + export interface MediaFileInfo { + fileName: string; + size: number; + contentType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaupload/MediaUploadCommonEventInfo.pdsc + + export interface MediaUploadCommonEventInfo { + errorCode: MediaUploadStatusCodes; + appliedFilters: MediaUploadFilterInfo[]; + isPersistent: boolean; + savingDuration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaupload/MediaUploadFilterInfo.pdsc + + export interface MediaUploadFilterInfo { + filterType: MediaUploadFilterType; + filterProcessingDuration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/mediaupload/MediaUploadFilterType.pdsc + + export type MediaUploadFilterType = 'IMAGE_NORMALIZE' | 'IMAGE_PROFILE_BACKGROUND' | 'IMAGE_SCHOOL_LOGO'; + // Generated from: com/linkedin/avro2pegasus/events/mediaupload/MediaUploadStatusCodes.pdsc + + export type MediaUploadStatusCodes = + | 'SUCCESS' + | 'TIME' + | 'SIZE' + | 'DIMENSION' + | 'INTERNAL' + | 'NO_SERVICE' + | 'NO_MEDIA' + | 'INV_MEDIA' + | 'INV_FILENAME' + | 'CSRF' + | 'INCOMPLETE_REQUEST'; + } + namespace Mentions { + // Generated from: com/linkedin/avro2pegasus/events/mentions/MentionActionType.pdsc + + export type MentionActionType = 'SELECT' | 'DELETE' | 'DISMISS' | 'PERSONALIZE'; + // Generated from: com/linkedin/avro2pegasus/events/mentions/MentionResultHit.pdsc + + export interface MentionResultHit { + entityUrn: string; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + isCacheHit: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/mentions/MentionSuggestionActionEvent.pdsc + + export interface MentionSuggestionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Search.SearchHeader; + mentionWorkflowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: MentionActionType; + result?: MentionResultHit; + } + // Generated from: com/linkedin/avro2pegasus/events/mentions/MentionSuggestionImpressionEvent.pdsc + + export interface MentionSuggestionImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Search.SearchHeader; + mentionWorkflowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + results: MentionResultHit[]; + } + // Generated from: com/linkedin/avro2pegasus/events/mentions/MentionSuggestionStartEvent.pdsc + + export interface MentionSuggestionStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Search.SearchHeader; + mentionWorkflowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + associatedInputControlUrn: string; + associatedEntityUrn?: string; + rootObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + mentionType: MentionType; + mentionStartOperator?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mentions/MentionType.pdsc + + export type MentionType = 'IMPLICIT' | 'EXPLICIT'; + } + namespace Mentorship { + // Generated from: com/linkedin/avro2pegasus/events/mentorship/MentorshipActionEvent.pdsc + + export interface MentorshipActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mentorshipActionType: MentorshipActionType; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + conversationUrn?: string; + threadUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mentorship/MentorshipActionType.pdsc + + export type MentorshipActionType = + | 'APPROVED_BY_MENTEE' + | 'REJECTED_BY_MENTEE' + | 'APPROVED_BY_MENTOR' + | 'REJECTED_BY_MENTOR' + | 'MESSAGE_CLICK_BY_MENTOR' + | 'MESSAGE_CLICK_BY_MENTEE' + | 'MESSAGE_SENT_BY_MENTOR' + | 'MESSAGE_SENT_BY_MENTEE'; + // Generated from: com/linkedin/avro2pegasus/events/mentorship/MentorshipImpressionEvent.pdsc + + export interface MentorshipImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mentorshipRoleType: MentorshipRoleType; + mentorshipStatus: MentorshipStatus; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/mentorship/MentorshipRoleType.pdsc + + export type MentorshipRoleType = 'VIEWED_BY_MENTOR' | 'VIEWED_BY_MENTEE'; + // Generated from: com/linkedin/avro2pegasus/events/mentorship/MentorshipServedEvent.pdsc + + export interface MentorshipServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + mentorUrn: string; + menteeUrn: string; + score: number; + generatedTime: number; + modelId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mentorship/MentorshipStatus.pdsc + + export type MentorshipStatus = + | 'PENDING_MENTEE_APPROVAL' + | 'PENDING_MENTOR_APPROVAL' + | 'MATCHED' + | 'MESSAGING'; + } + namespace Merlin { + // Generated from: com/linkedin/avro2pegasus/events/merlin/CampaignColumnVisibility.pdsc + + export interface CampaignColumnVisibility { + columnId: string; + isVisible: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/CampaignCustomViewActionType.pdsc + + export type CampaignCustomViewActionType = 'APPLY' | 'SAVE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/merlin/CampaignFilteringQuery.pdsc + + export interface CampaignFilteringQuery { + columnId: string; + query: string; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/CampaignSortingQuery.pdsc + + export interface CampaignSortingQuery { + columnId: string; + query: string; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/InsightTagEntity.pdsc + + export interface InsightTagEntity { + insightTagUrn: string; + name: string; + scopes: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinAccountInsightServedEvent.pdsc + + export interface MerlinAccountInsightServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + viewerUrn: string; + viewerBusinessUnit: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinLineOfBusiness; + chosenBusinessUnit: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinLineOfBusiness; + viewerRole: string; + organizationUrn: string; + searchString: string; + searchTags: string[]; + channel: string; + favoriteOnly: boolean; + moduleKey: string; + insightUrns: string[]; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinAccountMetricsServedEvent.pdsc + + export interface MerlinAccountMetricsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + viewerUrn: string; + viewerBusinessUnit: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinLineOfBusiness; + viewerRole: string; + organizationUrn: string; + headerMetricUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinAccountPageCompanyContractsResult.pdsc + + export interface MerlinAccountPageCompanyContractsResult { + parentCompanyUrn: string; + childCompanyUrns: string[]; + contractUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinAccountPageCompanyContractsServedEvent.pdsc + + export interface MerlinAccountPageCompanyContractsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + viewerUrn: string; + viewerBusinessUnit: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinLineOfBusiness; + viewerRole: string; + results: MerlinAccountPageCompanyContractsResult; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinAccountPageImpression.pdsc + + export interface MerlinAccountPageImpression { + impressionEntity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleAt: number; + visibleDurationInMs: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinAccountPageImpressionEvent.pdsc + + export interface MerlinAccountPageImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + moduleKey: string; + results: MerlinAccountPageImpression[]; + pageNumber?: number; + pageViewInsightsCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinAccountPageInsightTagsServedEvent.pdsc + + export interface MerlinAccountPageInsightTagsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + viewerUrn: string; + viewerBusinessUnit: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinLineOfBusiness; + viewerRole: string; + organizationUrn: string; + insightTags: InsightTagEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinActionEvent.pdsc + + export interface MerlinActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionEntity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinActionType; + moduleKey: string; + subModuleKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinCampaignCustomViewActionEvent.pdsc + + export interface MerlinCampaignCustomViewActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionType: CampaignCustomViewActionType; + viewKey?: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinCampaignCustomViewKey; + viewName?: string; + sortQueries: CampaignSortingQuery[]; + filterQueries: CampaignFilteringQuery[]; + columnVisibilities: CampaignColumnVisibility[]; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinCampaignDynamicFieldInputEvent.pdsc + + export interface MerlinCampaignDynamicFieldInputEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entityUrn?: string; + fieldType: string; + inputValue?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinCampaignNoteCreatedEvent.pdsc + + export interface MerlinCampaignNoteCreatedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + noteKey: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinCampaignNoteKey; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinCampaignNoteImpressionEvent.pdsc + + export interface MerlinCampaignNoteImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + usageContext: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinCampaignNoteUsageContextType; + notes: MerlinNoteImpression[]; + corpUserUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinContentCheckpointEvent.pdsc + + export interface MerlinContentCheckpointEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + checkpoint: string; + userUrn: string; + contentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinCrmContactCreatedEvent.pdsc + + export interface MerlinCrmContactCreatedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + createdAt: number; + businessUnit: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinLineOfBusiness; + contact: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinCrmContact; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinLegacyResourceAccessEvent.pdsc + + export interface MerlinLegacyResourceAccessEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + microservice: string; + uri: string; + method: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + requestReceivedTime: number; + processingDuration: number; + responseHttpStatusCode: number; + isMasquerading: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinNoteImpression.pdsc + + export interface MerlinNoteImpression { + noteKey: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinCampaignNoteKey; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinRecommendationActionEvent.pdsc + + export interface MerlinRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + moduleKey: string; + recommendationCategory: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinRecommendationCategory; + recommendation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + recommendationType: string; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinRecommendationActionType; + corpUserUrn?: string; + hyperlink?: MerlinRecommendationHyperlink; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinRecommendationHyperlink.pdsc + + export interface MerlinRecommendationHyperlink { + uri: string; + displayText: string; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinRecommendationImpression.pdsc + + export interface MerlinRecommendationImpression { + recommendation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + recommendationType: string; + visibleAt: number; + visibleDurationTime: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinRecommendationImpressionEvent.pdsc + + export interface MerlinRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + moduleKey: string; + recommendationCategory: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinRecommendationCategory; + recommendations: MerlinRecommendationImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinRecommendationServedEvent.pdsc + + export interface MerlinRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + viewerUrn: string; + viewerBusinessUnit: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinLineOfBusiness; + viewerRole: string; + results: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinRecommendation[]; + recommendationCategory: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinRecommendationCategory; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + modelId: string; + corpUserUrn?: string; + viewerDepartment?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinSearchActionEvent.pdsc + + export interface MerlinSearchActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + trackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchActionType; + moduleKey: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchModuleKey; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinSearchImpressionEvent.pdsc + + export interface MerlinSearchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + results: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchImpressionResult[]; + pageNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinSearchIndexUpdateEvent.pdsc + + export interface MerlinSearchIndexUpdateEvent { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + indexEntryMemberId: number; + indexEntryCompanyId?: number; + updateField: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchIndexField; + updateAction: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchIndexUpdateAction; + subscriptionActiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchIndexSubscriptionChannel; + subscriptionTimePeriod?: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchIndexSubscriptionTimeScope; + llsContactType?: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchIndexLLSContactType; + ltsSubscriptionType?: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchIndexLTSSubscriptionType; + } + // Generated from: com/linkedin/avro2pegasus/events/merlin/MerlinSearchServedEvent.pdsc + + export interface MerlinSearchServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + timeToServe: number; + searchOriginName: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchOrigin; + businessUnit: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinLineOfBusiness; + request: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchRequest; + results: Com.Linkedin.Avro2pegasus.Events.Common.Merlin.MerlinSearchHit[]; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + } + } + namespace Messages { + // Generated from: com/linkedin/avro2pegasus/events/messages/actionType.pdsc + + export type actionType = 'TAP' | 'CLICK' | 'VIEW' | 'DISMISS' | 'CONTENT_VIEW'; + // Generated from: com/linkedin/avro2pegasus/events/messages/BlockedReason.pdsc + + export type BlockedReason = + | 'BOUNCED' + | 'REDLISTED' + | 'INACTIVE' + | 'ROLE_ACCOUNT' + | 'SENDER_IS_SPAMMER' + | 'RECIPIENT_IS_SPAMMER' + | 'BLOCKED_DOMAIN'; + // Generated from: com/linkedin/avro2pegasus/events/messages/ExceptionInfo.pdsc + + export interface ExceptionInfo { + exceptionType: ExceptionType; + blockedReason?: BlockedReason; + exceptionMessage: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/ExceptionType.pdsc + + export type ExceptionType = + | 'UNSUBSCRIBED_ERROR' + | 'BLACKOUT_ERROR' + | 'FUSECAP_ERROR' + | 'DUPLICATE_ERROR' + | 'NOVALIDDEVICE_ERROR' + | 'NOENABLEDDEVICE_ERROR' + | 'MARKETINGCAP_ERROR' + | 'RENDERING_ERROR' + | 'BLOCKED_ERROR' + | 'OTHER_ERROR' + | 'MLC_ENGAGEMENT_ERROR' + | 'DOWNSHIFT_ERROR' + | 'DOMAIN_ERROR' + | 'INVALID_PHONENUMBER_ERROR' + | 'FIXEDLINE_PHONENUMBER_ERROR' + | 'OTHER_UNSUPPORTED_PHONENUMBER_ERROR' + | 'NO_DELIVERYPROVIDER_ERROR' + | 'DELIVERYPROVIDER_SPECIFIC_ERROR' + | 'INVALID_CAMPAIGN_ERROR' + | 'MISSING_ISB_PROFILE_DATA_ERROR' + | 'DECO_FAILURE_ERROR' + | 'NO_SUBJECT_ERROR' + | 'STALE_MESSAGE_ERROR' + | 'SMS_WEEKLYCAP_ERROR' + | 'PUSH_LIX_DISABLED_ERROR' + | 'CONTENT_REGEX_ERROR' + | 'LOGGED_OUT_DEVICES_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/messages/FailureInfo.pdsc + + export interface FailureInfo { + failureCode?: string; + failureMessage?: string; + receivedTime?: number; + sendTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/MessageActionEvent.pdsc + + export interface MessageActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + actionType: actionType; + messageId: MessageId; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + subchannels?: Subchannels; + tag?: string; + clickParameters?: string; + pageTrackingCode?: string; + messageType?: Com.Linkedin.Avro2pegasus.Events.MessageType; + campaignName?: string; + controlUrn?: string; + linkId?: number; + viewParameter?: string; + marketingCampaignUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/MessageDeliveryEvent.pdsc + + export interface MessageDeliveryEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messageType: messageType; + campaignName: string; + recipientMemberUrn?: string; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + senderMemberUrn?: string; + messageId: MessageId; + lixTreatmentRecords?: Com.Linkedin.Avro2pegasus.Events.Lix.LixTreatment[]; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recipientPhoneUrn?: string; + flockDeduplicationContentId?: string; + emailInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.EmailInfo; + subchannels?: Subchannels; + contentPieces: string[]; + provider?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.DeliveryProvider; + countryDialingCode?: number; + pushInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.PushInfo; + smsInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.SmsInfo; + messageContents?: Com.Linkedin.Avro2pegasus.Common.Messages.MessageContent[]; + recipientEnterpriseProfileUrn?: string; + senderEnterpriseProfileUrn?: string; + marketingCampaignUrn?: string; + lithographAuthoredContentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/MessageDeliveryFailedEvent.pdsc + + export interface MessageDeliveryFailedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messageId: MessageId; + messageType?: Com.Linkedin.Avro2pegasus.Events.MessageType; + provider?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.DeliveryProvider; + recipientEmailAddressInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.EmailAddressInfo; + recipientPhoneNumberInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.PhoneNumberInfo; + failureInfo?: FailureInfo; + smsDeliveryReceiptInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.SmsDeliveryReceiptInfo; + marketingCampaignUrn?: string; + lithographAuthoredContentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/MessageDroppedEvent.pdsc + + export interface MessageDroppedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + messageId: MessageId; + exceptionInfo: ExceptionInfo; + messageType: Com.Linkedin.Avro2pegasus.Events.MessageType; + campaignName: string; + recipientMemberUrn?: string; + recipientEmailAccountUrn?: string; + hashedGuestRecipientEmail?: string; + recipientEmailAddressInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.EmailAddressInfo; + recipientDeviceId?: string; + recipientPhoneUrn?: string; + senderMemberUrn?: string; + locale?: Com.Linkedin.Avro2pegasus.Events.Locale; + attemptedProviderName?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.DeliveryProvider; + lixTreatmentRecords?: Com.Linkedin.Avro2pegasus.Events.Lix.LixTreatment[]; + recipientPhoneNumberInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.PhoneNumberInfo; + smsDroppedInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.SmsDroppedInfo; + recipientEnterpriseProfileUrn?: string; + senderEnterpriseProfileUrn?: string; + contentPieces?: string[]; + marketingCampaignUrn?: string; + lithographAuthoredContentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/MessageId.pdsc + + export interface MessageId { + flockMessageUrn: string; + deliveryId?: string; + externalIds: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/MessageLinkInfo.pdsc + + export interface MessageLinkInfo { + contentUrn?: string; + destination: string; + position: number; + alias: string; + isExternal: boolean; + extra?: string; + linkId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/MessageLinksSendEvent.pdsc + + export interface MessageLinksSendEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messageId: MessageId; + includedLinks: MessageLinkInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/MessageReceivedEvent.pdsc + + export interface MessageReceivedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messageId: MessageId; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + recipientPhoneNumberInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.PhoneNumberInfo; + smsDeliveryReceiptInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.SmsDeliveryReceiptInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/messageType.pdsc + + export type messageType = 'PUSHNOTIFICATION' | 'SMS' | 'WECHAT' | 'EMAIL'; + // Generated from: com/linkedin/avro2pegasus/events/messages/MessageUnsubscribeEvent.pdsc + + export interface MessageUnsubscribeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messageType: Com.Linkedin.Avro2pegasus.Events.MessageType; + messageId: MessageId; + recipientMemberUrn?: string; + recipientEmailAddressInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.EmailAddressInfo; + recipientPhoneUrn?: string; + unsubscribeContext: Com.Linkedin.Avro2pegasus.Events.Messages.UnsubscribeContext.UnsubscribeContext; + settingName: string; + recipientEnterpriseProfileUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/Subchannels.pdsc + + export interface Subchannels { + text?: string; + badge?: number; + sound?: string; + notificationCenter?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/UnverifiedMessageReceivedEvent.pdsc + + export interface UnverifiedMessageReceivedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + } + namespace UnsubscribeContext { + // Generated from: com/linkedin/avro2pegasus/events/messages/UnsubscribeContext/UnsubscribeContext.pdsc + + export interface UnsubscribeContext { + unsubscribeContextType: UnsubscribeContextType; + spamComplaintEmailIds?: string[]; + feedbackLoopId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messages/UnsubscribeContext/UnsubscribeContextType.pdsc + + export type UnsubscribeContextType = + | 'EMAIL_SPAM_COMPLAINT' + | 'EMAIL_LIST_UNSUBSCRIBE' + | 'EMAIL_PROFILE_UNSUBSCRIBE' + | 'SMS_UNSUBSCRIBE_LINK' + | 'SMS_REPLY_STOP' + | 'MANUAL' + | 'RESPONSYS_EMAIL_SPAM_COMPLAINT' + | 'RESPONSYS_EMAIL_LIST_UNSUBSCRIBE' + | 'ELOQUA_EMAIL_LIST_UNSUBSCRIBE' + | 'CRM_EMAIL_MANUAL_UNSUBSCRIBE' + | 'CRM_EMAIL_LIST_UNSUBSCRIBE'; + } + } + namespace Messaging { + // Generated from: com/linkedin/avro2pegasus/events/messaging/CommMessageWithAttachmentState.pdsc + + export type CommMessageWithAttachmentState = 'CREATED' | 'TRASHED'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/CommMessageWithAttachmentStateChangeEvent.pdsc + + export interface CommMessageWithAttachmentStateChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messageId: string; + mboxIds: string[]; + state: CommMessageWithAttachmentState; + attachmentIds: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/ConversationActionType.pdsc + + export type ConversationActionType = + | 'DELETE' + | 'FORWARD' + | 'REPORT_SPAM' + | 'ADD' + | 'MUTE' + | 'UNMUTE' + | 'SEND_MESSAGE' + | 'SEND_STICKER' + | 'ATTACH' + | 'QUICK_REPLY' + | 'VIEW_PROFILE' + | 'LEAVE' + | 'RENAME' + | 'NAME' + | 'START_TYPING' + | 'STOP_TYPING' + | 'ARCHIVE' + | 'UNARCHIVE' + | 'UNMUTE_MENTIONS' + | 'SET_NOTIFICATION' + | 'EXPAND' + | 'READ' + | 'UNREAD'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/ConversationDetailActionEvent.pdsc + + export interface ConversationDetailActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + conversation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + participantUrns?: string[]; + actionType: ConversationActionType; + controlUrn: string; + moduleKey?: string; + participantPresenceStatuses?: MessagingPresenceStatus[]; + referrer?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.MessageReferrerType; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/ConversationDetailDisplayItem.pdsc + + export interface ConversationDetailDisplayItem { + trackingObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + type: ConversationDetailDisplayItemType; + visibleTime: number; + duration: number; + secondaryTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + thirdPartyMediaTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/ConversationDetailDisplayItemType.pdsc + + export type ConversationDetailDisplayItemType = + | 'TYPING_INDICATOR' + | 'READ_RECEIPT' + | 'MESSAGE_COMPOSE' + | 'MESSAGE_DETAIL' + | 'PRESENCE_DECORATION' + | 'TENOR_GIF_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/ConversationDetailImpressionEvent.pdsc + + export interface ConversationDetailImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + conversation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + participantUrns?: string[]; + messages?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject[]; + displayItem?: ConversationDetailDisplayItem; + moduleKey?: string; + participantPresenceStatuses?: MessagingPresenceStatus[]; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/ConversationSettingsChangeEvent.pdsc + + export interface ConversationSettingsChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + conversationUrn: string; + settingKey: SettingKey; + previousSettingValue: string; + newSettingValue: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/ConversationsImpressionEvent.pdsc + + export interface ConversationsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + conversations?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject[]; + moduleKey?: string; + participantPresenceStatuses?: MessagingPresenceStatus[]; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/DualUpdateActionType.pdsc + + export type DualUpdateActionType = + | 'PATCH_READAT' + | 'PATCH_ACTIONSTATUS' + | 'UPDATE_CONVERSATION_TITLE' + | 'UPDATE_NOTIFICATION_FREQUENCY' + | 'REPORT_SPAM' + | 'CLASSIFY_AS_SPAM'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/EncryptedBodyMessageSendEvent.pdsc + + export interface EncryptedBodyMessageSendEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientMemberId: number; + messageTypes: string[]; + messageId: string; + threadId: string; + relatedToId?: string; + extensionContents: string[]; + encryptedBody: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/FunnelBody.pdsc + + export interface FunnelBody { + clientSend?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.ClientSendRecord; + platformAcceptedMessage?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.PlatformAcceptedMessageRecord; + messageContentAnalysis?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.MessageContentAnalysisRecord; + partnerApprovedMessage?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.PartnerApprovedMessageRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/FunnelStep.pdsc + + export type FunnelStep = + | 'CLIENT_SEND' + | 'PLATFORM_ACCEPTED_MESSAGE' + | 'MESSAGE_CONTENT_ANALYSIS' + | 'PARTNER_APPROVED'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/InmailReplyWithContactInfoEvent.pdsc + + export interface InmailReplyWithContactInfoEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientMemberUrn: string; + messageUrn: string; + relatedMessageUrn: string; + isEmailShared: boolean; + isPhoneNumberShared: boolean; + isWechatIdShared: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/LanguageDetectionClassificationEvent.pdsc + + export interface LanguageDetectionClassificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messageUrn: string; + threadUrn: string; + messageTextLength: number; + interfaceLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + results: LanguageDetectionResult[]; + participants?: Participant[]; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/LanguageDetectionResult.pdsc + + export interface LanguageDetectionResult { + language: string; + probability: number; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MailboxItemThreadAction.pdsc + + export type MailboxItemThreadAction = + | 'DELETE' + | 'UNDELETE' + | 'PERM_DELETE' + | 'ARCHIVE' + | 'UNARCHIVE' + | 'MARK_READ' + | 'MARK_UNREAD' + | 'MARK_SEEN' + | 'UNBLOCK'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessageCreateRequestEvent.pdsc + + export interface MessageCreateRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + requestTime: number; + messageUrn: string; + publisherTrackingId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessageSendFunnelTrackingEvent.pdsc + + export interface MessageSendFunnelTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + funnelStep: FunnelStep; + funnelBody: FunnelBody; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessageSentimentType.pdsc + + export type MessageSentimentType = 'VERY_NEGATIVE' | 'NEGATIVE' | 'NEUTRAL' | 'POSITIVE' | 'VERY_POSITIVE'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingClientSendEvent.pdsc + + export interface MessagingClientSendEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sentTime: number; + messageUrn: string; + publisherTrackingId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingDualDeleteFailedEvent.pdsc + + export interface MessagingDualDeleteFailedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mailUrn?: string; + threadUrn?: string; + messagingMessageUrn: string; + memberUrn: string; + contractUrn?: string; + attemptTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingDualDeleteFailedV2Event.pdsc + + export interface MessagingDualDeleteFailedV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mailUrn?: string; + threadUrn?: string; + memberUrn: string; + contractUrn?: string; + attemptTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingDualUpdateFailedEvent.pdsc + + export interface MessagingDualUpdateFailedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mailUrn?: string; + threadUrn?: string; + memberUrn: string; + contractUrn?: string; + attemptTime: number; + mailboxItemThreadAction?: MailboxItemThreadAction; + mailboxItemUpdatedAction?: DualUpdateActionType; + numOfRetries?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingMessageAcceptEvent.pdsc + + export interface MessagingMessageAcceptEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + authorUrn: string; + messagingMessageUrn: string; + messagingThreadUrn: string; + recipientUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingMessageCreateEvent.pdsc + + export interface MessagingMessageCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + conversationUrn: string; + isCountableMessage: boolean; + mailUrn?: string; + messagingMessageUrn: string; + recipientUrns: string[]; + senderUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingMessageDeliverEvent.pdsc + + export interface MessagingMessageDeliverEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mailUrn?: string; + messagingMessageUrn: string; + recipientUrn: string; + publisherTrackingId?: string; + messageExtensionContentKeys: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingMessageDeliverRequestEvent.pdsc + + export interface MessagingMessageDeliverRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientUrns: string[]; + messagingMessageUrn: string; + messagingThreadUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingMutatingRestliRequestResponseEvent.pdsc + + export interface MessagingMutatingRestliRequestResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + actorUrn: string; + d2ServiceUrn: string; + method: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + actionName?: string; + requestUri: string; + encryptedRequestHeaders: { [id: string]: string }; + encryptedResponseHeaders: { [id: string]: string }; + queryParameters: { [id: string]: string }; + encryptedRequestBody: string; + affectedEntityUrns: string[]; + encryptedResponseBody?: string; + responseCode: number; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingOnlineReplicationRequestEvent.pdsc + + export interface MessagingOnlineReplicationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mailUrn: string; + previousMailUrn?: string; + ownerUrn: string; + forMostRecentMessageInThread: boolean; + replicationRequestTime: number; + attempts: number; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingPresenceAvailability.pdsc + + export type MessagingPresenceAvailability = 'OFFLINE' | 'ONLINE'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingPresenceStatus.pdsc + + export interface MessagingPresenceStatus { + entityUrn: string; + availability: MessagingPresenceAvailability; + lastActiveTime?: number; + isInstantlyReachable: boolean; + hasCustomStatus: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingRecommendationActionEvent.pdsc + + export interface MessagingRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionCategory: MessagingRecommendationActionType; + controlUrn: string; + recommendationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + usecase?: MessagingRecommendationUsecase; + participantPresenceStatuses?: MessagingPresenceStatus[]; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingRecommendationActionType.pdsc + + export type MessagingRecommendationActionType = 'EXPAND' | 'SKIP' | 'MESSAGE' | 'SELECT'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingRecommendationBriefType.pdsc + + export type MessagingRecommendationBriefType = + | 'ARTICLE_COMMENT' + | 'ARTICLE_SHARE' + | 'COMPANY_MENTIONED_IN_NEWS' + | 'JOB_CHANGE' + | 'MEMBER_MENTIONED_IN_NEWS' + | 'PONCHO_POST' + | 'WORK_ANNIVERSARY' + | 'CONVERSATION_RECENCY' + | 'PROP_JOB_CHANGE' + | 'PROP_BIRTHDAY' + | 'PROP_WORK_ANNIVERSARY'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingRecommendationImpressionEvent.pdsc + + export interface MessagingRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recommendedEntity: RecommendedEntity; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingRecommendationReason.pdsc + + export type MessagingRecommendationReason = + | 'CURRENT_EMPLOYEE' + | 'PREVIOUS_EMPLOYEE' + | 'CONNECTING_MEMBER' + | 'INTERESTED_IN_ARTICLE'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingRecommendationServedEvent.pdsc + + export interface MessagingRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recommendationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + recommendedEntityUrn: string; + model: string; + usecase: MessagingRecommendationUsecase; + briefs?: string[]; + referenceEntityUrn?: string; + reasons: MessagingRecommendationReason[]; + articleShareDetail?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.MessagingRecommendationArticleShareDetail; + recommendedText?: string; + quickReplyDetail?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.MessagingRecommendationQuickReplyDetails; + requestTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + servedMethod?: MessagingRecommendationServedMethod; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingRecommendationServedMethod.pdsc + + export type MessagingRecommendationServedMethod = 'REALTIME' | 'BOOTSTRAP'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingRecommendationUsecase.pdsc + + export type MessagingRecommendationUsecase = + | 'COMPOSE_ASSIST' + | 'RECONNECT' + | 'RECONNECT_BANNER' + | 'DISCOVERY_LIST' + | 'DISCOVERY_ENTRY_POINT' + | 'DISCOVERY_DETAILS' + | 'OVERLAY_COMPANY_SHORT' + | 'OVERLAY_COMPANY_FULL' + | 'OVERLAY_JOB_SHORT' + | 'OVERLAY_JOB_FULL' + | 'OVERLAY_PROFILE_SHORT' + | 'OVERLAY_PROFILE_FULL' + | 'QUICK_REPLY' + | 'QUICK_REPLY_OVERLAY' + | 'ARTICLE_SHARE' + | 'ARTICLE_SHARE_OVERLAY_SHORT' + | 'ARTICLE_SHARE_OVERLAY_FULL' + | 'TYPEAHEAD_GROUP_THREAD' + | 'TYPEAHEAD_CONNECTION' + | 'RECIPIENT_SUGGESTION_MEMBER' + | 'RECIPIENT_SUGGESTION_GROUP_THREAD' + | 'INBOX_ACTIVE_NOW' + | 'INBOX_ACTIVE_NOW_LIST'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessagingTelescopeTrackingEvent.pdsc + + export interface MessagingTelescopeTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hasPhoneNumber: boolean; + hasSelfPhoneNumber: boolean; + hasEmail: boolean; + hasSelfEmail: boolean; + hasAddress: boolean; + hasQuestion: boolean; + hasTime: boolean; + hasDate: boolean; + hasArbitraryDay: boolean; + hasLinkedInProfileUrl: boolean; + hasLinkedInJobUrl: boolean; + hasLinkedInPostUrl: boolean; + hasLinkedinCompanyUrl: boolean; + hasLinkedInUrl: boolean; + hasUrl: boolean; + hasMention: boolean; + hasHashtag: boolean; + hasEmoji: boolean; + hasAttachment: boolean; + hasPhoto: boolean; + hasVideo: boolean; + hasIntro: boolean; + hasSticker: boolean; + hasSchedule: boolean; + hasConference: boolean; + hasReferral: boolean; + hasMentor: boolean; + hasOpportunity: boolean; + hasSalutation: boolean; + hasAcknowledgement: boolean; + newLineCount: number; + wordCount: number; + recipientCount?: number; + messageSentTime?: number; + messageType?: TelescopeMessageType; + geoLocation?: string; + memberSegment?: string; + mlcSegment?: string; + marketplaceAudience?: string; + isQualityMember?: boolean; + qualityProfileMetric?: string; + standardizedTitle?: string; + messageSubtype?: string; + isStartingWithConfirmation?: boolean; + characterCount?: number; + isStartingWithCongrats?: boolean; + isStartingWithThanks?: boolean; + quickReplyUrn?: string; + locale?: Com.Linkedin.Avro2pegasus.Events.Locale; + sentiments?: MessageSentimentType[]; + networkDistances?: Com.Linkedin.Avro2pegasus.Events.Common.NetworkDistance[]; + connectionStrengths?: number[]; + jobSeeker?: number; + isProp?: boolean; + isFirstMessage?: boolean; + industry?: number; + hasDayGreeting?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MessengerComposeImpressionEvent.pdsc + + export interface MessengerComposeImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recipientUrns?: string[]; + controlUrn?: string; + sourceType: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.MessageSourceType; + referringModuleKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/MobileAppName.pdsc + + export type MobileAppName = + | 'CONNECTED' + | 'FLAGSHIP' + | 'JOB_SEEKER' + | 'LIFT' + | 'PULSE' + | 'RECRUITER' + | 'TEAM_MONEY'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/Participant.pdsc + + export interface Participant { + entityUrn: string; + interfaceLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/PushNotificationData.pdsc + + export interface PushNotificationData { + type: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/PushNotificationMessage.pdsc + + export interface PushNotificationMessage { + messageTemplateName: string; + appName: MobileAppName; + data: PushNotificationData; + recipientUrn: string; + deduplicationId?: string; + senderUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/QuickReplyNormalizationAttributeType.pdsc + + export type QuickReplyNormalizationAttributeType = + | 'SENDER_FIRST_NAME' + | 'SENDER_LAST_NAME' + | 'SENDER_PRIMARY_EMAIL' + | 'SENDER_PRIMARY_PHONE' + | 'RECIPIENT_FIRST_NAME' + | 'RECIPIENT_LAST_NAME'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/RecommendationBrief.pdsc + + export interface RecommendationBrief { + briefUrn: string; + recommendationBriefType: MessagingRecommendationBriefType; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/RecommendedEntity.pdsc + + export interface RecommendedEntity { + recommendedEntityUrn: string; + recommendationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleTime: number; + duration: number; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + usecase: MessagingRecommendationUsecase; + recommendationBriefs?: RecommendationBrief[]; + referenceEntityTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/SettingKey.pdsc + + export type SettingKey = 'SCHEDULING_PERMISSION'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/StickerAction.pdsc + + export type StickerAction = 'SELECT'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/StickerActionEvent.pdsc + + export interface StickerActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + conversation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + sticker: StickerObject; + actionCategory: StickerAction; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/StickerImpressionEvent.pdsc + + export interface StickerImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + conversation: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + sticker: StickerObject; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/StickerObject.pdsc + + export interface StickerObject { + stickerPackName: string; + stickerNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/TelescopeMessageType.pdsc + + export type TelescopeMessageType = + | 'IN_MAIL' + | 'OPEN_URL' + | 'INTRODUCTION' + | 'ONE_TO_ONE_MESSAGE' + | 'GROUP_ONE_TO_ONE_MESSAGE' + | 'GROUP_APPLICATION_MANAGER_CORRESPONDENCE' + | 'EXTERNAL_EMAIL'; + namespace Bots { + // Generated from: com/linkedin/avro2pegasus/events/messaging/bots/BotRequestEvent.pdsc + + export interface BotRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestType?: RequestType; + conversationUrn: string; + messageUrn: string; + participantUrns: string[]; + assistantPayload?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.AssistantPayload; + relatedMessageUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/bots/BotResponseEvent.pdsc + + export interface BotResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ResponseType?: ResponseType; + conversationUrn: string; + messageUrn: string; + participantUrns: string[]; + assistantPayload?: Com.Linkedin.Avro2pegasus.Events.Common.Messaging.AssistantPayload; + requestMessageUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/bots/RequestType.pdsc + + export type RequestType = + | 'BOOK_MEETING_SLOT' + | 'FIND_AVAILABILITY' + | 'HELP' + | 'INVALID' + | 'PERMISSIONS' + | 'MEETING_REQUEST' + | 'RESUMED_MEETING_REQUEST'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/bots/ResponseType.pdsc + + export type ResponseType = + | 'CALENDAR_ACCESS_REQUEST' + | 'CALENDAR_ACCESS_GRANTED' + | 'MEETING_BOOKED' + | 'PERMISSION_REQUEST' + | 'SUGGESTED_SLOTS_NO_CONFLICTS' + | 'SUGGESTED_SLOTS_WITH_CONFLICTS' + | 'SUGGESTED_SLOTS_ALL_WITH_CONFLICTS'; + } + namespace Messagerequests { + // Generated from: com/linkedin/avro2pegasus/events/messaging/messagerequests/MessageRequestMessageSendEvent.pdsc + + export interface MessageRequestMessageSendEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messagingMessageUrn: string; + messagingThreadUrn: string; + authorUrn: string; + recipientUrns: string[]; + isFirstMessage: boolean; + contextEntityUrn?: string; + messageRequestTypeUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/messaging/messagerequests/MessageRequestState.pdsc + + export type MessageRequestState = 'ACCEPTED' | 'DECLINED'; + // Generated from: com/linkedin/avro2pegasus/events/messaging/messagerequests/MessageRequestStateChangeEvent.pdsc + + export interface MessageRequestStateChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + firstMessagingMessageUrn: string; + messagingThreadUrn: string; + actorUrn: string; + otherParticipantUrns: string[]; + messageRequestState: MessageRequestState; + contextEntityUrn?: string; + messageRequestTypeUrn?: string; + } + } + } + namespace Metrics { + // Generated from: com/linkedin/avro2pegasus/events/metrics/frequencyType.pdsc + + export type frequencyType = 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY'; + // Generated from: com/linkedin/avro2pegasus/events/metrics/property.pdsc + + export interface property { + key: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/metrics/UMPMetricsFlowEvent.pdsc + + export interface UMPMetricsFlowEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cluster: string; + project: string; + executionId: string; + datasetName?: string; + datasetDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + datasetHour?: number; + status: UMPMetricsJobStatusType; + isBackfill?: boolean; + frequency?: frequencyType; + } + // Generated from: com/linkedin/avro2pegasus/events/metrics/UMPMetricsJobEvent.pdsc + + export interface UMPMetricsJobEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cluster: string; + project: string; + executionId: string; + datasetName?: string; + datasetDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + datasetHour?: number; + status: UMPMetricsJobStatusType; + job?: string; + application?: string; + properties?: property[]; + } + // Generated from: com/linkedin/avro2pegasus/events/metrics/UMPMetricsJobStatusType.pdsc + + export type UMPMetricsJobStatusType = 'STARTED' | 'SUCCEEDED' | 'FAILED'; + } + namespace Microsites { + // Generated from: com/linkedin/avro2pegasus/events/microsites/ClickEventCategory.pdsc + + export type ClickEventCategory = 'FORM' | 'SOCIAL' | 'LINK' | 'CHAT' | 'CALL'; + // Generated from: com/linkedin/avro2pegasus/events/microsites/FormSubmissionGUID.pdsc + + export type FormSubmissionGUID = string; + // Generated from: com/linkedin/avro2pegasus/events/microsites/FormViewGUID.pdsc + + export type FormViewGUID = string; + // Generated from: com/linkedin/avro2pegasus/events/microsites/MicrositesClickEvent.pdsc + + export interface MicrositesClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + resourcePath: string; + destinationUrl?: string; + label?: string; + category?: ClickEventCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/microsites/MicrositesFormBypassEvent.pdsc + + export interface MicrositesFormBypassEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + visitorId: string; + formPath: string; + resourcePath: string; + } + // Generated from: com/linkedin/avro2pegasus/events/microsites/MicrositesFormSubmissionEvent.pdsc + + export interface MicrositesFormSubmissionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viewId: FormViewGUID; + isSuccessful: boolean; + errorMessage?: string; + submissionId: FormSubmissionGUID; + } + // Generated from: com/linkedin/avro2pegasus/events/microsites/MicrositesFormViewEvent.pdsc + + export interface MicrositesFormViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viewId: FormViewGUID; + campaignId: string; + visitorId: string; + pageKeyGroup: string; + resourcePath: string; + formName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/microsites/MicrositesImpressionEvent.pdsc + + export interface MicrositesImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + visitorId: string; + pageKeyGroup: string; + resourcePath: string; + } + } + namespace Mirror { + // Generated from: com/linkedin/avro2pegasus/events/mirror/ActionType.pdsc + + export type ActionType = 'VIEW' | 'LIKE' | 'COMMENT' | 'RESHARE' | 'REPLY_TO_COMMENT'; + // Generated from: com/linkedin/avro2pegasus/events/mirror/MirrorShareCreationEvent.pdsc + + export interface MirrorShareCreationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + activityUrn: string; + shareUrn: string; + authorUrn: string; + createTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/mirror/MirrorShareDeletionEvent.pdsc + + export interface MirrorShareDeletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + activityUrn: string; + shareUrn: string; + authorUrn: string; + deleteTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/mirror/MirrorSocialGestureEvent.pdsc + + export interface MirrorSocialGestureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + targetUrn: string; + socialGestureUrn: string; + actionTime: number; + actorUrn: string; + companyUrn: string; + occupationUrn: string; + profileIndustryUrn: string; + regionId: number; + occupationSeniorityUrn: string; + referrer?: string; + actionType: ActionType; + isUndo: boolean; + } + } + namespace Mitn { + // Generated from: com/linkedin/avro2pegasus/events/mitn/ActiveMentionedInTheNewsContext.pdsc + + export interface ActiveMentionedInTheNewsContext {} + // Generated from: com/linkedin/avro2pegasus/events/mitn/MentionedInTheNewsCandidateEvent.pdsc + + export interface MentionedInTheNewsCandidateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + entityUrn: string; + mentionContext: MentionedInTheNewsContext; + } + // Generated from: com/linkedin/avro2pegasus/events/mitn/MentionedInTheNewsContext.pdsc + + export interface MentionedInTheNewsContext { + createdTime: number; + activityUrn: string; + snippet?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mitn/MentionedInTheNewsEvent.pdsc + + export interface MentionedInTheNewsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + entityUrn: string; + mentionContext: MentionedInTheNewsContext; + state: MentionState; + activeMentionContext?: ActiveMentionedInTheNewsContext; + retractedMentionContext?: RetractedMentionedInTheNewsContext; + controlModelPrediction?: ModelPrediction; + experimentalModelPredictions?: ModelPrediction[]; + } + // Generated from: com/linkedin/avro2pegasus/events/mitn/MentionedInTheNewsRetractionEvent.pdsc + + export interface MentionedInTheNewsRetractionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + entityUrn: string; + mentionContext: MentionedInTheNewsContext; + retractionReason: RetractionReason; + } + // Generated from: com/linkedin/avro2pegasus/events/mitn/MentionState.pdsc + + export type MentionState = 'ACTIVE' | 'RETRACTED'; + // Generated from: com/linkedin/avro2pegasus/events/mitn/ModelPrediction.pdsc + + export interface ModelPrediction { + model: string; + predictionScore: number; + confidence: Com.Linkedin.Avro2pegasus.Events.Common.Nlp.Confidence; + aboutness: Com.Linkedin.Avro2pegasus.Events.Common.Nlp.Confidence; + mentionCount: number; + isMentionedInTitle: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/mitn/RetractedMentionedInTheNewsContext.pdsc + + export interface RetractedMentionedInTheNewsContext { + retractionReason: RetractionReason; + } + // Generated from: com/linkedin/avro2pegasus/events/mitn/RetractionReason.pdsc + + export type RetractionReason = 'SELF_REPORT' | 'SERVICE_REP_VERIFIED' | 'SERVER_RETRACTED'; + } + namespace Ml { + // Generated from: com/linkedin/avro2pegasus/events/ml/MemberModelScoringEvent.pdsc + + export interface MemberModelScoringEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + modelName: string; + modelScoringDuration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ml/SimpleRegressionTrainingEvent.pdsc + + export interface SimpleRegressionTrainingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sparkHeader: Com.Linkedin.Avro2pegasus.Common.Ml.SparkHeader; + trainingParameters: Com.Linkedin.Avro2pegasus.Common.Ml.RegressionTrainingParameters; + dataParameters: Com.Linkedin.Avro2pegasus.Common.Ml.FixedEffectDataParameters; + optimizationParameters: Com.Linkedin.Avro2pegasus.Common.Ml.FixedEffectOptimizationParameters; + trainingLogs: Com.Linkedin.Avro2pegasus.Common.Ml.FixedEffectRegressionTrainingLog[]; + } + namespace Photonconnect { + // Generated from: com/linkedin/avro2pegasus/events/ml/photonconnect/PhotonConnectMetadataTrainingTriggeredEvent.pdsc + + export interface PhotonConnectMetadataTrainingTriggeredEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + modelName: string; + verticalName: string; + sparkHeader: Com.Linkedin.Avro2pegasus.Common.Ml.SparkHeader; + } + } + namespace Xgboost { + // Generated from: com/linkedin/avro2pegasus/events/ml/xgboost/XGBoostTrainingEvent.pdsc + + export interface XGBoostTrainingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sparkHeader: Com.Linkedin.Avro2pegasus.Common.Ml.SparkHeader; + trainingParameters: Com.Linkedin.Avro2pegasus.Common.Ml.Xgboost.XGBoostTrainingParameters; + dartOptimizationParameters?: Com.Linkedin.Avro2pegasus.Common.Ml.Xgboost.DartBoosterOptimizationParameters; + linearOptimizationParameters?: Com.Linkedin.Avro2pegasus.Common.Ml.Xgboost.LinearBoosterOptimizationParameters; + treeOptimizationParameters?: Com.Linkedin.Avro2pegasus.Common.Ml.Xgboost.TreeBoosterOptimizationParameters; + trainingLogs: Com.Linkedin.Avro2pegasus.Common.Ml.Xgboost.XGBoostTrainingLog; + } + } + } + namespace Mlmodellifecycle { + // Generated from: com/linkedin/avro2pegasus/events/mlmodellifecycle/FabricGroup.pdsc + + export type FabricGroup = 'EI' | 'PROD'; + // Generated from: com/linkedin/avro2pegasus/events/mlmodellifecycle/MLModelDeploymentCompletionEvent.pdsc + + export interface MLModelDeploymentCompletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + modelGroupUrn: string; + modelName: string; + fabricUrn: string; + productTag: string; + modelVersion: string; + intentId: number; + nominationTime: number; + deploymentStartTime: number; + deploymentFinishTime: number; + status: Com.Linkedin.Avro2pegasus.Common.Mlmodellifecycle.MLModelDeploymentStatus; + mreStatistics?: Com.Linkedin.Avro2pegasus.Common.Mlmodellifecycle.MLModelDeploymentStats[]; + } + // Generated from: com/linkedin/avro2pegasus/events/mlmodellifecycle/MlModelPublishEvent.pdsc + + export interface MlModelPublishEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + productUrn: string; + modelName?: string; + modelGroupUrn: string; + version?: string; + auditRecord: Com.Linkedin.Avro2pegasus.Events.Common.AuditStamp; + state: Com.Linkedin.Avro2pegasus.Common.Mlmodellifecycle.MlModelPublishState; + stateDescription: string; + publishMessage: string; + trainingRunUrn: string; + publishAttemptId: string; + environments: FabricGroup[]; + aiProjectGroup: string; + trainedModelUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mlmodellifecycle/MLModelsActivationStateChangeEvent.pdsc + + export interface MLModelsActivationStateChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + modelGroupUrn: string; + fabricUrn: string; + productTag?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mlmodellifecycle/MlModelTrainedV2Event.pdsc + + export interface MlModelTrainedV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trainingId?: TrainingRunUUID; + trainingName: string; + modelLocation: string; + metadataLocation: string; + submitterCorpuserUrn: string; + executionUrl: string; + origin: Com.Linkedin.Avro2pegasus.Event.Mlmodellifecycle.MlModelTrainingOrigin; + cluster: Com.Linkedin.Avro2pegasus.Event.Mlmodellifecycle.MlModelTrainingCluster; + framework: Com.Linkedin.Avro2pegasus.Event.Mlmodellifecycle.MlModelTrainingFramework; + aiProjectGroup: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mlmodellifecycle/MLModelUndeploymentCompletionEvent.pdsc + + export interface MLModelUndeploymentCompletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + modelGroupUrn: string; + modelName: string; + fabricUrn: string; + productTag: string; + intentId: number; + nominationTime: number; + undeploymentStartTime: number; + undeploymentFinishTime: number; + status: Com.Linkedin.Avro2pegasus.Common.Mlmodellifecycle.MLModelDeploymentStatus; + mreStatistics?: Com.Linkedin.Avro2pegasus.Common.Mlmodellifecycle.MLModelDeploymentStats[]; + } + // Generated from: com/linkedin/avro2pegasus/events/mlmodellifecycle/TrainingRunUUID.pdsc + + export type TrainingRunUUID = string; + } + namespace Mobile { + // Generated from: com/linkedin/avro2pegasus/events/mobile/ActivationStateType.pdsc + + export type ActivationStateType = + | 'DOWNLOAD' + | 'PRE_ACTIVATION_APP_LAUNCH' + | 'FIRST_TIME_ACTIVATION' + | 'PRE_INSTALL_FIRST_BOOT' + | 'PRE_INSTALL_UPGRADE' + | 'BROADCAST_DROPPED'; + // Generated from: com/linkedin/avro2pegasus/events/mobile/AndroidAppActivationEvent.pdsc + + export interface AndroidAppActivationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rawReferrer: string; + activationState: ActivationStateType; + } + // Generated from: com/linkedin/avro2pegasus/events/mobile/AppActivationEvent.pdsc + + export interface AppActivationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + rawReferer: string; + activationState: ActivationStateType; + } + // Generated from: com/linkedin/avro2pegasus/events/mobile/ApplicationBuildType.pdsc + + export type ApplicationBuildType = 'PRODUCTION' | 'INTERNAL' | 'DEVELOPMENT' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/mobile/ApplicationStateChangeType.pdsc + + export type ApplicationStateChangeType = + | 'APPLICATION_START' + | 'APPLICATION_END' + | 'APPLICATION_FOREGROUND' + | 'APPLICATION_BACKGROUND'; + // Generated from: com/linkedin/avro2pegasus/events/mobile/ApplicationVisibilityStatus.pdsc + + export type ApplicationVisibilityStatus = 'FOREGROUND' | 'BACKGROUND'; + // Generated from: com/linkedin/avro2pegasus/events/mobile/DeferredDeepLinkEvent.pdsc + + export interface DeferredDeepLinkEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + result: DeferredDeepLinkResultType; + sourceControlUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mobile/DeferredDeepLinkResultType.pdsc + + export type DeferredDeepLinkResultType = 'EXPIRED' | 'UNIMPLEMENTED' | 'EXECUTED' | 'DETECTED'; + // Generated from: com/linkedin/avro2pegasus/events/mobile/DestinationIP.pdsc + + export type DestinationIP = string; + // Generated from: com/linkedin/avro2pegasus/events/mobile/DeviceOrientation.pdsc + + export type DeviceOrientation = + | 'PORTRAIT' + | 'LANDSCAPE' + | 'PORTRAIT_UPSIDE_DOWN' + | 'LANDSCAPE_LEFT' + | 'LANDSCAPE_RIGHT' + | 'FACE_UP' + | 'FACE_DOWN'; + // Generated from: com/linkedin/avro2pegasus/events/mobile/HostIP.pdsc + + export type HostIP = string; + // Generated from: com/linkedin/avro2pegasus/events/mobile/InboundExternalLinkFailureEvent.pdsc + + export interface InboundExternalLinkFailureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + intendedDestinationUrl: string; + failureType: LinkFailureType; + } + // Generated from: com/linkedin/avro2pegasus/events/mobile/LaunchAppStoreEvent.pdsc + + export interface LaunchAppStoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + targetAppName: string; + appStoreUrl: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mobile/LinkFailureType.pdsc + + export type LinkFailureType = + | 'INVALID_INBOUND_DATA' + | 'URL_ROUTE_VERIFICATION_FAILURE' + | 'FAILED_TO_BUILD_LINK' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/mobile/MobileApplicationLixTreatment.pdsc + + export interface MobileApplicationLixTreatment { + testKey: string; + treatment: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mobile/MobileApplicationSessionEvent.pdsc + + export interface MobileApplicationSessionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + applicationBuildType?: ApplicationBuildType; + mobileApplicationName: string; + buildNumber: string; + applicationStateChangeType: ApplicationStateChangeType; + deviceWidth?: number; + deviceHeight?: number; + windowWidth?: number; + windowHeight?: number; + deviceFontSizeScaling?: number; + cellularBytesReceived?: number; + cellularBytesSent?: number; + wifiBytesReceived?: number; + wifiBytesSent?: number; + totalBytesReceived?: number; + totalBytesSent?: number; + isGestureNavigationEnabled?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/mobile/NetworkTelemetryEvent.pdsc + + export interface NetworkTelemetryEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + traceRouteHeader: TraceRouteHeader; + traceRouteMetrics: TraceRouteHopMetrics[]; + } + // Generated from: com/linkedin/avro2pegasus/events/mobile/TraceRouteHeader.pdsc + + export interface TraceRouteHeader { + destinationHost: string; + destinationIp?: DestinationIP; + traceRouteTransportProtocol: TraceRouteTransportProtocol; + maxHops: number; + packetSize: number; + } + // Generated from: com/linkedin/avro2pegasus/events/mobile/TraceRouteHopMetrics.pdsc + + export interface TraceRouteHopMetrics { + hopNumber: number; + hostName?: string; + hostIp?: HostIP; + traceStatus: TraceStatus; + avgRoundTripTimeMicros?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/mobile/TraceRouteTransportProtocol.pdsc + + export type TraceRouteTransportProtocol = 'ICMP' | 'TCP' | 'UDP'; + // Generated from: com/linkedin/avro2pegasus/events/mobile/TraceStatus.pdsc + + export type TraceStatus = 'SUCCESS' | 'TIMEOUT'; + } + namespace Mobileperf { + // Generated from: com/linkedin/avro2pegasus/events/mobileperf/AppInitialize.pdsc + + export type AppInitialize = 'FULL' | 'PARTIAL'; + } + namespace Mobilesdk { + // Generated from: com/linkedin/avro2pegasus/events/mobilesdk/AppLockVerificationEvent.pdsc + + export interface AppLockVerificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + verificationId: string; + transactionId: string; + transactionState: TransactionState; + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mobilesdk/ThirdPartyMobileSdkLoginActionEvent.pdsc + + export interface ThirdPartyMobileSdkLoginActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + thirdPartyApplicationIdentifier: string; + loginResult: VoyagerLoginResult; + loggedInMemberUrn?: string; + loginSessionId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mobilesdk/ThirdPartyMobileSdkLoginImpressionEvent.pdsc + + export interface ThirdPartyMobileSdkLoginImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + thirdPartyApplicationIdentifier: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mobilesdk/ThirdPartyMobileSdkProfileViewEvent.pdsc + + export interface ThirdPartyMobileSdkProfileViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + thirdPartyApplicationIdentifier: string; + viewee: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/mobilesdk/ThirdPartyMobileSdkRegistrationActionEvent.pdsc + + export interface ThirdPartyMobileSdkRegistrationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + thirdPartyApplicationIdentifier: string; + } + // Generated from: com/linkedin/avro2pegasus/events/mobilesdk/TransactionState.pdsc + + export type TransactionState = 'INITIATED' | 'SUCCESS' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/mobilesdk/VoyagerLoginResult.pdsc + + export type VoyagerLoginResult = 'SUCCESS' | 'INVALID_LOGIN'; + } + namespace Monitoring { + // Generated from: com/linkedin/avro2pegasus/events/monitoring/AllocationProfilingEvent.pdsc + + export interface AllocationProfilingEvent { + header: EventHeader; + sampleCount?: number; + samplingStartTime: number; + eventDuration: number; + stackTraces: StackTraceForAllocation[]; + heapAllocations: HeapAllocation[]; + classHeapUsages: ClassHeapUsage[]; + directBufferUsages: DirectBufferUsage[]; + directBufferDistributions: DirectBufferDistribution[]; + eventId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ApdexComplianceDetails.pdsc + + export interface ApdexComplianceDetails { + details: ApdexRequestDetails; + metrics: ApdexMetric[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ApdexEvent.pdsc + + export interface ApdexEvent { + header: EventHeader; + upstream: ApdexRequestDetails; + downstream: ApdexRequestDetails; + resource?: string; + method?: string; + source: ApdexSource; + compliance: ApdexMetric[]; + callTreeIds?: string[]; + aggregationTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ApdexFiredrillMetadata.pdsc + + export interface ApdexFiredrillMetadata { + firedrillId: string; + entityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ApdexMetric.pdsc + + export interface ApdexMetric { + metric: ApdexMetricType; + total: number; + satisfiedCount: number; + toleratingCount: number; + unsatisfiedCount: number; + apdex?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ApdexMetricType.pdsc + + export type ApdexMetricType = 'COMBINED' | 'LATENCY' | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ApdexRequestDetails.pdsc + + export interface ApdexRequestDetails { + host?: string; + port?: number; + instance?: string; + fabric?: string; + tags?: string[]; + service?: string; + firedrillMetadata?: ApdexFiredrillMetadata[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ApdexSource.pdsc + + export type ApdexSource = 'CLIENT' | 'SERVER'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ApdexSummaryEvent.pdsc + + export interface ApdexSummaryEvent { + header: EventHeader; + resource?: string; + method?: string; + source: ApdexSource; + callTreeIds?: string[]; + complianceDetailsByService: ApdexComplianceDetails[]; + eventDuration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/Attribute.pdsc + + export interface Attribute { + dataType: AttributeDataType; + metricType: AttributeMetricType; + name: string; + tags?: string[]; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/AttributeDataType.pdsc + + export type AttributeDataType = + | 'INTEGER' + | 'LONG' + | 'DOUBLE' + | 'PERCENT' + | 'STORAGE' + | 'DURATION' + | 'TIME' + | 'DATE' + | 'DATETIME' + | 'STRING' + | 'BOOLEAN' + | 'MICROSECONDS' + | 'NANOSECONDS'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/AttributeMetricType.pdsc + + export type AttributeMetricType = + | 'TIMESTAMP' + | 'ABSOLUTE' + | 'COUNTER' + | 'DERIVE' + | 'GAUGE' + | 'COMPUTE_ABSOLUTE' + | 'COMPUTE_COUNTER' + | 'COMPUTE_DERIVE' + | 'COMPUTE_GAUGE'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/Caller.pdsc + + export interface Caller { + container: string; + environment: string; + instance: string; + physicalHost?: string; + server: string; + service: string; + slice?: string; + sliceInstance?: string; + version: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/CallSiteForAllocation.pdsc + + export interface CallSiteForAllocation { + stackTraceIndex: number; + size: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ChannelPoolManagerMetric.pdsc + + export interface ChannelPoolManagerMetric { + channelPoolMetrics: ChannelPoolMetric[]; + clusterName: string; + isSecure: boolean; + isStream: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ChannelPoolMetric.pdsc + + export interface ChannelPoolMetric { + maxCheckedOutSampled: number; + maxPoolSizeSampled: number; + maxWaitTimeSampled: number; + poolName: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ClassHeapUsage.pdsc + + export interface ClassHeapUsage { + className: string; + occupiedSize: number; + count: number; + callSites: CallSiteForAllocation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ClassType.pdsc + + export interface ClassType { + className: string; + size: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ClientInfo.pdsc + + export interface ClientInfo { + container: string; + environment: string; + instance: string; + server: string; + service: string; + slice?: string; + sliceInstance?: string; + version: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/CloudTrailEvent.pdsc + + export interface CloudTrailEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + awsEventTimestamp: string; + awsAccount: string; + rawClouldTrailEventJson: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/CloudWatchQueryStatsEvent.pdsc + + export interface CloudWatchQueryStatsEvent { + header?: EventHeader; + transactionId: number; + queryStr: string; + latency: number; + resultSize: number; + networkHops: number; + edgesTouched: number; + nodesTouched: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ClusterStats.pdsc + + export interface ClusterStats { + clusterAverageLatency?: number; + clusterCallCount: number; + clusterDropLevel: number; + clusterDroppedCallCounts?: number; + clusterErrorCounts?: number; + clusterHostNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/Cost2ServeWorkEvent.pdsc + + export interface Cost2ServeWorkEvent { + collectionPeriod: number; + header: EventHeader; + workPerformed: WorkPerformed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/CPPLogInformation.pdsc + + export interface CPPLogInformation { + cppSourceFile: string; + cppLineNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/D2Event.pdsc + + export interface D2Event { + header: EventHeader; + clusterName: string; + clusterStats: ClusterStats; + emitInterval: number; + partitionId: number; + serviceName: string; + uriList: UriInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/D2ServiceEvent.pdsc + + export interface D2ServiceEvent { + kafkaAuditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + serviceName: string; + startingTime: number; + endingTime: number; + averageQps: number; + averageErrorRate?: number; + averageDropLevel: number; + averageDroppedCallCounts: number; + weightedLatencyMetrics?: LatencyMetrics; + serverEventList: ServerEvent[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/DefaultLogInformation.pdsc + + export interface DefaultLogInformation { + logger: string; + thread: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/DirectBufferDistribution.pdsc + + export interface DirectBufferDistribution { + stackTraceIndex: number; + memoryUsed: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/DirectBufferUsage.pdsc + + export interface DirectBufferUsage { + totalCapacity: number; + memoryUsed: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/embed.pdsc + + export interface embed { + uri: string; + isRequired: boolean; + alias?: string; + id: string; + parentId: string; + contentType: string; + responseCode: string; + responseDuration: number; + responseLengthBytes?: number; + renderControl?: string; + fetchType?: string; + fetchControl?: string; + cdnVersion?: string; + cdnConflict: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/EventException.pdsc + + export interface EventException { + index: number; + message: string; + stackTrace: StackTraceFrame[]; + type: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/EventHeader.pdsc + + export interface EventHeader { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + container: string; + environment: string; + eventType: string; + eventVersion: number; + guid: fixed_16; + instance: string; + nano: number; + physicalHost?: string; + productTag?: string; + server: string; + service: string; + slice?: string; + sliceInstance?: string; + time: number; + version: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/FetchData.pdsc + + export interface FetchData { + pageId?: string; + responseDurationMs: number; + responseCode: number; + contentType: string; + contentLengthBytes: number; + numTotalTemplates?: number; + numTemplatesCached?: number; + numTemplatesFetched?: number; + numTemplatesFetchesFailed?: number; + maxTemplateFetchTimeMs?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/fixed_16.pdsc + + export type fixed_16 = string; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/HeapAllocation.pdsc + + export interface HeapAllocation { + heapSize: number; + usedSize: number; + classTypes: ClassType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/IngestedContentMetric.pdsc + + export interface IngestedContentMetric { + label: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/IngestedContentMetricsCollectedEvent.pdsc + + export interface IngestedContentMetricsCollectedEvent { + header: EventHeader; + ingestedContentUrn: string; + resolvedUrl: string; + metrics: IngestedContentMetric[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/InLogEvent.pdsc + + export interface InLogEvent { + logFileName: string; + hostName: string; + applicationInstanceId?: string; + timeStampNano: number; + level: LogLevel; + marker: LogSessionMarker; + message?: string; + appData?: { [id: string]: string }; + appJson?: string; + treeId?: TreeID; + requestId?: number; + logInfoType: LogInfoType; + defaultLog?: DefaultLogInformation; + cppLog?: CPPLogInformation; + process?: ProcessInformation; + serviceCallContext?: { [id: string]: string }; + exceptionChain?: EventException[]; + groupHash?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/JMXAccessLogEvent.pdsc + + export interface JMXAccessLogEvent { + header: EventHeader; + isAccessAllowed: boolean; + parameters: Parameter[]; + processName: string; + protocol: string; + remoteAddress: Com.Linkedin.Avro2pegasus.Events.IPAddress; + remoteHostName: string; + requestURI: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/JvmCallSiteForAllocation.pdsc + + export interface JvmCallSiteForAllocation { + stackTraceIndex: number; + usedSize: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/JvmClass.pdsc + + export interface JvmClass { + classNameIndex: number; + usedSize: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/JvmClassHeapUsage.pdsc + + export interface JvmClassHeapUsage { + classNameIndex: number; + totalUsedSize: number; + totalCount: number; + callSites: JvmCallSiteForAllocation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/JvmDirectBufferDistribution.pdsc + + export interface JvmDirectBufferDistribution { + stackTraceIndex: number; + memoryUsed: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/JvmDirectBufferUsage.pdsc + + export interface JvmDirectBufferUsage { + totalCapacity: number; + memoryUsed: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/JvmHeapAllocation.pdsc + + export interface JvmHeapAllocation { + totalHeapSize: number; + totalUsedSize: number; + classes: JvmClass[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/JvmStackTraceElement.pdsc + + export interface JvmStackTraceElement { + methodName: string; + classNameIndex: number; + fileName?: string; + lineNumber?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/JvmStackTraceForAllocation.pdsc + + export interface JvmStackTraceForAllocation { + threadName?: string; + stackTraceElements: JvmStackTraceElement[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/LatencyMetrics.pdsc + + export interface LatencyMetrics { + latency: number; + latency50thPercentile: number; + latency90thPercentile: number; + latency95thPercentile: number; + latency99thPercentile: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/Level.pdsc + + export type Level = 'DEBUG' | 'INFO' | 'WARNING' | 'ERROR' | 'FATAL'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/LixServiceCallEvent.pdsc + + export interface LixServiceCallEvent { + callerServiceName: string; + durationNano: number; + error?: string; + header: EventHeader; + responseCode: number; + scaleFactor: number; + treeId: fixed_16; + urnsUsedInLixTreatments: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/LoggingEvent.pdsc + + export interface LoggingEvent { + exceptionChain?: EventException[]; + header?: EventHeader; + level: Level; + log: string; + logger: string; + loggingContext?: { [id: string]: string }; + message?: string; + requestId?: number; + serviceCallContext?: { [id: string]: string }; + thread?: string; + timestamp: number; + treeId?: fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/LogInfoType.pdsc + + export type LogInfoType = 'DEFAULTLOG' | 'CPPLOG'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/LogLevel.pdsc + + export type LogLevel = 'TRACE' | 'DEBUG' | 'INFO' | 'WARNING' | 'ERROR' | 'FATAL'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/LogSessionMarker.pdsc + + export type LogSessionMarker = 'POINT' | 'START' | 'END'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/PageAggregationEvent.pdsc + + export interface PageAggregationEvent { + header: EventHeader; + parsed: boolean; + originPageId: string; + originHostId: string; + originDurationMs: number; + durationMs: number; + timeToFirstByteMs: number; + timeToGetHeadersMs: number; + timeToFirstByteInMs: number; + uri: string; + originCdnVersion?: string; + embeds: embed[]; + requestId: number; + treeId: fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/Parameter.pdsc + + export interface Parameter { + name: string; + values: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ParentTraceData.pdsc + + export interface ParentTraceData { + requestId: number; + rpcTrace: string; + taskId: number; + treeId: fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ParseqShallowTrace.pdsc + + export interface ParseqShallowTrace { + attributes: { [id: string]: string }; + endTimeNanos?: number; + id: number; + isHidden: boolean; + isSystemHidden: boolean; + pendingTimeNanos?: number; + startTimeNanos?: number; + taskName: string; + taskResult: ResultType; + taskValue?: string; + taskType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ParseqTrace.pdsc + + export interface ParseqTrace { + planId: number; + planName: string; + traceMap: { [id: string]: ParseqShallowTrace }; + traceRelationships: ParseqTraceRelationship[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ParseqTraceEvent.pdsc + + export interface ParseqTraceEvent { + header: EventHeader; + requestId: number; + sampleRate: number; + taskId: number; + trace: ParseqTrace; + treeId: fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ParseqTraceRelationship.pdsc + + export interface ParseqTraceRelationship { + fromTaskId: number; + relationship: Relationship; + toTaskId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ProcessInformation.pdsc + + export interface ProcessInformation { + processId: number; + container: string; + applicationName: string; + serviceVersion: string; + fabric: string; + productTag?: string; + configTags?: string; + sliceId: string; + sliceInstance: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ProfilerMemoryAllocationEvent.pdsc + + export interface ProfilerMemoryAllocationEvent { + header: EventHeader; + sampleCount?: number; + samplingStartTime: number; + eventDuration: number; + stackTraces: JvmStackTraceForAllocation[]; + classNames: string[]; + heapAllocations: JvmHeapAllocation[]; + classHeapUsages: JvmClassHeapUsage[]; + directBufferUsages: JvmDirectBufferUsage[]; + directBufferDistributions: JvmDirectBufferDistribution[]; + eventId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/Protocol.pdsc + + export type Protocol = + | 'SRPC' + | 'PRPC' + | 'R2' + | 'REST_LI' + | 'HTTP' + | 'IMAP' + | 'SMTP' + | 'VOLDEMORT' + | 'NORBERT' + | 'ESPRESSO'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/R2Event.pdsc + + export interface R2Event { + channelPoolManagerMetrics: ChannelPoolManagerMetric[]; + eventDuration: number; + header: EventHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/Relationship.pdsc + + export type Relationship = + | 'PARENT_OF' + | 'SUCCESSOR_OF' + | 'POSSIBLE_SUCCESSOR_OF' + | 'CHILD_OF' + | 'POTENTIAL_CHILD_OF' + | 'POTENTIAL_PARENT_OF'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ReMixTraceEvent.pdsc + + export interface ReMixTraceEvent { + header: EventHeader; + requestId: number; + taskId: number; + trace: ParseqTrace; + treeId: fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/RenderType.pdsc + + export type RenderType = 'EMBED' | 'PAGE' | 'EMAIL' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ResultType.pdsc + + export type ResultType = 'SUCCESS' | 'ERROR' | 'EARLY_FINISH' | 'UNFINISHED'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/SamplingProfilerEvent.pdsc + + export interface SamplingProfilerEvent { + header: EventHeader; + sampleCount?: number; + samplingStartTimestampInMillis: number; + samplingDurationInMillis: number; + stackTraces: stackTrace[]; + threadStatuses: threadStatus[]; + requestId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/Secure.pdsc + + export type Secure = 'UNKNOWN' | 'UNSECURE' | 'SECURE'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/SensitiveServiceCallEvent.pdsc + + export interface SensitiveServiceCallEvent { + caller: Caller; + callerServicePrincipalUrn?: string; + callerRequestId: number; + callerTaskId?: number; + clientGenerated: boolean; + context: { [id: string]: string }; + duration: number; + durationNano: number; + error?: string; + header: EventHeader; + memberUrn?: string; + parentTraceData?: ParentTraceData; + performedTasks?: Task[]; + protocol: Protocol; + requestData: { [id: string]: string }; + requestId: number; + requestOperation: string; + requestTarget: string; + resourcesUsed?: ServiceCallResourceUsed[]; + responseCode: number; + responseData?: { [id: string]: string }; + rpcTrace?: string; + scaleFactor: number; + secure: Secure; + treeId: fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/Sensor.pdsc + + export interface Sensor { + lastResetTime: number; + metrics: Attribute[]; + name: string; + properties: { [id: string]: string }; + tags?: string[]; + type: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ServerEvent.pdsc + + export interface ServerEvent { + serverHostName: string; + portNumber: number; + averageCallCount: number; + averageLatency: number; + averageErrorCount: number; + averageQuarantineDuration: number; + averageTransmissionPoints: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ServerSideRenderEvent.pdsc + + export interface ServerSideRenderEvent { + header: EventHeader; + renderType: RenderType; + renderEngine: string; + renderEngineVersion: string; + renderTarget: string; + renderTargetFetchData?: FetchData; + layoutTarget?: string; + layoutTargetFetchData?: FetchData; + timeToFirstByteMs?: number; + timeToGetHeadersMs?: number; + timeToFirstByteInMs?: number; + renderTimeMs: number; + renderStatus: number; + renderError?: string; + queueTimeMs: number; + totalTimeMs: number; + treeId?: fixed_16; + requestId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ServiceCallEvent.pdsc + + export interface ServiceCallEvent { + caller: Caller; + callerServicePrincipalUrn?: string; + callerRequestId: number; + callerTaskId?: number; + clientGenerated: boolean; + context: { [id: string]: string }; + duration: number; + durationNano: number; + error?: string; + header?: EventHeader; + parentTraceData?: ParentTraceData; + performedTasks?: Task[]; + protocol: Protocol; + requestData: { [id: string]: string }; + requestId: number; + requestOperation: string; + requestTarget: string; + resourcesUsed?: ServiceCallResourceUsed[]; + responseCode: number; + responseData?: { [id: string]: string }; + rpcTrace?: string; + scaleFactor: number; + secure: Secure; + treeId: fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ServiceCallResource.pdsc + + export type ServiceCallResource = 'SEARCH_CPU_TIME'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ServiceCallResourceUsed.pdsc + + export interface ServiceCallResourceUsed { + quantity: number; + resource: ServiceCallResource; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/ServiceMetricsEvent.pdsc + + export interface ServiceMetricsEvent { + header?: EventHeader; + sensors: Sensor[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/stackFrame.pdsc + + export interface stackFrame { + call: string; + source: string; + fileName?: string; + lineNumber?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/stackTrace.pdsc + + export interface stackTrace { + threadId?: string; + count: number; + averageCPUTime?: number; + stackFrames: stackFrame[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/StackTraceElement.pdsc + + export interface StackTraceElement { + methodName: string; + className: string; + fileName?: string; + lineNumber?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/StackTraceForAllocation.pdsc + + export interface StackTraceForAllocation { + threadName?: string; + stackTraceElements: StackTraceElement[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/StackTraceFrame.pdsc + + export interface StackTraceFrame { + call: string; + columnNumber?: number; + fileName?: string; + index: number; + lineNumber: number; + nativeMethod: boolean; + source: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/state.pdsc + + export type state = + | 'BLOCKED' + | 'NEW' + | 'RUNNABLE' + | 'TERMINATED' + | 'TIMED_WAITING' + | 'WAITING' + | 'UNAVAILABLE'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/stateInfo.pdsc + + export interface stateInfo { + state: state; + traceIndex: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/Task.pdsc + + export interface Task { + data?: { [id: string]: string }; + duration: number; + name: string; + parentTaskId?: number; + startTime: number; + taskId: number; + taskType?: string; + taskChronos?: { [id: string]: number }; + threadId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/threadStatus.pdsc + + export interface threadStatus { + threadId?: string; + threadStates: stateInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/TreeID.pdsc + + export type TreeID = string; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/UriInfo.pdsc + + export interface UriInfo { + callCount: number; + computedDropRate: number; + currentLatency: number; + errorCount: number; + latencyMetrics?: LatencyMetrics; + outstandingCallCount: number; + portNumber: number; + quarantineDuration?: number; + serverHostName: string; + totalCallCount: number; + transmissionPoints: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/WorkPerformed.pdsc + + export interface WorkPerformed { + bytesTotal: number; + clientInfo: ClientInfo; + description: string; + pageKey: string; + taskCountTotal: number; + taskTimeTotal: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/X509MonitoringEvent.pdsc + + export interface X509MonitoringEvent { + header: EventHeader; + os: X509MonitoringOS; + osVersion: string; + targetType: X509MonitoringTestSubject; + targetService?: string; + failures: string[]; + systemUpTime?: number; + cfengineLastUpdatedTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/monitoring/X509MonitoringOS.pdsc + + export type X509MonitoringOS = 'LINUX' | 'SOLARIS' | 'MACOSX'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/X509MonitoringTestSubject.pdsc + + export type X509MonitoringTestSubject = 'HOST' | 'SERVICE' | 'TRUSTSTORE'; + namespace Sshcertificates { + // Generated from: com/linkedin/avro2pegasus/events/monitoring/sshcertificates/IdentityProvider.pdsc + + export type IdentityProvider = 'FORTRESS' | 'INFOWORKER'; + // Generated from: com/linkedin/avro2pegasus/events/monitoring/sshcertificates/SSHCertificateIssuedEvent.pdsc + + export interface SSHCertificateIssuedEvent { + header: Com.Linkedin.Avro2pegasus.Events.Monitoring.EventHeader; + sudoCertificateContent: string; + sudoCertificateIssueTime: number; + sudoCertificateExpirationTime: number; + sshCertificateContent: string; + sshCertificateIssueTime: number; + sshCertificateExpirationTime: number; + corpUserUrn: string; + identityProvider: IdentityProvider; + clientIPAddress: Com.Linkedin.Avro2pegasus.Events.IPAddress; + } + } + } + namespace Mynetwork { + // Generated from: com/linkedin/avro2pegasus/events/mynetwork/ActionTypeEnum.pdsc + + export type ActionTypeEnum = 'CONNECT' | 'ACCEPT'; + // Generated from: com/linkedin/avro2pegasus/events/mynetwork/ConnectionSuggestion.pdsc + + export interface ConnectionSuggestion { + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + suggestedUrn: string; + actionTypeShown: ActionTypeEnum; + } + // Generated from: com/linkedin/avro2pegasus/events/mynetwork/ConnectionSuggestionComposeSendEvent.pdsc + + export interface ConnectionSuggestionComposeSendEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + suggestionsCount: number; + receiverUrn: string; + isPreFilledMessageEdited: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/mynetwork/ConnectionSuggestionReceiverActionEvent.pdsc + + export interface ConnectionSuggestionReceiverActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: ActionTypeEnum; + } + // Generated from: com/linkedin/avro2pegasus/events/mynetwork/ConnectionSuggestionReceiverImpressionEvent.pdsc + + export interface ConnectionSuggestionReceiverImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + senderUrn: string; + suggestions: ConnectionSuggestion[]; + } + } + namespace Nativerum { + // Generated from: com/linkedin/avro2pegasus/events/nativerum/AppLaunchEventEntry.pdsc + + export interface AppLaunchEventEntry { + appLaunchMode: Com.Linkedin.Avro2pegasus.Events.AppLaunchMode; + startTimestamp?: number; + duration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/nativerum/CacheLookupEventEntry.pdsc + + export interface CacheLookupEventEntry { + requestUrl: string; + requestType: RequestType; + cacheLookUpStatus: cacheLookupStatus; + cacheLookupTimingEntries: CacheLookupTimingEntry[]; + } + // Generated from: com/linkedin/avro2pegasus/events/nativerum/CacheLookupPhase.pdsc + + export type CacheLookupPhase = 'MEMORY' | 'DISK'; + // Generated from: com/linkedin/avro2pegasus/events/nativerum/cacheLookupStatus.pdsc + + export type cacheLookupStatus = 'HIT' | 'MISS'; + // Generated from: com/linkedin/avro2pegasus/events/nativerum/CacheLookupTimingEntry.pdsc + + export interface CacheLookupTimingEntry { + cacheLookupPhase: CacheLookupPhase; + startTimestamp: number; + duration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/nativerum/DataProcessingEventEntry.pdsc + + export interface DataProcessingEventEntry { + requestUrl: string; + requestType: RequestType; + dataProcessingTimingEntries: DataProcessingTimingEntry[]; + } + // Generated from: com/linkedin/avro2pegasus/events/nativerum/DataProcessingPhase.pdsc + + export type DataProcessingPhase = 'PARSE' | 'TRANSFORM' | 'BIND'; + // Generated from: com/linkedin/avro2pegasus/events/nativerum/DataProcessingTimingEntry.pdsc + + export interface DataProcessingTimingEntry { + dataProcessingPhase: DataProcessingPhase; + startTimestamp: number; + duration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/nativerum/httpProtocol.pdsc + + export type httpProtocol = 'HTTP0_9' | 'HTTP1_0' | 'HTTP1_1' | 'HTTP2' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/nativerum/NativePageLoadEvent.pdsc + + export interface NativePageLoadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + pageLoadStartTimestamp: number; + pageLoadDuration: number; + pageLoadMode?: pageLoadMode; + appLaunchEventEntries?: AppLaunchEventEntry[]; + networkEventEntries: NetworkEventEntry[]; + cacheLookupEventEntries: CacheLookupEventEntry[]; + dataProcessingEventEntries: DataProcessingEventEntry[]; + initializationPageKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/nativerum/NetworkEventEntry.pdsc + + export interface NetworkEventEntry { + requestUrl: string; + requestType: RequestType; + requestStatus: requestStatus; + networkTimingEntries?: NetworkTimingEntry[]; + serverProcessingDuration?: number; + requestSize?: number; + responseSize?: number; + httpStatusCode?: number; + httpProtocol: httpProtocol; + transportProtocol: transportProtocol; + requestTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + pointOfPresenceId?: string; + isSocketReused?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/nativerum/NetworkPhase.pdsc + + export type NetworkPhase = + | 'QUEUE' + | 'DNS_LOOKUP' + | 'TCP_CONNECT' + | 'SSL_HANDSHAKE' + | 'REQUEST_UPLOAD' + | 'FIRST_BYTE' + | 'H2_SERVER_PUSH' + | 'REQUEST'; + // Generated from: com/linkedin/avro2pegasus/events/nativerum/NetworkTimingEntry.pdsc + + export interface NetworkTimingEntry { + networkPhase: NetworkPhase; + startTimestamp: number; + duration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/nativerum/pageLoadMode.pdsc + + export type pageLoadMode = 'LAUNCH' | 'SUBSEQUENT'; + // Generated from: com/linkedin/avro2pegasus/events/nativerum/requestStatus.pdsc + + export type requestStatus = 'SUCCESS' | 'FAIL' | 'TIMEOUT' | 'CANCEL'; + // Generated from: com/linkedin/avro2pegasus/events/nativerum/RequestType.pdsc + + export type RequestType = 'DATA' | 'IMAGE' | 'THIRD_PARTY'; + // Generated from: com/linkedin/avro2pegasus/events/nativerum/transportProtocol.pdsc + + export type transportProtocol = 'TCP' | 'QUIC' | 'UNKNOWN'; + } + namespace Nearby { + // Generated from: com/linkedin/avro2pegasus/events/nearby/NearbyPeopleActionEvent.pdsc + + export interface NearbyPeopleActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + senderUrn: string; + receiverUrn: string; + distance: number; + commonConnectionCount: number; + actionType: NearbyPeopleIntentActionType; + timeSinceLastUpdate: number; + } + // Generated from: com/linkedin/avro2pegasus/events/nearby/NearbyPeopleIntentActionType.pdsc + + export type NearbyPeopleIntentActionType = 'ACCEPT' | 'IGNORE' | 'CREATE'; + } + namespace Newsle { + // Generated from: com/linkedin/avro2pegasus/events/newsle/IncorrectMentionedEntityFeedbackEvent.pdsc + + export interface IncorrectMentionedEntityFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mentionedEntityUrn: string; + reportingMemberUrn: string; + articleUrn: string; + referringApp?: string; + } + } + namespace Notifications { + // Generated from: com/linkedin/avro2pegasus/events/notifications/EdgeSettingChangeActionEvent.pdsc + + export interface EdgeSettingChangeActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + currentValue: EdgeSettingOptionType; + newValue: EdgeSettingOptionType; + edgeSettingUrn: string; + consumerPageKey: string; + notificationTypeUrn?: string; + notification?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/notifications/EdgeSettingOptionType.pdsc + + export type EdgeSettingOptionType = 'ALL' | 'HIGHLIGHTS' | 'NONE'; + // Generated from: com/linkedin/avro2pegasus/events/notifications/MobilePushEnablementWidgetImpressionEvent.pdsc + + export interface MobilePushEnablementWidgetImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sourcePageKey: string; + pushEnablementWidgetDisplayCounter: number; + recipientUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/notifications/NotificationCategory.pdsc + + export type NotificationCategory = 'INAPP' | 'EMAIL' | 'PUSH'; + // Generated from: com/linkedin/avro2pegasus/events/notifications/NotificationFeedbackEvent.pdsc + + export interface NotificationFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + notificationLiked?: boolean; + customFeedback?: string; + entryAction: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + notification: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/notifications/NotificationSettingChangeActionEvent.pdsc + + export interface NotificationSettingChangeActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + currentValue: string; + newValue: string; + notificationTypeUrn: string; + notification?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + category?: NotificationCategory; + } + } + namespace Nus { + // Generated from: com/linkedin/avro2pegasus/events/nus/ActivityAggregationType.pdsc + + export type ActivityAggregationType = + | 'none' + | 'verb_object' + | 'actor_verb' + | 'verb_only' + | 'actor_only' + | 'other' + | 'unknown'; + // Generated from: com/linkedin/avro2pegasus/events/nus/DataTreeRecord.pdsc + + export interface DataTreeRecord { + name: string; + value?: string; + children?: DataTreeRecord[]; + } + // Generated from: com/linkedin/avro2pegasus/events/nus/FeedOrderBy.pdsc + + export type FeedOrderBy = 'time' | 'relevance'; + // Generated from: com/linkedin/avro2pegasus/events/nus/MFeedEntityType.pdsc + + export type MFeedEntityType = 'MEMBER' | 'COMPANY' | 'ANET' | 'NUS'; + // Generated from: com/linkedin/avro2pegasus/events/nus/NetworkUpdateEvent.pdsc + + export interface NetworkUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + source: Com.Linkedin.Avro2pegasus.Events.EntityID; + updateId: string; + updateType: string; + updateSubtype: string; + visibility: string; + primaryUrl: string; + destinations: Com.Linkedin.Avro2pegasus.Events.EntityID[]; + targets: Target[]; + privateTargets: Com.Linkedin.Avro2pegasus.Events.EntityID[]; + references: Com.Linkedin.Avro2pegasus.Events.EntityID[]; + content: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/nus/NetworkUpdateSingleRawEvent.pdsc + + export interface NetworkUpdateSingleRawEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + updateId: string; + entityType: MFeedEntityType; + entityId: number; + updateType: UpdateInfoType; + date: number; + updateData: DataTreeRecord; + persisted: boolean; + deleted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/nus/NusActivity.pdsc + + export interface NusActivity { + activityId: string; + timestamp: number; + rowPosition: number; + actorId: string; + actorType: string; + verbType: string; + objectId?: string; + objectType?: string; + isPublic: boolean; + isFolloweeOfPoster: boolean; + distanceFromViewer?: number; + isCollapsed: boolean; + totalLikes: number; + totalComments: number; + customProperties: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/nus/NusActivityClickEvent.pdsc + + export interface NusActivityClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + actionName: string; + actionType: string; + contextId: string; + aggregationType: ActivityAggregationType; + feedPosition?: number; + rowPosition?: number; + activityId?: string; + actorId?: string; + actorType?: string; + verbType?: string; + objectId?: string; + objectType?: string; + isPublic?: boolean; + isFolloweeOfPoster?: boolean; + distanceFromViewer?: number; + customProperties: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/nus/NusActivityImpressionEvent.pdsc + + export interface NusActivityImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + contextId: string; + query: string; + categories: string[]; + orderBy: FeedOrderBy; + items: NusItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/nus/NusComponentActivityEvent.pdsc + + export interface NusComponentActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + actionType: string; + componentVersion: number; + pageKey: string; + content: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/nus/NusImpressionSetEvent.pdsc + + export interface NusImpressionSetEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + pageNumber?: number; + query?: string; + categories?: string[]; + orderBy?: string; + impressions: Com.Linkedin.Avro2pegasus.Events.Impression.ImpressionDetails[]; + } + // Generated from: com/linkedin/avro2pegasus/events/nus/NusItem.pdsc + + export interface NusItem { + feedPosition: number; + aggregationType: ActivityAggregationType; + numActivities: number; + commonVerbType?: string; + activities: NusActivity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/nus/Target.pdsc + + export interface Target { + destination: Com.Linkedin.Avro2pegasus.Events.EntityID; + visibility: string; + } + // Generated from: com/linkedin/avro2pegasus/events/nus/UpdateInfoType.pdsc + + export type UpdateInfoType = + | 'ROOT_UPDATE' + | 'CONNECTION_UPDATE' + | 'NEW_CONNECTION_UPDATE' + | 'QUESTION_UPDATE' + | 'ANSWER_UPDATE' + | 'RECOMMENDED_EXPERT_UPDATE' + | 'NEWS_GROUP_UPDATE' + | 'NEWS_ITEM_UPDATE' + | 'NEWS_SUMMARY_UPDATE' + | 'PROFILE_UPDATE' + | 'SERVICE_PROVIDER_RECOMMENDATION' + | 'PICTURE_UPDATE' + | 'STATUS_UPDATE' + | 'CLEAR_STATUS_UPDATE' + | 'JOIN_GROUP_UPDATE' + | 'PERSON_RECOMMENDATION' + | 'CONTACT_CONFIRMED_EMAIL_UPDATE' + | 'DISCUSSION_UPDATE' + | 'RECOMMENDED_ITEM_UPDATE' + | 'APPLICATION_UPDATE' + | 'APPLICATION_MEMBER_UPDATE' + | 'JOB_POST_UPDATE' + | 'NEW_GROUP_MEMBER_UPDATE' + | 'ANET_CHANNEL_UPDATE' + | 'ANET_MGMT_MEMBER_UPDATE' + | 'COMPANY_EDIT_UPDATE' + | 'COMPANY_ADD_UPDATE' + | 'STATUS_COMMENT_UPDATE' + | 'ANET_NEWS_FEED_UPDATE' + | 'UNIVERSAL_UPDATE' + | 'SEARCH_FACETS' + | 'TRENDING_LINKS' + | 'DIGEST_ANSWER_UPDATE' + | 'DIGEST_COMPANY_UPDATE' + | 'DIGEST_EDUCATION_UPDATE' + | 'DIGEST_PICTURE_UPDATE' + | 'DIGEST_CONNECTION_UPDATE' + | 'DIGEST_GROUP_MULTIPLE_GROUPS_UPDATE' + | 'DIGEST_GROUP_MULTIPLE_CONNS_UPDATE' + | 'DIGEST_QUESTION_UPDATE' + | 'DIGEST_DISCUSSION_UPDATE' + | 'DIGEST_RECOMMENDED_ITEM_UPDATE' + | 'GENERIC_UPDATE_DIGEST' + | 'DIGEST_JOB_POST_UPDATE' + | 'DIGEST_NEW_GROUP_MEMBER_UPDATE' + | 'DIGEST_COMPANY_PROFILE_UPDATE' + | 'DIGEST_UNIVERSAL_UPDATE' + | 'DIGEST_AGGREGATED_UPDATE' + | 'AGGREATE_UPDATE' + | 'AGGREGATE_GROUP' + | 'AGGREGATE_FEED_UDPATE' + | 'FEED_EVENT' + | 'META' + | 'MEMBER_CHANNEL_DETAIL' + | 'ANET_CHANNEL_DETAIL'; + } + namespace Nymk { + // Generated from: com/linkedin/avro2pegasus/events/nymk/NetworkMemberInvitationStatus.pdsc + + export type NetworkMemberInvitationStatus = + | 'NONE' + | 'CONNECTED' + | 'INVITE_SENT' + | 'INVITE_RECEIVED' + | 'INVITE_ALREADY_SENT' + | 'INVITE_ALREADY_RECEIVED'; + // Generated from: com/linkedin/avro2pegasus/events/nymk/NetworkType.pdsc + + export type NetworkType = + | 'SAME_SCHOOL' + | 'SAME_COMPANY' + | 'SAME_SUPERTITLE_REGION' + | 'SAME_INDUSTRY_SECTOR_REGION' + | 'SAME_TITLE_REGION'; + // Generated from: com/linkedin/avro2pegasus/events/nymk/NetworkYouMayKnowActionEvent.pdsc + + export interface NetworkYouMayKnowActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + memberUrn: string; + networkId: string; + networkType: NetworkType; + networkMemberInvitationStatusArray?: NetworkYouMayKnowInvitationStatus[]; + networkYouMayKnowInvitationStatusArray?: NetworkYouMayKnowInvitationStatus[]; + actionType: NetworkYouMayKnowActionType; + positionInNetworkYouMayKnowArray?: number; + sharedNodeUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/nymk/NetworkYouMayKnowActionType.pdsc + + export type NetworkYouMayKnowActionType = 'INVITE' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/nymk/NetworkYouMayKnowInvitationStatus.pdsc + + export interface NetworkYouMayKnowInvitationStatus { + networkMemberUrn: string; + networkMemberInvitationStatus: NetworkMemberInvitationStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/nymk/NetworkYouMayKnowViewEvent.pdsc + + export interface NetworkYouMayKnowViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + memberUrn: string; + networkId: string; + networkType: NetworkType; + networkMemberInvitationStatusArray?: NetworkYouMayKnowInvitationStatus[]; + networkYouMayKnowInvitationStatusArray?: NetworkYouMayKnowInvitationStatus[]; + } + // Generated from: com/linkedin/avro2pegasus/events/nymk/NetworkYouMayKnowViewV2Event.pdsc + + export interface NetworkYouMayKnowViewV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + memberUrn: string; + networkYouMayKnowUrn: string; + networkYouMayKnowInvitationStatusArray: NetworkYouMayKnowInvitationStatus[]; + positionInNetworkYouMayKnowArray?: number; + sharedNodeUrn?: string; + } + } + namespace Oms { + namespace Dm { + namespace Pub { + namespace Report { + // Generated from: com/linkedin/avro2pegasus/events/oms/dm/pub/report/RecurrenceInfo.pdsc + + export interface RecurrenceInfo { + recurrenceId?: number; + recurrenceType: RecurrenceType; + interval?: number; + gracePeriod?: number; + trialPeriod?: number; + description?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/oms/dm/pub/report/RecurrenceType.pdsc + + export type RecurrenceType = 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'ANNUAL' | 'CUSTOM'; + } + } + } + } + namespace Opento { + // Generated from: com/linkedin/avro2pegasus/events/opento/OpenToJobOpportunitiesConcludedEvent.pdsc + + export interface OpenToJobOpportunitiesConcludedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + duration: number; + } + } + namespace Operationalalerts { + // Generated from: com/linkedin/avro2pegasus/events/operationalalerts/AdditionalActions.pdsc + + export interface AdditionalActions { + issueId: string; + issueType: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.IssueType; + description: string; + } + // Generated from: com/linkedin/avro2pegasus/events/operationalalerts/AlertNotificationDetail.pdsc + + export interface AlertNotificationDetail { + subscribers: string[]; + irisPlanName?: string; + irisIncidentID?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/operationalalerts/EntityDetails.pdsc + + export interface EntityDetails { + entityId: number; + entityName: string; + entityType: EntityType; + platform: Platform; + source: Source; + cluster: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.Cluster; + } + // Generated from: com/linkedin/avro2pegasus/events/operationalalerts/EntityType.pdsc + + export type EntityType = + | 'HDFS' + | 'HIVE' + | 'DALI' + | 'MYSQL' + | 'PINOT' + | 'KAFKA' + | 'POSTGRESQL' + | 'SALESFORCE' + | 'SQLSERVER' + | 'ORACLE' + | 'ESPRESSO' + | 'AZKABAN' + | 'APPLICATION'; + // Generated from: com/linkedin/avro2pegasus/events/operationalalerts/OiaAuditEvent.pdsc + + export interface OiaAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + id: number; + entityDetails: EntityDetails; + alertPolicyType: string; + entityStatus: string; + entityStatusReason: string; + alertedTime: number; + alertNotificationDetail: AlertNotificationDetail; + additionalActions?: AdditionalActions; + } + // Generated from: com/linkedin/avro2pegasus/events/operationalalerts/Platform.pdsc + + export type Platform = 'UMP' | 'GOBBLIN' | 'FETL' | 'XLNT' | 'AZKABAN' | 'ADHOC'; + // Generated from: com/linkedin/avro2pegasus/events/operationalalerts/Source.pdsc + + export type Source = 'WIMD' | 'AZKABAN' | 'ADHOC'; + } + namespace Opportunitymarketplace { + // Generated from: com/linkedin/avro2pegasus/events/opportunitymarketplace/MarketplaceActionEvent.pdsc + + export interface MarketplaceActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + marketplaceActionType: MarketplaceActionType; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + conversationUrn?: string; + threadUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/opportunitymarketplace/MarketplaceActionType.pdsc + + export type MarketplaceActionType = 'MESSAGE_CLICKED' | 'RECOMMENDATION_REJECTED' | 'MESSAGE_SENT'; + // Generated from: com/linkedin/avro2pegasus/events/opportunitymarketplace/MarketplaceImpressionEvent.pdsc + + export interface MarketplaceImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + recommendedEntityUrn?: string; + viewerRole?: Com.Linkedin.Avro2pegasus.Common.Opportunitymarketplace.MarketplaceRole; + } + // Generated from: com/linkedin/avro2pegasus/events/opportunitymarketplace/MarketplaceServedEvent.pdsc + + export interface MarketplaceServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + recipientUrn: string; + recommendationUrn: string; + marketplaceType?: Com.Linkedin.Avro2pegasus.Common.Opportunitymarketplace.MarketplaceType; + recommendationType: RecommendationType; + score: number; + generatedTime: number; + expiryTime: number; + modelId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/opportunitymarketplace/MarketplaceSignupEvent.pdsc + + export interface MarketplaceSignupEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + marketplaceType: Com.Linkedin.Avro2pegasus.Common.Opportunitymarketplace.MarketplaceType; + marketplaceRole: Com.Linkedin.Avro2pegasus.Common.Opportunitymarketplace.MarketplaceRole; + origin: MarketplaceSignupOrigin; + campaignCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/opportunitymarketplace/MarketplaceSignupOrigin.pdsc + + export type MarketplaceSignupOrigin = 'LINK' | 'PROFILE_DASHBOARD' | 'JOBS_HERO' | 'TAKEOVER'; + // Generated from: com/linkedin/avro2pegasus/events/opportunitymarketplace/RecommendationType.pdsc + + export type RecommendationType = + | 'MENTEE_RECOMMENDATION' + | 'MENTOR_RECOMMENDATION' + | 'PRECOMPUTED_MENTEE_RECOMMENDATION' + | 'PRECOMPUTED_MENTOR_RECOMMENDATION' + | 'ENTREPRENEUR_RECOMMENDATION' + | 'INVESTOR_RECOMMENDATION'; + } + namespace Organization { + // Generated from: com/linkedin/avro2pegasus/events/organization/CompanySalaryImpressionEvent.pdsc + + export interface CompanySalaryImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + } + namespace Passwordinvalidation { + // Generated from: com/linkedin/avro2pegasus/events/passwordinvalidation/LeakedPasswordInvalidationEvent.pdsc + + export interface LeakedPasswordInvalidationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + processingResult: ProcessingResult; + partnerId: string; + breachId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/passwordinvalidation/ProcessingResult.pdsc + + export type ProcessingResult = + | 'ACCOUNT_DID_NOT_EXIST' + | 'RATE_LIMITED' + | 'PASSWORD_MATCHED' + | 'PASSWORD_ALREADY_INVALIDATED' + | 'PASSWORD_DID_NOT_MATCH'; + } + namespace Payments { + // Generated from: com/linkedin/avro2pegasus/events/payments/ApplicationChannel.pdsc + + export type ApplicationChannel = + | 'WEBSITE' + | 'APP_IOS' + | 'APP_ANDROID' + | 'TOUCHWEB' + | 'API' + | 'CS_TOOL' + | 'ENTERPRISE_PORTAL' + | 'ORACLE_BATCH' + | 'SLIM' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/payments/AutoProvisioningService.pdsc + + export type AutoProvisioningService = 'CAP' | 'EIS' | 'EPP'; + // Generated from: com/linkedin/avro2pegasus/events/payments/CheckoutAttemptedStep.pdsc + + export type CheckoutAttemptedStep = 'PURCHASE_PAGE_VISIT'; + // Generated from: com/linkedin/avro2pegasus/events/payments/CommerceCheckoutVisitEvent.pdsc + + export interface CommerceCheckoutVisitEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + userRequestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + cartUrns: string[]; + productFamily?: string; + visitedTime: number; + attemptedStep: CheckoutAttemptedStep; + reacquireType: ReacquireType; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/CommerceCustomerReacquireEvent.pdsc + + export interface CommerceCustomerReacquireEvent { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + commerceCheckoutVisitEvent: CommerceCheckoutVisitEvent; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/CompanyWalletErrorEvent.pdsc + + export interface CompanyWalletErrorEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + financeDocumentUrn: string; + exceptionClass: string; + exceptionMessage: string; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/CompanyWalletEvent.pdsc + + export interface CompanyWalletEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + financeDocumentUrn: string; + eventType: CompanyWalletEventType; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/CompanyWalletEventType.pdsc + + export type CompanyWalletEventType = + | 'START_ONBOARDING' + | 'REDIRECT_TO_SIGNUP' + | 'SECURED_ONBOARD' + | 'FOUND_DEFAULT_PAYMENT_METHOD' + | 'NO_DEFAULT_PAYMENT_METHOD_FOUND' + | 'GET_PAYMENT_ACCOUNT' + | 'CREATE_PAYMENT_ACCOUNT' + | 'GET_PAYMENT_ACCOUNT_ADDRESS' + | 'CREATE_PAYMENT_ACCOUNT_ADDRESS' + | 'UPDATE_FIN_DOC_WITH_BILLING_ADMIN' + | 'SHOW_PAYMENT_METHOD_ADD_EDIT_VIEW' + | 'ADD_AND_UPDATE_PAYMENT_METHOD' + | 'CREATE_CART_TO_ADD_PAYMENT_METHOD' + | 'ADD_AND_UPDATE_PAYMENT_METHOD_COMPLETE' + | 'ADD_PAYMENT_METHOD_FOR_FIN_DOC' + | 'CHANGE_PAYMENT_METHOD_FOR_FIN_DOC' + | 'ADD_PAYMENT_METHOD_FOR_FIN_DOC_COMPLETE' + | 'CHANGE_PAYMENT_METHOD_FOR_FIN_DOC_COMPLETE' + | 'ONBOARDING_COMPLETE'; + // Generated from: com/linkedin/avro2pegasus/events/payments/CompletionCode.pdsc + + export type CompletionCode = + | 'SUCCESS' + | 'SOFT_ERROR_1' + | 'SOFT_ERROR_2' + | 'SOFT_ERROR_3' + | 'SOFT_ERROR_4' + | 'SOFT_ERROR_5' + | 'HARD_ERROR_1' + | 'HARD_ERROR_2' + | 'VC_SOFTERROR1' + | 'VC_HARDERROR1' + | 'ACCTBAL_HARDERROR1' + | 'NOCCINFO' + | 'HARD_ERROR_NTWK' + | 'HARD_ERROR_GTWY' + | 'RETRYABLE_HARD_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/payments/CreditCardType.pdsc + + export type CreditCardType = 'AMERICAN_EXPRESS' | 'MASTERCARD' | 'VISA' | 'DISCOVER' | 'DINERS_CLUB' | 'JCB'; + // Generated from: com/linkedin/avro2pegasus/events/payments/FailureType.pdsc + + export type FailureType = 'EXECUTION_ERROR' | 'UNSUPPORTED_REQUEST'; + // Generated from: com/linkedin/avro2pegasus/events/payments/FulfillmentStatus.pdsc + + export type FulfillmentStatus = 'NOT_FULFILLED' | 'FULFILLED' | 'CANCELED' | 'ERROR' | 'CANCELLING_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/payments/InAppPaymentEvent.pdsc + + export interface InAppPaymentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + eventType: PaymentEventType; + chooserSessionStartPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + isOmsFulfillmentRetry: boolean; + orderUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/JobPostingAccountBalancesUpdatedEvent.pdsc + + export interface JobPostingAccountBalancesUpdatedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + accountBalanceTypes?: Com.Linkedin.Avro2pegasus.Events.Common.Payments.JobPostingAccountBalanceType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/ManualProvisioningNotification.pdsc + + export type ManualProvisioningNotification = + | 'SALESFORCE_CASE_CREATED' + | 'PROVISIONING_EMAIL_SENT' + | 'NOT_REQUIRED' + | 'NOTIFY_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/payments/OnlineApplicationChannel.pdsc + + export type OnlineApplicationChannel = 'WEBSITE' | 'APP_IOS' | 'APP_ANDROID' | 'TOUCHWEB' | 'API' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/payments/OrderLifecycleEvent.pdsc + + export interface OrderLifecycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + orderUrn: string; + orderInfoVersion: number; + orderType: OrderType; + orderSubtype: OrderSubtype; + buyerUrn?: string; + state?: string; + isTestUser?: boolean; + placedTime?: number; + fulfilledTime?: number; + billingCountry?: string; + profileCountry?: string; + ipCountry?: string; + locale?: string; + refundReasonCode?: RefundReason; + paymentAmount?: PaymentAmount; + paymentInfo?: PaymentInfo; + receiptUrn?: string; + transactionChannel?: TransactionChannel; + applicationChannel?: ApplicationChannel; + additionalOrderLines?: OrderLineInfo[]; + primaryOrderLine?: OrderLineInfo; + renewalInfo?: RenewalInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/OrderLineInfo.pdsc + + export interface OrderLineInfo { + orderLineUrn: string; + ownerUrn?: string; + lineItemType: string; + serviceUrn?: string; + productUrn?: string; + productFamily?: string; + productCode?: string; + priceUrn?: string; + promotionUrn?: string; + promotionName?: string; + paymentAmount?: PaymentAmount; + fulfillmentStatus?: FulfillmentStatus; + fulfilledTime?: number; + recurrenceInfo?: RecurrenceInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/OrderSubtype.pdsc + + export type OrderSubtype = + | 'NONE' + | 'FIRST_CHARGE' + | 'SOFT_ERROR_RETRY' + | 'HARD_ERROR_RETRY' + | 'REACTIVATED_CHARGE'; + // Generated from: com/linkedin/avro2pegasus/events/payments/OrderType.pdsc + + export type OrderType = + | 'PURCHASE_ORDER' + | 'WORK_ORDER' + | 'REFUND_ORDER' + | 'CS_ORDER' + | 'INVOICE_ORDER' + | 'TRIAL_ORDER' + | 'TEMPLATE_PURCHASE_ORDER' + | 'OFFLINE_ORDER'; + // Generated from: com/linkedin/avro2pegasus/events/payments/PaymentAmount.pdsc + + export interface PaymentAmount { + originAmount?: number; + originCurrency?: string; + taxAmount?: number; + taxCurrency?: string; + taxType?: TaxType; + usdAmount?: number; + exchangeRate?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/PaymentEventType.pdsc + + export type PaymentEventType = + | 'IAP_PAYMENT_SUCCESS' + | 'IAP_PAYMENT_CANCEL' + | 'IAP_PAYMENT_PROCESSING' + | 'IAP_PRICE_FETCH_FAILED' + | 'IAP_PRICE_FETCH_INVALID_PRODUCT' + | 'OMS_PAYMENT_SUCCESS' + | 'OMS_PAYMENT_FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/payments/PaymentInfo.pdsc + + export interface PaymentInfo { + gateway?: string; + gatewayResponseCode?: number; + completionCode?: CompletionCode; + internalResponseCode?: string; + routing?: string; + creditCardType?: CreditCardType; + paymentType?: PaymentType; + paymentInstrumentType?: PaymentInstrumentType; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/PaymentInstrumentType.pdsc + + export type PaymentInstrumentType = + | 'INVOICE' + | 'CREDIT_CARD' + | 'PAYPAL' + | 'IOS' + | 'SEPA_DIRECT_DEBIT' + | 'ALIPAY'; + // Generated from: com/linkedin/avro2pegasus/events/payments/PaymentsAutoProvisioningFailureEvent.pdsc + + export interface PaymentsAutoProvisioningFailureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + financeContractUrn: string; + opportunityId?: string; + opportunityType?: SalesforceOpportunityType; + autoProvisioningService?: AutoProvisioningService; + failureType: FailureType; + failureReason: string; + manualProvisioningNotification: ManualProvisioningNotification; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/PaymentsAutoProvisioningSuccessEvent.pdsc + + export interface PaymentsAutoProvisioningSuccessEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + financeContractUrn: string; + opportunityId: string; + opportunityType: SalesforceOpportunityType; + autoProvisioningService: AutoProvisioningService; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/PaymentType.pdsc + + export type PaymentType = 'PAYMENT_ACCOUNT' | 'STANDALONE'; + // Generated from: com/linkedin/avro2pegasus/events/payments/RChargeAbortReason.pdsc + + export type RChargeAbortReason = + | 'NO_SOFT_ERROR_RETRY' + | 'NO_HARD_ERROR_RETRY' + | 'SOFT_ERROR_RETRY_LIMIT' + | 'HARD_ERROR_RETRY_LIMIT'; + // Generated from: com/linkedin/avro2pegasus/events/payments/RChargeStatus.pdsc + + export type RChargeStatus = 'IN_PROCESS' | 'SUCCESS' | 'FAIL' | 'ABORT'; + // Generated from: com/linkedin/avro2pegasus/events/payments/ReacquireType.pdsc + + export type ReacquireType = 'SUBS_PURCHASE'; + // Generated from: com/linkedin/avro2pegasus/events/payments/RecurrenceInfo.pdsc + + export interface RecurrenceInfo { + recurrenceUrn?: string; + recurrenceType: RecurrenceType; + description?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/RecurrenceType.pdsc + + export type RecurrenceType = 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'ANNUAL' | 'CUSTOM'; + // Generated from: com/linkedin/avro2pegasus/events/payments/RefundReason.pdsc + + export type RefundReason = + | 'BILLING_ERROR' + | 'BILLING_FREQUENCY_CHANGE' + | 'COMPANY_CARD' + | 'DOWNGRADE' + | 'FRAUD' + | 'PRODUCT_UNSATISFIED' + | 'PRODUCT_TECH_ISSUE' + | 'UPGRADE' + | 'EXCHANGE' + | 'OFFLINE_REFUND' + | 'DUPLICATE_ORDER' + | 'PRODUCT_UNSATISFIED_FUNCTIONALITY' + | 'PRODUCT_AUTORENEWAL_CONFUSION' + | 'PRODUCT_ANNUAL_PRICE_CONFUSION' + | 'PRODUCT_NOT_MEET_JOB_GUARANTEE' + | 'JOBS_REFUND_DUE_TO_POSTAL_CODE_OR_LOCATION_ERROR' + | 'ACCIDENTAL_PURCHASE' + | 'JOBS_CREDITS_TRANSFERRED' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/payments/RenewalInfo.pdsc + + export interface RenewalInfo { + cycleId: number; + cycleStartTime?: number; + cycleEndTime?: number; + cycleAbortTime?: number; + cycleAbortReason?: RChargeAbortReason; + stepTime?: number; + failTime?: number; + resumeTime?: number; + strategyName?: string; + errorRetryCount?: number; + numRchargeAttempts?: number; + status?: RChargeStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/payments/SalesforceOpportunityType.pdsc + + export type SalesforceOpportunityType = + | 'ADD_ON' + | 'NEW_BUSINESS' + | 'RENEWAL' + | 'ADD_ON_NON_CO_TERM' + | 'ADJUSTMENT' + | 'ASSIGNED_ACCOUNT' + | 'BREAKOUT_CHILD' + | 'BREAKOUT_PARENT' + | 'BRIDGE_RENEWAL' + | 'CURRENT_ADVERTISER_CURRENT_LOB_RENEW' + | 'CURRENT_ADVERTISER_CURRENT_LOB_UPSELL' + | 'CURRENT_ADVERTISER_NEW_LOB' + | 'EARLY_RENEWAL' + | 'NEW_ADVERTISER' + | 'NON_SUB_SVCS' + | 'PAST_ADVERTISER_NEW_LOB' + | 'PAST_ADVERTISER_PAST_LOB_REACTIVATION' + | 'PILOT' + | 'PILOT_RENEWAL' + | 'PROMO' + | 'RECOVERED' + | 'REMNANT_BACKFILL' + | 'TRAINING'; + // Generated from: com/linkedin/avro2pegasus/events/payments/TaxType.pdsc + + export type TaxType = 'SALES_TAX' | 'VAT' | 'GST'; + // Generated from: com/linkedin/avro2pegasus/events/payments/TransactionChannel.pdsc + + export type TransactionChannel = 'ONLINE' | 'OFFLINE' | 'FIELD_SALES'; + } + namespace Paymentsfrontend { + // Generated from: com/linkedin/avro2pegasus/events/paymentsfrontend/CheckoutCartActionEvent.pdsc + + export interface CheckoutCartActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + orderUrn: string; + position: number; + autoSelected: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/paymentsfrontend/PaymentMethod.pdsc + + export type PaymentMethod = 'CREDIT_CARD' | 'PAYPAL' | 'SEPA_DIRECT_DEBIT' | 'ALIPAY' | 'IDEAL' | 'SOFORT'; + // Generated from: com/linkedin/avro2pegasus/events/paymentsfrontend/PaymentMethodActionEvent.pdsc + + export interface PaymentMethodActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + paymentMethod: PaymentMethod; + orderUrn: string; + position: number; + } + } + namespace Pem { + // Generated from: com/linkedin/avro2pegasus/events/pem/CoreFeatureDegradation.pdsc + + export interface CoreFeatureDegradation { + degradationKey: string; + degradationReason?: DegradationReason; + downstreamApiErrorCode?: number; + downstreamApiEndpointPath?: string; + downstreamApiCallTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + } + // Generated from: com/linkedin/avro2pegasus/events/pem/CoreFeatureImpressionSampleEvent.pdsc + + export interface CoreFeatureImpressionSampleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + featureKey: string; + degradations?: CoreFeatureDegradation[]; + downstreamRequests?: DownstreamRequest[]; + productName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pem/DegradationReason.pdsc + + export type DegradationReason = 'SERVER_ERROR' | 'TIMEOUT' | 'ABORTED' | 'NETWORK_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/pem/DownstreamRequest.pdsc + + export interface DownstreamRequest { + degradationKey?: string; + degradationReason?: DegradationReason; + responseCode?: number; + endpointPath?: string; + responseCallTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + duration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pem/W3cReportingApiReportEvent.pdsc + + export interface W3cReportingApiReportEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + userRequestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + reportHeader: Com.Linkedin.Avro2pegasus.Events.Common.Pem.W3cReportingApiHeader; + reportContent?: Com.Linkedin.Avro2pegasus.Events.Common.Pem.W3cReportingApiBody; + } + // Generated from: com/linkedin/avro2pegasus/events/pem/W3cReportingApiReportV2Event.pdsc + + export interface W3cReportingApiReportV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + reportHeader: Com.Linkedin.Avro2pegasus.Events.Common.Pem.W3cReportingApiHeader; + reportContent?: Com.Linkedin.Avro2pegasus.Events.Common.Pem.W3cReportingApiBody; + } + } + namespace Pemberly { + // Generated from: com/linkedin/avro2pegasus/events/pemberly/BPRClientRenderEvent.pdsc + + export interface BPRClientRenderEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + bprPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + clientPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + browserDevice?: Com.Linkedin.Avro2pegasus.Events.Common.Webframeworks.BrowserDeviceStats; + } + // Generated from: com/linkedin/avro2pegasus/events/pemberly/BPRRenderModeType.pdsc + + export type BPRRenderModeType = 'BIGPIPE' | 'SSR' | 'VANILLA' | 'SSRPIPE' | 'SSRFAST' | 'SSRLITE' | 'SSRSEO'; + // Generated from: com/linkedin/avro2pegasus/events/pemberly/BPRResponseEvent.pdsc + + export interface BPRResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + bprPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + clientPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + url: string; + responseCode: number; + mode: BPRRenderModeType; + } + } + namespace Peoplecard { + // Generated from: com/linkedin/avro2pegasus/events/peoplecard/PeopleCardDisplayFlow.pdsc + + export type PeopleCardDisplayFlow = 'SYNC' | 'ASYNC'; + // Generated from: com/linkedin/avro2pegasus/events/peoplecard/PeopleCardDisplayInConsumerOutlookEvent.pdsc + + export interface PeopleCardDisplayInConsumerOutlookEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + msftConsumerMemberId: string; + viewerMemberUrn?: string; + vieweeMemberUrns: string[]; + encryptedVieweeEmailAddress?: string; + encryptedVieweeDisplayName?: string; + viewerRegistrationTime?: number; + encryptedIpAddress?: string; + userAgent?: string; + isInteracted?: boolean; + restrictionStatus?: RestrictionStatus; + isScoredForAbuse: boolean; + displayFlow: PeopleCardDisplayFlow; + hashedVieweeEmailAddress?: string; + hashedVieweeDisplayName?: string; + hashedViewerIpAddress?: string; + requestTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/peoplecard/PeopleCardDisplayInEnterpriseOutlookEvent.pdsc + + export interface PeopleCardDisplayInEnterpriseOutlookEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hashedMicrosoftEnterpriseMemberId?: string; + vieweeMemberUrns: string[]; + viewerMemberUrn?: string; + requestTime?: number; + hashedIpSubnet?: string; + isMicrosoftMemberTrial?: boolean; + microsoftEnterpriseTenantId?: string; + isDisplayAllowed?: boolean; + displayFlow: PeopleCardDisplayFlow; + isScoredForAbuse?: boolean; + encryptedVieweeEmailAddress?: string; + encryptedVieweeDisplayName?: string; + hashedVieweeEmailAddress?: string; + hashedVieweeDisplayName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/peoplecard/PeopleCardRequestType.pdsc + + export type PeopleCardRequestType = + | 'PREBIND_CONSUMER' + | 'POSTBIND_CONSUMER' + | 'PREBIND_ENTERPRISE' + | 'POSTBIND_ENTERPRISE'; + // Generated from: com/linkedin/avro2pegasus/events/peoplecard/PeopleCardSearchRequestEvent.pdsc + + export interface PeopleCardSearchRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchId: string; + requestType: PeopleCardRequestType; + hasExactEmailMatch: boolean; + numberOfProfileResults: number; + rankOfExactMatchResult?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/peoplecard/RestrictionStatus.pdsc + + export type RestrictionStatus = 'PREFERRED' | 'BASIC' | 'BASIC_MINUS' | 'SUSPEND'; + } + namespace Perf { + // Generated from: com/linkedin/avro2pegasus/events/perf/ConcatBundle.pdsc + + export interface ConcatBundle { + concatGroupName?: string; + concatGroupFiles: string[]; + concatGroupType: ConcatGroupType; + } + // Generated from: com/linkedin/avro2pegasus/events/perf/ConcatGroupType.pdsc + + export type ConcatGroupType = 'CSS' | 'JS'; + // Generated from: com/linkedin/avro2pegasus/events/perf/StaticContentBundlingEvent.pdsc + + export interface StaticContentBundlingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + concatBundles: ConcatBundle[]; + originTrackingInfo: Com.Linkedin.Avro2pegasus.Events.OriginTrackingInfo; + } + } + namespace Performance { + // Generated from: com/linkedin/avro2pegasus/events/performance/ConnectionType.pdsc + + export type ConnectionType = + | 'BLUETOOTH' + | 'CELLULAR' + | 'ETHERNET' + | 'MIXED' + | 'NONE' + | 'OTHER' + | 'UNKNOWN' + | 'WIFI' + | 'WIMAX'; + // Generated from: com/linkedin/avro2pegasus/events/performance/EffectiveConnectionType.pdsc + + export type EffectiveConnectionType = 'SLOW_2G' | 'TWO_G' | 'THREE_G' | 'FOUR_G'; + // Generated from: com/linkedin/avro2pegasus/events/performance/ExperimentalPerformanceTimingEvent.pdsc + + export interface ExperimentalPerformanceTimingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + performanceTimingArray: Com.Linkedin.Avro2pegasus.Events.PerformanceTimingItems[]; + userSessionId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/performance/NetworkInformationHeader.pdsc + + export interface NetworkInformationHeader { + connectionType: ConnectionType; + effectiveType: EffectiveConnectionType; + roundTripTime: number; + downlinkBandwidth: number; + downlinkMaxBandwidth: number; + } + } + namespace Perseus { + // Generated from: com/linkedin/avro2pegasus/events/perseus/OfflineHostsWorkflowStatusEvent.pdsc + + export interface OfflineHostsWorkflowStatusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + host: string; + cluster: string; + statusCode: status; + fabric: Com.Linkedin.Avro2pegasus.Events.Common.Fabric; + failureReason?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/perseus/status.pdsc + + export type status = 'SUCCESS' | 'FAILURE'; + } + namespace Pie { + // Generated from: com/linkedin/avro2pegasus/events/pie/EnrichedIncidentEvent.pdsc + + export interface EnrichedIncidentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + incidentId: number; + creationTime: number; + state: Com.Linkedin.Avro2pegasus.Events.Common.Pie.IncidentState; + severity: EventSeverity; + infoTag?: string; + message: string; + firstEventId?: number; + firstEventTime?: number; + gcnKey?: string; + gcnCreationTime?: number; + neoKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pie/EnrichedSyslogForwardedLogEvent.pdsc + + export interface EnrichedSyslogForwardedLogEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + logForwardingHost: string; + messageTags: string[]; + message: string; + deviceClass: string; + cores: string[]; + site: string; + cabinet: string; + cage: string; + model: string; + vendor: string; + os: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pie/EventSeverity.pdsc + + export type EventSeverity = 'IGNORE' | 'INFO' | 'WARNING' | 'CRITICAL' | 'FATAL'; + // Generated from: com/linkedin/avro2pegasus/events/pie/EventSource.pdsc + + export type EventSource = + | 'ARBOR' + | 'ARGOS' + | 'AUTOALERTS' + | 'BGPMON' + | 'INMESH' + | 'INFLOW' + | 'METRIC' + | 'NETMON' + | 'PING' + | 'PROMETHEUS' + | 'SYSLOG' + | 'THOUSANDEYES' + | 'ON_HOST_AGENT'; + // Generated from: com/linkedin/avro2pegasus/events/pie/EventType.pdsc + + export type EventType = 'FLOW' | 'METRIC' | 'NETWORK_EVENT'; + // Generated from: com/linkedin/avro2pegasus/events/pie/IncidentModifiedEvent.pdsc + + export interface IncidentModifiedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + incident: Com.Linkedin.Avro2pegasus.Common.Pie.Incident; + modificationType: Com.Linkedin.Avro2pegasus.Events.Common.Pie.IncidentModificationType; + triggerSource: Com.Linkedin.Avro2pegasus.Events.Common.Pie.IncidentUpdateSource; + } + // Generated from: com/linkedin/avro2pegasus/events/pie/NetworkEvent.pdsc + + export interface NetworkEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + eventTimestamp: number; + source: EventSource; + type: EventType; + eventId?: string; + deviceName?: string; + deviceClass?: string; + deviceSubEntity?: string; + message: string; + severity: EventSeverity; + eventSubType?: string; + syslogTag?: string; + owner: string; + metadata?: { [id: string]: string }; + matchedPatternGroupIds: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pie/ServerUsageCheckEvent.pdsc + + export interface ServerUsageCheckEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hostname: string; + serverUsageCheckCheckerType: Com.Linkedin.Avro2pegasus.Events.Common.Pie.ServerUsageCheckCheckerType; + serverUsageCheckResultType: Com.Linkedin.Avro2pegasus.Events.Common.Pie.ServerUsageCheckResultType; + message?: string; + } + namespace Infradev { + // Generated from: com/linkedin/avro2pegasus/events/pie/infradev/BuswayPowerEvent.pdsc + + export interface BuswayPowerEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + buswayHostName: string; + readingsTimestamp: number; + powerInLine1: number; + powerInLine2: number; + powerInLine3: number; + currentInLine1: number; + currentInLine2: number; + currentInLine3: number; + voltageInLine1ToNeutral: number; + voltageInLine2ToNeutral: number; + voltageInLine3ToNeutral: number; + voltageInLine1ToLine2: number; + voltageInLine2ToLine3: number; + voltageInLine3ToLine1: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pie/infradev/CagePowerMetricEvent.pdsc + + export interface CagePowerMetricEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cageName: string; + inopsCageId: number; + site: string; + readingsTimestamp: number; + temperature?: number; + humidity?: number; + iTPower: number; + mainPower: number; + upsDetails: Com.Linkedin.Avro2pegasus.Common.Pie.PowerDeviceMetricDetails[]; + floorPduDetails: Com.Linkedin.Avro2pegasus.Common.Pie.PowerDeviceMetricDetails[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pie/infradev/EnrichedSflowDataEvent.pdsc + + export interface EnrichedSflowDataEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + flowCollectionTime: number; + deviceIpAddress: string; + deviceHostName?: string; + deviceInterfaceIndex: number; + deviceUpTime: number; + datagramSequenceNumber: number; + samplingRate: number; + totalPackets: number; + drops: number; + sourceHostDetails: Com.Linkedin.Avro2pegasus.Common.Pie.HostDetails; + destinationHostDetails: Com.Linkedin.Avro2pegasus.Common.Pie.HostDetails; + sampleSequenceNumber: number; + ipPacketLength: number; + ipProtocol: string; + tcpFlags: string; + deviceInterfaceName?: string; + deviceInterfaceDescription?: string; + totalTraffic: number; + inputInterfaceDetails?: Com.Linkedin.Avro2pegasus.Common.Pie.InterfaceDetails; + outputInterfaceDetails?: Com.Linkedin.Avro2pegasus.Common.Pie.InterfaceDetails; + } + // Generated from: com/linkedin/avro2pegasus/events/pie/infradev/NetworkMetricEvent.pdsc + + export interface NetworkMetricEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + deviceDetails: Com.Linkedin.Avro2pegasus.Common.Pie.NetworkDeviceDetails; + interfaceDetails?: Com.Linkedin.Avro2pegasus.Common.Pie.NetworkInterfaceDetails; + metricName: string; + metricTimestamp: string; + metricValue: number; + metadata?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/pie/infradev/Open19PowerShelfEvent.pdsc + + export interface Open19PowerShelfEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + powerShelfName: string; + readingsTimestamp: number; + psuDetails: Com.Linkedin.Avro2pegasus.Common.Pie.PowerShelfDetails; + systemUsage: Com.Linkedin.Avro2pegasus.Common.Pie.SystemUsage; + eFuses: Com.Linkedin.Avro2pegasus.Common.Pie.EFuse[]; + fans: Com.Linkedin.Avro2pegasus.Common.Pie.FanDetails[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pie/infradev/RawSflowDataEvent.pdsc + + export interface RawSflowDataEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + flowCollectionTime: number; + deviceIpAddress: string; + deviceInterfaceIndex: number; + deviceUpTime: number; + datagramSequenceNumber: number; + samplingRate: number; + totalPackets: number; + drops: number; + sourceHostDetails: Com.Linkedin.Avro2pegasus.Common.Pie.HostDetails; + destinationHostDetails: Com.Linkedin.Avro2pegasus.Common.Pie.HostDetails; + sampleSequenceNumber: number; + ipPacketLength: number; + ipProtocol: string; + tcpFlags: string; + totalTraffic: number; + inputInterfaceDetails?: Com.Linkedin.Avro2pegasus.Common.Pie.InterfaceDetails; + outputInterfaceDetails?: Com.Linkedin.Avro2pegasus.Common.Pie.InterfaceDetails; + } + // Generated from: com/linkedin/avro2pegasus/events/pie/infradev/RduDataEvent.pdsc + + export interface RduDataEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + eventTimestamp: number; + hostname: string; + circuitBreakerMetrices?: Com.Linkedin.Avro2pegasus.Common.Pie.RduEntityMetric[]; + inletMetric: Com.Linkedin.Avro2pegasus.Common.Pie.RduEntityMetric; + inletPhaseMetrices: Com.Linkedin.Avro2pegasus.Common.Pie.RduEntityMetric[]; + outletMetrices?: Com.Linkedin.Avro2pegasus.Common.Pie.RduEntityMetric[]; + sensorMetrices?: { + [id: string]: Com.Linkedin.Avro2pegasus.Common.Pie.RduSensor; + }; + siteName?: string; + } + } + } + namespace Pinot { + // Generated from: com/linkedin/avro2pegasus/events/pinot/FabricName.pdsc + + export type FabricName = + | 'EI_LTX1' + | 'EI_LCA1' + | 'EI_4' + | 'CORP_LVA1' + | 'CORP_LCA1' + | 'PROD_LTX1' + | 'PROD_LVA1' + | 'PROD_LOR1' + | 'PROD_LSG1' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/PinotFanoutType.pdsc + + export type PinotFanoutType = 'OFFLINE' | 'REALTIME' | 'HYBRID' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/PinotQueryEvent.pdsc + + export interface PinotQueryEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + query: string; + resource: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/PinotQueryStatisticsEvent.pdsc + + export interface PinotQueryStatisticsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + query: string; + table: string; + errorCode: number; + queryProcessingDuration: number; + totalDocumentCount: number; + scannedDocumentCount: number; + scannedEntriesInFilterCount: number; + scannedEntriesPostFilterCount: number; + queriedSegmentsCount: number; + processedSegmentsCount: number; + matchedSegmentsCount: number; + queriedServersCount: number; + respondedServersCount: number; + isGroupCountLimitReached: boolean; + exceptionCount: number; + brokerHost: string; + fabric: FabricName; + requestId: number; + requestTime: number; + requestTimeDays: number; + reduceDuration: number; + fanoutType: PinotFanoutType; + } + namespace Derived { + namespace Ads { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/ads/AdAnalyticsEvent.pdsc + + export interface AdAnalyticsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + daysSinceEpoch: number; + monthsSinceEpoch: number; + yearsSinceEpoch: number; + accountId: number; + advertiserCompanyId: number; + advertiserIndustryId: number; + campaignId: number; + creativeId: number; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + activityId: number; + demographicCategory: string; + demographicValue: string; + impressions: number; + clicks: number; + landingPageClicks: number; + totalEngagements: number; + otherEngagements: number; + costInUsd: number; + costInLocalCurrency: number; + costAdjustmentInUsd: number; + costAdjustmentInCurrency: number; + externalWebsiteConversions: number; + externalWebsitePostViewConversions: number; + externalWebsitePostClickConversions: number; + likes: number; + commentLikes: number; + comments: number; + shares: number; + follows: number; + oneClickLeadFormOpens: number; + oneClickLeads: number; + companyPageClicks: number; + viralImpressions: number; + viralClicks: number; + viralLandingPageClicks: number; + viralLikes: number; + viralCommentLikes: number; + viralComments: number; + viralShares: number; + viralFollows: number; + viralOneClickLeadFormOpens: number; + viralOneClickLeads: number; + viralCompanyPageClicks: number; + viralTotalEngagements: number; + viralOtherEngagements: number; + opens: number; + textUrlClicks: number; + actionClicks: number; + adUnitClicks: number; + leadGenerationMailContactInfoShares: number; + leadGenerationMailInterestedClicks: number; + campaignGroupId?: number; + viralExternalWebsiteConversions: number; + viralExternalWebsitePostViewConversions: number; + viralExternalWebsitePostClickConversions: number; + servingLocation: Com.Linkedin.Avro2pegasus.Events.Common.Ads.Pinot.ServingLocation; + videoStarts: number; + videoFirstQuartileCompletions: number; + videoMidpointCompletions: number; + videoThirdQuartileCompletions: number; + videoCompletions: number; + llaPartnerConversionId?: number; + conversionValueInLocalCurrency: number; + videoViews: number; + fullScreenPlays: number; + viralVideoStarts: number; + viralVideoFirstQuartileCompletions: number; + viralVideoMidpointCompletions: number; + viralVideoThirdQuartileCompletions: number; + viralVideoCompletions: number; + viralVideoViews: number; + viralFullScreenPlays: number; + cardImpressions: number; + cardClicks: number; + viralCardImpressions: number; + viralCardClicks: number; + sends: number; + adExperimentId?: number; + talentLeads?: number; + adPlacement?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdPlacement; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/ads/AdAnomalyDetectionStatsEvent.pdsc + + export interface AdAnomalyDetectionStatsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hoursSinceEpoch: number; + tenMinutesSinceEpoch: number; + timeStamp: string; + channelId: number; + campaignType: number; + fabric: string; + locale: string; + osName: string; + adRequestCount: number; + adOptimizationCount: number; + adImpressionCount: number; + adClickCount: number; + impressionCost: number; + clickCost: number; + cost: number; + firstAdOptimizationCount: number; + firstAdImpressionCount: number; + firstUnifiedImpressionCount: number; + firstFederatorImpressionCount: number; + siteDomain?: string; + mobileBundleName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/ads/AdClickType.pdsc + + export type AdClickType = 'CAMPAIGN' | 'OTHER' | 'CANCEL' | 'LEADGEN'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/ads/AdCreativeStatsEvent.pdsc + + export interface AdCreativeStatsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + advertiserId: number; + campaignId: number; + creativeId: number; + daysSinceEpoch: number; + weeksSinceEpoch: number; + monthsSinceEpoch: number; + campaignType: number; + impressionCount: number; + clickCount: number; + otherClickCount: number; + conversionCount: number; + costInCurrency: number; + currency: string; + cost: number; + costAdjustment: number; + adTrackingId?: string; + campaignGroupUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/ads/AdStatisticsEvent.pdsc + + export interface AdStatisticsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + daysSinceEpoch: number; + monthsSinceEpoch: number; + yearsSinceEpoch: number; + accountId: number; + campaignGroupId: number; + advertiserCompanyId: number; + advertiserIndustryId: number; + campaignId: number; + creativeId: number; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + activityId: number; + impressions: number; + clicks: number; + landingPageClicks: number; + totalEngagements: number; + otherEngagements: number; + costInUsd: number; + costInLocalCurrency: number; + costAdjustmentInUsd: number; + costAdjustmentInCurrency: number; + externalWebsiteConversions: number; + externalWebsitePostViewConversions: number; + externalWebsitePostClickConversions: number; + likes: number; + commentLikes: number; + comments: number; + shares: number; + follows: number; + oneClickLeadFormOpens: number; + oneClickLeads: number; + companyPageClicks: number; + viralImpressions: number; + viralClicks: number; + viralLandingPageClicks: number; + viralLikes: number; + viralCommentLikes: number; + viralComments: number; + viralShares: number; + viralFollows: number; + viralOneClickLeadFormOpens: number; + viralOneClickLeads: number; + viralCompanyPageClicks: number; + viralTotalEngagements: number; + viralOtherEngagements: number; + opens: number; + textUrlClicks: number; + actionClicks: number; + adUnitClicks: number; + leadGenerationMailContactInfoShares: number; + leadGenerationMailInterestedClicks: number; + viralExternalWebsiteConversions: number; + viralExternalWebsitePostViewConversions: number; + viralExternalWebsitePostClickConversions: number; + servingLocation: Com.Linkedin.Avro2pegasus.Events.Common.Ads.Pinot.ServingLocation; + videoStarts: number; + videoFirstQuartileCompletions: number; + videoMidpointCompletions: number; + videoThirdQuartileCompletions: number; + videoCompletions: number; + llaPartnerConversionId?: number; + conversionValueInLocalCurrency: number; + videoViews: number; + fullScreenPlays: number; + viralVideoStarts: number; + viralVideoFirstQuartileCompletions: number; + viralVideoMidpointCompletions: number; + viralVideoThirdQuartileCompletions: number; + viralVideoCompletions: number; + viralVideoViews: number; + viralFullScreenPlays: number; + cardIndex?: number; + cardImpressions: number; + cardClicks: number; + viralCardImpressions: number; + viralCardClicks: number; + sends: number; + hoursSinceEpoch?: number; + objectiveType?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.ObjectiveType; + conversationContentId?: number; + conversationContentOptionIndex?: number; + adExperimentId?: number; + approximateUniqueImpressions: number; + approximateUniqueLandingPageClicks: number; + approximateUniqueTotalEngagements: number; + talentLeads?: number; + adPlacement?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdPlacement; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/ads/AdWebAnalyticsEvent.pdsc + + export interface AdWebAnalyticsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + offsetRange: Com.Linkedin.Avro2pegasus.Events.Common.LongRange; + daysSinceEpoch: number; + monthsSinceEpoch: number; + yearsSinceEpoch: number; + accountId: number; + adPageSetId: number; + demographicCategory: string; + demographicValue: string; + approximateUniqueVisitors: string; + pageViews: number; + memberPageViews: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/ads/CompanySize.pdsc + + export type CompanySize = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/ads/SponsoredInMailActivityEvent.pdsc + + export interface SponsoredInMailActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + daysSinceEpoch: number; + monthsSinceEpoch: number; + advertiserId: number; + campaignId: number; + campaignTypeId: number; + creativeId: number; + channelId: number; + status: Com.Linkedin.Avro2pegasus.Events.AdEventStatus; + requestId?: string; + impressionId: string; + clickTag?: string; + clickType?: AdClickType; + sendCount: number; + openCount: number; + clickBodyCount: number; + clickActionCount: number; + clickAdUnitCount: number; + leadGenContactInfoSharedCount: number; + leadGenInterestedCount: number; + memberIndustryIds?: number[]; + memberFunctionIds?: number[]; + memberSeniorityIds?: number[]; + memberCompanySizeIds?: CompanySize[]; + memberTitleIds?: number[]; + memberRegionCode?: number; + cost: number; + } + } + namespace Articles { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/articles/ArticleReadAnalyzedEvent.pdsc + + export interface ArticleReadAnalyzedEvent { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + viewerUrn: string; + pageKey: string; + eventTime: number; + articleUrn: string; + authorUrn: string; + isInfluencer: boolean; + publishedTime: number; + contextId: string; + renderedWordCount: number; + dwellTime: number; + } + } + namespace Content { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/content/ContentCategory.pdsc + + export type ContentCategory = 'BREAKING' | 'DIGEST'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/content/EditorPromotionPinotEvent.pdsc + + export interface EditorPromotionPinotEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + contentType?: string; + promoterUrn: string; + promotionCreatedTime?: number; + promotionStartTime: number; + promotionEndTime: number; + targetLocale?: string; + targetCountries: string[]; + topicRelatedEntityUrns: string[]; + contentPromotionScore: number; + contentCategory?: ContentCategory; + } + } + namespace Edu { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/edu/EduViewEvent.pdsc + + export interface EduViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + schoolId: number; + memberId: number; + daysSinceEpoch: number; + monthsSinceEpoch: number; + timeInSeconds: number; + memberIndustries?: number[]; + memberFunctions?: number[]; + memberSeniorities?: number[]; + memberSchools?: number[]; + memberCompanies?: number[]; + pageViewHomeCount: number; + pageViewNotablesCount: number; + pageViewAlumniCount: number; + pageViewRecommendationsCount: number; + distinctPageViewHomeCount: number; + distinctPageViewNotablesCount: number; + distinctPageViewAlumniCount: number; + distinctPageViewRecommendationsCount: number; + distinctPageViewAllCount: number; + } + } + namespace Feed { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/feed/ActionType.pdsc + + export type ActionType = 'VIRAL_ACTION' | 'NON_VIRAL_ACTION'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/feed/FeedActionAndViewerFeatureIdPinotMessage.pdsc + + export interface FeedActionAndViewerFeatureIdPinotMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + hashedItemValue: number; + memberFeatureId: number; + actionType: ActionType; + messageTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/feed/FeedActionAndViewerFeaturesPinotMessage.pdsc + + export interface FeedActionAndViewerFeaturesPinotMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + hashedItemValue: number; + memberFeatureIds?: number[]; + actionType: ActionType; + messageTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/feed/StatFederatorEvent.pdsc + + export interface StatFederatorEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberId: number; + item: string; + position: string; + platform: string; + action: string; + messageTimeDays: number; + count: number; + } + } + namespace Feedimpressioncounting { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/feedimpressioncounting/action.pdsc + + export type action = 'VIEW'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/feedimpressioncounting/FeedImpressionCountingEvent.pdsc + + export interface FeedImpressionCountingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberId: number; + itemUrn: string; + pageKey: string; + action: action; + count: number; + daysSinceEpoch: number; + } + } + namespace Leap { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/leap/LeapAnalyticsEvent.pdsc + + export interface LeapAnalyticsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + eventType?: LeapRealTimeEventType; + network?: SocialNetwork; + sharerId?: number; + actorId?: number; + adminId?: number; + contractId?: number; + shareId?: number; + broadcastId?: number; + contentId?: string; + shortCode?: string; + socialActionType?: SocialActionType; + networkReach?: number; + actionQuantity?: number; + groups?: number[]; + hoursSinceEpoch?: number; + daysSinceEpoch?: number; + weeksSinceEpoch?: number; + monthsSinceEpoch?: number; + industryIds?: number[]; + companyIds?: number[]; + seniorityIds?: number[]; + superTitleIds?: number[]; + jobFunctionIds?: number[]; + messageRecipientMemberId?: number; + topicType?: TopicType; + topicId?: string; + leapBroadcastSharerUrn?: string; + leapReadItemUrn?: string; + leapTagIds?: number[]; + enterpriseGroupIds?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/leap/LeapRealTimeEvent.pdsc + + export interface LeapRealTimeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + eventType?: LeapRealTimeEventType; + network?: SocialNetwork; + sharerId?: number; + actorId?: number; + adminId?: number; + contractId?: number; + shareId?: number; + payloadId?: number; + payloadType?: PayloadType; + shortCode?: string; + socialActionType?: SocialActionType; + networkReach?: number; + actionQuantity?: number; + groups?: number[]; + hoursSinceEpoch?: number; + daysSinceEpoch?: number; + weeksSinceEpoch?: number; + monthsSinceEpoch?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/leap/LeapRealTimeEventType.pdsc + + export type LeapRealTimeEventType = + | 'LEAP_SHARE' + | 'LEAP_CLICK' + | 'BROADCAST_CREATED' + | 'MESSAGE_SENT' + | 'MESSAGE_READ' + | 'NETWORK_REACH' + | 'SOCIAL_ACTION' + | 'LEAP_SHARE_IMPRESSION' + | 'INTERNAL_COMMS_CREATED' + | 'INTERNAL_COMMS_CLICK' + | 'LEAP_SHARE_VIEW'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/leap/PayloadType.pdsc + + export type PayloadType = 'BROADCAST' | 'CONTENT'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/leap/SocialActionType.pdsc + + export type SocialActionType = 'LIKE' | 'COMMENT' | 'RESHARE' | 'CLICK' | 'UNLIKE' | 'UNCOMMENT'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/leap/SocialNetwork.pdsc + + export type SocialNetwork = 'TWITTER' | 'FACEBOOK' | 'LINKEDIN' | 'WEIBO'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/leap/TopicType.pdsc + + export type TopicType = 'INDUSTRY' | 'COMPANY' | 'RSS'; + } + namespace Learning { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/learning/LearningEnterpriseAssigneeCountEvent.pdsc + + export interface LearningEnterpriseAssigneeCountEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + daysSinceEpoch: number; + accountId: number; + assigneeCount: number; + hasDueDate: boolean; + } + } + namespace Mirror { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/mirror/ContentEntityType.pdsc + + export type ContentEntityType = 'UGC_POST' | 'SHARE' | 'GROUP_POST'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/mirror/GestureType.pdsc + + export type GestureType = 'COMMENT' | 'LIKE' | 'IMPRESSION' | 'PLAY' | 'RESHARE' | 'REPLY_TO_COMMENT'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/mirror/ShareSocialGestureEvent.pdsc + + export interface ShareSocialGestureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + actionTime: number; + minutesSinceEpoch: number; + hoursSinceEpoch: number; + daysSinceEpoch: number; + weeksSinceEpochSunday: number; + actorId: number; + companyId: number; + occupationId: number; + profileIndustryId: number; + regionId: number; + referrer: string; + socialGestureId: number; + viewCount: number; + likeCount: number; + commentCount: number; + reshareCount: number; + authorId: number; + shareId: number; + activityId: number; + shareCreationTimestamp: number; + isFollowing?: boolean; + isConnected?: boolean; + replyToCommentCount: number; + occupationSeniority: number; + regionGeoUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/mirror/UserGeneratedContentGestureCountEvent.pdsc + + export interface UserGeneratedContentGestureCountEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + daysSinceEpoch: number; + gestureType: UserGeneratedContentGestureType; + count: number; + authorUrn: string; + contentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/mirror/UserGeneratedContentGestureEvent.pdsc + + export interface UserGeneratedContentGestureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentEntityType: ContentEntityType; + contentId: number; + actorEntityType: Com.Linkedin.Avro2pegasus.Events.Common.Mirror.ActorEntityType; + actorId: number; + authorEntityType: Com.Linkedin.Avro2pegasus.Events.Common.Mirror.ActorEntityType; + authorId: number; + daysSinceEpoch: number; + gestureType: Com.Linkedin.Avro2pegasus.Events.Common.Mirror.GestureType; + gestureCount: number; + companyId: number; + occupationId: number; + regionId: number; + regionGeoUrn?: string; + gesturePrivacySetting?: Com.Linkedin.Avro2pegasus.Events.Common.Mirror.GesturePrivacySetting; + eventTime?: number; + industryId?: number; + seniorityId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/mirror/UserGeneratedContentGestureType.pdsc + + export type UserGeneratedContentGestureType = + | 'VIEW' + | 'LIKE' + | 'COMMENT' + | 'RESHARE' + | 'PROFILE_VIEW' + | 'MESSAGE' + | 'CONNECTION_REQUEST' + | 'FOLLOW'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/mirror/VideoPlayAnalyticsEvent.pdsc + + export interface VideoPlayAnalyticsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + videoId: string; + videoSessionId: string; + totalTimeWatchedSeconds: number; + playStartTimeDays: number; + totalTimeWatched?: number; + totalTimeForThreeSecondPlays?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/mirror/VideoSocialGestureEvent.pdsc + + export interface VideoSocialGestureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + videoId: string; + daysSinceEpoch: number; + weeksSinceEpochSunday: number; + actorId: number; + companyId: number; + occupationId: number; + occupationSeniority: number; + profileIndustryId: number; + regionId: number; + isFollowing: boolean; + isConnected: boolean; + categorizedReferrer: string; + gestureType: GestureType; + gestureCount: number; + regionGeoUrn?: string; + } + } + namespace Mobile { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/mobile/MobileSessionRealTimeEvent.pdsc + + export interface MobileSessionRealTimeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + appName: string; + appVersion: string; + buildType: string; + minutesSinceEpoch: number; + sessionCount: number; + } + } + namespace Premium { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/premium/PremiumFeatureUsageEvent.pdsc + + export interface PremiumFeatureUsageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberId: number; + featureUsedTime: number; + feature: SubsFeatureKey; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/premium/SubsFeatureKey.pdsc + + export type SubsFeatureKey = 'APPLICANT_INSIGHTS' | 'INMAIL' | 'UNLIMITED_SEARCH' | 'WVMP'; + } + namespace Publishing { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/publishing/ArticleSocialGestureEvent.pdsc + + export interface ArticleSocialGestureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + timestamp: number; + hoursSinceEpoch: number; + daysSinceEpoch: number; + authorId: number; + articleId: number; + view: number; + like: number; + comment: number; + share: number; + engagedMemberId: number; + occupation: number; + profileIndustryId: number; + companyId?: number; + isFollowing?: boolean; + isConnected?: boolean; + region: number; + referrer: string; + socialGestureId: number; + regionGeoUrn?: string; + viewSource?: ViewSource; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/publishing/ViewSource.pdsc + + export type ViewSource = 'EMAIL' | 'READER'; + } + namespace Sharedactiontracking { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/sharedactiontracking/SharedActionTrackingPinotEvent.pdsc + + export interface SharedActionTrackingPinotEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberId: number; + entityUrn: string; + action: Com.Linkedin.Avro2pegasus.Events.Sharedactiontracking.ContentActionType; + actionOccurredAtInHours: number; + } + } + namespace Slideshare { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/slideshare/SlideShareSlideshowViewEvent.pdsc + + export interface SlideShareSlideshowViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + daysSinceEpoch: number; + weeksSinceEpoch: number; + monthsSinceEpoch: number; + userAgent?: string; + browserId?: string; + refererUrl?: string; + refererDomain?: string; + refererType: Com.Linkedin.Avro2pegasus.Events.Slideshare.SlideshowViewRefererType; + playerType: Com.Linkedin.Avro2pegasus.Events.Slideshare.SlideshowViewPlayerType; + slideshowId: number; + authorId: number; + country?: Com.Linkedin.Avro2pegasus.Events.Country; + city?: string; + organization?: string; + } + } + namespace Statpinot { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatContactsEngagementEvent.pdsc + + export interface StatContactsEngagementEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + item: string; + position: string; + action: string; + moduleKey: string; + messageTimeDays: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatFedCrossSessionDiversityEvent.pdsc + + export interface StatFedCrossSessionDiversityEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + actorId: string; + rootActorId: string; + activityType: string; + rootObjectType: string; + platform: string; + action: string; + messageTimeMinutes: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatFederator2Event.pdsc + + export interface StatFederator2Event { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + item: string; + position: string; + platform: string; + action: string; + messageTimeDays: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatFeedItemPopularityEvent.pdsc + + export interface StatFeedItemPopularityEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + item: string; + action: string; + messageTimeDays: number; + count: number; + feedType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatHeathrowImpressionDiscountingEvent.pdsc + + export interface StatHeathrowImpressionDiscountingEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + page: string; + device_and_platform: string; + messageTimeDays: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatJymbiiImpressionDiscountingEvent.pdsc + + export interface StatJymbiiImpressionDiscountingEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + item: string; + action: string; + messageTimeDays: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatLeapFederatorEvent.pdsc + + export interface StatLeapFederatorEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + item: string; + position: string; + platform: string; + action: string; + messageTimeDays: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatLeapMemberFederatorEvent.pdsc + + export interface StatLeapMemberFederatorEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + item: string; + position: string; + platform: string; + action: string; + messageTimeDays: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatLiAdsCTREvent.pdsc + + export interface StatLiAdsCTREvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId?: number; + creativeId?: number; + campaignId?: number; + advertiserId?: number; + channelId?: number; + activity: string; + messageTimeMinutes: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatLighthouseInsightsEvent.pdsc + + export interface StatLighthouseInsightsEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + item: string; + position: string; + platform: string; + action: string; + messageTimeDays: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatMessageImpressionDiscountEvent.pdsc + + export interface StatMessageImpressionDiscountEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + recipient: string; + usecase: string; + messageTimeDays: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatNewsExploreExploitEvent.pdsc + + export interface StatNewsExploreExploitEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + itemId: number; + currentIndustry: string; + position: string; + action: string; + locale: string; + messageTimeMinutes: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatNewsImpressionDiscountingEvent.pdsc + + export interface StatNewsImpressionDiscountingEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + item: string; + action: string; + messageTimeHours: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatPymkImpressionDiscountingEvent.pdsc + + export interface StatPymkImpressionDiscountingEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + sourceId: number; + destId: number; + location: string; + messageTimeHours: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/statpinot/StatUniversalImpressionsEvent.pdsc + + export interface StatUniversalImpressionsEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inputGuid: Com.Linkedin.Avro2pegasus.Events.Guid; + memberId: number; + appId: string; + type: string; + item: string; + messageTimeDays: number; + count: number; + } + } + namespace Talentinsights { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/talentinsights/pageTypes.pdsc + + export type pageTypes = 'CREATION' | 'REPORT' | 'FOLDERS'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/talentinsights/reportTypes.pdsc + + export type reportTypes = 'COMPANY' | 'TALENT_POOL' | 'NULL'; + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/talentinsights/TalentInsightsTrackingEvent.pdsc + + export interface TalentInsightsTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + timestamp: number; + enterpriseAccountId: number; + enterpriseProfileId: number; + memberId: number; + viewerOrganizationId: number; + sessionId: string; + eventType: trackingEvents; + searchHistoryId: number; + pageType: pageTypes; + tabName: string; + reportType: reportTypes; + moduleName: string; + keyInsightType: string; + numLicensesProvisioned: number; + recruiterClicks: number; + companyProfileClicks: number; + talentProfileClicks: number; + talentSearches: number; + companySearches: number; + talentPageViews: number; + companyPageViews: number; + talentToCompanySearches: number; + companyToCompanySearches: number; + talentSearchesWithLocation: number; + talentSearchesWithSkill: number; + talentSearchesWithTitle: number; + talentSearchesWithIndustry: number; + companySearchesWithLocation: number; + companySearchesWithSkill: number; + companySearchesWithTitle: number; + companySearchesWithFunction: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/talentinsights/trackingEvents.pdsc + + export type trackingEvents = + | 'PAGEVIEW' + | 'CLICK' + | 'SEARCH' + | 'MODULE_IMPRESSION' + | 'KEY_INSIGHT' + | 'PROVISIONING' + | 'ASSIGNMENT' + | 'ACTIVATION'; + } + namespace Video { + // Generated from: com/linkedin/avro2pegasus/events/pinot/derived/video/UserGeneratedContentVideoPlayMessage.pdsc + + export interface UserGeneratedContentVideoPlayMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + assetId: string; + actorUrn: string; + daysSinceEpoch: number; + gestureCount: number; + organizationId?: number; + superTitleId?: number; + regionId?: number; + geoId?: number; + } + } + } + } + namespace Platformtelemetry { + // Generated from: com/linkedin/avro2pegasus/events/platformtelemetry/PlatformTelemetryCanvasFingerprintEvent.pdsc + + export interface PlatformTelemetryCanvasFingerprintEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + timeZoneOffset: number; + canvasFingerprintHash: string; + canvasFingerprint?: string; + screenSize: ScreenSize; + seedInfo: SeedInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/platformtelemetry/ScreenSize.pdsc + + export interface ScreenSize { + screenWidth: number; + screenHeight: number; + } + // Generated from: com/linkedin/avro2pegasus/events/platformtelemetry/SeedInfo.pdsc + + export interface SeedInfo { + configVersion: string; + seedId: string; + } + } + namespace Player { + // Generated from: com/linkedin/avro2pegasus/events/player/Interval.pdsc + + export type Interval = 'ONE_SECOND' | 'THREE_SECONDS'; + // Generated from: com/linkedin/avro2pegasus/events/player/NetworkState.pdsc + + export type NetworkState = 'UNKNOWN' | 'NO_DATA' | 'WIFI' | 'LTE' | 'FOUR_G' | 'THREE_G' | 'GPRS'; + // Generated from: com/linkedin/avro2pegasus/events/player/PlayerBeaconEvent.pdsc + + export interface PlayerBeaconEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + mediaTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + isAutoplaying: boolean; + state: PlayerState; + timeSinceLastBeacon: number; + } + // Generated from: com/linkedin/avro2pegasus/events/player/PlayerFeatureFlag.pdsc + + export type PlayerFeatureFlag = 'ON' | 'OFF' | 'NOT_SUPPORTED' | 'NOT_MEASURED'; + // Generated from: com/linkedin/avro2pegasus/events/player/PlayerLiveState.pdsc + + export type PlayerLiveState = 'IS_LIVE' | 'WAS_LIVE' | 'PRE_RECORDED'; + // Generated from: com/linkedin/avro2pegasus/events/player/PlayerPlayPauseEvent.pdsc + + export interface PlayerPlayPauseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + state: PlayerState; + reason: PlayPauseChangedReason; + mediaTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/player/PlayerPositionChangedEvent.pdsc + + export interface PlayerPositionChangedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + state: PlayerState; + reason?: PlayerPositionChangedReason; + mediaTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + interval?: Interval; + } + // Generated from: com/linkedin/avro2pegasus/events/player/PlayerPositionChangedReason.pdsc + + export type PlayerPositionChangedReason = 'USER_TRIGGERED' | 'ENTERED_VIEWPORT'; + // Generated from: com/linkedin/avro2pegasus/events/player/PlayerSeekEvent.pdsc + + export interface PlayerSeekEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + state: PlayerState; + previousTimeElapsed: number; + mediaTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/player/PlayerState.pdsc + + export interface PlayerState { + mediaUrn: string; + length: number; + mediaViewTrackingId: string; + volume: number; + timeElapsed: number; + isPlaying: boolean; + ccVisible: PlayerFeatureFlag; + fullScreen: PlayerFeatureFlag; + downloaded: PlayerFeatureFlag; + networkType: NetworkState; + speed?: number; + casting: PlayerFeatureFlag; + bitrate?: number; + isAudioOnly?: boolean; + isFloating?: boolean; + liveState?: PlayerLiveState; + mediaLiveState?: Com.Linkedin.Avro2pegasus.Events.Common.Media.MediaLiveState; + } + // Generated from: com/linkedin/avro2pegasus/events/player/PlayerVolumeChangedEvent.pdsc + + export interface PlayerVolumeChangedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + state: PlayerState; + previousVolume: number; + mediaTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/player/PlayPauseChangedReason.pdsc + + export type PlayPauseChangedReason = + | 'USER_TRIGGERED' + | 'EXITED_VIEWPORT' + | 'ENTERED_VIEWPORT' + | 'VIDEO_PRIORITY_CHANGED' + | 'VIDEO_AUTOLOOPED'; + } + namespace Policy { + // Generated from: com/linkedin/avro2pegasus/events/policy/PolicyAction.pdsc + + export type PolicyAction = 'VIEW' | 'ACCEPT'; + // Generated from: com/linkedin/avro2pegasus/events/policy/PolicyActionEvent.pdsc + + export interface PolicyActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + policyUrn: string; + action: PolicyAction; + pageKey?: string; + } + } + namespace Polyglotonline { + // Generated from: com/linkedin/avro2pegasus/events/polyglotonline/LanguageTranslationRequestEvent.pdsc + + export interface LanguageTranslationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + callerServiceName: string; + callerServiceVersion: string; + originalTextLength: number; + isLanguageMatch: boolean; + } + } + namespace Premium { + // Generated from: com/linkedin/avro2pegasus/events/premium/AppLauncherItemImpressionEvent.pdsc + + export interface AppLauncherItemImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + appCode: string; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/ApplicantRankPercentRecord.pdsc + + export interface ApplicantRankPercentRecord { + jobId: number; + applicantRankPercent: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/ApplicantRankRecord.pdsc + + export interface ApplicantRankRecord { + jobId: number; + applicantRankPercent: number; + applicantCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/ApplicantRankServedRecord.pdsc + + export interface ApplicantRankServedRecord { + applicantRankRecords: ApplicantRankRecord[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/CareerExpertResumeGcoAccessEvent.pdsc + + export interface CareerExpertResumeGcoAccessEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + resumeUrn: string; + interestedTitles: string; + specificQuestions: string; + resumeFeedbackToolsUsed: string[]; + resumeSignedDownloadUrl: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/CareerPivot.pdsc + + export interface CareerPivot { + sourceUrn: string; + targetUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/CompetitorsActionEventSharedFields.pdsc + + export interface CompetitorsActionEventSharedFields { + actionType: CompetitorsActionType; + competitorUrns: string[]; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/CompetitorsActionType.pdsc + + export type CompetitorsActionType = 'START_EDITING' | 'END_EDITING'; + // Generated from: com/linkedin/avro2pegasus/events/premium/CompetitorsBenchmarkingImpressionEventSharedFields.pdsc + + export interface CompetitorsBenchmarkingImpressionEventSharedFields { + organizationUrn: string; + periodInMonths: number; + competitorUrns: string[]; + isListModifiedByUser: boolean; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/CompetitorsMissingInformationImpressionEventSharedFields.pdsc + + export interface CompetitorsMissingInformationImpressionEventSharedFields { + competitorUrnsWithMissingData: string[]; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/CompetitorsOrganizationActionEventSharedFields.pdsc + + export interface CompetitorsOrganizationActionEventSharedFields { + actionType: CompetitorsOrganizationActionType; + entityUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/CompetitorsOrganizationActionType.pdsc + + export type CompetitorsOrganizationActionType = 'HOVER' | 'ADD' | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/premium/FastGrowingCompaniesServedRecord.pdsc + + export interface FastGrowingCompaniesServedRecord { + numberOfFastGrowingCompaniesAvailable: number; + numberOfFastGrowingCompaniesServed: number; + numberOfFastGrowingCompaniesWithOpenJobs: number; + fastGrowingCompanyRecords: FastGrowingCompanyRecord[]; + numberOfFastGrowingCompaniesAfterFilters?: number; + superTitleId?: number; + countryCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/FastGrowingCompanyRecord.pdsc + + export interface FastGrowingCompanyRecord { + companyId: number; + numberOfOpenJobs: number; + headcountLastYear?: number; + headcountThisYear?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/FunctionCompetitorsActionEvent.pdsc + + export interface FunctionCompetitorsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionEventSharedFields: CompetitorsActionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/FunctionCompetitorsBenchmarkingImpressionEvent.pdsc + + export interface FunctionCompetitorsBenchmarkingImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + impressionEventSharedFields: CompetitorsBenchmarkingImpressionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/FunctionCompetitorsMissingInformationImpressionEvent.pdsc + + export interface FunctionCompetitorsMissingInformationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + functionUrnsWithMissingData: string[]; + missingInfoImpressionEventSharedFields: CompetitorsMissingInformationImpressionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/FunctionCompetitorsOrganizationActionEvent.pdsc + + export interface FunctionCompetitorsOrganizationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organizationActionEventSharedFields: CompetitorsOrganizationActionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/HeadcountCompetitorsActionEvent.pdsc + + export interface HeadcountCompetitorsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionEventSharedFields: CompetitorsActionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/HeadcountCompetitorsBenchmarkingImpressionEvent.pdsc + + export interface HeadcountCompetitorsBenchmarkingImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + impressionEventSharedFields: CompetitorsBenchmarkingImpressionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/HeadcountCompetitorsMissingInformationImpressionEvent.pdsc + + export interface HeadcountCompetitorsMissingInformationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + missingInfoImpressionEventSharedFields: CompetitorsMissingInformationImpressionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/HeadcountCompetitorsOrganizationActionEvent.pdsc + + export interface HeadcountCompetitorsOrganizationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organizationActionEventSharedFields: CompetitorsOrganizationActionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/JobOpeningsCompetitorsActionEvent.pdsc + + export interface JobOpeningsCompetitorsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionEventSharedFields: CompetitorsActionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/JobOpeningsCompetitorsBenchmarkingImpressionEvent.pdsc + + export interface JobOpeningsCompetitorsBenchmarkingImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + impressionEventSharedFields: CompetitorsBenchmarkingImpressionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/JobOpeningsCompetitorsMissingInformationImpressionEvent.pdsc + + export interface JobOpeningsCompetitorsMissingInformationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + functionUrnsWithMissingData: string[]; + missingInfoImpressionEventSharedFields: CompetitorsMissingInformationImpressionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/JobOpeningsCompetitorsOrganizationActionEvent.pdsc + + export interface JobOpeningsCompetitorsOrganizationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organizationActionEventSharedFields: CompetitorsOrganizationActionEventSharedFields; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/MyPremiumContentHubImpressionEvent.pdsc + + export interface MyPremiumContentHubImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + impressedLinkedInArticleUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/MyPremiumEntryType.pdsc + + export type MyPremiumEntryType = 'MANAGE' | 'MY_PREMIUM'; + // Generated from: com/linkedin/avro2pegasus/events/premium/MyPremiumInsightImpressionEvent.pdsc + + export interface MyPremiumInsightImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + insightType: Com.Linkedin.Avro2pegasus.Events.Premiuminsights.PremiumInsightsTeaserType; + insightPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/MyPremiumPageViewEvent.pdsc + + export interface MyPremiumPageViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberPlans: Com.Linkedin.Avro2pegasus.Events.Common.Premium.SubcriptionPlan[]; + entryType: MyPremiumEntryType; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PivotDimension.pdsc + + export type PivotDimension = 'INDUSTRY' | 'TITLE' | 'INDUSTRY_AND_TITLE'; + // Generated from: com/linkedin/avro2pegasus/events/premium/PlanCardDisplayStatus.pdsc + + export type PlanCardDisplayStatus = 'GRAYED_OUT' | 'POPPED_OUT' | 'DEFAULT'; + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumApplicantInsight.pdsc + + export interface PremiumApplicantInsight { + jobPostingUrn: string; + applicantRankPercent?: number; + applicantCount?: number; + currentRoleRankPercent?: number; + pastExperienceRankPercent?: number; + skillRankPercent?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumCancelFlowComponentImpressionEvent.pdsc + + export interface PremiumCancelFlowComponentImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + premiumProductUrn: string; + cancelFlowComponentType: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumCancelFlowComponentType; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumCancelSocialProofInsightImpressionEvent.pdsc + + export interface PremiumCancelSocialProofInsightImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + isDynamic: boolean; + premiumProductUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumCancelWinbackImpressionEvent.pdsc + + export interface PremiumCancelWinbackImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + premiumProductUrn?: string; + isFreeTrial?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumCancelWinbackPromotionRedeemedSuccessEvent.pdsc + + export interface PremiumCancelWinbackPromotionRedeemedSuccessEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + redeemedType: RedeemedType; + premiumProductUrn?: string; + isFreeTrial?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumCareerLearningModuleImpressionEvent.pdsc + + export interface PremiumCareerLearningModuleImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumCheckoutImpressionEvent.pdsc + + export interface PremiumCheckoutImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + productUrn: string; + priceUrn: string; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + orderUrn?: string; + premiumProductPromotionUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumChooserImpressionEvent.pdsc + + export interface PremiumChooserImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + productUrn: string; + priceUrns: string[]; + channel: PremiumUpsellChannel; + subsFamily: ProductSubsFamily; + productPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + productCount: number; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + upsellControlUrn?: string; + campaignUrn?: string; + contextUrn?: string; + upsellOrderOrigin?: string; + premiumProductPromotionUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumChooserPageComponentImpressionEvent.pdsc + + export interface PremiumChooserPageComponentImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + productUrn: string; + upsellOrderOrigin?: string; + chooserPageComponentType: PremiumChooserPageComponentType; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumChooserPageComponentType.pdsc + + export type PremiumChooserPageComponentType = + | 'PLAN_CARD' + | 'PLAN_FEATURE_DETAILS' + | 'FEATURE_CAROUSELS' + | 'PLAN_TESTIMONIALS' + | 'SALES_BULK_PURCHASE_MODAL' + | 'STICKY_HEADER' + | 'FAQ' + | 'EMBARGO_MODAL'; + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumChooserPageViewEvent.pdsc + + export interface PremiumChooserPageViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + upsellOrderOrigin?: string; + productFamily?: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumProductFamily; + chooserPageCards?: Com.Linkedin.Avro2pegasus.Events.Common.Premium.ChooserPageCard[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumChooserPlanImpressionEvent.pdsc + + export interface PremiumChooserPlanImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + productUrn: string; + priceType: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumPriceType; + campaignName?: string; + upsellOrderOrigin?: string; + planCardDisplayStatus?: PlanCardDisplayStatus; + highlightedFeatures: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumFeature[]; + isExpanded: boolean; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumChooserPurchaseActionEvent.pdsc + + export interface PremiumChooserPurchaseActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + interactionType: Com.Linkedin.Avro2pegasus.Events.Common.ControlInteractionType; + isCheckoutUrlGenerated: boolean; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumChooserPurchaseFormImpressionEvent.pdsc + + export interface PremiumChooserPurchaseFormImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + productUrn: string; + upsellOrderOrigin?: string; + purchaseFormTrk?: string; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumChooserSocialProofInsightImpressionEvent.pdsc + + export interface PremiumChooserSocialProofInsightImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + upsellOrderOrigin?: string; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumDirectToCheckoutUpsellImpressionEvent.pdsc + + export interface PremiumDirectToCheckoutUpsellImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + productUrn: string; + priceUrns: string[]; + channel: PremiumUpsellChannel; + subsFamily: ProductSubsFamily; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + upsellControlUrn?: string; + contextUrn?: string; + currentSubscriptionPlan?: Com.Linkedin.Avro2pegasus.Events.Common.Premium.SubcriptionPlan; + upsellOrderOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumEntityMemberFeedbackEvent.pdsc + + export interface PremiumEntityMemberFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entityUrn: string; + context: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumEntityContextType; + feedbackAction: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumEntityFeedbackActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumFeedbackActionEvent.pdsc + + export interface PremiumFeedbackActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleName: string; + contentUrn: string; + isPositive: boolean; + categoryUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumFreeProfileReviewPromoImpressionEvent.pdsc + + export interface PremiumFreeProfileReviewPromoImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumFullFeatureTipImpressionEvent.pdsc + + export interface PremiumFullFeatureTipImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + featureTipType: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumFeature; + featureTipPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumGiftCreateEvent.pdsc + + export interface PremiumGiftCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + couponCode: string; + giftingMemberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumGiftingDataServedEvent.pdsc + + export interface PremiumGiftingDataServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + numberOfAvailableGifts: number; + numberOfGiftsSent: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumGiftRedeemedEvent.pdsc + + export interface PremiumGiftRedeemedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + couponCode: string; + redeemingMemberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumGuestPurchaseServedEvent.pdsc + + export interface PremiumGuestPurchaseServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + productUrn: string; + subsFamily: ProductSubsFamily; + campaignUrn?: string; + contextUrn?: string; + upsellOrderOrigin?: string; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + chooserToPaymentsTrackingId?: string; + learningOriginalStartPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumInMailCreditRefundHandledEvent.pdsc + + export interface PremiumInMailCreditRefundHandledEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ownerUrn: string; + globalTransactionId: string; + replierUrn: string; + refundSucceeded: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumInMailReplyEvent.pdsc + + export interface PremiumInMailReplyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + senderMemberUrn: string; + recipientMemberUrn: string; + repliedMailboxItemUrn: string; + isRemailer: boolean; + messagingThreadUrn?: string; + replyMessagingMessageUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumInMailUseEvent.pdsc + + export interface PremiumInMailUseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + buyerUrn: string; + recipientUrn: string; + orderUrn: string; + globalTransactionId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumInMailUseFulfillmentEvent.pdsc + + export interface PremiumInMailUseFulfillmentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + globalTransactionId: string; + virtualCurrencyGrantUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumInsightsApplicantInsightServedEvent.pdsc + + export interface PremiumInsightsApplicantInsightServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + eventReferenceId: string; + applicantInsightsServedData: PremiumApplicantInsight[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumInsightsApplicantRankServedEvent.pdsc + + export interface PremiumInsightsApplicantRankServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + eventReferenceId?: string; + applicantRankServedData?: ApplicantRankServedRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumInsightsFastGrowingCompaniesServedEvent.pdsc + + export interface PremiumInsightsFastGrowingCompaniesServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + eventReferenceId: string; + fastGrowingCompaniesServedData?: FastGrowingCompaniesServedRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumInsightsJobDetailsApplicantRankServedEvent.pdsc + + export interface PremiumInsightsJobDetailsApplicantRankServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + eventReferenceId?: string; + jobUrn: string; + applicantRankPercent?: number; + currentRoleRankPercent?: number; + pastExperienceRankPercent?: number; + skillRankPercent?: number; + applicantCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumInsightsTopApplicantJobsServedEvent.pdsc + + export interface PremiumInsightsTopApplicantJobsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + eventReferenceId: string; + topApplicantJobsServedData?: TopApplicantJobsServedRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumInsightsTypeaheadActionEvent.pdsc + + export interface PremiumInsightsTypeaheadActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + selectedOption?: SelectionRecord; + userInput?: string; + companiesResultsCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumIntentQuestionPageImpressionEvent.pdsc + + export interface PremiumIntentQuestionPageImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobDetailsApplicantInsightsImpressionEvent.pdsc + + export interface PremiumJobDetailsApplicantInsightsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + applicantCount: number; + isInsightsThresholdMet: boolean; + viewerApplicantRank?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobDetailsCompanyInsightsImpressionEvent.pdsc + + export interface PremiumJobDetailsCompanyInsightsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + isInsightsThresholdMet: boolean; + viewerCompanyUrn?: string; + viewerSchoolUrn?: string; + wasFunctionGrowthShown: boolean; + hiredFromCompanyUrn?: string; + hiredFromSchoolUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobDetailsGlobalNullStateImpressionEvent.pdsc + + export interface PremiumJobDetailsGlobalNullStateImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobDetailsSalaryImpressionEvent.pdsc + + export interface PremiumJobDetailsSalaryImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobDetailsSalaryServedEvent.pdsc + + export interface PremiumJobDetailsSalaryServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + baseSalary?: Com.Linkedin.Avro2pegasus.Events.Common.Premium.SalaryRecord; + totalCompensation?: Com.Linkedin.Avro2pegasus.Events.Common.Premium.SalaryRecord; + responseCount?: number; + facets: PremiumSalaryInsightFacetType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobDetailsTopApplicantJobsImpressionEvent.pdsc + + export interface PremiumJobDetailsTopApplicantJobsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + impressedJobUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobsHomeFastGrowingCompaniesImpressionEvent.pdsc + + export interface PremiumJobsHomeFastGrowingCompaniesImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + superTitleUrn?: string; + impressedCompanyUrns: string[]; + hasTypeahead: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobsHomePivotPeopleCardImpressionEvent.pdsc + + export interface PremiumJobsHomePivotPeopleCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberUrn: string; + sprinkleType?: Com.Linkedin.Avro2pegasus.Common.Jobs.PeopleRecommendationSprinkleType; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobsHomePivotRecommendationsImpressionEvent.pdsc + + export interface PremiumJobsHomePivotRecommendationsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + pivotDimension: PivotDimension; + pivots: CareerPivot[]; + recommendedMemberCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobsHomeTopApplicantJobsImpressionEvent.pdsc + + export interface PremiumJobsHomeTopApplicantJobsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + impressedJobUrns: string[]; + referenceId?: string; + duration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumJobsHomeTopJobsRelevanceReasonsImpressionEvent.pdsc + + export interface PremiumJobsHomeTopJobsRelevanceReasonsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + TopApplicantFlavorMetadata?: Com.Linkedin.Avro2pegasus.Events.Common.Premium.TopApplicantFlavorMetadata; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumLearningProductActionEvent.pdsc + + export interface PremiumLearningProductActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumLearningProductCategoryImpressionEvent.pdsc + + export interface PremiumLearningProductCategoryImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + categoryUrn: string; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumLearningProductCourseImpressionEvent.pdsc + + export interface PremiumLearningProductCourseImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + courseUrn: string; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumLearningProductPageViewEvent.pdsc + + export interface PremiumLearningProductPageViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + categoryUrn: string; + hero: number; + collections: string[]; + learningStartingPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumLyndaActionEvent.pdsc + + export interface PremiumLyndaActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + premiumLyndaTrackingCode: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumLyndaImpressionEvent.pdsc + + export interface PremiumLyndaImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + premiumLyndaTrackingCode: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumModalSalaryExplorerImpressionEvent.pdsc + + export interface PremiumModalSalaryExplorerImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumNavPrimaryButtonImpressionEvent.pdsc + + export interface PremiumNavPrimaryButtonImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + callToActionUrl: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumOnboardingImpressionEvent.pdsc + + export interface PremiumOnboardingImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + chooserSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + subsFamily: ProductSubsFamily; + orderUrn?: string; + receiptUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumPaywallActionEvent.pdsc + + export interface PremiumPaywallActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + paywallReferenceId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: PremiumPaywallActionType; + urlClicked?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumPaywallActionType.pdsc + + export type PremiumPaywallActionType = 'UPGRADE_CLICKED' | 'LEARN_MORE_CLICKED' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumPaywallImpressionEvent.pdsc + + export interface PremiumPaywallImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + paywallReferenceId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + restrictionType: Com.Linkedin.Avro2pegasus.Common.Premium.PremiumPaywallRestrictionType; + paywallType: Com.Linkedin.Avro2pegasus.Common.Premium.PremiumPaywallType; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumPivotPeopleCardStartConversationActionEvent.pdsc + + export interface PremiumPivotPeopleCardStartConversationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumPivotTypeaheadActionEvent.pdsc + + export interface PremiumPivotTypeaheadActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + pivotDimension: PivotDimension; + sourcePivotUrns: string[]; + targetPivotUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumProductPopupImpressionEvent.pdsc + + export interface PremiumProductPopupImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + popupType: PremiumProductPopupType; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumProductPopupType.pdsc + + export type PremiumProductPopupType = 'ABUSE' | 'EMBARGO' | 'NOT_SUPPORTED'; + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumRedeemPageComponent.pdsc + + export type PremiumRedeemPageComponent = + | 'HEADER_SECTION' + | 'PLAN_VALUES_SECTION' + | 'PLAN_ADVANTAGES_SECTION' + | 'FAQ_SECTION' + | 'FOOTER_SECTION' + | 'STICKY_FOOTER_CTA'; + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumRedeemPageComponentImpressionEvent.pdsc + + export interface PremiumRedeemPageComponentImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + redeemPageComponent: PremiumRedeemPageComponent; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumRedeemPageImpressionEvent.pdsc + + export interface PremiumRedeemPageImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + premiumProductPromotionUrn: string; + premiumProductUrn: string; + planTypeParameter?: string; + redeemType: RedeemType; + upsellOrderOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumRelevanceReasonsJobSearchImpressionEvent.pdsc + + export interface PremiumRelevanceReasonsJobSearchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + recommendationFlavors: Com.Linkedin.Avro2pegasus.Events.Jobs.JobRecommendationFlavor[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumSalaryInsightFacetType.pdsc + + export type PremiumSalaryInsightFacetType = + | 'TITLEID' + | 'COUNTRY' + | 'COMPANYID' + | 'COMPANYSIZE' + | 'REGION' + | 'INDUSTRY'; + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumSubscriptionAutomationActionType.pdsc + + export type PremiumSubscriptionAutomationActionType = 'NEW_PROVISION' | 'RENEWAL'; + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumSubscriptionAutomationGrantMemberType.pdsc + + export type PremiumSubscriptionAutomationGrantMemberType = 'FULLTIME_EMPLOYEE' | 'ALUMNUS'; + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumSubscriptionAutomationRequestProcessedEvent.pdsc + + export interface PremiumSubscriptionAutomationRequestProcessedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberType: PremiumSubscriptionAutomationGrantMemberType; + actionType: PremiumSubscriptionAutomationActionType; + isActionSuccessful: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumSwitchActionEvent.pdsc + + export interface PremiumSwitchActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + interactionType: Com.Linkedin.Avro2pegasus.Events.Common.ControlInteractionType; + switchSourceSubscription: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumSubscription; + switchTargetSubscription: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumSubscription; + isCheckoutUrlGenerated: boolean; + switcherSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumSwitchBlockedEvent.pdsc + + export interface PremiumSwitchBlockedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contextUrn?: string; + currentSubscriptionPlan: Com.Linkedin.Avro2pegasus.Events.Common.Premium.SubcriptionPlan; + reason: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumUpsellBlockingReasons; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumSwitcherFallbackImpressionEvent.pdsc + + export interface PremiumSwitcherFallbackImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + fallbackType: SwitcherFallbackType; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumSwitcherPageImpressionEvent.pdsc + + export interface PremiumSwitcherPageImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + currentSubscriptions: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumSubscription[]; + subHeaderType: SwitcherSubHeaderType; + campaignName?: string; + upsellOrderOrigin?: string; + highlightedFeatures: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumFeature[]; + switcherSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumSwitcherPlanCardImpressionEvent.pdsc + + export interface PremiumSwitcherPlanCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + subscriptionPlan: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumSubscription; + availableFeatures: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumFeature[]; + planCardDisplayStatus: SwitcherPlanCardDisplayStatus; + planCardCtaType: SwitcherPlanCardCtaType; + switcherSessionStartPageInstance: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumTimeBasedFreeFeatureAccessImpressionEvent.pdsc + + export interface PremiumTimeBasedFreeFeatureAccessImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + period: Com.Linkedin.Avro2pegasus.Events.Common.DateRange; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumUpsellChannel.pdsc + + export type PremiumUpsellChannel = + | 'WVMP' + | 'NAVBAR' + | 'HYR' + | 'INMAIL' + | 'PROFILE' + | 'SETTINGS' + | 'SEARCH' + | 'JOBS' + | 'EMAIL' + | 'SPONSORED_INMAIL' + | 'APP_LAUNCHER' + | 'ME' + | 'LEARNING_COURSE' + | 'PROFINDER_RFP_DETAILS' + | 'LEARNING' + | 'FEED' + | 'ESSENTIALS' + | 'COMPANY' + | 'MY_NETWORK' + | 'JOB_SEEKER_APP_JOB_DETAILS' + | 'JOB_SEEKER_APP_JOB_POSTER' + | 'JOB_SEEKER_APP_JOB_DESCRIPTION' + | 'JOB_SEEKER_APP_POST_APPLY' + | 'SAMSUNG_PROMO' + | 'SPONSORED_UPDATE' + | 'AASAAN' + | 'SERVICE_REQUEST_DETAILS' + | 'INTERVIEW_PREP'; + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumUpsellImpressionEvent.pdsc + + export interface PremiumUpsellImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + upsellControlUrn?: string; + campaignUrn?: string; + contextUrn?: string; + upsellOrderOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeBannerServedEvent.pdsc + + export interface PremiumWelcomeBannerServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + subscriptionPurchased: Com.Linkedin.Avro2pegasus.Events.Common.Premium.SubcriptionPlan; + legoTrackingToken: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowBenefitCardImpressionEvent.pdsc + + export interface PremiumWelcomeFlowBenefitCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + cardPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + premiumFeature: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumFeature; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowDoneCardImpressionEvent.pdsc + + export interface PremiumWelcomeFlowDoneCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + cardPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowExitConfirmationDialogImpressionEvent.pdsc + + export interface PremiumWelcomeFlowExitConfirmationDialogImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + cardPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowExitEvent.pdsc + + export interface PremiumWelcomeFlowExitEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + stepsCompleted: number; + stepsTotal: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowFeatureTipCardImpressionEvent.pdsc + + export interface PremiumWelcomeFlowFeatureTipCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + cardPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowGreetingCardImpressionEvent.pdsc + + export interface PremiumWelcomeFlowGreetingCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + cardPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowNotificationSettingsCardImpressionEvent.pdsc + + export interface PremiumWelcomeFlowNotificationSettingsCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + cardPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowNotificationSettingsResponseEvent.pdsc + + export interface PremiumWelcomeFlowNotificationSettingsResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + premiumNotificationSettings: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumNotificationSetting[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowSettingResponseEvent.pdsc + + export interface PremiumWelcomeFlowSettingResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + settingName: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumSettingName; + isAllowOpenProfileEnabled?: boolean; + discloseAsProfileViewer?: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumSettingDiscloseAsProfileViewer; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowSurveyCardImpressionEvent.pdsc + + export interface PremiumWelcomeFlowSurveyCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + cardPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/PremiumWelcomeFlowSurveyResponseEvent.pdsc + + export interface PremiumWelcomeFlowSurveyResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + purchaseIntent: Com.Linkedin.Avro2pegasus.Events.Common.Premium.PremiumPurchaseIntentType; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/ProductSubsFamily.pdsc + + export type ProductSubsFamily = 'JSS' | 'GENERAL' | 'SALES' | 'TALENT' | 'LEARNING' | 'ESSENTIALS'; + // Generated from: com/linkedin/avro2pegasus/events/premium/RedeemedType.pdsc + + export type RedeemedType = 'PRE_CANCEL' | 'POST_CANCEL'; + // Generated from: com/linkedin/avro2pegasus/events/premium/RedeemType.pdsc + + export type RedeemType = + | 'WINBACK' + | 'VOLUME_SALES' + | 'GTM_REDEEM' + | 'GTM_CONTINUE' + | 'TRANSFER' + | 'GTM_REACTIVATE' + | 'MSFT_COUPON' + | 'POISSON_REDEEM'; + // Generated from: com/linkedin/avro2pegasus/events/premium/ResumeOptimizationInsightsJobPhraseActionEvent.pdsc + + export interface ResumeOptimizationInsightsJobPhraseActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + insightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: Com.Linkedin.Avro2pegasus.Events.Common.Premium.JobPhraseActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/ResumeOptimizationInsightsJobPhraseImpressionEvent.pdsc + + export interface ResumeOptimizationInsightsJobPhraseImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + insightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/ResumeOptimizationInsightsServedEvent.pdsc + + export interface ResumeOptimizationInsightsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + insights: Com.Linkedin.Avro2pegasus.Events.Common.Premium.ResumeOptimizationInsight[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/SelectionMethod.pdsc + + export type SelectionMethod = 'CLICK' | 'TAB' | 'ENTER'; + // Generated from: com/linkedin/avro2pegasus/events/premium/SelectionRecord.pdsc + + export interface SelectionRecord { + selectionMethod: SelectionMethod; + selectedValue: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/SuggestedPhraseSkillActionEvent.pdsc + + export interface SuggestedPhraseSkillActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + skillUrn: string; + action: Com.Linkedin.Avro2pegasus.Events.Common.Premium.SuggestedPhraseSkillActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/SuggestedPhraseSkillImpressionEvent.pdsc + + export interface SuggestedPhraseSkillImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + skillUrn: string; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/premium/SwitcherFallbackType.pdsc + + export type SwitcherFallbackType = + | 'CS_GRANTED_SUB' + | 'PURCHASED_FROM_IOS' + | 'VOLUME_SALES' + | 'BULK_PURCHASE' + | 'FIXED_DURATION_PLAN' + | 'EMBARGO' + | 'CREATED' + | 'LEGACY_IN_MULTIPLE_SKUS' + | 'ESSENTIALS_IN_MULTIPLE_SKUS' + | 'EXCHANGE_NOT_ALLOWED' + | 'GENERIC_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/premium/SwitcherPlanCardCtaType.pdsc + + export type SwitcherPlanCardCtaType = + | 'NO_CTA' + | 'MONTHLY_TO_ANNUAL_UPGRADE_LINK' + | 'ANNUAL_TO_MONTHLY_DOWNGRADE_LINK' + | 'SWITCH_BUTTON'; + // Generated from: com/linkedin/avro2pegasus/events/premium/SwitcherPlanCardDisplayStatus.pdsc + + export type SwitcherPlanCardDisplayStatus = 'GRAYED_OUT' | 'POPPED_OUT' | 'DEFAULT'; + // Generated from: com/linkedin/avro2pegasus/events/premium/SwitcherSubHeaderType.pdsc + + export type SwitcherSubHeaderType = + | 'ON_CURRENTLY_SOLD_PLAN' + | 'ON_LEGACY_PLAN' + | 'HAS_MULTIPLE_PLANS' + | 'HAS_PROMOTION_PRICE'; + // Generated from: com/linkedin/avro2pegasus/events/premium/TopApplicantJobsServedRecord.pdsc + + export interface TopApplicantJobsServedRecord { + numberOfJobsAvailable: number; + numberOfJobsServed: number; + applicantRankPercentRecords: ApplicantRankPercentRecord[]; + numberOfJobsAfterFilters?: number; + } + } + namespace Premiuminsights { + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/HopscotchShownOnPageType.pdsc + + export type HopscotchShownOnPageType = 'LINKEDIN_HOME' | 'COMPANY_OVERVIEW' | 'COMPANIES_HOME'; + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/MemberCardClickType.pdsc + + export type MemberCardClickType = 'NAME' | 'PICTURE' | 'MINI_PROFILE' | 'CURRENT_COMPANY_LINK'; + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/MemberPositionType.pdsc + + export type MemberPositionType = 'CURRENT' | 'PREVIOUS'; + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/movementType.pdsc + + export type movementType = 'HIRE' | 'EXIT'; + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/OrganizationCompetitorsSuggestionSubmittedEvent.pdsc + + export interface OrganizationCompetitorsSuggestionSubmittedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organizationUrn: string; + suggestedCompetitorUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/OrganizationCompetitorSurveyRespondedEvent.pdsc + + export interface OrganizationCompetitorSurveyRespondedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organizationUrn: string; + competitorOrganizationUrn: string; + isCompetitor: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumCareerInsightsHeadcountImpressionEvent.pdsc + + export interface PremiumCareerInsightsHeadcountImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + companyUrn: string; + isCompanyPageAdmin: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsFunctionDropDownClickEvent.pdsc + + export interface PremiumInsightsFunctionDropDownClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + functionImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + isCompanyPageAdmin: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsFunctionDropDownEditEvent.pdsc + + export interface PremiumInsightsFunctionDropDownEditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + functionImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + functionsNewlySelected: string[]; + functionsNewlyDeselected: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsFunctionImpressionEvent.pdsc + + export interface PremiumInsightsFunctionImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + functionImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + functionsShowed: string[]; + triggerEvent: triggerEventType; + isCompanyPageAdmin: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsFunctionTooltipImpressionEvent.pdsc + + export interface PremiumInsightsFunctionTooltipImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + functionImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + year: number; + quarter: number; + function: string; + month?: Com.Linkedin.Avro2pegasus.Events.Common.Month; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsHeadcountImpressionEvent.pdsc + + export interface PremiumInsightsHeadcountImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + headcountImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + isCompanyPageAdmin: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsHeadcountToolTipImpressionEvent.pdsc + + export interface PremiumInsightsHeadcountToolTipImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + companyUrn: string; + headcountImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + yearMonth: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsHopscotchButtonType.pdsc + + export type PremiumInsightsHopscotchButtonType = 'CALL_TO_ACTION' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsHopscotchClickedEvent.pdsc + + export interface PremiumInsightsHopscotchClickedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + hopscotchImpressionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + buttonClicked: PremiumInsightsHopscotchButtonType; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsHopscotchImpressionEvent.pdsc + + export interface PremiumInsightsHopscotchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + hopscotchImpressionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + shownOnPage: HopscotchShownOnPageType; + companyUrn?: string; + destinationCompanyUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsImpressionEvent.pdsc + + export interface PremiumInsightsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + insightsImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + isDefaultTab: boolean; + companyUrn: string; + isCompanyPageAdmin: boolean; + version?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsJobOpeningsFiltersEditedEvent.pdsc + + export interface PremiumInsightsJobOpeningsFiltersEditedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobOpeningsImpressionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + selectedFunctionUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsJobOpeningsFiltersImpressionEvent.pdsc + + export interface PremiumInsightsJobOpeningsFiltersImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobOpeningsImpressionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + organizationUrn: string; + isOrganizationPageAdmin: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsJobOpeningsImpressionEvent.pdsc + + export interface PremiumInsightsJobOpeningsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobOpeningsImpressionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + isCompanyPageAdmin: boolean; + functionUrnsShowed?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsJobOpeningsToolTipImpressionEvent.pdsc + + export interface PremiumInsightsJobOpeningsToolTipImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobOpeningsImpressionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + yearMonthOfTooltipData: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsNotableAlumniImpressionEvent.pdsc + + export interface PremiumInsightsNotableAlumniImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + notableAlumniTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + isCompanyPageAdmin: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsNotableAlumniMemberCardClickedEvent.pdsc + + export interface PremiumInsightsNotableAlumniMemberCardClickedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + notableAlumniTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + memberUrn: string; + clickType: MemberCardClickType; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsNotableAlumniPaginationButtonClickEvent.pdsc + + export interface PremiumInsightsNotableAlumniPaginationButtonClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + notableAlumniTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + fromPageNumber: number; + toPageNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsNotableAlumniPositionTooltipImpressionEvent.pdsc + + export interface PremiumInsightsNotableAlumniPositionTooltipImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profileUrn: string; + positionType: MemberPositionType; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsTalentChangeImpressionEvent.pdsc + + export interface PremiumInsightsTalentChangeImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentChangeImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + seniorityLevel: seniorityLevelType; + triggerEvent: triggerEventType; + isCompanyPageAdmin: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsTalentChangeMemberCardClickEvent.pdsc + + export interface PremiumInsightsTalentChangeMemberCardClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberUrn: string; + clickType: MemberCardClickType; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsTalentChangeMemberListImpressionEvent.pdsc + + export interface PremiumInsightsTalentChangeMemberListImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentChangeImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + seniorityLevel: seniorityLevelType; + moduleViewed: movementType; + pageViewed: number; + isCompanyPageAdmin: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsTalentChangePaginationButtonClickEvent.pdsc + + export interface PremiumInsightsTalentChangePaginationButtonClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentChangeImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + seniorityLevel: seniorityLevelType; + moduleViewed: movementType; + fromPageNumber: number; + toPageNumber: number; + isCompanyPageAdmin: boolean; + yearMonth?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsTalentDropDownClickEvent.pdsc + + export interface PremiumInsightsTalentDropDownClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentChangeImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + isCompanyPageAdmin: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsTalentToolTipImpressionEvent.pdsc + + export interface PremiumInsightsTalentToolTipImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentChangeImpressionTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + yearMonth: Com.Linkedin.Avro2pegasus.Events.Common.Date; + seniorityLevel: seniorityLevelType; + moduleViewed: movementType; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsTeaserClickedEvent.pdsc + + export interface PremiumInsightsTeaserClickedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + teaserImpressionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + teaserType?: PremiumInsightsTeaserType; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsTeaserImpressionEvent.pdsc + + export interface PremiumInsightsTeaserImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + teaserImpressionTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + availableTeaserTypes: PremiumInsightsTeaserType[]; + teaserDisplayed?: PremiumInsightsTeaserValues; + teasersDisplayed: PremiumInsightsTeaserType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsTeaserType.pdsc + + export type PremiumInsightsTeaserType = + | 'FUNCTION' + | 'GENERIC' + | 'HEADCOUNT' + | 'HIRES' + | 'TOP_FUNCTION' + | 'JOBS' + | 'SEE_MORE' + | 'FUNCTION_GROWTH' + | 'NEW_HIRES' + | 'WHO_VIEWED_MY_PROFILE' + | 'TOP_APPLICANT' + | 'FASTEST_GROWING_COMPANIES' + | 'COMPANIES_YOU_FOLLOW' + | 'COURSE_RECOMMENDATIONS'; + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsTeaserValues.pdsc + + export interface PremiumInsightsTeaserValues { + teaserType: PremiumInsightsTeaserType; + numberOfMembersDisplayed?: number; + totalHeadcountChangePercentage?: number; + functionId?: number; + functionHeadcountChangePercentage?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsUpsellClickEvent.pdsc + + export interface PremiumInsightsUpsellClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + upsellRenderTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsUpsellImpressionEvent.pdsc + + export interface PremiumInsightsUpsellImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + upsellRenderTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + teaserType?: PremiumInsightsTeaserType; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/PremiumInsightsUpsellRenderedEvent.pdsc + + export interface PremiumInsightsUpsellRenderedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + upsellRenderTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + companyUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/seniorityLevelType.pdsc + + export type seniorityLevelType = 'EMPLOYEES' | 'LEADERS'; + // Generated from: com/linkedin/avro2pegasus/events/premiuminsights/triggerEventType.pdsc + + export type triggerEventType = 'TAB_LOAD' | 'DEPARTMENT_CHANGE'; + } + namespace Profile { + // Generated from: com/linkedin/avro2pegasus/events/profile/HighlightAction.pdsc + + export type HighlightAction = 'SEE_DETAILS'; + // Generated from: com/linkedin/avro2pegasus/events/profile/HighlightActionEvent.pdsc + + export interface HighlightActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + highlightTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionType: HighlightActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/profile/HighlightActionType.pdsc + + export type HighlightActionType = 'CARD' | 'CTA'; + // Generated from: com/linkedin/avro2pegasus/events/profile/HighlightImpression.pdsc + + export interface HighlightImpression { + highlightTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + visibleTime: number; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/profile/HighlightImpressionEvent.pdsc + + export interface HighlightImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + vieweeUrn: string; + highlightsImpressed: HighlightImpression[]; + } + // Generated from: com/linkedin/avro2pegasus/events/profile/HighlightServedEvent.pdsc + + export interface HighlightServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + vieweeUrn: string; + highlightsServed: HighlightServedInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/events/profile/HighlightServedInfo.pdsc + + export interface HighlightServedInfo { + highlightTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + cardActionCategory?: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + ctaActionCategory?: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + highlightType: HighlightType; + } + // Generated from: com/linkedin/avro2pegasus/events/profile/HighlightType.pdsc + + export type HighlightType = + | 'SHARED_GROUPS' + | 'SHARED_CONNECTIONS' + | 'SHARED_EDUCATIONS' + | 'SHARED_POSITIONS' + | 'CONTACT_INTERESTS' + | 'DESCRIPTIVE_COMPANY' + | 'DESCRIPTIVE_SCHOOL' + | 'DESCRIPTIVE_SENIOR_COMPANY' + | 'PROPS_BIRTHDAY' + | 'PROPS_WORK_ANNIVERSARY' + | 'PROPS_POSITION_CHANGE' + | 'JOB_POSTINGS' + | 'PROPS_CONNECTION_ANNIVERSARY' + | 'PROPS_EDUCATION'; + // Generated from: com/linkedin/avro2pegasus/events/profile/ProfileViewHighlight.pdsc + + export interface ProfileViewHighlight { + highlight: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/profile/ProfileViewHighlightActionEvent.pdsc + + export interface ProfileViewHighlightActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + highlightAction: HighlightAction; + highlight: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/profile/ProfileViewHighlightViewEvent.pdsc + + export interface ProfileViewHighlightViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + highlightEntities: ProfileViewHighlight[]; + } + } + namespace Profileedit { + // Generated from: com/linkedin/avro2pegasus/events/profileedit/ProfileEditMemberFeedbackEvent.pdsc + + export interface ProfileEditMemberFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contextType: Com.Linkedin.Avro2pegasus.Common.Guidededit.GuidedEditContextType; + feedbackTopic: Com.Linkedin.Avro2pegasus.Common.Profileedit.ProfileEditMemberFeedbackTopic; + memberFeedback?: Com.Linkedin.Avro2pegasus.Common.Profileedit.ProfileEditMemberFeedbackType; + customFeedback?: string; + } + } + namespace Profinder { + // Generated from: com/linkedin/avro2pegasus/events/profinder/Badge.pdsc + + export type Badge = 'PROFILE' | 'BEST_OF_2016' | 'BEST_OF_2017'; + // Generated from: com/linkedin/avro2pegasus/events/profinder/BadgeCodeCopyActionEvent.pdsc + + export interface BadgeCodeCopyActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + badge: Badge; + placeUrn?: string; + serviceCategoryUrns: string[]; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + geoPlaceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ConsumerRfpDetailViewEvent.pdsc + + export interface ConsumerRfpDetailViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceCategoryUrn?: string; + consumerRfpSummary: ConsumerRfpSummary; + serviceProposalUrns: string[]; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + serviceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ConsumerRfpListViewEvent.pdsc + + export interface ConsumerRfpListViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + pageNumber: number; + consumerRfpSummaries: ConsumerRfpSummary[]; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ConsumerRfpStatus.pdsc + + export type ConsumerRfpStatus = 'PUBLISHED' | 'FLAGGED' | 'ACCEPTED' | 'COMPLETED' | 'CLOSED'; + // Generated from: com/linkedin/avro2pegasus/events/profinder/ConsumerRfpSummary.pdsc + + export interface ConsumerRfpSummary { + requestForProposalsUrn: string; + consumerRfpStatus?: ConsumerRfpStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ConsumerServiceProposalDetailViewEvent.pdsc + + export interface ConsumerServiceProposalDetailViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceProposalUrn: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/NewServiceNotifyEvent.pdsc + + export interface NewServiceNotifyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceCategoryUrn?: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + serviceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/OnboardingActionType.pdsc + + export type OnboardingActionType = 'CONTINUE' | 'SUBMIT'; + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProfinderBlogPostViewEvent.pdsc + + export interface ProfinderBlogPostViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + channelOrigin?: string; + pathToPost: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProfinderBlogViewEvent.pdsc + + export interface ProfinderBlogViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + channelOrigin?: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProfinderConsumerHubViewEvent.pdsc + + export interface ProfinderConsumerHubViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProfinderPromoImpressionEvent.pdsc + + export interface ProfinderPromoImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + promoType: PromoType; + serviceCategoryUrn?: string; + channelOrigin?: string; + serviceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProfinderProviderHubViewEvent.pdsc + + export interface ProfinderProviderHubViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProfinderServiceCategoryViewEvent.pdsc + + export interface ProfinderServiceCategoryViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceCategoryUrn?: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + serviceSkillFamilyUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProfinderServicesViewEvent.pdsc + + export interface ProfinderServicesViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/PromoType.pdsc + + export type PromoType = 'JOBS_HOME' | 'JOB_DETAILS'; + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProviderRequestStatus.pdsc + + export type ProviderRequestStatus = + | 'ACTIVE' + | 'CLOSED' + | 'EXPIRED' + | 'PROPOSAL_SUBMITTED' + | 'IN_CONVERSATION' + | 'PROPOSAL_DECLINED' + | 'PASSED'; + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProviderRfpDetailViewEvent.pdsc + + export interface ProviderRfpDetailViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceCategoryUrn?: string; + providerRfpSummary: ProviderRfpSummary; + serviceProposalUrn?: string; + proposalsCount?: number; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + serviceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProviderRfpListViewEvent.pdsc + + export interface ProviderRfpListViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + pageNumber: number; + providerRfpSummaries: ProviderRfpSummary[]; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProviderRfpNotifyEvent.pdsc + + export interface ProviderRfpNotifyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceProviderMemberUrns: string[]; + providerRfpSummaries: ProviderRfpSummary[]; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProviderRfpPassEvent.pdsc + + export interface ProviderRfpPassEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + providerRfpSummary: ProviderRfpSummary; + rfpResponseCount?: number; + channelOrigin?: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProviderRfpSummary.pdsc + + export interface ProviderRfpSummary { + requestForProposalsUrn: string; + providerRequestStatus: ProviderRequestStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ProviderServiceProposalDetailViewEvent.pdsc + + export interface ProviderServiceProposalDetailViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceProposalUrn: string; + channelOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/QuestionAnswerPair.pdsc + + export interface QuestionAnswerPair { + questionUrn: string; + answers: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/RequestForProposalsCloseEvent.pdsc + + export interface RequestForProposalsCloseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestForProposalUrn: string; + closingReason: RequestForProposalsClosingReason; + channelOrigin?: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/RequestForProposalsClosingReason.pdsc + + export type RequestForProposalsClosingReason = + | 'PRO_HIRED_ON_LINKEDIN' + | 'PRO_HIRED_SOMEWHERE_ELSE' + | 'NOT_READY_TO_HIRE_YET' + | 'JUST_TESTING_PROFINDER' + | 'NONE_OF_THE_ABOVE'; + // Generated from: com/linkedin/avro2pegasus/events/profinder/RfpCreateEvent.pdsc + + export interface RfpCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestForProposalUrn: string; + serviceCategoryUrn?: string; + rfpCreateFlowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + referringRfpServiceCategoryUrn?: string; + searchId?: string; + channelOrigin?: string; + serviceSkillUrn?: string; + referringServiceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/RfpCreateFailedEvent.pdsc + + export interface RfpCreateFailedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + failureReason: RfpCreateFailType; + questionAnswerPairs: QuestionAnswerPair[]; + serviceCategoryUrn?: string; + rfpCreateFlowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + serviceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/RfpCreateFailType.pdsc + + export type RfpCreateFailType = + | 'UNSUPPORTED_LOCATION' + | 'GUEST_SENDER' + | 'BAD_USER' + | 'BAD_CONTENT' + | 'INTERNAL_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/profinder/RFPFormDropOffEvent.pdsc + + export interface RFPFormDropOffEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceCategoryUrn?: string; + isHowProFinderWorksShown: boolean; + totalPages: number; + dropOffPage: number; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + serviceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/RfpQuestionnaireViewEvent.pdsc + + export interface RfpQuestionnaireViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceCategoryUrn?: string; + questionnaireUrn: string; + rfpCreateFlowId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + referringRfpServiceCategoryUrn?: string; + userLocation?: Com.Linkedin.Avro2pegasus.Events.Common.Location; + channelOrigin?: string; + geoPlaceUrn?: string; + serviceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProposalCreateEvent.pdsc + + export interface ServiceProposalCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceCategoryUrn?: string; + serviceProposalUrn: string; + channelOrigin?: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + serviceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProposalDeclineEvent.pdsc + + export interface ServiceProposalDeclineEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceProposalUrn: string; + channelOrigin?: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProposalQuickReply.pdsc + + export type ServiceProposalQuickReply = 'NOT_A_FIT' | 'REVIEWING_PROPOSALS' | 'WANT_TO_LEARN_MORE'; + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProposalQuickReplyActionEvent.pdsc + + export interface ServiceProposalQuickReplyActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestForProposalsUrn: string; + serviceProposalUrn: string; + serviceProviderUrn: string; + serviceCategoryUrn?: string; + reply: ServiceProposalQuickReply; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + serviceSkillUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProposalReplyEvent.pdsc + + export interface ServiceProposalReplyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceProposalUrn: string; + mailboxItemUrn: string; + channelOrigin?: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProposalWithdrawEvent.pdsc + + export interface ServiceProposalWithdrawEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceProposalUrn: string; + channelOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProviderContactFormViewEvent.pdsc + + export interface ServiceProviderContactFormViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceProviderMemberUrn: string; + questionnaireUrn: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProviderDirectoryViewEvent.pdsc + + export interface ServiceProviderDirectoryViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceUrn: string; + locationUrn?: string; + pageNumber: number; + providerProfiles: Com.Linkedin.Avro2pegasus.Common.Profinder.ServiceProviderProfileData[]; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + geoPlaceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProviderInquirySendEvent.pdsc + + export interface ServiceProviderInquirySendEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + senderHandleUrn?: string; + inquiryUrn: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProviderOnboardingActionEvent.pdsc + + export interface ServiceProviderOnboardingActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + onboardingPageName: string; + action: OnboardingActionType; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProviderProfileViewEvent.pdsc + + export interface ServiceProviderProfileViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + providerProfile: Com.Linkedin.Avro2pegasus.Common.Profinder.ServiceProviderProfileData; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/profinder/ServiceProviderSuggestedSearchViewEvent.pdsc + + export interface ServiceProviderSuggestedSearchViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + serviceQuery: string; + locationQuery?: string; + suggestedServiceUrns: string[]; + suggestedLocationUrn?: string; + profinderWorkflowId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channelOrigin?: string; + } + } + namespace Proml { + // Generated from: com/linkedin/avro2pegasus/events/proml/FeatureTrackingEvent.pdsc + + export interface FeatureTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + referenceId: string; + metadata: Com.Linkedin.Avro2pegasus.Events.Common.Proml.FeatureMetadata[]; + entityFeatures: Com.Linkedin.Avro2pegasus.Events.Common.Proml.EntityFeatures[]; + } + } + namespace Promotions { + // Generated from: com/linkedin/avro2pegasus/events/promotions/PromotionActionEvent.pdsc + + export interface PromotionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + phoneNumberInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.PhoneNumberInfo; + productUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/promotions/PromotionEligibleEvent.pdsc + + export interface PromotionEligibleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + phoneNumberInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.PhoneNumberInfo; + productUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/promotions/PromotionImpressionEvent.pdsc + + export interface PromotionImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + phoneNumberInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.PhoneNumberInfo; + productUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/promotions/UpgradeConfirmationViewEvent.pdsc + + export interface UpgradeConfirmationViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + phoneNumberInfo?: Com.Linkedin.Avro2pegasus.Common.Messages.Flock.PhoneNumberInfo; + productUrn: string; + } + } + namespace Prop { + // Generated from: com/linkedin/avro2pegasus/events/prop/Aggregation.pdsc + + export interface Aggregation { + positionInAggregation: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + typeOfAggregation: string; + } + // Generated from: com/linkedin/avro2pegasus/events/prop/BriefingServedEvent.pdsc + + export interface BriefingServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + briefingType: BriefingType; + briefingVersionId: string; + props: Prop[]; + } + // Generated from: com/linkedin/avro2pegasus/events/prop/BriefingType.pdsc + + export type BriefingType = 'ALL_PROPS' | 'ALL_PROPS_WITHOUT_INVITATION'; + // Generated from: com/linkedin/avro2pegasus/events/prop/DecoratedPropUpdateData.pdsc + + export interface DecoratedPropUpdateData { + avoData: PropUpdateActorVerbObjectData; + createdTime?: number; + totalLikes?: number; + totalComments?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/prop/Entity.pdsc + + export interface Entity { + urn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleTime: number; + duration?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/prop/Prop.pdsc + + export interface Prop { + propUrn: string; + rankerTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + isUnseen: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/prop/PropActionEvent.pdsc + + export interface PropActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + propUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn?: string; + actionType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/prop/PropImpressionEvent.pdsc + + export interface PropImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + entities: Entity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/prop/PropServedEvent.pdsc + + export interface PropServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + requestId: string; + paginationContextId: string; + entities: PropUpdate[]; + } + // Generated from: com/linkedin/avro2pegasus/events/prop/PropUpdate.pdsc + + export interface PropUpdate { + updateUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + aggregation?: Aggregation; + decoratedData?: DecoratedPropUpdateData; + } + // Generated from: com/linkedin/avro2pegasus/events/prop/PropUpdateActorVerbObjectData.pdsc + + export interface PropUpdateActorVerbObjectData { + actorUrn: string; + verbType: string; + objectUrn?: string; + } + } + namespace Props { + // Generated from: com/linkedin/avro2pegasus/events/props/ProfileUpdatePropEvent.pdsc + + export interface ProfileUpdatePropEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + updateTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/props/PropsTriggerEvent.pdsc + + export interface PropsTriggerEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + triggerId: string; + triggerType: TriggerType; + organizationFunding?: Com.Linkedin.Avro2pegasus.Events.Common.Props.OrganizationFunding; + } + // Generated from: com/linkedin/avro2pegasus/events/props/TriggerType.pdsc + + export type TriggerType = 'ORGANIZATION_FUNDING'; + } + namespace Publishing { + // Generated from: com/linkedin/avro2pegasus/events/publishing/ArticleAuthor.pdsc + + export interface ArticleAuthor { + authorUrn: string; + type: AuthorType; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/ArticleContentUpdateAttemptedEvent.pdsc + + export interface ArticleContentUpdateAttemptedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + linkedInArticleUrn: string; + version: number; + errorCode?: ContentUpdateErrorCode; + state: ArticleContentVersionState; + updateAttemptTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/ArticleContentVersionState.pdsc + + export type ArticleContentVersionState = + | 'PUBLISHED' + | 'DELETED' + | 'DRAFT' + | 'AUTOSAVE' + | 'AUTOSAVE_OF_PUBLISHED'; + // Generated from: com/linkedin/avro2pegasus/events/publishing/ArticleState.pdsc + + export type ArticleState = 'PUBLISHED' | 'DELETED'; + // Generated from: com/linkedin/avro2pegasus/events/publishing/ArticleStateUpdateEvent.pdsc + + export interface ArticleStateUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + linkedInArticleUrn: string; + version: number; + previousState?: ArticleStateV2; + updatedState: ArticleStateV2; + updatedTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/ArticleStateV2.pdsc + + export type ArticleStateV2 = 'PUBLISHED' | 'DELETED' | 'DRAFT' | 'DRAFT_OF_PUBLISHED' | 'PUBLIC_DRAFT'; + // Generated from: com/linkedin/avro2pegasus/events/publishing/Author.pdsc + + export interface Author { + author: string; + type: AuthorType; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/AuthorMetadata.pdsc + + export interface AuthorMetadata { + authorMemberUrn: string; + isInfluencer: boolean; + isEditor: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/AuthorType.pdsc + + export type AuthorType = 'PRIMARY_AUTHOR' | 'AUTHOR' | 'COLLABORATOR'; + // Generated from: com/linkedin/avro2pegasus/events/publishing/ContentSeriesEntityViewEvent.pdsc + + export interface ContentSeriesEntityViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contentSeriesUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/ContentUpdateErrorCode.pdsc + + export type ContentUpdateErrorCode = 'CONTENT_ERROR' | 'INVALID_MEDIA'; + // Generated from: com/linkedin/avro2pegasus/events/publishing/CoverImage.pdsc + + export interface CoverImage { + coverImageSize: string; + coverImageUrl: string; + mediaUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/Embed.pdsc + + export interface Embed { + embedType: string; + embedUrn?: string; + embedUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/HtmlContent.pdsc + + export interface HtmlContent { + htmlText: string; + secureHtmlText: string; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/Mention.pdsc + + export interface Mention { + mentionedEntityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/PublishedArticleActionEvent.pdsc + + export interface PublishedArticleActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + linkedInArticleUrn: string; + permlink: string; + authors: Author[]; + ingestedArticleMetadataUrn: string; + state: ArticleState; + publishedTime: number; + title: string; + content: HtmlContent; + contentCertificationRecord: string; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/PublishedArticleActionV2Event.pdsc + + export interface PublishedArticleActionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + linkedInArticleUrn: string; + permlink: string; + authors: ArticleAuthor[]; + state: ArticleState; + publishedTime: number; + title: string; + plainTextContent: string; + languageCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/PublishedNewsletterContentNotificationEvent.pdsc + + export interface PublishedNewsletterContentNotificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + contentSeriesUrn: string; + authorUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/PublishingActionEvent.pdsc + + export interface PublishingActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + publishingTrackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + publishingWorkFlow: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + actionType: string; + controlUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/PublishingDwellEvent.pdsc + + export interface PublishingDwellEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + publishingTrackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + publishingWorkFlow: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + totalWordCount: number; + dwellTime: number; + isPublished: boolean; + publishedTime: string; + authorMetadata: AuthorMetadata; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/PublishingEditEvent.pdsc + + export interface PublishingEditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + totalWordCount: number; + publishingTrackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + publishingWorkFlow: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + content: string; + isPublished?: boolean; + publishedTime?: string; + authorMetadata: AuthorMetadata; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/PublishingEmbedActionEvent.pdsc + + export interface PublishingEmbedActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + publishingTrackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + publishingWorkFlow: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + embedType: string; + embedAction: string; + embedUrn?: string; + embedUrl?: string; + isSuccess: boolean; + embedProvider?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/PublishingPasteActionEvent.pdsc + + export interface PublishingPasteActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + publishingTrackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + publishingWorkFlow: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + text: string; + textOrigin: string; + htmlIn: string; + htmlOut: string; + totalWordCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/PublishingPublishEvent.pdsc + + export interface PublishingPublishEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + publishingTrackableObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + publishingWorkFlow: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + totalWordCount: number; + content: string; + htmlContents: string; + publishedTime: number; + coverImage?: CoverImage; + mentions?: Mention[]; + embeds?: Embed[]; + authorMetadata: AuthorMetadata; + isFirstTimePublished?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/publishing/SyndicatedArticleViewEvent.pdsc + + export interface SyndicatedArticleViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + articleUrn: string; + syndicatorUrn: string; + } + } + namespace Pulse { + // Generated from: com/linkedin/avro2pegasus/events/pulse/Aggregation.pdsc + + export interface Aggregation { + positionInAggregation: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + typeOfAggregation: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/ChannelTagEvent.pdsc + + export interface ChannelTagEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + articleUrn: string; + channelUrn: string; + isEligibleForNotification: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/Comment.pdsc + + export interface Comment { + trackableCommentObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + threadUrn: string; + commenterUrn: string; + message: string; + level: CommentLevel; + visibleTime: number; + duration: number; + associatedInputControlUrn?: string; + totalReplies: number; + totalLikes: number; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/CommentLevel.pdsc + + export type CommentLevel = 'TOP_LEVEL' | 'REPLY_TO_TOP_LEVEL' | 'REPLY_TO_REPLY'; + // Generated from: com/linkedin/avro2pegasus/events/pulse/Entity.pdsc + + export interface Entity { + trackableObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleTime: number; + duration?: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/ExternalArticleViewEvent.pdsc + + export interface ExternalArticleViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + articleUrn?: string; + contentUrn?: string; + url: string; + feedTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + urlTreatment: UrlTreatment; + updateUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/ExternalArticleViewV2Event.pdsc + + export interface ExternalArticleViewV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + articleUrn?: string; + contentUrn?: string; + url: string; + feedTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + urlTreatment: Com.Linkedin.Avro2pegasus.Events.Feed.UrlTreatment; + updateUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/FeedItems.pdsc + + export interface FeedItems { + trackablePulseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleTime: number; + duration: number; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseCommentServed.pdsc + + export interface PulseCommentServed { + trackableCommentObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + threadPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + positionInThread: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseDecoratedFeedUpdateData.pdsc + + export interface PulseDecoratedFeedUpdateData { + avoData?: Com.Linkedin.Avro2pegasus.Events.Feed.FeedUpdateActorVerbObjectData; + attributedActivityUrn?: string; + createdTime?: number; + totalLikes?: number; + totalComments?: number; + rootActivity?: RootUpdate; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseFeedActionEvent.pdsc + + export interface PulseFeedActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestId: string; + trackablePulseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn: string; + actionType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseFeedImpression2Event.pdsc + + export interface PulseFeedImpression2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + feedItems: FeedItems[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseFeedImpressionEvent.pdsc + + export interface PulseFeedImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: Entity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseFeedServedEvent.pdsc + + export interface PulseFeedServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestId: string; + paginationContextId: string; + entities: PulseFeedUpdateServed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseFeedUpdateActorVerbObjectData.pdsc + + export interface PulseFeedUpdateActorVerbObjectData { + actorUrn?: string; + verbType?: string; + objectUrn?: string; + objectType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseFeedUpdateNotServed.pdsc + + export interface PulseFeedUpdateNotServed { + trackablePulseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + isSponsored: boolean; + aggregation?: Aggregation; + notServedReason: UpdateNotServedReasonType; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseFeedUpdateNotServedEvent.pdsc + + export interface PulseFeedUpdateNotServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: string; + requestId: string; + paginationContextId: string; + entities: PulseFeedUpdateNotServed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseFeedUpdateServed.pdsc + + export interface PulseFeedUpdateServed { + trackablePulseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + isSponsored: boolean; + aggregation?: Aggregation; + decoratedData?: PulseDecoratedFeedUpdateData; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulsePushNotificationEvent.pdsc + + export interface PulsePushNotificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + articleUrn?: string; + recipientUrn: string; + actorUrn?: string; + notificationType: string; + targetedLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + targetedCountryUrns: string[]; + targetedIndustryUrns: string[]; + targetedCompanyUrns: string[]; + contentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseRecServed.pdsc + + export interface PulseRecServed { + trackablePulseRecObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + aggregation?: RecAggregation; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseStoryActionEvent.pdsc + + export interface PulseStoryActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackablePulseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn: string; + actionType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseStoryCommentActionEvent.pdsc + + export interface PulseStoryCommentActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + storyUrn: string; + threadUrn: string; + trackableCommentObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + controlUrn: string; + actionType: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseStoryCommentImpressionEvent.pdsc + + export interface PulseStoryCommentImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: Comment[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseStoryCommentServedEvent.pdsc + + export interface PulseStoryCommentServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackablePulseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + entities: PulseCommentServed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseStoryRecImpressionEvent.pdsc + + export interface PulseStoryRecImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: Recommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/PulseStoryRecServedEvent.pdsc + + export interface PulseStoryRecServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackablePulseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + requestId: string; + paginationContextId: string; + entities: PulseRecServed[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/RecAggregation.pdsc + + export interface RecAggregation { + positionInAggregation: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + typeOfAggregation: string; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/Recommendation.pdsc + + export interface Recommendation { + trackablePulseRecObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleTime: number; + duration: number; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/RootUpdate.pdsc + + export interface RootUpdate { + activityUrn?: string; + avoData: PulseFeedUpdateActorVerbObjectData; + } + // Generated from: com/linkedin/avro2pegasus/events/pulse/UpdateNotServedReasonType.pdsc + + export type UpdateNotServedReasonType = + | 'UNRESOLVABLE_ENTITY' + | 'INCOMPLETE_DECORATION' + | 'UNSUPPORTED_UPDATE' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/pulse/UrlTreatment.pdsc + + export type UrlTreatment = 'AMP' | 'FULL' | 'UNKNOWN'; + } + namespace Pushnotification { + // Generated from: com/linkedin/avro2pegasus/events/pushnotification/PushSettingChangedEvent.pdsc + + export interface PushSettingChangedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + deliveryToken?: string; + pushNotificationsEnabled?: boolean; + alertNotificationsEnabled?: boolean; + soundNotificationsEnabled?: boolean; + badgeNotificationsEnabled?: boolean; + } + } + namespace Pymk { + // Generated from: com/linkedin/avro2pegasus/events/pymk/BlendedContactsRecommendationEvent.pdsc + + export interface BlendedContactsRecommendationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + callDurationMs: number; + durationToGetContactsMs: number; + usageContext: string; + requestType: PymkRequestType; + contactsEvaluatedCount: number; + mostRecentContactCreationTime: number; + uniqueInputContactMembersCount: number; + uniqueInputEmailsCount: number; + uniqueInputPhoneNumbersCount: number; + availablePymksCount?: number; + droppedContacts: ContactScoredEntity[]; + recommendedContacts: RecommendedContact[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pymk/ContactScoredEntity.pdsc + + export interface ContactScoredEntity { + contactMemberUrn?: string; + hashedContactHandleUrn?: string; + score: number; + entityTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/pymk/PymkClientImpressionEvent.pdsc + + export interface PymkClientImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + usageContext: string; + batchIdentifier?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + recommendations: PymkRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/pymk/PymkDiagnosticEvent.pdsc + + export interface PymkDiagnosticEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + parseqTrace: Com.Linkedin.Avro2pegasus.Events.Monitoring.ParseqTrace; + diagnosticEventEmittedReason: PymkDiagnosticEventEmittedReason; + numOfflineCandidatesGenerated: number; + numGaiaCandidatesGenerated: number; + numSearchBackfillCandidatesGenerated: number; + numTotalCandidatesGenerated: number; + numCandidatesFiltered: number; + numCandidatesScored: number; + requestDuration: number; + candidateGenerationDuration: number; + featureGenerationDuration: number; + filteringDuration: number; + scoringRerankingDuration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/pymk/PymkDiagnosticEventEmittedReason.pdsc + + export type PymkDiagnosticEventEmittedReason = 'SLOW_REQUEST' | 'DEBUG_TRACE_ENABLED'; + // Generated from: com/linkedin/avro2pegasus/events/pymk/PymkRecommendation.pdsc + + export interface PymkRecommendation { + recommendationUrn: string; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/pymk/PymkRequestType.pdsc + + export type PymkRequestType = 'MEMBER' | 'NON_MEMBER' | 'ALL'; + // Generated from: com/linkedin/avro2pegasus/events/pymk/RecommendationType.pdsc + + export type RecommendationType = 'M2M' | 'M2G' | 'PYMK'; + // Generated from: com/linkedin/avro2pegasus/events/pymk/RecommendedContact.pdsc + + export interface RecommendedContact { + contactInformation: ContactScoredEntity; + recommendationType: RecommendationType; + } + } + namespace Qap { + // Generated from: com/linkedin/avro2pegasus/events/qap/AnalyzerType.pdsc + + export type AnalyzerType = + | 'BASISTECH' + | 'BASISTECH_CHINESE_JAPANESE' + | 'BASISTECH_TERM_PRESERVING' + | 'DEFAULT'; + // Generated from: com/linkedin/avro2pegasus/events/qap/EntityAnnotation.pdsc + + export interface EntityAnnotation { + queryTaggingResult: TaggedSegmentResult; + standardizedTitles: StandardizedStructuredTitle[]; + extensionAnnotation?: QueryTaggerExtensionAnnotation; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/GermanUmlautConfiguration.pdsc + + export interface GermanUmlautConfiguration { + tagConfigs: GermanUmlautTagConfig[]; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/GermanUmlautTagConfig.pdsc + + export interface GermanUmlautTagConfig { + queryTag: QueryTag; + isExplicitRewrite: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryAnnotationPlatformTrackingEvent.pdsc + + export interface QueryAnnotationPlatformTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: string; + searchRequest: SearchRequestRecord; + queryTagger?: QueryTagger; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTag.pdsc + + export type QueryTag = + | 'FIRST_NAME' + | 'LAST_NAME' + | 'TITLE' + | 'COMPANY_NAME' + | 'SCHOOL_NAME' + | 'GEO' + | 'SKILL' + | 'UNKNOWN' + | 'START'; + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTagger.pdsc + + export interface QueryTagger { + configuration: QueryTaggerConfiguration; + extensionConfiguration?: QueryTaggerExtensionConfiguration; + indexedRawQueryClauses?: string; + annotations: QueryTaggerClauseAnnotation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTaggerClauseAnnotation.pdsc + + export interface QueryTaggerClauseAnnotation { + interpretations: QueryTaggerInterpretation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTaggerConfiguration.pdsc + + export interface QueryTaggerConfiguration { + modelType: QueryTaggerModelType; + languageType?: QueryTaggerLanguageType; + useCase?: QueryTaggerUseCase; + modelVersion?: QueryTaggerVersion; + resultCount: number; + isUsingEntityIds: boolean; + rawQueryCharacterLimit?: number; + queryConfidenceThreshold?: number; + isRemovingStopwords?: boolean; + isRemovingSTART?: boolean; + analyzerType: AnalyzerType; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTaggerExtensionAnnotation.pdsc + + export interface QueryTaggerExtensionAnnotation { + germanUmlaut?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTaggerExtensionConfiguration.pdsc + + export interface QueryTaggerExtensionConfiguration { + germanUmlaut?: GermanUmlautConfiguration; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTaggerExtensionType.pdsc + + export type QueryTaggerExtensionType = 'GERMAN_UMLAUT'; + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTaggerInterpretation.pdsc + + export interface QueryTaggerInterpretation { + annotations: EntityAnnotation[]; + confidence: number; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTaggerLanguageType.pdsc + + export type QueryTaggerLanguageType = 'DEFAULT' | 'INTL' | 'CHINESE' | 'JAPANESE' | 'GERMAN' | 'MULTILINGUAL'; + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTaggerModelType.pdsc + + export type QueryTaggerModelType = + | 'HIDDEN_MARKOV_MODEL' + | 'CONDITIONAL_RANDOM_FIELD' + | 'SEMI_CONDITIONAL_RANDOM_FIELD'; + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTaggerUseCase.pdsc + + export type QueryTaggerUseCase = 'DEFAULT' | 'JOB'; + // Generated from: com/linkedin/avro2pegasus/events/qap/QueryTaggerVersion.pdsc + + export type QueryTaggerVersion = 'V201701' | 'V201906'; + // Generated from: com/linkedin/avro2pegasus/events/qap/SearchFunction.pdsc + + export type SearchFunction = 'DEFAULT' | 'QUERY_INTENTION' | 'RESULTS_MERGING'; + // Generated from: com/linkedin/avro2pegasus/events/qap/SearchRequestRecord.pdsc + + export interface SearchRequestRecord { + searchId?: string; + keywords?: string; + searchVertical: SearchVertical; + searchFunction: SearchFunction; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/SearchVertical.pdsc + + export type SearchVertical = + | 'NONE' + | 'PEOPLE' + | 'PEOPLE_PUBLIC' + | 'JOB' + | 'COMPANY' + | 'SCHOOL' + | 'GROUP' + | 'TOP' + | 'POSTS' + | 'COURSES' + | 'PROVIDERS' + | 'LSS' + | 'RECRUITER' + | 'SALARY' + | 'VOYAGER_API' + | 'VOYAGER_FRONTEND' + | 'ADS' + | 'EVENT'; + // Generated from: com/linkedin/avro2pegasus/events/qap/StandardizedStructuredTitle.pdsc + + export interface StandardizedStructuredTitle { + titleUrn: string; + titleConfidence: number; + seniorityUrn: string; + role: string; + occupation: string; + specialty: string; + employmentStatus: string; + parentOccupations: string[]; + parentSpecialties: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/qap/TaggedSegmentResult.pdsc + + export interface TaggedSegmentResult { + querySegment: string; + segmentTag: QueryTag; + entityUrn?: string; + tagConfidence?: number; + isPhrase?: boolean; + isLastWordPrefix?: boolean; + } + } + namespace Quantum { + // Generated from: com/linkedin/avro2pegasus/events/quantum/QuantumEvent.pdsc + + export interface QuantumEvent { + key: QuantumEventKey; + scheduledExecutionTime: number; + eventType: string; + memberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/quantum/QuantumEventKey.pdsc + + export interface QuantumEventKey { + bucketId: number; + eventId: number; + } + } + namespace Race { + // Generated from: com/linkedin/avro2pegasus/events/race/AutoScalingGroupChangeEvent.pdsc + + export interface AutoScalingGroupChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + autoScalingGroupUrn: string; + applicationSliceUrn: string; + fabricUrn: string; + adminApplicationName?: string; + userUrn: string; + minSize?: number; + maxSize?: number; + targetSize?: number; + cooldownDuration?: number; + reactiveScalingActive?: ReactiveScalingChange; + triggeredScalingType?: Com.Linkedin.Avro2pegasus.Common.Race.TriggeredScalingType; + } + // Generated from: com/linkedin/avro2pegasus/events/race/ReactiveScalingChange.pdsc + + export type ReactiveScalingChange = 'ACTIVE' | 'INACTIVE'; + // Generated from: com/linkedin/avro2pegasus/events/race/ScalingPlanAttributes.pdsc + + export interface ScalingPlanAttributes { + scaleAmount: number; + scaleUnit: Com.Linkedin.Avro2pegasus.Common.Race.ScaleUnit; + scaleType: Com.Linkedin.Avro2pegasus.Common.Race.TriggeredScalingType; + } + // Generated from: com/linkedin/avro2pegasus/events/race/ScalingPlanChangeEvent.pdsc + + export interface ScalingPlanChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + scalingPlanUrn: string; + autoScalingGroupUrn: string; + applicationSliceUrn: string; + fabricUrn: string; + adminApplicationName?: string; + userUrn: string; + scaleAmount?: number; + scaleUnit?: Com.Linkedin.Avro2pegasus.Common.Race.ScaleUnit; + scaleType?: Com.Linkedin.Avro2pegasus.Common.Race.TriggeredScalingType; + } + // Generated from: com/linkedin/avro2pegasus/events/race/ScalingPlanExecutionEvent.pdsc + + export interface ScalingPlanExecutionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + scalingPlanUrn: string; + autoScalingGroupUrn: string; + applicationSliceUrn: string; + fabricUrn: string; + adminApplicationName?: string; + userUrn?: string; + scalingPlanAttributes: ScalingPlanAttributes; + currentSize: number; + targetSize: number; + } + } + namespace Raptor { + // Generated from: com/linkedin/avro2pegasus/events/raptor/DataRequestQuery.pdsc + + export interface DataRequestQuery { + rawQuery?: string; + apiVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/events/raptor/Dataset.pdsc + + export interface Dataset { + datasetName: string; + metrics: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/raptor/DatasetsInfo.pdsc + + export interface DatasetsInfo { + umpDatasetId: number; + datasetName: string; + } + // Generated from: com/linkedin/avro2pegasus/events/raptor/DataSource.pdsc + + export type DataSource = 'PINOT' | 'TERADATA' | 'PRESTO' | 'MYSQL'; + // Generated from: com/linkedin/avro2pegasus/events/raptor/MetricCombination.pdsc + + export type MetricCombination = 'ADDITIVE' | 'NONADDITIVE' | 'BOTH'; + // Generated from: com/linkedin/avro2pegasus/events/raptor/RaptorDataRequestEvent.pdsc + + export interface RaptorDataRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + requesterUrn: string; + datasets: Dataset[]; + numFilters: number; + numBreakdowns: number; + metricCombination: MetricCombination; + rollupFunction?: RollupFunction; + rollupGranularity?: RollupGranularity; + timeToServe?: number; + dataSource: DataSource; + isCacheHit?: boolean; + query: DataRequestQuery; + } + // Generated from: com/linkedin/avro2pegasus/events/raptor/RaptorEntityLoadTimeEvent.pdsc + + export interface RaptorEntityLoadTimeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + entityType: RaptorEntityType; + entityId: string; + startTime: number; + endTime: number; + isCacheHit?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/raptor/RaptorEntityType.pdsc + + export type RaptorEntityType = 'CARD' | 'DASHBOARD'; + // Generated from: com/linkedin/avro2pegasus/events/raptor/RaptorRealTimeTrackingEvent.pdsc + + export interface RaptorRealTimeTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + raptorUrn: string; + dashboardName: string; + datasets: DatasetsInfo[]; + dataSource: DataSource; + databaseName: string; + dataSourceServer: string; + constructedDatabaseQuery: string; + databaseResponse?: string; + queryDuration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/raptor/RollupFunction.pdsc + + export type RollupFunction = 'SUM' | 'MIN' | 'MAX' | 'UNIQUE' | 'COUNT'; + // Generated from: com/linkedin/avro2pegasus/events/raptor/RollupGranularity.pdsc + + export type RollupGranularity = 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'; + } + namespace Rbmf { + // Generated from: com/linkedin/avro2pegasus/events/rbmf/PackageRecommendationActionEvent.pdsc + + export interface PackageRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + packageId?: number; + packageFlowPosition: number; + controlUrn: string; + recommendedEntity: RecommendedEntity; + actionName: PackageRecommendationUserAction; + } + // Generated from: com/linkedin/avro2pegasus/events/rbmf/PackageRecommendationImpressionEvent.pdsc + + export interface PackageRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + packages: ViewedPackage[]; + } + // Generated from: com/linkedin/avro2pegasus/events/rbmf/PackageRecommendationServedEvent.pdsc + + export interface PackageRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + packages: ServedPackage[]; + } + // Generated from: com/linkedin/avro2pegasus/events/rbmf/PackageRecommendationType.pdsc + + export type PackageRecommendationType = 'FOLLOW' | 'UNFOLLOW' | 'EXPAND'; + // Generated from: com/linkedin/avro2pegasus/events/rbmf/PackageRecommendationUserAction.pdsc + + export type PackageRecommendationUserAction = 'FOLLOW' | 'UNFOLLOW'; + // Generated from: com/linkedin/avro2pegasus/events/rbmf/RecommendedEntity.pdsc + + export interface RecommendedEntity { + entity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + entityPosition: number; + isFollowing?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/rbmf/ServedPackage.pdsc + + export interface ServedPackage { + packageId?: number; + packageType?: PackageRecommendationType; + packageFlowPosition: number; + entities: RecommendedEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/rbmf/ViewedPackage.pdsc + + export interface ViewedPackage { + packageId?: number; + packageType?: PackageRecommendationType; + packageScreenPosition?: number; + packageFlowPosition: number; + packageGridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + entities: RecommendedEntity[]; + } + } + namespace Realtime { + // Generated from: com/linkedin/avro2pegasus/events/realtime/Availability.pdsc + + export type Availability = 'OFFLINE' | 'ONLINE'; + // Generated from: com/linkedin/avro2pegasus/events/realtime/RealtimeDecoratedEventSentEvent.pdsc + + export interface RealtimeDecoratedEventSentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + publisherTrackingId?: string; + realtimeTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + topicUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/realtime/RealtimeEventDeliveredEvent.pdsc + + export interface RealtimeEventDeliveredEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + publisherTrackingId?: string; + realtimeTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + topicUrn: string; + receivedTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/realtime/RealtimeEventPublishedEvent.pdsc + + export interface RealtimeEventPublishedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + publisherTrackingId?: string; + realtimeTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + topicUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/realtime/RealtimePresenceStatusChangeEvent.pdsc + + export interface RealtimePresenceStatusChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + availability: Availability; + } + // Generated from: com/linkedin/avro2pegasus/events/realtime/RealtimeTopicSubscribedEvent.pdsc + + export interface RealtimeTopicSubscribedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + clientConnectionId: string; + topicUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/realtime/RealtimeTopicUnsubscribedEvent.pdsc + + export interface RealtimeTopicUnsubscribedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + clientConnectionId: string; + topicUrn: string; + } + } + namespace Recommendations { + // Generated from: com/linkedin/avro2pegasus/events/recommendations/Recommendation.pdsc + + export interface Recommendation { + recommendationUrn: string; + recommenderUrn: string; + recommendeeUrn: string; + recommenderEntityUrn?: string; + recommendeeEntityUrn?: string; + status: RecommendationStatus; + recommenderVisibility: RecommendationVisibility; + relationship?: RecommendationRelationship; + recommendationText: string; + previousRecommendationUrn?: string; + recommendationRequestFulfilledUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationCreateEvent.pdsc + + export interface RecommendationCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recommendations: Recommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationRelationship.pdsc + + export type RecommendationRelationship = + | 'RECOMMENDER_MANAGED_RECOMMENDEE' + | 'RECOMMENDER_REPORTED_TO_RECOMMENDEE' + | 'RECOMMENDER_SENIOR_THAN_RECOMMENDEE' + | 'RECOMMENDEE_SENIOR_THAN_RECOMMENDER' + | 'WORKED_IN_SAME_GROUP' + | 'WORKED_IN_DIFFERENT_GROUPS' + | 'WORKED_IN_DIFFERENT_COMPANIES' + | 'RECOMMENDEE_IS_CLIENT_OF_RECOMMENDER' + | 'RECOMMENDER_IS_CLIENT_OF_RECOMMENDEE' + | 'RECOMMENDER_TAUGHT_RECOMMENDEE' + | 'RECOMMENDER_ADVISED_RECOMMENDEE' + | 'RECOMMENDER_STUDIED_WITH_RECOMMENDEE' + | 'RECOMMENDEE_TAUGHT_RECOMMENDER' + | 'RECOMMENDEE_ADVISED_RECOMMENDER'; + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationRequest.pdsc + + export interface RecommendationRequest { + recommendationRequestUrn: string; + requesterUrn: string; + requesteeUrn: string; + requesterEntityUrn?: string; + requesteeEntityUrn?: string; + status: RecommendationRequestStatus; + relationship?: RecommendationRelationship; + previousRecommendationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationRequestCreateEvent.pdsc + + export interface RecommendationRequestCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recommendationRequests: RecommendationRequest[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationRequestStatus.pdsc + + export type RecommendationRequestStatus = + | 'PENDING' + | 'DECLINED' + | 'FULFILLED' + | 'WITHDRAWN' + | 'ENTITY_DELETED' + | 'CONNECTION_BROKEN'; + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationRequestStatusUpdate.pdsc + + export interface RecommendationRequestStatusUpdate { + recommendationRequestUrn: string; + status: RecommendationRequestStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationRequestStatusUpdateEvent.pdsc + + export interface RecommendationRequestStatusUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recommendationRequestsUpdated: RecommendationRequestStatusUpdate[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationStatus.pdsc + + export type RecommendationStatus = + | 'PENDING' + | 'VISIBLE' + | 'HIDDEN' + | 'WITHDRAWN' + | 'REPLACED' + | 'CONNECTION_BROKEN' + | 'CLOSED'; + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationStatusUpdate.pdsc + + export interface RecommendationStatusUpdate { + recommendationUrn: string; + status: RecommendationStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationStatusUpdateEvent.pdsc + + export interface RecommendationStatusUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recommendationsUpdated: RecommendationStatusUpdate[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationVisibility.pdsc + + export type RecommendationVisibility = 'EVERYONE' | 'CONNECTION' | 'NONE'; + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationVisibilityUpdate.pdsc + + export interface RecommendationVisibilityUpdate { + recommendationUrn: string; + recommenderVisibility: RecommendationVisibility; + } + // Generated from: com/linkedin/avro2pegasus/events/recommendations/RecommendationVisibilityUpdateEvent.pdsc + + export interface RecommendationVisibilityUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recommendationsUpdated: RecommendationVisibilityUpdate[]; + } + } + namespace Recruiter { + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ApplicantTrackingSystemIntegrationAdminActionEvent.pdsc + + export interface ApplicantTrackingSystemIntegrationAdminActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contractUrn: string; + seatUrn: string; + integrationContextUrn: string; + dataProviderUrn: string; + bundledIntegrationType: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.BundledApplicantTrackingSystemIntegrationType; + actionType: ApplicantTrackingSystemIntegrationAdminActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ApplicantTrackingSystemIntegrationAdminActionType.pdsc + + export type ApplicantTrackingSystemIntegrationAdminActionType = + | 'REQUEST_INTEGRATION' + | 'NOTIFY_INTEGRATION' + | 'ENABLE_INTEGRATION' + | 'DISABLE_INTEGRATION'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingCandidateImpression.pdsc + + export interface AutomatedSourcingCandidateImpression { + retrievalId: string; + searchId: string; + memberUrn: string; + featureVector: AutomatedSourcingImpressionFeatureVectorKeyValuePair[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingCandidateImpressionEvent.pdsc + + export interface AutomatedSourcingCandidateImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + streamUrn: string; + lixTreatments: AutomatedSourcingImpressionEventLixKeyTreatmentPair[]; + impressions: AutomatedSourcingCandidateImpression[]; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingCandidateNotFitFeedbackEvent.pdsc + + export interface AutomatedSourcingCandidateNotFitFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + contractUrn: string; + seatUrn: string; + streamUrn: string; + candidateMemberUrn: string; + userComment?: string; + notFitReasons: AutomatedSourcingCandidateNotFitReason[]; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingCandidateNotFitReason.pdsc + + export type AutomatedSourcingCandidateNotFitReason = + | 'SENIORITY' + | 'SKILLS' + | 'EDUCATION' + | 'EXPERIENCE' + | 'INFORMATION' + | 'LOCATION' + | 'INDUSTRY' + | 'CONNECTIONS' + | 'EMBARRASSING' + | 'OTHER' + | 'EMPLOYER' + | 'JOBTITLE'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingCandidateRating.pdsc + + export interface AutomatedSourcingCandidateRating { + generatedRetrievalId: string; + memberUrn: string; + ratingType: AutomatedSourcingCandidateRatingType; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingCandidateRatingActionEvent.pdsc + + export interface AutomatedSourcingCandidateRatingActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + streamUrn: string; + currentRetrievalId: string; + lixTreatments: AutomatedSourcingRatingActionEventLixKeyTreatmentPair[]; + candidateRatings: AutomatedSourcingCandidateRating[]; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingCandidateRatingType.pdsc + + export type AutomatedSourcingCandidateRatingType = 'INTERESTED' | 'DEFERRED' | 'REJECTED'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingCloseStreamReason.pdsc + + export type AutomatedSourcingCloseStreamReason = 'FILLED_POSITION' | 'NO_GOOD_FITS' | 'USER_SPECIFIED'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingImpressionEventLixKeyTreatmentPair.pdsc + + export interface AutomatedSourcingImpressionEventLixKeyTreatmentPair { + lixKey: string; + treatment: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingImpressionFeatureVectorKeyValuePair.pdsc + + export interface AutomatedSourcingImpressionFeatureVectorKeyValuePair { + key: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingMABArmPulledEvent.pdsc + + export interface AutomatedSourcingMABArmPulledEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + streamUrn: string; + candidateMemberUrn: string; + retrievalId: string; + armId: number; + algorithm: MultiArmedBanditAlgorithm; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingMABInitializedEvent.pdsc + + export interface AutomatedSourcingMABInitializedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + streamUrn: string; + arms: MultiArmedBanditArm[]; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingMABRatingIngestedEvent.pdsc + + export interface AutomatedSourcingMABRatingIngestedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + streamUrn: string; + retrievalId: string; + candidateMemberUrn: string; + armId: number; + ratingType: AutomatedSourcingCandidateRatingType; + arms: MultiArmedBanditArm[]; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingProfileViewEvent.pdsc + + export interface AutomatedSourcingProfileViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + vieweeMemberUrn: string; + viewerMemberUrn: string; + viewerSeatUrn: string; + viewerContractUrn: string; + streamUrn: string; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingRatingActionEventLixKeyTreatmentPair.pdsc + + export interface AutomatedSourcingRatingActionEventLixKeyTreatmentPair { + lixKey: string; + treatment: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingSearchExecutedEvent.pdsc + + export interface AutomatedSourcingSearchExecutedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + hiringProjectUrn: string; + streamUrn: string; + intentId?: number; + queryTerms: QueryTerm[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingSearchQueryExpansionEvent.pdsc + + export interface AutomatedSourcingSearchQueryExpansionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + hiringProjectUrn: string; + streamUrn: string; + intentId: number; + originalSearchQuery: string; + geoExpansionUrns: string[]; + titleExpansionUrns: string[]; + industryExpansionUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingStreamCloseEvent.pdsc + + export interface AutomatedSourcingStreamCloseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + streamUrn: string; + reason: AutomatedSourcingCloseStreamReason; + reasonComment?: string; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingStreamCreateEvent.pdsc + + export interface AutomatedSourcingStreamCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + streamUrn: string; + regionUrn: string; + jobTitleUrn: string; + companyUrn?: string; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingStreamExhaustedEvent.pdsc + + export interface AutomatedSourcingStreamExhaustedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + streamUrn: string; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/AutomatedSourcingStreamRefinementResponseEvent.pdsc + + export interface AutomatedSourcingStreamRefinementResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + streamUrn: string; + question: StreamRefinementQuestion; + providedEntityUrns: string[]; + selectedEntityUrns: string[]; + userComments?: string; + userProvidedKeywords: UserProvidedKeyword[]; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/CalendarSyncStatus.pdsc + + export type CalendarSyncStatus = 'SUCCEEDED' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/CandidateSource.pdsc + + export type CandidateSource = 'SEARCH_RESULT' | 'PROFILE_VIEW'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ContextualSearchFacetSuggestionImpressionEvent.pdsc + + export interface ContextualSearchFacetSuggestionImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterContextualSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + suggestionUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ContextualSearchFacetSuggestionSelectedEvent.pdsc + + export interface ContextualSearchFacetSuggestionSelectedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterContextualSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + selectedSuggestionIndex: number; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/CrossSystemAwarenessIntegrationApiCallEvent.pdsc + + export interface CrossSystemAwarenessIntegrationApiCallEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + resourceName: string; + parentResourceNames: string[]; + requestUri: string; + resourceMethod: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + resourceMethodName?: string; + developerApplicationUrn: string; + contractUrn?: string; + seatUrn?: string; + responseStatusCode: number; + batchSize?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/DegreeTermKey.pdsc + + export interface DegreeTermKey { + degree: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/featureContentLinkType.pdsc + + export type featureContentLinkType = 'SEE_ALL_PRODUCT_UPDATE' | 'SHOW_ME_HOW' | 'CUSTOM_LINK'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/FeatureSelected.pdsc + + export interface FeatureSelected { + featureId: number; + featureContentType: featureContentLinkType; + positionOfFeature: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/FieldOfStudyTermKey.pdsc + + export interface FieldOfStudyTermKey { + fieldOfStudy: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/FunctionTermKey.pdsc + + export interface FunctionTermKey { + function: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringManagerTypeaheadServedEvent.pdsc + + export interface HiringManagerTypeaheadServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + seatUrn?: string; + contractUrn?: string; + queryString: string; + typeaheadType: HiringManagerTypeaheadType; + suggestedEntityUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringManagerTypeaheadType.pdsc + + export type HiringManagerTypeaheadType = + | 'TITLE' + | 'GEO_LOCATION' + | 'COMPANY' + | 'SKILL' + | 'FIRST_DEGREE_CONNECTION' + | 'SCHOOL' + | 'GROUP' + | 'FIELD_OF_STUDY' + | 'INDUSTRY' + | 'DEGREE' + | 'LANGUAGE'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformDualReadError.pdsc + + export type HiringPlatformDualReadError = + | 'HIRING_PLATFORM_READ_FAILURE' + | 'DIFFERENT_ENTITIES_COUNT' + | 'DATA_DISCREPANCY'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformDualReadMethodType.pdsc + + export type HiringPlatformDualReadMethodType = 'GET' | 'BATCH_GET' | 'FINDER'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformDualReadUseCase.pdsc + + export type HiringPlatformDualReadUseCase = + | 'PROJECTS' + | 'PROJECT_STATUSES' + | 'PROJECT_CANDIDATES' + | 'PROJECT_CANDIDATE_STATUSES' + | 'FAVORITE_PROJECTS' + | 'PROJECT_PERMISSIONS' + | 'PROJECT_SAVED_SEARCHES' + | 'CONTRACT_STATUSES'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformDualWriteMethodType.pdsc + + export type HiringPlatformDualWriteMethodType = + | 'CREATE' + | 'UPDATE' + | 'DELETE' + | 'BATCH_CREATE' + | 'BATCH_UPDATE' + | 'BATCH_DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformDualWriteUseCase.pdsc + + export type HiringPlatformDualWriteUseCase = + | 'PROJECTS' + | 'PIPELINES' + | 'PROJECT_CANDIDATES' + | 'SOURCING_CHANNEL_CANDIDATES' + | 'FAVORITE_PROJECTS' + | 'PROJECT_PERMISSIONS' + | 'PROJECT_SAVED_SEARCHES'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformMigrationDualReadEvent.pdsc + + export interface HiringPlatformMigrationDualReadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + contractUrn: string; + methodType: HiringPlatformDualReadMethodType; + migrationDebugTrackingId: string; + dualReadUseCase: HiringPlatformDualReadUseCase; + capEntityUrns: string[]; + hiringPlatformEntityUrns: string[]; + dualReadErrors: HiringPlatformDualReadError[]; + capScopeUrn?: string; + hiringPlatformScopeUrn?: string; + unmatchedCapEntityUrns?: string[]; + unmatchedHiringPlatformEntityUrns?: string[]; + capEntitiesJson?: string; + hiringPlatformEntitiesJson?: string; + unmatchedCapEntitiesJson?: string; + unmatchedHiringPlatformEntitiesJson?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformMigrationDualWriteEvent.pdsc + + export interface HiringPlatformMigrationDualWriteEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contractUrn: string; + methodType: HiringPlatformDualWriteMethodType; + migrationDebugTrackingId: string; + dualWriteUseCase: HiringPlatformDualWriteUseCase; + capEntityUrns: string[]; + hiringPlatformEntityUrns: string[]; + isCapWriteSuccessful: boolean; + isHiringPlatformWriteSuccessful: boolean; + recruiterCommonHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformMigrationValidationAndFixResultEvent.pdsc + + export interface HiringPlatformMigrationValidationAndFixResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + contractUrn: string; + capEntityUrn?: string; + capScopeUrn?: string; + hiringPlatformEntityUrn?: string; + migrationUseCase: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HiringPlatformMigrationUseCase; + triggerSource: HiringPlatformMigrationValidationTriggerSource; + requestedTime: number; + processedTime: number; + validationFailure?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HiringPlatformMigrationValidationFailure; + dependencyFailures: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HiringPlatformMigrationValidationDependencyFailure[]; + isFixRequested: boolean; + isFixAttempted?: boolean; + isFixSuccessful?: boolean; + fixFailure?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HiringPlatformMigrationDataFixFailure; + attemptedExecutionCount: number; + migrationDebugTrackingId?: string; + completedTime?: number; + sourceGuid?: string; + wasSkipped?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformMigrationValidationTriggerSource.pdsc + + export type HiringPlatformMigrationValidationTriggerSource = + | 'ONLINE_DOUBLE_WRITES' + | 'ONLINE_DOUBLE_READS' + | 'DATABASE_CHANGESTREAM' + | 'OFFLINE_VALIDATION' + | 'INTERNAL'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformSystemSearchActionEvent.pdsc + + export interface HiringPlatformSystemSearchActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + systemSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HiringPlatformSystemSearchHeader; + clickedResultUrn?: string; + clickedResultType: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HiringPlatformSystemSearchUIComponentType; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringPlatformSystemSearchImpressionEvent.pdsc + + export interface HiringPlatformSystemSearchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + systemSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HiringPlatformSystemSearchHeader; + candidateUrns: string[]; + projectUrns: string[]; + userInputKeyword: string; + uiComponentTypeShown: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HiringPlatformSystemSearchUIComponentType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HiringReplySendEvent.pdsc + + export interface HiringReplySendEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + activity: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HiringReplyMessageSendActivity; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HPSmartSuggestionFacetImpressionEvent.pdsc + + export interface HPSmartSuggestionFacetImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + smartSuggestionUIType: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.SmartSuggestionUIType; + visibleTime: number; + duration: number; + suggestionFacetType: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.SearchFacetType; + suggestions: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HPSmartSuggestion[]; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HPSmartSuggestionFacetSelectedEvent.pdsc + + export interface HPSmartSuggestionFacetSelectedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + suggestionFacetType: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.SearchFacetType; + suggestion: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HPSmartSuggestion; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/HPSmartSuggestionFacetServedEvent.pdsc + + export interface HPSmartSuggestionFacetServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + suggestionFacetType: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.SearchFacetType; + suggestions: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HPSmartSuggestion[]; + hiringProjectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/IndustryTermKey.pdsc + + export interface IndustryTermKey { + industry: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/InProductEducationWhatsNewActionEvent.pdsc + + export interface InProductEducationWhatsNewActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viewerUrn: string; + contractUrn: string; + isWhatsNewPopUpActive: boolean; + sectionSelected: section; + featureSelected?: FeatureSelected; + orderedFeatureIds?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/InProductEducationWhatsNewImpressionEvent.pdsc + + export interface InProductEducationWhatsNewImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viewerUrn: string; + contractUrn: string; + isWhatsNewPopUpActive: boolean; + isWhatsNewPopUpOpen: boolean; + orderedFeatureIds?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/InterestedProspectsToRecruiterAlertEvent.pdsc + + export interface InterestedProspectsToRecruiterAlertEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + prospectUrn?: string; + seatUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/KeywordTermKey.pdsc + + export interface KeywordTermKey { + text: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/MultiArmedBanditAlgorithm.pdsc + + export type MultiArmedBanditAlgorithm = 'UCB1' | 'THOMPSON_SAMPLING'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/MultiArmedBanditArm.pdsc + + export interface MultiArmedBanditArm { + armId: number; + rewardSum: number; + pullCount: number; + successCount: number; + searchQuery: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/NetworkConnectionTermKey.pdsc + + export interface NetworkConnectionTermKey { + degree: number; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/OfccpReportCandidateProfile.pdsc + + export interface OfccpReportCandidateProfile { + candidateUrn: string; + candidateName?: string; + headline?: string; + currentTitles: string[]; + currentCompanies: string[]; + geoLocation?: string; + profileUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/OfccpReportProfileInfoEvent.pdsc + + export interface OfccpReportProfileInfoEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchRequestId: string; + recruiterName?: string; + recruiterProfileUrl?: string; + projectName?: string; + projectDescription?: string; + candidateUrn: string; + candidateName?: string; + headline?: string; + currentTitles: string[]; + currentCompanies: string[]; + geoLocation?: string; + profileUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/OfccpReportProfileInfoV2Event.pdsc + + export interface OfccpReportProfileInfoV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + searchRequestId: string; + recruiterName?: string; + recruiterProfileUrl?: string; + projectName?: string; + projectDescription?: string; + candidates?: OfccpReportCandidateProfile[]; + candidateSource: CandidateSource; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ProspectToRecruiterMessageReplyActivity.pdsc + + export interface ProspectToRecruiterMessageReplyActivity { + senderMemberUrn: string; + recipientMemberUrn: string; + recipientSeatUrn: string; + contractUrn: string; + customPropertyUrn: string; + messageChannelType: RecruiterProspectMessageChannelType; + replyType: ProspectToRecruiterMessageReplyType; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ProspectToRecruiterMessageReplyActivityV2.pdsc + + export interface ProspectToRecruiterMessageReplyActivityV2 { + senderMemberUrn: string; + recipientMemberUrn: string; + recipientSeatUrn: string; + contractUrn: string; + customPropertyUrn: string; + messageChannelType: RecruiterProspectMessageChannelType; + replyType: ProspectToRecruiterMessageReplyType; + repliedMailboxItemUrn?: string; + remailerFlag?: boolean; + isInMailCreditRefunded: boolean; + repliedMessagingMessageUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ProspectToRecruiterMessageReplyEvent.pdsc + + export interface ProspectToRecruiterMessageReplyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + activity: ProspectToRecruiterMessageReplyActivity; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ProspectToRecruiterMessageReplyType.pdsc + + export type ProspectToRecruiterMessageReplyType = 'ACCEPTED' | 'REJECTED'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ProspectToRecruiterMessageReplyV2Event.pdsc + + export interface ProspectToRecruiterMessageReplyV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + activity: ProspectToRecruiterMessageReplyActivityV2; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ProxyPhoneCallStatusEvent.pdsc + + export interface ProxyPhoneCallStatusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + vendorType: ProxyPhoneVendorType; + contractUrn: string; + dayOfEvent: Com.Linkedin.Avro2pegasus.Events.Common.Date; + direction: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterProxyPhoneDirectionType; + status: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterProxyPhoneStatusType; + durationSeconds: number; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ProxyPhoneCallTrackingEvent.pdsc + + export interface ProxyPhoneCallTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + seatUrn: string; + proxyPhoneNumber: string; + vendorType: ProxyPhoneVendorType; + isRealPhoneNumberProvided: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/ProxyPhoneVendorType.pdsc + + export type ProxyPhoneVendorType = 'TWILIO' | 'ZHIYU'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/QualarooQuestionSubmissionEvent.pdsc + + export interface QualarooQuestionSubmissionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + surveyId: string; + questionGUID: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/QualarooSurveyTriggeredEvent.pdsc + + export interface QualarooSurveyTriggeredEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + surveyId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/QueryTerm.pdsc + + export interface QueryTerm { + key: QueryTermKey; + weight: number; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/QueryTermKey.pdsc + + export interface QueryTermKey { + degreeTermKey?: DegreeTermKey; + fieldOfStudyTermKey?: FieldOfStudyTermKey; + functionTermKey?: FunctionTermKey; + industryTermKey?: IndustryTermKey; + keywordTermKey?: KeywordTermKey; + networkConnectionTermKey?: NetworkConnectionTermKey; + skillTermKey?: SkillTermKey; + titleTermKey?: TitleTermKey; + totalYearsOfExperienceTermKey?: TotalYearsOfExperienceTermKey; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterAction.pdsc + + export interface RecruiterAction { + standardizedActionType: RecruiterActionType; + customActionName?: string; + actionValue?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterActionButton.pdsc + + export type RecruiterActionButton = + | 'ADD_TO_PROJECT' + | 'ADD_TO_ANOTHER_PROJECT' + | 'REMOVE_FROM_CURRENT_PROJECT' + | 'ARCHIVE' + | 'HIDE' + | 'UNHIDE' + | 'SEND_INMAIL' + | 'ADD_NOTE' + | 'ADD_TAG' + | 'SHARE_PROFILE' + | 'FIND_MORE_PEOPLE_LIKE' + | 'SAVE_TO_PDF'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterActionType.pdsc + + export type RecruiterActionType = + | 'CLICK' + | 'VIEW' + | 'SHARE' + | 'DELETE_SHARE' + | 'LIKE' + | 'UNLIKE' + | 'COMMENT' + | 'DELETE_COMMENT' + | 'CONNECT' + | 'FOLLOW' + | 'UNFOLLOW' + | 'HIDE' + | 'UNHIDE' + | 'SAVE' + | 'UNSAVE' + | 'SEND_MESSAGE' + | 'ADD_TAG' + | 'DELETE_TAG' + | 'ADD_NOTE' + | 'DELETE_NOTE' + | 'ADD_STATUS' + | 'DELETE_STATUS' + | 'ADD_TO_PROJECT' + | 'REMOVE_FROM_PROJECT' + | 'ADD_TO_CLIPBOARD' + | 'REMOVE_FROM_CLIPBOARD' + | 'ADD_DESIRED_SALARY' + | 'REMOVE_DESIRED_SALARY' + | 'ADD_WILLING_TO_RELOCATE' + | 'REMOVE_WILLING_TO_RELOCATE' + | 'ADD_WORK_AUTHORIZATION' + | 'REMOVE_WORK_AUTHORIZATION' + | 'CUSTOM' + | 'CREATE' + | 'UPDATE' + | 'DELETE' + | 'ARCHIVE' + | 'RESTORE' + | 'ADD_OWNER' + | 'REMOVE_OWNER' + | 'SHARE_WITH_INDIVIDUAL' + | 'REMOVE_FROM_INDIVIDUAL' + | 'SHARE_WITH_ALL' + | 'REMOVE_SHARE_FROM_ALL' + | 'UPDATE_DESCRIPTION' + | 'ADD_JOB_POST' + | 'REMOVE_JOB_POST' + | 'ADD_LINK' + | 'ADD_ATTACHMENT' + | 'REMOVE_ATTACHMENT' + | 'ADD_SAVED_SEARCH' + | 'REMOVE_SAVED_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterAddSourceToProspectEvent.pdsc + + export interface RecruiterAddSourceToProspectEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + candidateUrn: string; + isBulkAction: boolean; + projectUrn?: string; + sourceName: string; + capSourceUrn: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterAnalyticsMessageCharCountRange.pdsc + + export type RecruiterAnalyticsMessageCharCountRange = 'SMALL' | 'MEDIUM' | 'LARGE'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterAnalyticsMessageNumRecipientsRange.pdsc + + export type RecruiterAnalyticsMessageNumRecipientsRange = 'SINGLE' | 'FEW' | 'MANY'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterBackendApiCallEvent.pdsc + + export interface RecruiterBackendApiCallEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + resourceName: string; + requestUri: string; + resourceMethod: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + resourceMethodName?: string; + contractUrns?: string[]; + batchSize?: number; + callerServiceName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterClipboardActionEvent.pdsc + + export interface RecruiterClipboardActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + candidateUrn: string; + isBulkAction: boolean; + projectUrn?: string; + recruiterActionType: RecruiterActionType; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterContextualSearchQualarooSurveyTriggeredEvent.pdsc + + export interface RecruiterContextualSearchQualarooSurveyTriggeredEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterContextualSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + surveyId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterContextualSearchSurveyQuestionSubmissionEvent.pdsc + + export interface RecruiterContextualSearchSurveyQuestionSubmissionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterContextualSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + surveyId: string; + surveyGUID: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterFacetCountServedEvent.pdsc + + export interface RecruiterFacetCountServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + facets: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchFacet[]; + totalCount?: number; + selectSpotlightCount?: number; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterFollowActionEvent.pdsc + + export interface RecruiterFollowActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + candidateUrn: string; + isBulkAction: boolean; + projectUrn?: string; + recruiterActionType: RecruiterActionType; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterInmailCreditRefundEvent.pdsc + + export interface RecruiterInmailCreditRefundEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + seatUrn: string; + contractUrn: string; + proposalUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterLinkProspectToMemberActionEvent.pdsc + + export interface RecruiterLinkProspectToMemberActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + destinationProfileUrn: string; + sourceProfileUrn: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterMergeProspectActionEvent.pdsc + + export interface RecruiterMergeProspectActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + destinationProfileUrn: string; + sourceProfileUrn: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterMessageAnalyticsEvent.pdsc + + export interface RecruiterMessageAnalyticsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractId: number; + seatId: number; + recipientMemberId: number; + messageType: RecruiterProspectMessageType; + messageEventSourceType: RecruiterMessageEventSourceType; + messageChannelType: RecruiterProspectMessageChannelType; + replyType?: ProspectToRecruiterMessageReplyType; + messageCharCountRange: RecruiterAnalyticsMessageCharCountRange; + messageNumRecipientsRange: RecruiterAnalyticsMessageNumRecipientsRange; + messageInmailTemplateId?: number; + isProfileViewed: boolean; + recipientCompanyId?: number; + recipientSchoolId?: number; + recipientSpotlights: RecruiterSpotlightType[]; + recipientLocationRegionCode?: string; + recipientLocationCountryCode?: string; + recipientYearsOfExperience: number; + recipientIndustryId?: number; + sendTimeHoursSinceEpoch: number; + sendTimeDaysSinceEpoch: number; + sendTimeWeeksSinceEpoch: number; + sendTimeMonthsSinceEpoch: number; + replyTimeHoursSinceEpoch: number; + replyTimeDaysSinceEpoch: number; + replyTimeWeeksSinceEpoch: number; + replyTimeMonthsSinceEpoch: number; + numberOfMessagesSent: number; + numberOfMessagesReplied: number; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterMessageEventSourceType.pdsc + + export type RecruiterMessageEventSourceType = 'PROFILE' | 'PROJECT' | 'SEARCH' | 'CLIPBOARD'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterNoteActionEvent.pdsc + + export interface RecruiterNoteActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + candidateUrn: string; + isBulkAction: boolean; + projectUrn?: string; + recruiterActionType: RecruiterActionType; + prospectNoteUrn: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterOnboardingSurveyEvent.pdsc + + export interface RecruiterOnboardingSurveyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + surveyQuestion: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterOnboardingSurveyQuestion; + surveyResponse: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterOnboardingSurveyAnswer; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterPageViewEvent.pdsc + + export interface RecruiterPageViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + targetUrn?: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + browserScreenInformation?: Com.Linkedin.Avro2pegasus.Events.Common.BrowserScreenInformation; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProfileInProjectActionEvent.pdsc + + export interface RecruiterProfileInProjectActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + candidateUrn: string; + isBulkAction: boolean; + projectUrn: string; + recruiterActionType: RecruiterActionType; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + bulkActionBatchSize?: number; + candidateHiringStatus?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HireStatusType; + isCandidateAddedToANewProject?: boolean; + isCopiedToANewProject?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProfileShareActionEvent.pdsc + + export interface RecruiterProfileShareActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + candidateUrn: string; + isBulkAction: boolean; + projectUrn?: string; + reviewerUrn: string; + reviewRequestUrn: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProfileViewActivity.pdsc + + export interface RecruiterProfileViewActivity { + vieweeMemberUrn: string; + viewerMemberUrn: string; + viewerSeatUrn: string; + viewerContractUrn: string; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterCommonHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + vieweeProspectUrn?: string; + candidateProfileUIInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.CandidateProfileUIInfo; + vieweeAppliedJobPostingUrn?: string; + profileViewEntrypointType?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.ProfileViewEntrypointType; + profileViewFormatType?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.ProfileViewFormatType; + sourcingChannelUrn?: string; + hiringProjectState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProfileViewEvent.pdsc + + export interface RecruiterProfileViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + activity: RecruiterProfileViewActivity; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProjectActionEvent.pdsc + + export interface RecruiterProjectActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + isBulkAction: boolean; + updateFields?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterProjectInfoUpdateField[]; + projectUrn: string; + recruiterActionType: RecruiterActionType; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProjectToSearchHistoryLinkedEvent.pdsc + + export interface RecruiterProjectToSearchHistoryLinkedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + projectUrn: string; + searchHistoryUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProjectUpdateDebugEvent.pdsc + + export interface RecruiterProjectUpdateDebugEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + projectUrn: string; + ownerUrn: string; + projectOriginalState: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.ProjectState; + projectUpdatedState: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.ProjectState; + projectName: string; + isShared: boolean; + updatedTime: string; + methodCall: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProspectMessageChannelType.pdsc + + export type RecruiterProspectMessageChannelType = 'EMAIL' | 'INMAIL'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProspectMessageCreditReasonType.pdsc + + export type RecruiterProspectMessageCreditReasonType = + | 'FIRST_DEGREE' + | 'OPEN_PROFILE' + | 'OPEN_CANDIDATE' + | 'APPLY_STARTER' + | 'JOB_POSTING' + | 'AUTOMATED_SOURCING' + | 'SEND_AS_EMAIL' + | 'PIPELINE_BUILDER'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProspectMessageType.pdsc + + export type RecruiterProspectMessageType = 'REACH_OUT_ATTEMPT' | 'REPLY_FROM_PROSPECT'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProspectStatusChangeEvent.pdsc + + export interface RecruiterProspectStatusChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + candidateUrn: string; + isBulkAction: boolean; + projectUrn?: string; + capStatusText: string; + capStatusUrn: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterProxyPhoneDailyAggregatesEvent.pdsc + + export interface RecruiterProxyPhoneDailyAggregatesEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + dayOfEvent: Com.Linkedin.Avro2pegasus.Events.Common.Date; + durationCounts: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterProxyPhoneDurationAggregate[]; + statusCounts: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterProxyPhoneStatusAggregate[]; + direction?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterProxyPhoneDirectionType; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterRatingEvent.pdsc + + export interface RecruiterRatingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + isCapUser: boolean; + rating?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSavedSearchActionEvent.pdsc + + export interface RecruiterSavedSearchActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterActionType: RecruiterActionType; + savedSearchUrn: string; + projectUrn: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSavedSearchAlertChangeEvent.pdsc + + export interface RecruiterSavedSearchAlertChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + isAlertOn: boolean; + savedSearchUrn: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSavedSearchImpressionEvent.pdsc + + export interface RecruiterSavedSearchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + pageNum: number; + offset: number; + savedSearches: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSavedSearchDetails[]; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSchedulerCalendarSyncEvent.pdsc + + export interface RecruiterSchedulerCalendarSyncEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + status: CalendarSyncStatus; + failureReason?: string; + entryPoint?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.CalendarSchedulingEntryPoint; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSchedulingMessageSentEvent.pdsc + + export interface RecruiterSchedulingMessageSentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + activity: RecruiterToProspectMessageSendActivity; + meetingDurationInMinutes: number; + meetingLinkExpirationDays: number; + calendarAvailabilityShareUrn: string; + entryPoint: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.CalendarSchedulingEntryPoint; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSearchActionEvent.pdsc + + export interface RecruiterSearchActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + pageNum: number; + offset: number; + savedSearchUrn?: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + recruiterSearchQuerySource?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchQuerySource; + sourcingChannelUrn?: string; + hiringProjectState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSearchAlertFrequency.pdsc + + export type RecruiterSearchAlertFrequency = 'NEVER' | 'DAILY' | 'WEEKLY'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSearchAlertFrequencyChangeEvent.pdsc + + export interface RecruiterSearchAlertFrequencyChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + frequency: RecruiterSearchAlertFrequency; + savedSearchUrn?: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSearchDiscrepancyEvent.pdsc + + export interface RecruiterSearchDiscrepancyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + projectUrn: string; + contractUrn: string; + searchCount: number; + databaseCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSearchResultsImpressionEvent.pdsc + + export interface RecruiterSearchResultsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + pageNum: number; + offset: number; + results: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchResultHit[]; + savedSearchUrn?: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + recruiterSearchQuerySource?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchQuerySource; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSearchResultsServedEvent.pdsc + + export interface RecruiterSearchResultsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + pageNum: number; + offset: number; + results: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchResultHit[]; + savedSearchUrn?: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + recruiterSearchQuerySource?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchQuerySource; + sourcingChannelUrn?: string; + hiringProjectState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSmartSuggestionsActionEvent.pdsc + + export interface RecruiterSmartSuggestionsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + smartSuggestion: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSmartSuggestion; + recruiterActionType: RecruiterActionType; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSmartSuggestionsImpressionEvent.pdsc + + export interface RecruiterSmartSuggestionsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + suggestions: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSmartSuggestion[]; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSmartSuggestionsServedEvent.pdsc + + export interface RecruiterSmartSuggestionsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + suggestions: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSmartSuggestion[]; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterSpotlightType.pdsc + + export type RecruiterSpotlightType = + | 'COMPANY_CONNECTIONS' + | 'COMPANY_ENGAGEMENT' + | 'COMPETITORS_TARGET' + | 'INTERESTED_CANDIDATES' + | 'PAST_APPLICANT' + | 'RECRUITING_ACTIVITY' + | 'TENURE'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterTagsActionEvent.pdsc + + export interface RecruiterTagsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + candidateUrn: string; + capTagUrn: string; + tagName: string; + recruiterActionType: RecruiterActionType; + isBulkAction: boolean; + projectUrn?: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + bulkActionBatchSize?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterToProspectMessageDeliveryEvent.pdsc + + export interface RecruiterToProspectMessageDeliveryEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + activity: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterToProspectMessageDeliveryActivity; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterToProspectMessageSendActivity.pdsc + + export interface RecruiterToProspectMessageSendActivity { + recipientMemberUrn: string; + senderMemberUrn: string; + senderSeatUrn: string; + contractUrn: string; + companyUrn?: string; + parentContractUrn: string; + mailboxItemUrn: string; + customPropertyUrn: string; + messageChannelType: RecruiterProspectMessageChannelType; + messageBodyWordCount: number; + messageBodyCharacterCount: number; + numberOfRecipients: number; + inmailTemplateUrn?: string; + hireStreamUrn?: string; + capContextUrn?: string; + capInmailGrantUrn?: string; + salutationType?: SalutationType; + hiringProjectUrn?: string; + messageCreditReason?: RecruiterProspectMessageCreditReasonType; + inMailSendMetadata?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterInMailSendMetadata; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterCommonHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + messagingMessageUrn?: string; + attachmentCount?: number; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + isRecipientOpenCandidate?: boolean; + messageCost?: number; + messageSubjectWordCount?: number; + messageSubjectCharacterCount?: number; + ofccpTrackingId?: string; + sourcingChannelUrn?: string; + hiringProjectState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterToProspectMessageSendDecoratedEvent.pdsc + + export interface RecruiterToProspectMessageSendDecoratedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + activity: RecruiterToProspectMessageSendActivity; + recipientSpotlights: RecruiterSpotlightType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RecruiterToProspectMessageSendEvent.pdsc + + export interface RecruiterToProspectMessageSendEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + activity: RecruiterToProspectMessageSendActivity; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RoleRefinementQuestion.pdsc + + export type RoleRefinementQuestion = 'IDEAL_CANDIDATE' | 'AREA_OF_EXPERTISE' | 'COMPANY'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/RoleRefinementSuggestionsEvent.pdsc + + export interface RoleRefinementSuggestionsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn: string; + hiringProjectUrn: string; + streamUrn?: string; + question: RoleRefinementQuestion; + topScoredSuggestions: Com.Linkedin.Avro2pegasus.Events.ScoredEntity[]; + numSuggestionsShown: number; + relevanceModelId: string; + lixTreatments: Com.Linkedin.Avro2pegasus.Events.Lix.LixTreatment[]; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/SalutationType.pdsc + + export type SalutationType = + | 'DEAR_FIRST' + | 'FIRST' + | 'HI_FIRST' + | 'GREET_FIRST' + | 'DEAR_FIRST_LAST' + | 'HI_FIRST_LAST' + | 'FIRST_LAST' + | 'GREET_FIRST_LAST'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/section.pdsc + + export type section = 'SEE_ALL_PRODUCT_UPDATE_SECTION' | 'FEATURE_SECTION' | 'OPEN_SECTION' | 'CLOSE_SECTION'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/SkillTermKey.pdsc + + export interface SkillTermKey { + skill: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/StreamRefinementQuestion.pdsc + + export type StreamRefinementQuestion = 'IDEAL_CANDIDATES' | 'AREA_OF_EXPERTISE' | 'KEYWORD' | 'COMPANIES'; + // Generated from: com/linkedin/avro2pegasus/events/recruiter/TalentPackageSearchResultsImpressionEvent.pdsc + + export interface TalentPackageSearchResultsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + recruiterCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + pageNum: number; + offset: number; + results: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.TalentPackageSearchResultHit[]; + talentPackageUrn?: string; + moduleKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/TitleTermKey.pdsc + + export interface TitleTermKey { + title: string; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/TotalYearsOfExperienceTermKey.pdsc + + export interface TotalYearsOfExperienceTermKey { + yearsOfExperience: number; + } + // Generated from: com/linkedin/avro2pegasus/events/recruiter/UserProvidedKeyword.pdsc + + export interface UserProvidedKeyword { + textPhrase: string; + standardizedEntityUrn?: string; + weight?: number; + } + } + namespace Redpacket { + // Generated from: com/linkedin/avro2pegasus/events/redpacket/RedPacketActionEvent.pdsc + + export interface RedPacketActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + redPacketId: string; + senderUrn: string; + receiverUrn: string; + amountInCNY: string; + messageUrn?: string; + messageId?: Com.Linkedin.Avro2pegasus.Events.Messages.MessageId; + type: RedPacketActionType; + status: RedPacketActionStatus; + timestamp: number; + failureReason?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/redpacket/RedPacketActionStatus.pdsc + + export type RedPacketActionStatus = 'ATTEMPT' | 'SUCCESS' | 'FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/redpacket/RedPacketActionType.pdsc + + export type RedPacketActionType = 'SEND' | 'REDEEM'; + // Generated from: com/linkedin/avro2pegasus/events/redpacket/RedPacketAlipayAccountActionEvent.pdsc + + export interface RedPacketAlipayAccountActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberUrn: string; + type: RedPacketAlipayAccountActionType; + status: RedPacketAlipayAccountActionStatus; + timestamp: number; + failureReason?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/redpacket/RedPacketAlipayAccountActionStatus.pdsc + + export type RedPacketAlipayAccountActionStatus = 'ATTEMPT' | 'SUCCESS' | 'FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/redpacket/RedPacketAlipayAccountActionType.pdsc + + export type RedPacketAlipayAccountActionType = 'BIND' | 'UNBIND'; + } + namespace Referrals { + // Generated from: com/linkedin/avro2pegasus/events/referrals/CandidateFeedbackOption.pdsc + + export type CandidateFeedbackOption = 'YES' | 'NO' | 'UNCERTAIN'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/CandidateInitiatedReferralModuleImpressionEvent.pdsc + + export interface CandidateInitiatedReferralModuleImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + hasApplied: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/CandidateInitiatedReferralPostApplyModuleImpressionEvent.pdsc + + export interface CandidateInitiatedReferralPostApplyModuleImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/CandidateInitiatedReferralRequest.pdsc + + export interface CandidateInitiatedReferralRequest { + employeeUrn: string; + referralState: JobReferralState; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/CandidateInitiatedReferralRequesteesImpressionEvent.pdsc + + export interface CandidateInitiatedReferralRequesteesImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + employees: CandidateInitiatedReferralRequest[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/CandidateInitiatedReferralRequestEvent.pdsc + + export interface CandidateInitiatedReferralRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + employeeUrn: string; + hasCustomMessage: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/CandidateInitiatedReferralRequestsImpressionEvent.pdsc + + export interface CandidateInitiatedReferralRequestsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + candidates: ReferralCandidate[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/CandidateInitiatedStartReferralActionEvent.pdsc + + export interface CandidateInitiatedStartReferralActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/JobReferralState.pdsc + + export type JobReferralState = 'NOT_REQUESTED' | 'DISMISSED' | 'PENDING' | 'REFERRED'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralAction.pdsc + + export type ReferralAction = + | 'DISMISS' + | 'DISMISS_INTENT' + | 'SHOW_MORE_HIGHLIGHT' + | 'FIND_MORE_JOBS' + | 'VIEW_PROFILE' + | 'FILTER' + | 'SHOW_MORE_RECOMMENDATIONS' + | 'IN_MAIL' + | 'COPY_LINK' + | 'EMAIL' + | 'CANCEL' + | 'SHARE' + | 'SEND'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralCandidate.pdsc + + export interface ReferralCandidate { + memberUrn: string; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralCandidateCardUIComponents.pdsc + + export type ReferralCandidateCardUIComponents = + | 'REFER' + | 'DISMISS_CARD' + | 'DISMISS_CANDIDATE' + | 'DISMISS_INTENT' + | 'SHOW_MORE_HIGHLIGHT' + | 'FIND_MORE_JOBS' + | 'CANDIDATE_NAME'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralCandidateFeedbackEvent.pdsc + + export interface ReferralCandidateFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + candidateMemberUrn: string; + companyUrn: string; + requesteeMemberUrn: string; + requesterMemberUrn: string; + requesterRole: RequesterRole; + jobPostingUrn?: string; + jobTitle?: string; + relationship: Relationship; + cultureFit?: CandidateFeedbackOption; + skillFit?: CandidateFeedbackOption; + openToOpportunities?: CandidateFeedbackOption; + companyFit?: CandidateFeedbackOption; + wouldRecommend?: CandidateFeedbackOption; + reasonsToNotRecommendCandidate?: Com.Linkedin.Avro2pegasus.Events.Common.Referrals.ReasonToNotRecommendCandidate[]; + isRandomRecommendation?: boolean; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + actionCategory?: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + hasNote?: boolean; + referralCandidateFeedbackUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralCandidateJobRecommendation.pdsc + + export interface ReferralCandidateJobRecommendation { + candidateMemberUrn: string; + jobPostingUrn: string; + score: number; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralCandidateTypeAheadClickEvent.pdsc + + export interface ReferralCandidateTypeAheadClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + employeeMemberUrn: string; + companyUrn: string; + candidateMemberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralDeliveryType.pdsc + + export type ReferralDeliveryType = 'HIRING_PLATFORM' | 'FORWARD_TO_POSTER'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralHomepageActionEvent.pdsc + + export interface ReferralHomepageActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: ReferralHomepageUIComponents; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: ReferralAction; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralHomepageUIComponents.pdsc + + export type ReferralHomepageUIComponents = + | 'SHOW_MORE_RECOMMENDATIONS' + | 'ROLES_LIKE_MINE' + | 'ROLES_IN_DEMAND' + | 'ALL_ROLES' + | 'FORMER_COWORKERS' + | 'FORMER_ALUMNI'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralJobBasedReferEvent.pdsc + + export interface ReferralJobBasedReferEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: ReferralJobDetailPageUIComponents; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + referralRecommendations: ReferralCandidateJobRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralJobDetailPageUIComponents.pdsc + + export type ReferralJobDetailPageUIComponents = 'REFER' | 'NEW_CONNECTION_REFER'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralJobDismissReason.pdsc + + export type ReferralJobDismissReason = 'ROLE' | 'SENIORITY' | 'SKILL'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralJobSearchEvent.pdsc + + export interface ReferralJobSearchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + employeeMemberUrn: string; + companyUrn: string; + source: ReferralJobSearchSource; + searchRequest: Com.Linkedin.Avro2pegasus.Events.Search.GenericSearchRequest; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralJobSearchResultEvent.pdsc + + export interface ReferralJobSearchResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + jobPostingUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralJobSearchSource.pdsc + + export type ReferralJobSearchSource = 'DETAIL_SEARCH' | 'SEARCH_BAR'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralMessageModalActionEvent.pdsc + + export interface ReferralMessageModalActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: ReferralAction; + jobPostingUrns: string[]; + candidateMemberUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralNonRecommendedJobsReferEvent.pdsc + + export interface ReferralNonRecommendedJobsReferEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + jobPostingUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralNonRecommendedJobsShareEvent.pdsc + + export interface ReferralNonRecommendedJobsShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + jobPostingUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralRecommendationActionEvent.pdsc + + export interface ReferralRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: ReferralCandidateCardUIComponents; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: ReferralAction; + referralRecommendations: ReferralCandidateJobRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralRecommendationCandidateDismissEvent.pdsc + + export interface ReferralRecommendationCandidateDismissEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: ReferralCandidateCardUIComponents; + action: ReferralAction; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + candidateMemberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralRecommendationImpressionEvent.pdsc + + export interface ReferralRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + referralRecommendations: ReferralCandidateJobRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralRecommendationJobDismissEvent.pdsc + + export interface ReferralRecommendationJobDismissEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + reason?: ReferralJobDismissReason; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: ReferralAction; + jobPostingUrn: string; + candidateMemberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralRecommendationNotServedEvent.pdsc + + export interface ReferralRecommendationNotServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + referralRecommendations: ReferralCandidateJobRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralRecommendationReferEvent.pdsc + + export interface ReferralRecommendationReferEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + moduleKey: ReferralCandidateCardUIComponents; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + referralRecommendations: ReferralCandidateJobRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralRecommendationResultEvent.pdsc + + export interface ReferralRecommendationResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + employeeMemberUrn: string; + companyUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + candidateMemberUrn?: string; + jobPostingUrn?: string; + referralRecommendations: ReferralCandidateJobRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralRecommendationServedEvent.pdsc + + export interface ReferralRecommendationServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + referralRecommendations: ReferralCandidateJobRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralReferModalActionEvent.pdsc + + export interface ReferralReferModalActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + action: ReferralAction; + jobPostingUrns: string[]; + candidateMemberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralReferModalUIComponents.pdsc + + export type ReferralReferModalUIComponents = 'IN_MAIL' | 'COPY_LINK' | 'EMAIL' | 'CANCEL'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralRelationship.pdsc + + export type ReferralRelationship = + | 'COWORKER' + | 'FRIEND' + | 'MANAGER' + | 'DIRECT_REPORT' + | 'CLASSMATE' + | 'FAMILY' + | 'ACQUAINTANCE' + | 'NO_RELATIONSHIP' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralRequesterRole.pdsc + + export type ReferralRequesterRole = + | 'RECRUITER' + | 'HIRING_MANAGER' + | 'JOB_POSTER' + | 'HIRING_PLATFORM_USER' + | 'CANDIDATE' + | 'EMPLOYEE' + | 'CANDIDATE_VIA_MESSAGE'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralShareModalActionEvent.pdsc + + export interface ReferralShareModalActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + moduleKey: ReferralShareModalUIComponents; + action: ReferralAction; + jobPostingUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralShareModalUIComponents.pdsc + + export type ReferralShareModalUIComponents = 'LINKED_IN' | 'TWITTER' | 'FACEBOOK' | 'GOOGLE_PLUS' | 'CANCEL'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralStatus.pdsc + + export type ReferralStatus = 'REQUESTED' | 'RECEIVED' | 'ACKNOWLEDGED'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/ReferralStatusChangeEvent.pdsc + + export interface ReferralStatusChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + referenceId?: string; + jobPostingUrn?: string; + companyUrn: string; + candidateMemberUrn: string; + requesteeMemberUrn?: string; + requesterMemberUrn: string; + status: ReferralStatus; + requesterRole: ReferralRequesterRole; + referralCandidateFeedbackUrn?: string; + referralDeliveryType?: ReferralDeliveryType; + hasFeedback?: boolean; + isSkillFit?: boolean; + referralRelationship?: ReferralRelationship; + } + // Generated from: com/linkedin/avro2pegasus/events/referrals/Relationship.pdsc + + export type Relationship = + | 'COWORKER' + | 'FRIEND' + | 'MANAGER' + | 'DIRECT_REPORT' + | 'CLASSMATE' + | 'FAMILY' + | 'ACQUAINTANCE' + | 'NO_RELATIONSHIP'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/RequesterRole.pdsc + + export type RequesterRole = + | 'RECRUITER' + | 'HIRING_MANAGER' + | 'JOB_POSTER' + | 'HIRING_PLATFORM_USER' + | 'CANDIDATE' + | 'EMPLOYEE'; + // Generated from: com/linkedin/avro2pegasus/events/referrals/SalesToolPreviewEvent.pdsc + + export interface SalesToolPreviewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + memberUrn: string; + companyUrn: string; + titleUrn: string; + } + } + namespace Registration { + // Generated from: com/linkedin/avro2pegasus/events/registration/RedemptionOutcome.pdsc + + export type RedemptionOutcome = + | 'SUCCESSFUL' + | 'EXISTING_PREMIUM' + | 'CAMPAIGN_PREVIOUSLY_FULFILLED' + | 'UNMET_REQUIREMENTS' + | 'NO_CAMPAIGN_DATA' + | 'API_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/registration/RegistrationAttemptEvent.pdsc + + export interface RegistrationAttemptEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + handleType: RegistrationHandleType; + invitationId: number; + trcode?: string; + submissionId?: string; + referrerPageKey?: string; + securityChallengeType?: Com.Linkedin.Avro2pegasus.Events.SecurityChallengeType; + errorTypes: RegistrationErrorType[]; + errorSource?: RegistrationErrorSource; + } + // Generated from: com/linkedin/avro2pegasus/events/registration/RegistrationErrorSource.pdsc + + export type RegistrationErrorSource = 'CLIENT' | 'SERVER'; + // Generated from: com/linkedin/avro2pegasus/events/registration/RegistrationErrorType.pdsc + + export type RegistrationErrorType = + | 'INVALID_NAME' + | 'INVALID_PASSWORD' + | 'INVALID_PHONE' + | 'INVALID_EMAIL' + | 'DUPLICATE_EMAIL_OR_PHONE' + | 'EMAIL_OR_PHONE_NEEDED' + | 'INVALID_INVITATION' + | 'SECURITY_CHALLENGE_FAILURE' + | 'INTERNAL_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/registration/RegistrationHandleType.pdsc + + export type RegistrationHandleType = 'PHONE' | 'EMAIL'; + // Generated from: com/linkedin/avro2pegasus/events/registration/RegistrationOnboardingCompletionEvent.pdsc + + export interface RegistrationOnboardingCompletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + widgetUrn: string; + slotId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/registration/RegistrationPremiumRedemptionAttemptEvent.pdsc + + export interface RegistrationPremiumRedemptionAttemptEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + incentiveCampaignUrn?: string; + redemptionOutcome: RedemptionOutcome; + memberUrn: string; + } + } + namespace Relationships { + // Generated from: com/linkedin/avro2pegasus/events/relationships/Location.pdsc + + export interface Location { + latitude: number; + longitude: number; + address?: string; + places?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/relationships/LocationTrackingEvent.pdsc + + export interface LocationTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberId: number; + location?: Location; + proximity?: Proximity; + } + // Generated from: com/linkedin/avro2pegasus/events/relationships/Proximity.pdsc + + export interface Proximity { + entities?: string[]; + } + } + namespace Relevance { + // Generated from: com/linkedin/avro2pegasus/events/relevance/EntityEmbedding.pdsc + + export interface EntityEmbedding { + embedding: number[]; + version: string; + } + // Generated from: com/linkedin/avro2pegasus/events/relevance/EntityEmbeddingsEvent.pdsc + + export interface EntityEmbeddingsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + embeddings: EntityEmbedding[]; + } + // Generated from: com/linkedin/avro2pegasus/events/relevance/ErrorType.pdsc + + export type ErrorType = 'TIMED_OUT' | 'INTERNAL_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/relevance/Origin.pdsc + + export type Origin = + | 'EMAIL' + | 'PUSH' + | 'IN_APP_NOTIFICATION' + | 'DESKTOP_NOTIFICATION' + | 'PROFILE' + | 'PYMK' + | 'PEOPLE' + | 'OTHER' + | 'ORGANIC_ABI'; + // Generated from: com/linkedin/avro2pegasus/events/relevance/RelevanceFeatureEvent.pdsc + + export interface RelevanceFeatureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + tag: string; + featureItem: Com.Linkedin.Avro2pegasus.Events.Common.FeatureItem; + } + // Generated from: com/linkedin/avro2pegasus/events/relevance/RelevanceFeatureListEvent.pdsc + + export interface RelevanceFeatureListEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + tag: string; + features: Com.Linkedin.Avro2pegasus.Events.Common.FeatureItem[]; + } + // Generated from: com/linkedin/avro2pegasus/events/relevance/Route.pdsc + + export type Route = + | 'ABI_SPLASH' + | 'ABI_RESULTS_LANDING' + | 'PYMK' + | 'OTHER' + | 'FEED' + | 'PROFILE_PHOTO_UPLOAD' + | 'GET_THE_APP' + | 'FOLLOW_HUB' + | 'ENTITY_ACTIVITY_FEED'; + // Generated from: com/linkedin/avro2pegasus/events/relevance/SuggestedRoute.pdsc + + export type SuggestedRoute = + | 'ABI' + | 'PYMK' + | 'OTHER' + | 'FEED' + | 'PROFILE_PHOTO_UPLOAD' + | 'GET_THE_APP' + | 'FOLLOW_HUB' + | 'ENTITY_ACTIVITY_FEED'; + // Generated from: com/linkedin/avro2pegasus/events/relevance/SuggestedRouteActionEvent.pdsc + + export interface SuggestedRouteActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + routeServed: Route; + error?: ErrorType; + } + // Generated from: com/linkedin/avro2pegasus/events/relevance/SuggestedRouteRelevanceModel.pdsc + + export type SuggestedRouteRelevanceModel = 'ONBOARDING' | 'OFFLINE'; + // Generated from: com/linkedin/avro2pegasus/events/relevance/SuggestedRouteRequestEvent.pdsc + + export interface SuggestedRouteRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + origin: Origin; + userActionType: UserActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/relevance/SuggestedRouteServedEvent.pdsc + + export interface SuggestedRouteServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + suggestedRoute: SuggestedRoute; + model?: SuggestedRouteRelevanceModel; + } + // Generated from: com/linkedin/avro2pegasus/events/relevance/UserActionType.pdsc + + export type UserActionType = + | 'ACCEPT_INVITATION' + | 'INVITATION_ACCEPTANCE_NOTIFICATION' + | 'CONNECT' + | 'OTHER' + | 'IGNORE_INVITATION' + | 'USER_NAVIGATION'; + } + namespace Restrictions { + // Generated from: com/linkedin/avro2pegasus/events/restrictions/AntiAutomationRestrictionInfo.pdsc + + export interface AntiAutomationRestrictionInfo { + enforcementDuration: number; + expiryTime: number; + enforcedTime?: number; + violationTypes: ViolationType[]; + extensionNames: string[]; + userAgent?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/restrictions/GeoRestrictionInfo.pdsc + + export interface GeoRestrictionInfo { + countryCode: string; + } + // Generated from: com/linkedin/avro2pegasus/events/restrictions/HarassmentRestrictionLabel.pdsc + + export type HarassmentRestrictionLabel = 'HARASSMENT_ONCE' | 'HARASSMENT_TWICE'; + // Generated from: com/linkedin/avro2pegasus/events/restrictions/HibernateRestrictionInfo.pdsc + + export interface HibernateRestrictionInfo { + createdAt?: number; + removedAt?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/restrictions/RehabRestriction.pdsc + + export interface RehabRestriction { + rehabRestrictionInfo: Com.Linkedin.Avro2pegasus.Events.RehabRestrictionInfo; + expiresAt: number; + } + // Generated from: com/linkedin/avro2pegasus/events/restrictions/ScrapingRestrictionInfo.pdsc + + export interface ScrapingRestrictionInfo { + enforcementDuration: number; + expiryTime: number; + enforcedTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/restrictions/TieredBotRestrictionInfo.pdsc + + export interface TieredBotRestrictionInfo { + enforcementDuration: number; + expiresAt: number; + enforcedAt?: number; + violationTypes: ViolationType[]; + extensionNames: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/restrictions/TieredHarassmentRestrictionInfo.pdsc + + export interface TieredHarassmentRestrictionInfo { + restrictionLabel: HarassmentRestrictionLabel; + createdAt: number; + lastModifiedAt: number; + isChallengeSolved?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/restrictions/ViolationType.pdsc + + export type ViolationType = 'BLACKLISTED_EXTENSION' | 'SCRAPING_DETECTION'; + } + namespace Resume { + // Generated from: com/linkedin/avro2pegasus/events/resume/Education.pdsc + + export interface Education { + schoolUrn?: string; + degreeUrn?: string; + fieldOfStudyUrn?: string; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + schoolName?: string; + degreeName?: string; + fieldOfStudyName?: string; + notes?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/parserName.pdsc + + export type parserName = 'LENS' | 'DAXTRA' | 'CONNECTIFIER' | 'LINKEDIN'; + // Generated from: com/linkedin/avro2pegasus/events/resume/Position.pdsc + + export interface Position { + titleUrn?: string; + companyUrn?: string; + geoLocationUrn?: string; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + titleName?: string; + companyName?: string; + description?: string; + industryUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/ResumeAnnotationActionEvent.pdsc + + export interface ResumeAnnotationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.Resume.ResumeAnnotationActionType; + ownerUrn?: string; + mediaUrn?: string; + annotatorUrn: string; + parserName?: Com.Linkedin.Avro2pegasus.Events.Common.Resume.ResumeParserName; + parserVersion?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/ResumeDocumentMetadata.pdsc + + export interface ResumeDocumentMetadata { + blobSizeInBytes?: number; + contentType?: string; + containerName?: string; + contentHash?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/ResumeEducation.pdsc + + export interface ResumeEducation { + schoolName?: string; + degree?: string; + fieldOfStudy?: string; + notes?: string; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/ResumeParsedFieldsEvent.pdsc + + export interface ResumeParsedFieldsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + mediaUrn: string; + parserName: parserName; + parserVersion: string; + positions?: ResumePosition[]; + educations?: ResumeEducation[]; + skills?: ResumeSkill[]; + standardizedPositions?: StandardizedPosition[]; + standardizedEducations?: StandardizedEducation[]; + standardizedSkills?: string[]; + geoLocations?: string[]; + firstName?: string; + middleName?: string; + lastName?: string; + emails?: string[]; + phoneNumbers?: Com.Linkedin.Avro2pegasus.Events.Common.Resume.ResumePhoneNumber[]; + addresses?: Com.Linkedin.Avro2pegasus.Events.Common.Resume.ResumeAddress[]; + summary?: string; + parsedLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + resumeDocumentMetadata?: ResumeDocumentMetadata; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/ResumeParseEvent.pdsc + + export interface ResumeParseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + parserName: string; + parserVersion: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + resumeFileType: string; + isFirstNameParsed: boolean; + isLastNameParsed: boolean; + emailAddressCount: number; + phoneNumberCount: number; + addressCount: number; + positionCount: number; + educationCount: number; + skillCount: number; + summaryCount: number; + positionTitleCount: number; + positionCompanyCount: number; + positionDescriptionCount: number; + positionStartDateCount: number; + positionEndDateCount: number; + educationNameCount: number; + educationSchoolNameCount: number; + educationDegreeCount: number; + educationFieldOfStudyCount: number; + educationNotesCount: number; + educationDescriptionCount: number; + educationStartDateCount: number; + educationEndDateCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/ResumeParseReviewedEvent.pdsc + + export interface ResumeParseReviewedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + mediaUrn: string; + expectedPositions?: Position[]; + expectedEducations?: Education[]; + expectedSkillUrns?: string[]; + expectedSkills?: Skill[]; + expectedFirstName?: string; + expectedMiddleName?: string; + expectedLastName?: string; + expectedEmails?: string[]; + expectedPhoneNumbers?: Com.Linkedin.Avro2pegasus.Events.Common.Resume.ResumePhoneNumber[]; + expectedAddresses?: Com.Linkedin.Avro2pegasus.Events.Common.Resume.ResumeAddress[]; + expectedSummary?: string; + isOnlyCurrentPositionDisplayed?: boolean; + isOnlyCurrentEducationDisplayed?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/ResumePosition.pdsc + + export interface ResumePosition { + title?: string; + companyName?: string; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + description?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/ResumeSkill.pdsc + + export interface ResumeSkill { + skill: string; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/Skill.pdsc + + export interface Skill { + skillUrn: string; + skillName: string; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/StandardizedEducation.pdsc + + export interface StandardizedEducation { + schoolUrn?: string; + degreeUrn?: string; + fieldOfStudyUrns?: string[]; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/events/resume/StandardizedPosition.pdsc + + export interface StandardizedPosition { + titleUrn?: string; + companyUrn?: string; + industryUrns?: string[]; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + } + namespace Resumesuggestions { + // Generated from: com/linkedin/avro2pegasus/events/resumesuggestions/ProfileExperienceSnippetsServedEvent.pdsc + + export interface ProfileExperienceSnippetsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + snippetSetTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + servedSnippets: ServedProfileExperienceSnippet[]; + } + // Generated from: com/linkedin/avro2pegasus/events/resumesuggestions/ServedProfileExperienceSnippet.pdsc + + export interface ServedProfileExperienceSnippet { + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + positionUrn: string; + } + } + namespace Reviewqueue { + // Generated from: com/linkedin/avro2pegasus/events/reviewqueue/MemberReviewQueueEvent.pdsc + + export interface MemberReviewQueueEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + scoredContentId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + queueRequestSource: QueueRequestSource; + } + // Generated from: com/linkedin/avro2pegasus/events/reviewqueue/QueueRequestSource.pdsc + + export type QueueRequestSource = 'OJAA' | 'UGC_SPAM' | 'REPORT_SPAM'; + // Generated from: com/linkedin/avro2pegasus/events/reviewqueue/ReviewItemActionEvent.pdsc + + export interface ReviewItemActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + itemId: string; + csUserUrn: string; + reviewLayoutType: ReviewLayoutType; + timeRange?: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + averageReviewTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/reviewqueue/ReviewItemOperationalMetricEvent.pdsc + + export interface ReviewItemOperationalMetricEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + reviewItemId: number; + reviewItemOperationalMetricState: ReviewItemOperationalMetricState; + reviewItemOperationalMetricMetadata?: ReviewItemOperationalMetricMetadata; + } + // Generated from: com/linkedin/avro2pegasus/events/reviewqueue/ReviewItemOperationalMetricMetadata.pdsc + + export interface ReviewItemOperationalMetricMetadata { + reviewerUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/reviewqueue/ReviewItemOperationalMetricState.pdsc + + export type ReviewItemOperationalMetricState = + | 'CREATED' + | 'LOADED' + | 'ASSIGNED' + | 'COMPLETED' + | 'ESCALATED' + | 'MODIFIED'; + // Generated from: com/linkedin/avro2pegasus/events/reviewqueue/ReviewLayoutType.pdsc + + export type ReviewLayoutType = 'PAGE_LOAD' | 'ITEM_LOAD'; + } + namespace Reviews { + // Generated from: com/linkedin/avro2pegasus/events/reviews/ReviewCreateEvent.pdsc + + export interface ReviewCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + reviewUrn: string; + reviewType: ReviewType; + subreviewCriterion?: string; + hasTextReview: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/reviews/ReviewType.pdsc + + export type ReviewType = + | 'PROFINDER_SERVICE_PROVIDER' + | 'ORGANIZATION_WORKPLACE' + | 'B2BREVIEWS_PRODUCT' + | 'TEST_ONLY_REVIEW' + | 'LEARNING_CONTENT_CONSUMPTION' + | 'ORGANIZATION_PRODUCT_SURVEY'; + } + namespace Routing { + // Generated from: com/linkedin/avro2pegasus/events/routing/EntityAssignmentContext.pdsc + + export type EntityAssignmentContext = 'ADS' | 'PAYMENTS' | 'RECRUITER' | 'SALES'; + // Generated from: com/linkedin/avro2pegasus/events/routing/EntityAssignmentEvent.pdsc + + export interface EntityAssignmentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + assignmentUrn: string; + previousAssignmentUrn?: string; + effectiveTime: number; + previousEffectiveTime: number; + context?: EntityAssignmentContext; + } + } + namespace Salary { + // Generated from: com/linkedin/avro2pegasus/events/salary/CompensationData.pdsc + + export interface CompensationData { + validEntriesCount?: number; + salaryDatas: SalaryData[]; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/EstimationType.pdsc + + export type EstimationType = 'ACTUAL' | 'BLS' | 'INFERRED' | 'TEST'; + // Generated from: com/linkedin/avro2pegasus/events/salary/JobDetailsSalaryServedEvent.pdsc + + export interface JobDetailsSalaryServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + salaryInsightUrn?: string; + jobPostingUrn: string; + isPremiumModule: boolean; + isLocked: boolean; + isDataAvailable: boolean; + isDataEstimated: boolean; + compensation?: CompensationData; + compensationSource?: Com.Linkedin.Avro2pegasus.Events.Common.Salary.CompensationSource; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/OrganizationSalaryServedEvent.pdsc + + export interface OrganizationSalaryServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + salaryInsightUrn?: string; + isLocked: boolean; + isDataAvailable: boolean; + organization: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + compensation?: CompensationData; + isPremiumUser: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalaryActionEvent.pdsc + + export interface SalaryActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + salaryInsightKeyMappingUrn?: string; + isLocked: boolean; + moduleName?: string; + controlUrn: string; + interactionType: Com.Linkedin.Avro2pegasus.Events.Common.ControlInteractionType; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalaryData.pdsc + + export interface SalaryData { + estimationType?: EstimationType; + maximum: Com.Linkedin.Avro2pegasus.Events.Common.Premium.SalaryRecord; + minimum: Com.Linkedin.Avro2pegasus.Events.Common.Premium.SalaryRecord; + median?: Com.Linkedin.Avro2pegasus.Events.Common.Premium.SalaryRecord; + type: SalaryType; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalaryEtlDataEvent.pdsc + + export interface SalaryEtlDataEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + id: string; + etlCreationTime: number; + sliceData: string; + compensations: string; + entrySubmissionTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalarySARRetrieveCompensationEvent.pdsc + + export interface SalarySARRetrieveCompensationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + corpUserUrn: string; + submissionId: number; + isAuthorized: boolean; + error?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalarySARRetrieveSubmissionsEvent.pdsc + + export interface SalarySARRetrieveSubmissionsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + corpUserUrn: string; + memberUrn: string; + isAuthorized: boolean; + error?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalarySearchHitActionEvent.pdsc + + export interface SalarySearchHitActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entityUrn?: string; + rawSearchId: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + entityActionType: Com.Linkedin.Avro2pegasus.Events.Search.SearchActionType; + isBrowserRightClick: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalarySearchHitImpressionEvent.pdsc + + export interface SalarySearchHitImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + results: Com.Linkedin.Avro2pegasus.Events.Search.SearchImpressionResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalarySearchMidTierEvent.pdsc + + export interface SalarySearchMidTierEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Search.GenericSearchHeader; + searchRequest: Com.Linkedin.Avro2pegasus.Events.Search.GenericSearchRequest; + searchResults?: Com.Linkedin.Avro2pegasus.Events.Search.GenericSearchResults; + facetResults?: Com.Linkedin.Avro2pegasus.Events.Search.GenericFacetResults; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalarySearchServedEvent.pdsc + + export interface SalarySearchServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Search.SearchHeaderV2; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + components: Com.Linkedin.Avro2pegasus.Events.Search.SearchResultComponentV2[]; + guides: Com.Linkedin.Avro2pegasus.Events.Search.SearchFilter[]; + facets: Com.Linkedin.Avro2pegasus.Events.Search.SearchFacet[]; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalaryType.pdsc + + export type SalaryType = + | 'BASE' + | 'TOTAL' + | 'ANNUAL_BONUS' + | 'SIGN_ON_BONUS' + | 'RSU' + | 'STOCK_OPTION' + | 'TOTAL_ADDITION'; + // Generated from: com/linkedin/avro2pegasus/events/salary/SalaryViewEvent.pdsc + + export interface SalaryViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + salaryInsightKeyMappingUrn?: string; + isLocked: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalaryViewModuleGenerationEvent.pdsc + + export interface SalaryViewModuleGenerationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + salaryInsightKeyMappingUrn?: string; + isLocked: boolean; + moduleName: string; + } + // Generated from: com/linkedin/avro2pegasus/events/salary/SalaryViewModuleImpressionEvent.pdsc + + export interface SalaryViewModuleImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + salaryInsightKeyMappingUrn?: string; + isLocked: boolean; + moduleName: string; + } + } + namespace Sales { + // Generated from: com/linkedin/avro2pegasus/events/sales/CredentialOwner.pdsc + + export type CredentialOwner = 'CONTRACT' | 'SEAT'; + // Generated from: com/linkedin/avro2pegasus/events/sales/CrmAction.pdsc + + export type CrmAction = + | 'SEARCH_ACCOUNT' + | 'CREATE_ACCOUNT' + | 'CREATE_ACCOUNTS' + | 'SEARCH_CONTACT' + | 'CREATE_CONTACT' + | 'ASSOCIATE_OPPORTUNITY_CONTACT' + | 'QUERY_METADATA' + | 'SEARCH_OPPORTUNITY' + | 'CREATE_LI_CALL' + | 'CREATE_LI_NOTE' + | 'CREATE_LI_INMAIL' + | 'CREATE_LI_MESSAGE' + | 'CREATE_LI_SMARTLINK' + | 'UPDATE_ACCOUNTS'; + // Generated from: com/linkedin/avro2pegasus/events/sales/EmailProfileViewEvent.pdsc + + export interface EmailProfileViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + vieweeMemberUrn?: string; + result: EmailProfileViewResultType; + } + // Generated from: com/linkedin/avro2pegasus/events/sales/EmailProfileViewResultType.pdsc + + export type EmailProfileViewResultType = + | 'FOUND' + | 'NOT_FOUND' + | 'ROLE_BASED_EMAIL' + | 'FUSE_LIMIT' + | 'UNEXPECTED_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/sales/ErrorCode.pdsc + + export type ErrorCode = + | 'CRM_FORBIDDEN' + | 'CRM_DUPLICATE_RECORD' + | 'CRM_VALIDATION_ERROR' + | 'CRM_METADATA_VALIDATION' + | 'CRM_API_LIMITS_EXCEEDED' + | 'CRM_API_NOT_ENABLED' + | 'CRM_UNAVAILABLE' + | 'CRM_DISCONNECTED' + | 'CRM_TIMEOUT' + | 'LI_TIMEOUT' + | 'UNRECOGNIZED_CRM_ERROR' + | 'SYSTEM_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/sales/SalesActivityEvent.pdsc + + export interface SalesActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractId: number; + seatId: number; + memberId: number; + activityType: SalesActivityType; + count: number; + activityDate: number; + yearMonth: number; + daysSinceEpoch?: number; + timestamp: number; + } + // Generated from: com/linkedin/avro2pegasus/events/sales/SalesActivityType.pdsc + + export type SalesActivityType = + | 'INMAIL_SENT' + | 'MESSAGE_SENT' + | 'ACCOUNT_SEARCHED' + | 'PEOPLE_SEARCHED' + | 'ADVANCED_ACCOUNT_SEARCHED' + | 'ADVANCED_PEOPLE_SEARCHED' + | 'SALES_PREFERENCE_UPDATED' + | 'ADDED_NOTE_TO_PEOPLE' + | 'ADDED_NOTE_TO_ACCOUNT' + | 'ADDED_TAG_TO_PEOPLE' + | 'ADDED_TAG_TO_ACCOUNT' + | 'IMPORTED_LEAD' + | 'CREATED_POINTDRIVE' + | 'SHARED_POINTDRIVE' + | 'SAVED_LEAD' + | 'SAVED_ACCOUNT' + | 'SAVED_SEARCH' + | 'INSTALLED_MOBILE_APP' + | 'CONNECTED_MOBILE_CALENDAR' + | 'CREATED_CUSTOM_LIST' + | 'VISITED_COACH_PAGE'; + // Generated from: com/linkedin/avro2pegasus/events/sales/SalesCrmServedEvent.pdsc + + export interface SalesCrmServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + seatUrn?: string; + credentialOwner: CredentialOwner; + crmPairingUrn?: string; + crmAction: CrmAction; + errorCode?: ErrorCode; + errorDetails?: string; + requestId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + } + } + namespace Salesinsights { + // Generated from: com/linkedin/avro2pegasus/events/salesinsights/SalesInsightsActionEvent.pdsc + + export interface SalesInsightsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + target: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionDetail: string; + actionType: Com.Linkedin.Avro2pegasus.Events.UnifiedActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/salesinsights/SalesInsightsMetricsReportDownloadRequestEvent.pdsc + + export interface SalesInsightsMetricsReportDownloadRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rowCount: number; + metricsQuery: Com.Linkedin.Avro2pegasus.Events.Common.Salesinsights.SalesInsightsMetricsQuery; + metricsReportType?: string; + exportType?: Com.Linkedin.Avro2pegasus.Events.Common.Salesinsights.MetricsReportExportType; + isAsync?: boolean; + creditsConsumed?: number; + } + } + namespace Search { + // Generated from: com/linkedin/avro2pegasus/events/search/Account.pdsc + + export interface Account { + accountModifiedDate?: number; + allowOpenlinkSearch?: string; + countryCode?: string; + subscriberUntil?: number; + defaultLocale?: string; + geoPlaceCode?: string; + geoPlaceMaskCode?: string; + geoPostalCode?: string; + industryId?: number; + isActive?: string; + latitudeDeg?: number; + longitudeDeg?: number; + postalCode?: string; + proposalAccepts?: number; + regionCode?: number; + registrationDate?: number; + profileAuthKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/AnetMembership.pdsc + + export interface AnetMembership { + anetId: number; + anetType?: string; + state?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/AnetMemberships.pdsc + + export interface AnetMemberships { + memberId: number; + anets: AnetMembership[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/BizFollow.pdsc + + export interface BizFollow { + companyId: number; + status?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/BizFollows.pdsc + + export interface BizFollows { + memberId: number; + bizFollows: BizFollow[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/CapGaleneSearchRequestEvent.pdsc + + export interface CapGaleneSearchRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchSessionId: string; + searchId: string; + queryContext: QueryContext; + paginationContext: PaginationContext; + memberContext: MemberContext; + queryTaggerOutputs: string[]; + queryModels: string[]; + searchExperiments: { [id: string]: string }; + rankingFeaturesMap: { [id: string]: string }; + searchByJobJobPostingUrn?: string; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterCommonHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterCommonHeader; + pageNum?: number; + searchQuery?: string; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + filteringRequest?: FilteringRequest; + ofccpTrackingId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/Component.pdsc + + export type Component = 'NODE' | 'BROKER'; + // Generated from: com/linkedin/avro2pegasus/events/search/ComputationType.pdsc + + export type ComputationType = 'DEFAULT' | 'ERROR' | 'COMPUTED'; + // Generated from: com/linkedin/avro2pegasus/events/search/Education.pdsc + + export interface Education { + activities?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + countryCode?: string; + degree?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + createdDate?: number; + endMonthyear?: number; + fieldOfStudy?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + modifiedDate?: number; + notes?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + profileEducationId?: number; + provinceCode?: string; + schoolId?: number; + schoolName?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + standardizedSchoolName?: string; + startMonthyear?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/Email.pdsc + + export interface Email { + emailId: number; + isConfirmed?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/Entitlements.pdsc + + export interface Entitlements { + memberId: number; + canOpenLink?: number; + firstNameClusterId?: string; + lastNameClusterId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/EntityAwareSuggestionInfo.pdsc + + export interface EntityAwareSuggestionInfo { + suggestedEntities: SuggestedEntityType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/Facet.pdsc + + export interface Facet { + name: string; + maxValues?: number; + values?: FacetValue[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FacetSelection.pdsc + + export interface FacetSelection { + name?: string; + value?: string; + facetPosition?: number; + numFacets?: number; + valuePosition?: number; + numValues?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FacetValue.pdsc + + export interface FacetValue { + name: string; + isSelected: boolean; + selectionType?: SelectionType; + } + // Generated from: com/linkedin/avro2pegasus/events/search/Feature.pdsc + + export interface Feature { + name: string; + value: number; + computationType: ComputationType; + processingDurationNano: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FederatedSearchComponent.pdsc + + export interface FederatedSearchComponent { + componentType: FederatedSearchComponentType; + position: string; + results?: GenericSearchResults; + additionalInfo?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FederatedSearchComponentType.pdsc + + export type FederatedSearchComponentType = 'SEARCH' | 'HERO' | 'RELATED_SEARCHES' | 'SPELLING_SUGGESTIONS'; + // Generated from: com/linkedin/avro2pegasus/events/search/FederatedSearchEvent.pdsc + + export interface FederatedSearchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + searchHeader: GenericSearchHeader; + searchRequest: GenericSearchRequest; + searchResults?: GenericSearchResults; + facetResults?: GenericFacetResults; + searchComponents?: FederatedSearchComponent[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FeedbackActionType.pdsc + + export type FeedbackActionType = 'YES' | 'NO' | 'SUBMIT' | 'REPORT' | 'IRRELEVANT'; + // Generated from: com/linkedin/avro2pegasus/events/search/Filter.pdsc + + export interface Filter { + filteringEntities: FilteringEntityProperties[]; + minWeight?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FilteringEntity.pdsc + + export interface FilteringEntity { + entityName: string; + matchMode: MatchMode; + textField?: string; + idField?: string; + minWeight: number; + entityValues: FilteringEntityValue[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FilteringEntityProperties.pdsc + + export interface FilteringEntityProperties { + entityName: string; + retrievalWeight?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FilteringEntitySimilarValue.pdsc + + export interface FilteringEntitySimilarValue { + text?: string; + id?: number; + retrievalWeight: number; + scoringWeight?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FilteringEntitySimilarValues.pdsc + + export interface FilteringEntitySimilarValues { + minWeight: number; + values: FilteringEntitySimilarValue[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FilteringEntityValue.pdsc + + export interface FilteringEntityValue { + text?: string; + id?: number; + rawQuery?: string; + isNegated: boolean; + retrievalWeight: number; + scoringWeight?: number; + similarValues?: FilteringEntitySimilarValues; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FilteringRequest.pdsc + + export interface FilteringRequest { + entities: FilteringEntity[]; + filters: Filter[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/FlagshipSearchServedEvent.pdsc + + export interface FlagshipSearchServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: SearchHeaderV2; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + timeToServe: number; + components: SearchResultComponentV2[]; + guides: SearchFilter[]; + facets: SearchFacet[]; + flagshipSearchOrigin?: Com.Linkedin.Avro2pegasus.Events.Common.Search.FlagshipSearchOrigin; + flagshipSearchIntent?: Com.Linkedin.Avro2pegasus.Events.Common.Search.FlagshipSearchIntent; + } + // Generated from: com/linkedin/avro2pegasus/events/search/GenericFacetResults.pdsc + + export interface GenericFacetResults { + facets: GenericSearchFacet[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/GenericSearchEvent.pdsc + + export interface GenericSearchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + searchHeader: GenericSearchHeader; + searchRequest: GenericSearchRequest; + searchResults?: GenericSearchResults; + facetResults?: GenericFacetResults; + heroResults?: GenericSearchResults; + relatedSearchResults?: GenericSearchResults; + spellSuggestionResults?: GenericSearchResults; + } + // Generated from: com/linkedin/avro2pegasus/events/search/GenericSearchFacet.pdsc + + export interface GenericSearchFacet { + facetType: string; + numSelectedFacets: number; + facetValues: GenericSearchFacetValue[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/GenericSearchFacetValue.pdsc + + export interface GenericSearchFacetValue { + facetValue: string; + facetCount: number; + isSelected: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/search/GenericSearchHeader.pdsc + + export interface GenericSearchHeader { + searchId: string; + referralSearchId?: string; + searchType?: string; + searchOrigin?: string; + savedSearchUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/GenericSearchOverlap.pdsc + + export interface GenericSearchOverlap { + type: string; + name: string; + startYear: number; + endYear: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/GenericSearchRequest.pdsc + + export interface GenericSearchRequest { + keywords: string; + searchRequestType?: GenericSearchRequestType; + sortCriteria?: string; + pageNum: number; + offset: number; + numPerPage: number; + maxNumResults: number; + facetSpecList?: string; + facetValueMap?: { [id: string]: string }; + searchOverlaps?: GenericSearchOverlap[]; + advanceFields?: { [id: string]: string }; + additionalInfo?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/search/GenericSearchRequestType.pdsc + + export type GenericSearchRequestType = 'TYPE_AHEAD_SEARCH' | 'DOCUMENT_SEARCH' | 'HIT_COUNT_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/events/search/GenericSearchResult.pdsc + + export interface GenericSearchResult { + resultId: number; + result?: string; + resultType: string; + resultIndex: number; + relevance: number; + additionalInfo?: { [id: string]: string }; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/search/GenericSearchResults.pdsc + + export interface GenericSearchResults { + numSearchResults?: number; + results: GenericSearchResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/GlobalTypeaheadResultsEvent.pdsc + + export interface GlobalTypeaheadResultsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + typeaheadResultId: string; + query: string; + suggestions: SuggestionDetail[]; + instantResults: InstantResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/Hit.pdsc + + export interface Hit { + hitUrn: string; + score: number; + processingDurationNano: number; + features: Feature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/Index.pdsc + + export interface Index { + name: IndexName; + version: string; + partition: number; + replica: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/IndexName.pdsc + + export type IndexName = + | 'NAMESEARCH' + | 'COMPANYSEARCH' + | 'GROUPSEARCH' + | 'SCHOOLSEARCH' + | 'SLIDESHOWSEARCH' + | 'SHOWCASESEARCH' + | 'USCP' + | 'JOBSEARCH' + | 'ACTIVITIES'; + // Generated from: com/linkedin/avro2pegasus/events/search/InstantResult.pdsc + + export interface InstantResult { + resultType: InstantResultType; + resultId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/InstantResultType.pdsc + + export type InstantResultType = + | 'FIRST_DEGREE_PERSON' + | 'SECOND_DEGREE_PERSON' + | 'COMPANY' + | 'GROUP' + | 'SITE_FEATURE' + | 'SKILL' + | 'SUGGESTION' + | 'UNKNOWN' + | 'LEAP_RSS'; + // Generated from: com/linkedin/avro2pegasus/events/search/JobSearchFacetType.pdsc + + export type JobSearchFacetType = + | 'COMPANY' + | 'EXPERIENCE' + | 'FUNCTION' + | 'GEO_CITY' + | 'INDUSTRY' + | 'JOB_TYPE' + | 'LOCATION' + | 'SALARY_BUCKET' + | 'TIME_POSTED' + | 'TITLE'; + // Generated from: com/linkedin/avro2pegasus/events/search/LookupSearchActionEvent.pdsc + + export interface LookupSearchActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + queryTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + entityActionType: LookupSearchResultActionType; + searchResult: LookupSearchResultHit; + } + // Generated from: com/linkedin/avro2pegasus/events/search/LookupSearchEvent.pdsc + + export interface LookupSearchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + queryTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + query: string; + origin: LookupSearchResultPageOrigin; + } + // Generated from: com/linkedin/avro2pegasus/events/search/LookupSearchHeader.pdsc + + export interface LookupSearchHeader { + queryTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + query: string; + origin: LookupSearchResultPageOrigin; + resultType: LookupSearchResultType; + } + // Generated from: com/linkedin/avro2pegasus/events/search/LookupSearchResultActionType.pdsc + + export type LookupSearchResultActionType = + | 'VIEW_PROFILE' + | 'SEND_MESSAGE' + | 'CALL' + | 'SEND_TEXT' + | 'SEND_EMAIL' + | 'CANCEL'; + // Generated from: com/linkedin/avro2pegasus/events/search/LookupSearchResultHit.pdsc + + export interface LookupSearchResultHit { + entityUrn: string; + position: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + resultType: LookupSearchResultType; + visibleTime?: number; + duration?: number; + resultSize?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + visibleHeight?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/LookupSearchResultImpressionEvent.pdsc + + export interface LookupSearchResultImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + queryTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + facets: string[]; + results: LookupSearchResultHit[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/LookupSearchResultPageOrigin.pdsc + + export type LookupSearchResultPageOrigin = + | 'SEARCH_HEADER' + | 'PROFILE_SKILL_SEARCH' + | 'PROFILE_SCHOOL_SEARCH' + | 'PROFILE_COMPANY_SEARCH' + | 'FACETED_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/events/search/LookupSearchResultType.pdsc + + export type LookupSearchResultType = 'TYPEAHEAD' | 'SERVER_SEARCH' | 'INSTANT_SEARCH' | 'RECENT_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/events/search/MatchMode.pdsc + + export type MatchMode = 'PREFER_TEXT' | 'PREFER_ID' | 'MATCH_TEXT_OR_ID'; + // Generated from: com/linkedin/avro2pegasus/events/search/MemberContext.pdsc + + export interface MemberContext { + connections?: string[]; + groups?: string[]; + schools?: string[]; + companies?: string[]; + location?: Com.Linkedin.Avro2pegasus.Events.GeoLocation; + locales?: Com.Linkedin.Avro2pegasus.Events.Locale[]; + contract?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/MemberEmails.pdsc + + export interface MemberEmails { + memberId: number; + emails: Email[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/MemberPicture.pdsc + + export interface MemberPicture { + memberId: number; + croppedPictureId?: string; + masterPictureId?: string; + pictureState?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/MemberProfile.pdsc + + export interface MemberProfile { + address?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + associations?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + firstName?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + headline?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + honors?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + interests?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + lastName?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + maidenName?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + profileModifiedDate?: number; + proposalComments?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + specialties?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + summary?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + maidenNameVisibility?: string; + profileDefaultLocale?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/MemberReferences.pdsc + + export interface MemberReferences { + memberId: number; + numRecommenders?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/MemberRestriction.pdsc + + export interface MemberRestriction { + memberId: number; + restriction?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/MemberSearchProfile.pdsc + + export interface MemberSearchProfile { + memberId: number; + account: Account; + profile: MemberProfile; + profPositions: Position[]; + profEducations: Education[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/MemberSettings.pdsc + + export interface MemberSettings { + memberId: number; + settings: Setting[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/PaginationContext.pdsc + + export interface PaginationContext { + numToReturn?: number; + entityFilter?: string[]; + start?: number; + startFilter?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/PeopleSearchFacetType.pdsc + + export type PeopleSearchFacetType = + | 'CURRENT_COMPANY' + | 'GEO_REGION' + | 'INDUSTRY' + | 'NETWORK' + | 'NONPROFIT_INTEREST' + | 'PROFILE_LANGUAGE' + | 'SCHOOL'; + // Generated from: com/linkedin/avro2pegasus/events/search/Position.pdsc + + export interface Position { + company?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + companySize?: string; + companyType?: string; + createdDate?: number; + endMonthyear?: number; + industryId?: number; + memberSelectedCompanyId?: number; + modifiedDate?: number; + profilePositionId?: number; + startMonthyear?: number; + positionSummary?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + title?: Com.Linkedin.Avro2pegasus.Events.MultiLocaleString; + } + // Generated from: com/linkedin/avro2pegasus/events/search/PrivacySettings.pdsc + + export interface PrivacySettings { + memberId: number; + displayWebProfile?: string; + allowOpenlinkReq?: string; + jobSeekerSetting?: string; + requireReferral?: string; + showSubscriberIcon?: string; + lastNamePreference?: string; + allowConnectionsBrowse?: string; + memberPicture?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/ProspectDocuments.pdsc + + export interface ProspectDocuments { + documentId: number; + prospectData?: Com.Linkedin.Avro2pegasus.Cap2.Dm.Pub.Avro.Prospect.ProspectData[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/ProspectSearchAlertEvent.pdsc + + export interface ProspectSearchAlertEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchId: string; + ownerId: string; + queryType: string; + searchName: string; + searchDelta: string; + searchAlertCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/QueryContext.pdsc + + export interface QueryContext { + searchType?: SearchType; + searchOrigin?: SearchOrigin; + searchVertical?: string; + searchProduct?: SearchProduct; + facetRequests?: Facet[]; + geoLocation?: Com.Linkedin.Avro2pegasus.Events.GeoLocation; + rawQuery?: string; + rewrittenQuery?: string; + numToScore?: number; + numToCount?: number; + geoLocations?: Com.Linkedin.Avro2pegasus.Events.GeoLocation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchActionEvent.pdsc + + export interface SearchActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: SearchHeader; + entityActionType?: SearchActionType; + searchResult: SearchResultHit; + searchResultComponent?: SearchResultComponent; + targetPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchActionType.pdsc + + export type SearchActionType = + | 'SEARCH' + | 'VIEW_ENTITY' + | 'CONNECT' + | 'FOLLOW' + | 'MESSAGE' + | 'SEND_INMAIL' + | 'SAVE_JOB' + | 'SHARE' + | 'VIEW_CONNECTIONS' + | 'JOIN_GROUP' + | 'VIEW_POST' + | 'GET_INTRODUCED' + | 'UNFOLLOW' + | 'VIEW_FACET' + | 'DEFAULT' + | 'CONNECT_WITH_MESSAGE' + | 'SEE_JOBS_AT_COMPANY' + | 'APPLY_TO_JOB' + | 'START_GROUP_CONVERSATION' + | 'UNSAVE_JOB' + | 'PERFORM_RELATED_SEARCH' + | 'LIKE' + | 'COMMENT' + | 'EXPAND' + | 'PLAY' + | 'QR_VIEW_ENTITY' + | 'VIEW_RELATED_ENTITY' + | 'REPORT' + | 'SHARE_IN_MESSAGE' + | 'EMBED' + | 'COPY_LINK' + | 'SAVE_FOR_LATER' + | 'EDIT_SHARE' + | 'RECOMMEND_GROUP_POST' + | 'REMOVE_MENTION' + | 'BLOCK_GROUP_MEMBER' + | 'DELETE' + | 'UNSAVE' + | 'REACT' + | 'UNREACT'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchActionV2Event.pdsc + + export interface SearchActionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entityUrn?: string; + rawSearchId: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + entityActionType?: SearchActionType; + targetPageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + isBrowserRightClick?: boolean; + isNameMatch?: boolean; + memberNetworkDistance?: Com.Linkedin.Avro2pegasus.Events.Common.NetworkDistance; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchActivityEvent.pdsc + + export interface SearchActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchId: string; + entityId?: string; + entityType?: SearchEntityType; + activityType: SearchActivityType; + pageKey: string; + componentKey?: string; + attributes?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchActivityType.pdsc + + export type SearchActivityType = 'view' | 'click' | 'expand' | 'collapse' | 'hover' | 'select' | 'unselect'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchAdsActionEvent.pdsc + + export interface SearchAdsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + adId: string; + searchId: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rank: number; + entityActionType?: SearchAdsActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchAdsActionType.pdsc + + export type SearchAdsActionType = 'CLICK' | 'HOVER' | 'ADCHOICE_CLICK'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchAdsImpressionEvent.pdsc + + export interface SearchAdsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + results: SearchAdsImpressionResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchAdsImpressionResult.pdsc + + export interface SearchAdsImpressionResult { + adId: string; + searchId: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rank: number; + visibleTime: number; + duration?: number; + adPosition?: SearchAdsPositionType; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size?: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + visibleHeight?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchAdsPositionType.pdsc + + export type SearchAdsPositionType = 'MAINLINE_TOP' | 'MAINLINE_BOTTOM' | 'SIDEBAR'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchAuditEvent.pdsc + + export interface SearchAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + initiatorType: SearchInitiatorType; + initiator: string; + entityUrnsRetrieved: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchClusterType.pdsc + + export type SearchClusterType = 'FIRST_DEGREE_CONNECTIONS' | 'CURRENT_COWORKERS' | 'ALUMNI_FROM_LAST_SCHOOL'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchEntityType.pdsc + + export type SearchEntityType = + | 'member' + | 'question' + | 'group' + | 'article' + | 'job' + | 'company' + | 'facet' + | 'facetValue'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchEvent.pdsc + + export interface SearchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + searchId?: string; + searchType?: string; + query: SearchQuery; + results: SearchResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchFacet.pdsc + + export interface SearchFacet { + facetType?: SearchFacetType; + facetVertical: SearchVertical; + facetValues: SearchFacetValue[]; + facetPosition: number; + isExpanded?: boolean; + facetTypeV2?: SearchFacetTypeV2; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchFacetType.pdsc + + export type SearchFacetType = 'CURRENT_COMPANY' | 'GEO_REGION' | 'INDUSTRY' | 'NETWORK'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchFacetTypeV2.pdsc + + export interface SearchFacetTypeV2 { + jobSearchFacetType?: JobSearchFacetType; + peopleSearchFacetType?: PeopleSearchFacetType; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchFacetValue.pdsc + + export interface SearchFacetValue { + facetValue: string; + facetValuePosition: number; + isSelected: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchFeedbackActionEvent.pdsc + + export interface SearchFeedbackActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchId: string; + isPageLevel: boolean; + response?: string; + entityPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + entityUrn?: string; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: FeedbackActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchFilter.pdsc + + export interface SearchFilter { + filterType: SearchFilterType; + filterName: string; + filterValue: string; + filterPosition: number; + isSelected: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchFilterActionEvent.pdsc + + export interface SearchFilterActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: SearchHeader; + searchFilter: SearchFilter; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchFilterType.pdsc + + export type SearchFilterType = 'VERTICAL' | 'KEYWORD' | 'FACET'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchHeader.pdsc + + export interface SearchHeader { + rawSearchId: string; + query?: string; + origin?: SearchResultPageOrigin; + platform: SearchPlatformType; + vertical?: SearchVertical; + locationString?: string; + locationType?: SearchLocationType; + distanceInMiles?: number; + originTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + verticalDetail?: SearchVerticalDetail; + topicUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchHeaderV2.pdsc + + export interface SearchHeaderV2 { + rawSearchId: string; + query?: string; + origin?: SearchResultPageOrigin; + platform: SearchPlatformType; + vertical?: SearchVertical; + locationString?: string; + locationType?: SearchLocationType; + distanceInMiles?: number; + verticalDetail?: SearchVerticalDetail; + searchRequestDetail?: SearchRequestDetail; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchImpressionEvent.pdsc + + export interface SearchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: SearchHeader; + pageNum: number; + results: SearchResultHit[]; + suggestedSecondaryVerticals?: SearchVertical[]; + components: SearchResultComponent[]; + verticalGuides: SearchFilter[]; + filterGuides: SearchFilter[]; + facetGuides: SearchFacet[]; + relatedSearchKeywords?: string[]; + savedSearchUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchImpressionResult.pdsc + + export interface SearchImpressionResult { + entityUrn?: string; + searchId: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + visibleTime: number; + duration: number; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + resultSize: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + visibleHeight: number; + isCacheHit: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchImpressionV2Event.pdsc + + export interface SearchImpressionV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + results: SearchImpressionResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchIndexServeEvent.pdsc + + export interface SearchIndexServeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + indexName: string; + productTag: string; + configTags: string[]; + infoTags: string[]; + isCanary: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchInitiatorType.pdsc + + export type SearchInitiatorType = 'EMPLOYEE' | 'GROUP'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchInputFocusEvent.pdsc + + export interface SearchInputFocusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + controlUrn: string; + tagValue?: string; + flagshipSearchIntent?: Com.Linkedin.Avro2pegasus.Events.Common.Search.FlagshipSearchIntent; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchLocationType.pdsc + + export type SearchLocationType = 'CITY' | 'STATE' | 'REGION' | 'COUNTRY' | 'POSTAL' | 'WORLDWIDE'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchOrigin.pdsc + + export type SearchOrigin = 'DESKTOP' | 'TABLET' | 'PHONE' | 'API'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchPlatformType.pdsc + + export type SearchPlatformType = 'TYPEAHEAD' | 'SRP' | 'SEARCH_HOME' | 'NONE'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchProduct.pdsc + + export type SearchProduct = 'RECRUITER' | 'LIGHTHOUSE' | 'CONSUMER'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchQuery.pdsc + + export interface SearchQuery { + pageSeq?: number; + newness?: string; + name?: string; + industriesCount?: number; + groupsCount?: number; + title?: string; + titleIsCurrent?: boolean; + company?: string; + companyIsCurrent?: boolean; + proposalAccepts?: number; + locationType?: number; + countryCode?: string; + postalCode?: string; + sortCriteria?: number; + keywords?: string; + originType?: string; + originName?: string; + numberOfResults?: number; + computationTime: number; + sik?: string; + version?: number; + firstName?: string; + lastName?: string; + industriesList?: string; + titleIsPast?: boolean; + companyIsPast?: boolean; + school?: string; + schoolIsCurrent?: boolean; + proposalType?: string; + locationWithinRadius?: number; + origin?: string; + searchOrigin?: string; + groupsList?: string; + isOpenLink?: boolean; + isInMyNetwork?: boolean; + views?: string; + searcherAccountType?: string; + aBTestId?: string; + pageNum?: number; + isShSearch?: boolean; + facetMaintainSelection?: boolean; + facetSelections: FacetSelection[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchRelevanceTrackingEvent.pdsc + + export interface SearchRelevanceTrackingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchId: string; + modelId: string; + component: Component; + pass: number; + index?: Index; + hits: Hit[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchRequestDetail.pdsc + + export interface SearchRequestDetail { + galeneRawQuery?: string; + galeneRewrittenQuery?: string; + annotatedQuery?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchRequestEvent.pdsc + + export interface SearchRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + samplingFraction: number; + queryContext?: QueryContext; + paginationContext?: PaginationContext; + memberContext?: MemberContext; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchRequestRecordEvent.pdsc + + export interface SearchRequestRecordEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchId: string; + searchUseCase: string; + serializedRestRequest: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchResult.pdsc + + export interface SearchResult { + sik?: string; + vieweeId?: number; + vieweeDist?: number; + resultIdx?: number; + version?: number; + vieweeAccountType?: string; + numCommonConnections?: number; + numCommonGroups?: number; + resultType?: string; + shJobType?: string; + abTestSk?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchResultComponent.pdsc + + export interface SearchResultComponent { + resultComponentType: SearchResultComponentType; + position: number; + layoutType: SearchResultComponentLayoutType; + resultVerticalType: SearchVertical; + results: SearchResultHit[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchResultComponentLayoutType.pdsc + + export type SearchResultComponentLayoutType = 'HORIZONTAL' | 'VERTICAL'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchResultComponentType.pdsc + + export type SearchResultComponentType = 'PRIMARY' | 'LARGE' | 'MEDIUM' | 'SMALL' | 'VARIABLE' | 'HERO'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchResultComponentV2.pdsc + + export interface SearchResultComponentV2 { + position: number; + resultVerticalType: SearchVertical; + results: SearchResultHitV2[]; + resultClusterType?: SearchClusterType; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchResultHit.pdsc + + export interface SearchResultHit { + entityUrn?: string; + resultType: SearchResultType; + absolutePosition: number; + positionInVertical: number; + isCacheHit: boolean; + isAnonymized?: boolean; + hitInfo?: SearchResultHitInfo; + gridPosition?: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + isNameMatch?: boolean; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + memberNetworkDistance?: Com.Linkedin.Avro2pegasus.Events.Common.NetworkDistance; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchResultHitInfo.pdsc + + export interface SearchResultHitInfo { + secondarySearchResultInfo?: SecondarySearchResultInfo; + entityAwareSuggestionInfo?: EntityAwareSuggestionInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchResultHitV2.pdsc + + export interface SearchResultHitV2 { + entityUrn?: string; + resultType?: SearchResultType; + absolutePosition: number; + isAnonymized: boolean; + isNameMatch: boolean; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + memberNetworkDistance?: Com.Linkedin.Avro2pegasus.Events.Common.NetworkDistance; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SearchResultPageOrigin.pdsc + + export type SearchResultPageOrigin = + | 'AUTO_COMPLETE' + | 'SUGGESTION' + | 'GLOBAL_SEARCH_HEADER' + | 'HISTORY' + | 'FACETED_SEARCH' + | 'GUIDED_SEARCH' + | 'SECONDARY_SEARCH' + | 'SPELL_CHECK' + | 'WHO_VIEWED_ME' + | 'ME_NOTIFICATIONS' + | 'OTHER' + | 'JOB_SEARCH_RESULTS_PAGE' + | 'INTEREST_TAG_FROM_FEED' + | 'INTEREST_TAG_FROM_POSTS' + | 'HASH_TAG_FROM_FEED' + | 'HASH_TAG_FROM_POSTS' + | 'QUERY_REWRITER' + | 'JOB_SEEKER_HOME_PAGE' + | 'SWITCH_SEARCH_VERTICAL' + | 'TRENDING_INTEREST_FROM_FEED' + | 'TRENDING_INTEREST_FROM_DESKTOP_HOME' + | 'TRENDING_INTEREST_FROM_SEARCH_HOME' + | 'TRENDING_INTEREST_FROM_TYAH' + | 'TRENDING_INTEREST_FROM_POSTS' + | 'CLUSTER_EXPANSION' + | 'RELATED_INTEREST_FROM_POSTS' + | 'MEMBER_PROFILE_CANNED_SEARCH' + | 'COMPANY_PAGE_CANNED_SEARCH' + | 'JOB_PAGE_CANNED_SEARCH' + | 'QUERY_SUGGESTION' + | 'SAME_NAME_DIRECTORY_PAGE' + | 'SEO' + | 'JOB_ALERT_EMAIL' + | 'JOB_ALERT_NOTIFICATIONS' + | 'RELATED_SEARCH_FROM_JSERP' + | 'TRENDING_SEARCH_FROM_SEARCH_HOME' + | 'TOPIC_SUGGESTION' + | 'NEWS_MODULE_FROM_FEED' + | 'NEWS_MODULE_FROM_SEARCH_HOME' + | 'NEWS_MODULE_FROM_DESKTOP_HOME' + | 'RELATED_TOPICS_FROM_POSTS' + | 'RELATED_STORYLINES_FROM_POSTS' + | 'PEOPLE_IN_COMPANY_INTRO_CARD' + | 'SELECT_GUIDES' + | 'DESELECT_GUIDES' + | 'JOB_ALERT' + | 'NEWS_MODULE_FROM_LAUNCHER' + | 'TRENDING_SEARCH_FROM_LAUNCHER' + | 'FED_EMAIL' + | 'EDITORS_PICK_PUSH_NOTIFICATION' + | 'NEWS_MODULE_FROM_DESKTOP_SRP' + | 'FEATURED_NOW' + | 'FEATURED_EARLIER' + | 'NEWS_MODULE_FROM_WIDGET' + | 'TOPIC_ENTRYPOINT' + | 'NO_RESULT_SRP' + | 'SHARED_CONNECTIONS_CANNED_SEARCH' + | 'SEE_CONNECTIONS_CANNED_SEARCH' + | 'DISCOVER_FROM_SEARCH_HOME' + | 'TYPEAHEAD_ESCAPE_HATCH' + | 'TOP_CAROUSEL_FROM_FEED' + | 'RELATED_SEARCH_FROM_SRP' + | 'SEARCH_WIDGET' + | 'SPELLCHECK_RECOURSE' + | 'HASH_TAG_FROM_MESSAGE_LIST' + | 'MARKETING_COMMS' + | 'EVENT_PAGE_CANNED_SEARCH' + | 'KNOWLEDGE_CARD_CANNED_SEARCH' + | 'SEARCH_ON_JOBS_HOME' + | 'PEOPLE_SEARCH_FROM_PERSONALIZED_NETWORK_ATTRIBUTES' + | 'KEYWORD_AUTO_COMPLETE' + | 'LOCATION_AUTO_COMPLETE' + | 'ENTITY_HOVER_CARD_CANNED_SEARCH' + | 'JYMBII_SEARCH_MORE_FROM_JOBS_HOME' + | 'BECAUSE_YOU_VIEWED_NOTIFICATION' + | 'DREAM_COMPANY_NOTIFICATION' + | 'JOB_SEARCH_RESULT_INLINE_SUGGESTIONS' + | 'JOB_ALERT_BLENDED_SEARCH' + | 'SEARCH_WITHIN_GROUP' + | 'SEARCH_ON_JOBS_HOME_PREFETCH' + | 'GROUPS_PAGE_INVITEE_SUGGESTION' + | 'JOB_ALERT_MANAGEMENT' + | 'EVENTS_PAGE_INVITEE_SUGGESTION' + | 'EVENT_REMINDER' + | 'JOB_SEARCH_RESULTS_PAGE_PREFETCH' + | 'AUTO_COMPLETE_ENTITY' + | 'ONBOARDING'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchResultType.pdsc + + export type SearchResultType = + | 'ENTITY' + | 'GUIDED_SEARCH' + | 'SECONDARY_SEARCH' + | 'MY_NETWORK' + | 'AUTO_COMPLETE' + | 'SITE_FEATURE' + | 'SHOWCASE' + | 'SUGGESTION' + | 'SEARCH_HISTORY_QUERY' + | 'TRENDING_SEARCH' + | 'RELATED_SEARCH' + | 'QUERY_SUGGESTION' + | 'TOPIC_SUGGESTION' + | 'RELATED_STORYLINE' + | 'RELATED_TOPIC' + | 'ENTITY_PINNED_ARTICLE' + | 'NEWS_STORYLINE' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchType.pdsc + + export type SearchType = 'INSTANT' | 'SEARCH' | 'FACET' | 'STATIC'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchVertical.pdsc + + export type SearchVertical = + | 'PEOPLE' + | 'JOB' + | 'COMPANY' + | 'SCHOOL' + | 'GROUP' + | 'ALL' + | 'LEAP_RSS' + | 'TOP' + | 'POSTS' + | 'COURSES' + | 'NONE' + | 'PROVIDERS' + | 'SALARY' + | 'EVENTS'; + // Generated from: com/linkedin/avro2pegasus/events/search/SearchVerticalDetail.pdsc + + export type SearchVerticalDetail = 'STORYLINE_FEED' | 'INTEREST_FEED'; + // Generated from: com/linkedin/avro2pegasus/events/search/SecondarySearchResultInfo.pdsc + + export interface SecondarySearchResultInfo { + vertical: SearchVertical; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SelectionType.pdsc + + export type SelectionType = 'SHOULD' | 'MUST' | 'NOT'; + // Generated from: com/linkedin/avro2pegasus/events/search/Setting.pdsc + + export interface Setting { + settingId: number; + settingValue?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SuggestedEntityType.pdsc + + export type SuggestedEntityType = 'COMPANY' | 'SKILL' | 'TITLE' | 'SCHOOL' | 'TOPIC'; + // Generated from: com/linkedin/avro2pegasus/events/search/SuggestionDetail.pdsc + + export interface SuggestionDetail { + suggestion: string; + verticalType: SuggestionVerticalType; + params?: { [id: string]: string }; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/search/SuggestionVerticalType.pdsc + + export type SuggestionVerticalType = + | 'PEOPLE' + | 'JOBS' + | 'COMPANIES' + | 'GROUPS' + | 'FEDERATED' + | 'UNKNOWN' + | 'LEAP_RSS' + | 'CONTENT'; + // Generated from: com/linkedin/avro2pegasus/events/search/TypeaheadEvent.pdsc + + export interface TypeaheadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + typeaheadHeader: GenericSearchHeader; + typeaheadRequest: TypeaheadRequest; + typeaheadResults: GenericSearchResults; + } + // Generated from: com/linkedin/avro2pegasus/events/search/TypeaheadRequest.pdsc + + export interface TypeaheadRequest { + rawQuery: string; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + types: TypeaheadType[]; + experiments?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/search/TypeaheadType.pdsc + + export type TypeaheadType = + | 'COMPANY' + | 'SHOWCASE' + | 'SCHOOL' + | 'TITLE' + | 'GROUP' + | 'REGION' + | 'FIELD_OF_STUDY' + | 'DEGREE' + | 'LOCATION' + | 'SITE_FEATURE' + | 'SKILL' + | 'LANGUAGE' + | 'INDUSTRY' + | 'JOB_FUNCTION' + | 'MY_NETWORK' + | 'MY_FIRST_NETWORK' + | 'TOPIC' + | 'FUNCTION_AREA' + | 'SUGGESTION' + | 'AUTO_COMPLETE' + | 'PUBLISHER' + | 'DISCUSSION_PARTICIPANTS' + | 'GROUP_MEMBERS' + | 'GEO' + | 'CITY' + | 'LEAP_RSS' + | 'COWORKER' + | 'EVENT' + | 'CREDENTIAL'; + } + namespace Seas { + // Generated from: com/linkedin/avro2pegasus/events/seas/IndexDeletionAction.pdsc + + export type IndexDeletionAction = + | 'CURRENTLY_IN_USE' + | 'NO_TRACKING_DATA' + | 'BAD_PERMISSIONS_ON_INDEX' + | 'BAD_PERMISSIONS_ON_PARENT' + | 'UNKNOWN_EXCEPTION'; + // Generated from: com/linkedin/avro2pegasus/events/seas/KeywordArgument.pdsc + + export interface KeywordArgument { + key: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/seas/PclType.pdsc + + export type PclType = 'PCL' | 'MP_DEP' | 'WC_TEST'; + // Generated from: com/linkedin/avro2pegasus/events/seas/SeasIndexCleanupEvent.pdsc + + export interface SeasIndexCleanupEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + vertical?: string; + indexPath: string; + failureReason?: IndexDeletionAction; + stackTrace?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/seas/SeasPclInstrumentedEvent.pdsc + + export interface SeasPclInstrumentedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ciaExecutionId?: string; + pclType?: PclType; + eventName: string; + parameters: Array; + multiProductUrn: string; + branchName: string; + baselineVersion: string; + experimentVersion: string; + executionTimeMillis: number; + isSuccess: boolean; + startedAt: number; + } + } + namespace Security { + // Generated from: com/linkedin/avro2pegasus/events/security/AccessTokenRenewalScoreEvent.pdsc + + export interface AccessTokenRenewalScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + renewalResult: RenewalResult; + } + // Generated from: com/linkedin/avro2pegasus/events/security/Annotation.pdsc + + export interface Annotation { + domainType: DomainType; + sourceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/security/AnnotationGroup.pdsc + + export interface AnnotationGroup { + annotations: DomainTypeAnnotation[]; + groupId: number; + childrenGroupIds: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/BodyDataAnnotation.pdsc + + export interface BodyDataAnnotation { + dataType: string; + sourceUrn: string; + childrenUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/BodyDataAnnotationGroup.pdsc + + export interface BodyDataAnnotationGroup { + annotations: Annotation[]; + groupId: number; + childrenGroupIds: number[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/BrowserIdActionEvent.pdsc + + export interface BrowserIdActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + browserId: string; + browserIdLabel: Com.Linkedin.Avro2pegasus.Events.Ucv.BrowserIdLabel; + actionType: Com.Linkedin.Avro2pegasus.Events.Ucv.BrowserIdActionType; + triggeringMemberUrn?: string; + sourceInfo?: Com.Linkedin.Avro2pegasus.Messages.Security.BrowserIdActionSource; + modelName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/security/CertificateTransparencyViolationEvent.pdsc + + export interface CertificateTransparencyViolationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + violationObservedTime: number; + hostname: string; + port: number; + effectiveExpirationTime: number; + signedCertificateTimestamps: SignedCertificateTimestamp[]; + servedCertificateChain: string[]; + validatedCertificateChain: string[]; + failureMode: FailureModeType; + isTestReport: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/security/CipherSuiteServiceCountMetric.pdsc + + export interface CipherSuiteServiceCountMetric { + service: string; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/security/CipherSuiteSupportedAuditEvent.pdsc + + export interface CipherSuiteSupportedAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cipherSuiteAuditor: Com.Linkedin.Avro2pegasus.Events.Common.Security.CipherSuiteAuditor; + supportedCiphers: string[]; + systemStartTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/security/CipherSuiteTrafficAuditEvent.pdsc + + export interface CipherSuiteTrafficAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cipherSuiteAuditor: Com.Linkedin.Avro2pegasus.Events.Common.Security.CipherSuiteAuditor; + usedCiphers: UsedCipherMetric[]; + eventCountUnit: EventCountUnit; + eventDuration: number; + systemStartTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/security/ClusterMemberBrowserIdScoreEvent.pdsc + + export interface ClusterMemberBrowserIdScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + registrationDate: number; + action: Com.Linkedin.Avro2pegasus.Messages.Security.SecurityAccountAction; + reasons: Com.Linkedin.Avro2pegasus.Messages.Security.SecurityAccountActionReason[]; + modelName: string; + modelVersion: string; + browserId: string; + browserIdLabel: Com.Linkedin.Avro2pegasus.Events.Ucv.BrowserIdLabel; + triggeringMemberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/security/DenialReason.pdsc + + export type DenialReason = 'INVALID_FCOOKIE' | 'INVALID_FID' | 'MISSING_FID'; + // Generated from: com/linkedin/avro2pegasus/events/security/DomainType.pdsc + + export interface DomainType { + entityId: number; + attributeId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/security/DomainTypeAnnotation.pdsc + + export interface DomainTypeAnnotation { + domainType: string; + sourceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/security/EventCountUnit.pdsc + + export type EventCountUnit = 'CONNECTION' | 'REQUEST'; + // Generated from: com/linkedin/avro2pegasus/events/security/ExternalRequestAnnotationEvent.pdsc + + export interface ExternalRequestAnnotationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + request: ExternalRequestInfo; + response: ExternalResponseInfo; + contentSource?: string; + resourceName: string; + restliEndpointInfo?: RestliEndpointInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/security/ExternalRequestInfo.pdsc + + export interface ExternalRequestInfo { + method: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + domain: string; + query?: string; + bsCookieInfo?: Com.Linkedin.Avro2pegasus.Events.BsCookieInfo; + xForwardedFor?: string; + accept?: string; + acceptEncoding?: string; + acceptLanguage?: string; + contentLength?: number; + cookieNames: string[]; + headerNames: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/ExternalResponseInfo.pdsc + + export interface ExternalResponseInfo { + statusCode: number; + bodyDataAnnotationGroups: AnnotationGroup[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/FailureModeType.pdsc + + export type FailureModeType = 'ENFORCE' | 'REPORT'; + // Generated from: com/linkedin/avro2pegasus/events/security/FastUserAccessApiRequestEvent.pdsc + + export interface FastUserAccessApiRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + treeId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + sourceIpAddress: Com.Linkedin.Avro2pegasus.Events.IPAddress; + requestedPrincipal: Com.Linkedin.Avro2pegasus.Events.Datavault.Principal; + callingPrincipal: Com.Linkedin.Avro2pegasus.Events.Datavault.Principal; + requestedHosts?: string[]; + rangeQuery?: string; + justification: string; + dryRun: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/security/FastUserAccessFrontendRequestEvent.pdsc + + export interface FastUserAccessFrontendRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + treeId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + sourceIpAddress: Com.Linkedin.Avro2pegasus.Events.IPAddress; + requestedPrincipal: Com.Linkedin.Avro2pegasus.Events.Datavault.Principal; + callingPrincipal: Com.Linkedin.Avro2pegasus.Events.Datavault.Principal; + requestedHosts?: string[]; + rangeQuery?: string; + requestInterface: RequestInterface; + } + // Generated from: com/linkedin/avro2pegasus/events/security/FastUserAccessResultEvent.pdsc + + export interface FastUserAccessResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + treeId: Com.Linkedin.Avro2pegasus.Events.fixed_16; + principal: Com.Linkedin.Avro2pegasus.Events.Datavault.Principal; + requestedHost: string; + requestResult: RequestResult; + } + // Generated from: com/linkedin/avro2pegasus/events/security/FingerprintDenialEvent.pdsc + + export interface FingerprintDenialEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + denialReason: DenialReason; + fcookie?: string; + fid?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/security/FingerprintRequestEvent.pdsc + + export interface FingerprintRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + initialPageRequestTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + encryptedInitialPageRequestTreeId?: string; + httpMethod: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + requestValidationState: RequestValidationState[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/InputSanitizationEvent.pdsc + + export interface InputSanitizationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contextUrn: string; + ownerUrn?: string; + stringFields: InputSanitizationTuple[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/InputSanitizationTuple.pdsc + + export interface InputSanitizationTuple { + original: string; + sanitized: string; + field: string; + locale?: string; + ruleId: number; + } + // Generated from: com/linkedin/avro2pegasus/events/security/NotMeEmailEvent.pdsc + + export interface NotMeEmailEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + emailKey: string; + intendedMemberUrn?: string; + emailHandleUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/security/QuickCountingNewRestrictionAction.pdsc + + export type QuickCountingNewRestrictionAction = 'BLOCK' | 'TRACK_ONLY'; + // Generated from: com/linkedin/avro2pegasus/events/security/QuickCountingNewRestrictionEvent.pdsc + + export interface QuickCountingNewRestrictionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberId?: number; + ip?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + organization?: string; + counterId: number; + periodLength: number; + count: number; + restrictionStartTime: number; + restrictionEndTime: number; + isWhitelisted: boolean; + action?: QuickCountingNewRestrictionAction; + } + // Generated from: com/linkedin/avro2pegasus/events/security/RenewalResult.pdsc + + export type RenewalResult = + | 'RENEW_MOBILE' + | 'RENEW_EMAIL_LINK' + | 'REJECT_MEMBER_MISMATCH' + | 'REJECT_TIME_EXPIRED' + | 'RENEW_LOGIN_HISTORY_MATCH' + | 'REJECT_LOGIN_HISTORY_MISMATCH'; + // Generated from: com/linkedin/avro2pegasus/events/security/RequestInterface.pdsc + + export type RequestInterface = 'UNKNOWN' | 'CLI' | 'WEB' | 'NUAGE'; + // Generated from: com/linkedin/avro2pegasus/events/security/RequestResult.pdsc + + export type RequestResult = + | 'ALLOWED' + | 'ALLOWED_EXCEPTION' + | 'REJECTED_AUTHENTICATION' + | 'REJECTED_AUTHORIZATION' + | 'REJECTED_INVALID' + | 'REJECTED_EXCEPTION' + | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/security/RequestValidationState.pdsc + + export type RequestValidationState = + | 'VALID' + | 'MISS_CROSS_SITE_REQUEST_FORGERY_TOKEN_IN_HEADER' + | 'MISS_CROSS_SITE_REQUEST_FORGERY_TOKEN_IN_COOKIE' + | 'CROSS_SITE_REQUEST_FORGERY_TOKEN_MISMATCH' + | 'INVALID_INITIAL_PAGE_REQUEST_TREE_ID'; + // Generated from: com/linkedin/avro2pegasus/events/security/ResponseBodyAnnotationEvent.pdsc + + export interface ResponseBodyAnnotationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + statusCode: number; + bodyDataAnnotationGroups: BodyDataAnnotationGroup[]; + resourceName: string; + restliEndpointInfo?: RestliEndpointInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/security/ResponseCookieErrorEvent.pdsc + + export interface ResponseCookieErrorEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + responseCookie: Com.Linkedin.Avro2pegasus.Events.ResponseCookie; + errorTypes: ResponseCookieErrorType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/ResponseCookieErrorType.pdsc + + export type ResponseCookieErrorType = + | 'UNAPPROVED_NAME' + | 'MAX_AGE_TOO_LONG' + | 'MAX_AGE_MALFORMED' + | 'EXPIRY_TOO_LONG' + | 'EXPIRY_MALFORMED' + | 'NO_SECURE_FLAG' + | 'NO_HTTPONLY_FLAG'; + // Generated from: com/linkedin/avro2pegasus/events/security/RestliEndpointInfo.pdsc + + export interface RestliEndpointInfo { + resourceMethod: Com.Linkedin.Avro2pegasus.Events.Common.Restli.ResourceMethod; + actionOrFinderName?: string; + schemaName: string; + } + // Generated from: com/linkedin/avro2pegasus/events/security/RestliSchemaAnnotationAuditEvent.pdsc + + export interface RestliSchemaAnnotationAuditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + multiproductName: string; + resourceName: string; + methodType: string; + methodName: string; + responseSchemaName: string; + responseViolatingPathSpecs: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/RollupCountersAggregationEvent.pdsc + + export interface RollupCountersAggregationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + counterId: number; + periodLengthSeconds: number; + periodStartTime: number; + firstEventTime: number; + lastEventTime: number; + totalEvents: number; + totalEventsFailure: number; + totalIncrementValueSuccess: number; + totalIncrementValueFailure: number; + fabricUrn: string; + hostName: string; + operation: rollupCountersOperation; + } + // Generated from: com/linkedin/avro2pegasus/events/security/rollupCountersOperation.pdsc + + export type rollupCountersOperation = 'ACCUMULATION' | 'PERSISTENCE' | 'GET' | 'PUT'; + // Generated from: com/linkedin/avro2pegasus/events/security/SctSourceType.pdsc + + export type SctSourceType = 'TLS_EXTENSION' | 'OCSP' | 'EMBEDDED'; + // Generated from: com/linkedin/avro2pegasus/events/security/SctStatusType.pdsc + + export type SctStatusType = 'UNKNOWN' | 'VALID' | 'INVALID'; + // Generated from: com/linkedin/avro2pegasus/events/security/SecurityHeaderErrorEvent.pdsc + + export interface SecurityHeaderErrorEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + errorType: SecurityHeaderErrorType; + securityHeaderType: SecurityHeaderType; + securityHeaderValue: string; + } + // Generated from: com/linkedin/avro2pegasus/events/security/SecurityHeaderErrorType.pdsc + + export type SecurityHeaderErrorType = 'SET_WITHOUT_APPROVAL'; + // Generated from: com/linkedin/avro2pegasus/events/security/SecurityHeaderType.pdsc + + export type SecurityHeaderType = + | 'CONTENT_SECURITY_POLICY' + | 'CONTENT_SECURITY_POLICY_REPORT_ONLY' + | 'STRICT_TRANSPORT_SECURITY' + | 'X_CONTENT_TYPE_OPTIONS' + | 'X_FRAME_OPTIONS' + | 'X_XSS_PROTECTION'; + // Generated from: com/linkedin/avro2pegasus/events/security/SecurityResponseCookieRemovedEvent.pdsc + + export interface SecurityResponseCookieRemovedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cookiesRemovedDueToConsentDenial: Com.Linkedin.Avro2pegasus.Events.ResponseCookie[]; + unapprovedCookiesRemoved: Com.Linkedin.Avro2pegasus.Events.ResponseCookie[]; + cookiePolicyVersion: number; + isDryRun: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/security/SessionInvalidationEvent.pdsc + + export interface SessionInvalidationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + initiatorService: string; + sessionInvalidationType: SessionInvalidationType; + reason?: string; + actorUrn?: string; + userAgent?: string; + ipAsBytes?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + browserId?: string; + currentSessionUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/security/SessionInvalidationType.pdsc + + export type SessionInvalidationType = + | 'ONE_SESSION' + | 'OTHER_SESSIONS' + | 'ALL_SESSIONS' + | 'EXCESS_SESSIONS' + | 'UNDER_AGE_ALL_SESSIONS' + | 'EXCESS_LIAM_SESSIONS' + | 'REMEMBER_ME_EXCESS_SESSIONS' + | 'REMEMBER_ME_ALL_SESSIONS' + | 'REMEMBER_ME_MEMBER_DEVICE_SESSIONS' + | 'REMEMBER_ME_DEVICE_SESSIONS'; + // Generated from: com/linkedin/avro2pegasus/events/security/SignedCertificateTimestamp.pdsc + + export interface SignedCertificateTimestamp { + version: number; + status: SctStatusType; + source: SctSourceType; + serializedSct: string; + } + // Generated from: com/linkedin/avro2pegasus/events/security/UsedCipherMetric.pdsc + + export interface UsedCipherMetric { + cipherSuite: string; + services: CipherSuiteServiceCountMetric[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/UserRequestAnnotationEvent.pdsc + + export interface UserRequestAnnotationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + request: UserRequestInfo; + response: UserResponseInfo; + contentSource?: string; + resourceName: string; + restliEndpointInfo?: RestliEndpointInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/security/UserRequestInfo.pdsc + + export interface UserRequestInfo { + method: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + domain: string; + query?: string; + bsCookieInfo?: Com.Linkedin.Avro2pegasus.Events.BsCookieInfo; + xForwardedFor?: string; + accept?: string; + acceptEncoding?: string; + acceptLanguage?: string; + contentLength?: number; + cookieNames: string[]; + headerNames: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/security/UserResponseInfo.pdsc + + export interface UserResponseInfo { + statusCode: number; + bodyDataAnnotations: BodyDataAnnotation[]; + } + } + namespace Seo { + // Generated from: com/linkedin/avro2pegasus/events/seo/JobSerpEntity.pdsc + + export interface JobSerpEntity { + titleUrn?: string; + skillUrn?: string; + industryUrn?: string; + organizationUrn?: string; + geoUrn: string; + keywords?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/seo/LinksterEntity.pdsc + + export interface LinksterEntity { + entity?: string; + jobSerpEntity?: JobSerpEntity; + url?: string; + position?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/seo/LinksterImpressionEvent.pdsc + + export interface LinksterImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + moduleName: string; + sourceEntity: LinksterEntity; + destinationEntities: LinksterEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/seo/LinksterResultEvent.pdsc + + export interface LinksterResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + bcookie: string; + api: string; + finder: string; + rankingStrategy: string; + sourceEntity: LinksterEntity; + destinationEntities: LinksterEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/seo/SEOPageMetadataEvent.pdsc + + export interface SEOPageMetadataEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + title?: string; + description?: string; + numberOfWords: number; + hasOpenGraphMetaTags: boolean; + hasSchemaOrgMarkup: boolean; + hasTwitterCardMetaTags: boolean; + numberOfH1Tags: number; + numberOfH2Tags: number; + hasCanonicalTag: boolean; + hasHrefLangAttributeTags: boolean; + hasNoArchiveRobotsMetaTag: boolean; + hasNoIndexRobotsMetaTag: boolean; + numberOfLinks: number; + numberOfInternalLinks: number; + numberOfInternalNoFollowLinks: number; + numberOfInternalLinksWithAnchorText: number; + numberOfExternalLinks: number; + numberOfExternalNoFollowLinks: number; + numberOfImages: number; + numberOfImagesWithAltText: number; + } + } + namespace Sessionreplay { + // Generated from: com/linkedin/avro2pegasus/events/sessionreplay/CompressionMethod.pdsc + + export type CompressionMethod = 'ZLIB' | 'MSGPACK'; + // Generated from: com/linkedin/avro2pegasus/events/sessionreplay/Product.pdsc + + export type Product = 'SALES_SOLUTIONS' | 'TALENT_SOLUTIONS' | 'MARKETING_SOLUTIONS' | 'RETINA'; + // Generated from: com/linkedin/avro2pegasus/events/sessionreplay/RrWebSessionSnapshotEvent.pdsc + + export interface RrWebSessionSnapshotEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + sessionId?: string; + source?: Source; + customTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + compressionMethod?: CompressionMethod; + rrWebVersion: string; + payload: string; + } + // Generated from: com/linkedin/avro2pegasus/events/sessionreplay/SessionReplayEvent.pdsc + + export interface SessionReplayEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + product?: Product; + feature?: string; + sessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + payloadId: number; + partId: number; + partsCount: number; + customTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + payloadVersion: number; + compressionMethod?: CompressionMethod; + payloadPart: string; + } + // Generated from: com/linkedin/avro2pegasus/events/sessionreplay/Source.pdsc + + export type Source = 'LSS' | 'LTS' | 'LMS' | 'GCO'; + } + namespace Settings { + // Generated from: com/linkedin/avro2pegasus/events/settings/ActionType.pdsc + + export type ActionType = 'OPT_IN' | 'OPT_OUT' | 'TIMEOUT_SETTING_CHANGE'; + // Generated from: com/linkedin/avro2pegasus/events/settings/AppLockConfigEditEvent.pdsc + + export interface AppLockConfigEditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + memberUrn: string; + actionType: ActionType; + timeoutConfiguration?: TimeoutConfiguration; + } + // Generated from: com/linkedin/avro2pegasus/events/settings/NoticeImpressionEvent.pdsc + + export interface NoticeImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + noticeType: NoticeType; + } + // Generated from: com/linkedin/avro2pegasus/events/settings/NoticeType.pdsc + + export type NoticeType = + | 'RECEIVE_MARKETING_PARTNER_MESSAGE' + | 'RECEIVE_HIRING_PARTNER_MESSAGE' + | 'RECEIVE_INVITATION_TO_PARTICIPATE' + | 'ONLINE_PRESENCE' + | 'MESSAGE_CONTROL' + | 'EMAIL_VISIBLE_ON_PROFILE' + | 'PHONE_VISIBLE_ON_PROFILE' + | 'LOCATION_VISIBLE_ON_PROFILE' + | 'PUBLIC_VISIBILITY_ON_PROFILE' + | 'FIELDS_VISIBLE_ON_PROFILE' + | 'CONTROL_PROFILE_PHOTO' + | 'JOIN_GROUP_ACTION_VISIBILITY' + | 'POST_VISBILE_ON_GROUP' + | 'VIDEO_AUTOPLAY' + | 'EDIT_FEED_ACTIVITY' + | 'TRACK_LIKE_POST_SHARE_FOR_PERSONALIZATION' + | 'SAVE_SEARCH_FOR_PERSONALIZATION' + | 'MANAGE_CONTACT_PAGE' + | 'MY_NETWORK_PAGE' + | 'REGISTRATION_FLOW_PROFILE_VISIBILITY' + | 'CONTROL_SLIDESHOW_VISIBILITY' + | 'CONTROL_INVITATIONS_TO_CONNECT' + | 'MANAGE_BLOCKED_MEMBERS' + | 'MANAGE_EMAIL_SUBSCRIPTION' + | 'SHARING_POST_VISIBILITY_FOR_PERSONALIZATION' + | 'FEED_POST_VISIBILITY' + | 'ARTICLES_VISIBILITY' + | 'COMMENTS_VISIBILITY' + | 'CONTROL_PROFILE_PHOTO_VISIBILE_IN_ADS' + | 'CONTROL_PROFILE_VISIBILITY' + | 'CONTACT_INFO_VISIBILITY' + | 'CONTROL_PROFILE_DISCOVERY_BY_EMAIL' + | 'CONTROL_PROFILE_DISCOVERY_BY_PHONE' + | 'CONTROL_DOWNLOADABLE_PROFILE_SECTIONS' + | 'TRACK_LIKE_FOR_PERSONALIZATION' + | 'CONTROL_AUTHORIZED_SERVICES' + | 'CONTROL_PROFILE_VISIBILITY_OFF_LINKEDIN' + | 'SLIDESHARE_LINKEDIN_BINDING' + | 'DISPLAY_PERSONAL_CONTACT_DETAILS_ON_SLIDESHARE' + | 'EMAIL_NOT_DISPLAYED_ON_SLIDESHARE' + | 'INMAIL_MESSAGE_CONTROL' + | 'TRACK_LEARNING_SHARES' + | 'RESUME_UPLOAD' + | 'KEEPING_ORIGINAL_PHOTO_ON_PROFILE' + | 'USER_NOTIFIED_OF_LSS_DATA_PRIVACY_TERMS' + | 'USER_NOTIFIED_OF_LSS_CALENDAR_TERMS' + | 'SMART_REPLIES' + | 'LEARNING_LMS_INTEGRATION' + | 'LEARNING_SKILL_CHOOSER' + | 'LEARNING_ADD_COURSE_TO_PROFILE' + | 'ADS_ON_SLIDESHARE_PERSONALIZATION' + | 'EASY_APPLY_PHONE_NUMBER' + | 'USER_NOTIFIED_OF_LSS_DEALS_DATA_PRIVACY_TERMS' + | 'PROFILE_BING_GEO_MIGRATION'; + // Generated from: com/linkedin/avro2pegasus/events/settings/SettingsChangeEvent.pdsc + + export interface SettingsChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + settingKey: string; + previousValue: string; + newValue: string; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/settings/TimeoutConfiguration.pdsc + + export type TimeoutConfiguration = 'IMMEDIATELY' | 'FIVE_MINUTES' | 'FIFTEEN_MINUTES' | 'THIRTY_MINUTES'; + } + namespace Share { + // Generated from: com/linkedin/avro2pegasus/events/share/contentType.pdsc + + export type contentType = 'TEXT' | 'RMS' | 'ARTICLE' | 'JOB' | 'GROUP' | 'VIDEO'; + // Generated from: com/linkedin/avro2pegasus/events/share/destination.pdsc + + export interface destination { + messageRecipientUrns?: string[]; + groupUrns?: string[]; + thirdPartySources?: thirdPartySourceType[]; + externalEntities?: ExternalEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/share/ExternalEntity.pdsc + + export interface ExternalEntity { + tetherAccountId?: string; + externalEntityType: ExternalEntityType; + } + // Generated from: com/linkedin/avro2pegasus/events/share/ExternalEntityType.pdsc + + export type ExternalEntityType = 'TWITTER' | 'TENCENT' | 'WEIBO'; + // Generated from: com/linkedin/avro2pegasus/events/share/FileExtType.pdsc + + export type FileExtType = + | 'JPG' + | 'JPEG' + | 'PNG' + | 'GIF' + | 'PPT' + | 'PPS' + | 'PPTX' + | 'PPSX' + | 'POT' + | 'POTX' + | 'ODP' + | 'PDF' + | 'DOC' + | 'DOCX' + | 'RTF' + | 'ODT' + | 'IMG'; + // Generated from: com/linkedin/avro2pegasus/events/share/Mention.pdsc + + export interface Mention { + urn: string; + start: number; + length: number; + } + // Generated from: com/linkedin/avro2pegasus/events/share/origin.pdsc + + export interface origin { + isShare: boolean; + isReshare: boolean; + serviceProvider?: string; + sourcePageKey?: string; + url?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/share/ShareDeleteContent.pdsc + + export interface ShareDeleteContent { + contentUrn?: string; + contentUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/share/ShareDeleteEvent.pdsc + + export interface ShareDeleteEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + deleterUrn: string; + shareUrn: string; + shareDeleteContents?: ShareDeleteContent[]; + originatedShareUrn?: string; + originatedActivityUrn?: string; + attributedShareUrn?: string; + attributedActivityUrn?: string; + isFromUGC: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/share/ShareEditEvent.pdsc + + export interface ShareEditEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + source: Com.Linkedin.Avro2pegasus.Events.EntityID; + ownerUrn: string; + attributedOwnerUrn?: string; + shareUrn: string; + activityUrn?: string; + mentions?: Mention[]; + text?: string; + title?: string; + clientAppUrn?: string; + isReshare: boolean; + serviceProvider?: string; + isFromUGC: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/share/ShareEvent.pdsc + + export interface ShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + source: Com.Linkedin.Avro2pegasus.Events.EntityID; + creatorUrn?: string; + fromEntityUrn?: string; + shareUrn?: string; + activityUrn?: string; + originatedShareUrn?: string; + originatedActivityUrn?: string; + attributedShareUrn?: string; + attributedActivityUrn?: string; + origin?: origin; + shareWith?: sharWith; + destinations?: destination; + mentionedUrns?: string[]; + mentions?: Mention[]; + postText?: string; + postTitle?: string; + clientAppUrn?: string; + contents?: ShareEventContent[]; + isAllRecipientsShown?: boolean; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + isFromUGC: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/share/ShareEventContent.pdsc + + export interface ShareEventContent { + type?: contentType; + urn?: string; + url?: string; + shortUrl?: string; + image?: string; + title?: string; + description?: string; + authorUrn?: string; + authorName?: string; + authorUrl?: string; + fileExt?: string; + fileType?: FileExtType; + typedContentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/share/sharWith.pdsc + + export interface sharWith { + isVisibleToGuest: boolean; + isPublic: boolean; + isConnections: boolean; + isGroup: boolean; + isPrivate: boolean; + isIndividual: boolean; + isHidden: boolean; + isThirdParty: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/share/thirdPartySourceType.pdsc + + export type thirdPartySourceType = 'TWITTER' | 'WEIBO' | 'TENCENT'; + } + namespace Sharedactiontracking { + // Generated from: com/linkedin/avro2pegasus/events/sharedactiontracking/ContentActionType.pdsc + + export type ContentActionType = 'VIEW' | 'CLICK' | 'DELIVER'; + } + namespace Sharing { + // Generated from: com/linkedin/avro2pegasus/events/sharing/SharedItemToEvent.pdsc + + export interface SharedItemToEvent { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + version: number; + content: string; + urlToUnwind: string; + originCountryCode?: string; + } + } + namespace Sis { + // Generated from: com/linkedin/avro2pegasus/events/sis/IdAssociationEvent.pdsc + + export interface IdAssociationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + id1: TypedId; + id2: TypedId; + updateTime: number; + source: IdAssociationSource; + confidence: number; + } + // Generated from: com/linkedin/avro2pegasus/events/sis/IdAssociationSource.pdsc + + export type IdAssociationSource = + | 'SIS' + | 'PIXLI' + | 'ACXIOM' + | 'LAX' + | 'MICROSOFT' + | 'APPNEXUS' + | 'GOOGLE' + | 'LINKEDIN' + | 'LIVERAMP' + | 'LINKEDIN_VOYAGER' + | 'LINKEDIN_MOBILE_APPS' + | 'POWERLINKS' + | 'TRIPLELIFT' + | 'DRAWBRIDGE' + | 'TEADS'; + // Generated from: com/linkedin/avro2pegasus/events/sis/IdType.pdsc + + export type IdType = + | 'LINKEDIN_MEMBER_ID' + | 'APPNEXUS_ID' + | 'BIZO_ID' + | 'ACXIOM_ID' + | 'MICROSOFT_HANID' + | 'MICROSOFT_MUID' + | 'APPLE_IDFA' + | 'GOOGLE_AID' + | 'SHA1_EMAIL' + | 'SHA256_EMAIL' + | 'SHA512_EMAIL' + | 'SHA1_LINKEDIN_MEMBER_ID' + | 'HMAC_SHA1_LINKEDIN_MEMBER_ID_MSFT' + | 'SHA1_GOOGLE_AID' + | 'SHA1_APPLE_IDFA' + | 'GOOGLE_UID' + | 'LINKEDIN_ADS_UUID' + | 'LINKEDIN_OATML_UUID' + | 'HMAC_SHA1_LINKEDIN_OFFLINE_AD_TRACKING_UUID' + | 'HMAC_SHA1_LINKEDIN_MEMBER_ID' + | 'HMAC_SHA1_APPLE_IDFA' + | 'HMAC_SHA1_GOOGLE_AID' + | 'SHA256_APPLE_IDFA' + | 'SHA256_GOOGLE_AID' + | 'LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID' + | 'POWERLINKS_ID' + | 'TRIPLELIFT_ID' + | 'DRAWBRIDGE_ID' + | 'TEADS_ID' + | 'DBHASH_APPLE_IDFA' + | 'DBHASH_GOOGLE_AID' + | 'LINKEDIN_SUGR_UUID'; + // Generated from: com/linkedin/avro2pegasus/events/sis/TypedId.pdsc + + export interface TypedId { + idValue: string; + idType: IdType; + encryptionKeyVersion: number; + idHashToken?: string; + encryptionKeyAlias?: string; + } + } + namespace Sitespeed { + // Generated from: com/linkedin/avro2pegasus/events/sitespeed/EnrichedWebPageRealUserMonitoringEvent.pdsc + + export interface EnrichedWebPageRealUserMonitoringEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rumTime: number; + pageName: string; + country: string; + region: string; + browserName: string; + browserVersion: string; + osName: string; + osVersion: string; + protocol: string; + cdnProvider: string; + pop: string; + fabricUrn: string; + pageLoadMode: string; + pageLoadDuration: number; + redirectDuration: number; + dnsDuration: number; + connectionDuration: number; + secureConnectionDuration: number; + firstByteDuration: number; + documentDownloadDuration: number; + domLoadingDuration: number; + domRenderingDuration: number; + } + } + namespace Skillassessment { + // Generated from: com/linkedin/avro2pegasus/events/skillassessment/SkillAssessmentActionEvent.pdsc + + export interface SkillAssessmentActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + skillUrn: string; + skillAssessmentAction: SkillAssessmentActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/skillassessment/SkillAssessmentActionType.pdsc + + export type SkillAssessmentActionType = 'STARTED' | 'COMPLETED' | 'DELETED'; + // Generated from: com/linkedin/avro2pegasus/events/skillassessment/SkillAssessmentEmailSentEvent.pdsc + + export interface SkillAssessmentEmailSentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientUrn: string; + skillUrns: string[]; + campaignName: string; + jobPostingUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/skillassessment/SkillAssessmentFeedbackEvent.pdsc + + export interface SkillAssessmentFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + skillUrn: string; + rating?: number; + questionFeedback?: string; + technicalProblem?: string; + generalFeedback?: string; + skillVerified?: boolean; + immediateFeedbackProvided?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/skillassessment/SkillAssessmentStatusUpdateEvent.pdsc + + export interface SkillAssessmentStatusUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + skillUrn: string; + skillAssessmentStatusUpdate: SkillAssessmentStatusUpdateType; + } + // Generated from: com/linkedin/avro2pegasus/events/skillassessment/SkillAssessmentStatusUpdateType.pdsc + + export type SkillAssessmentStatusUpdateType = 'PASSED' | 'FAILED' | 'DELETED'; + } + namespace Skills { + // Generated from: com/linkedin/avro2pegasus/events/skills/ContentSkillsSubmittedEvent.pdsc + + export interface ContentSkillsSubmittedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + idUrn: string; + submittedSkills: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject[]; + } + // Generated from: com/linkedin/avro2pegasus/events/skills/ContentSkillSuggestionActionEvent.pdsc + + export interface ContentSkillSuggestionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + skillTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + actionType: SkillActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/skills/ContentSkillSuggestionImpressionEvent.pdsc + + export interface ContentSkillSuggestionImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contentSkillSuggestionImpressionSkills: ContentSkillSuggestionImpressionSkill[]; + } + // Generated from: com/linkedin/avro2pegasus/events/skills/ContentSkillSuggestionImpressionSkill.pdsc + + export interface ContentSkillSuggestionImpressionSkill { + skillTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + maxPercentVisible: number; + } + // Generated from: com/linkedin/avro2pegasus/events/skills/SkillActionType.pdsc + + export type SkillActionType = 'SELECT' | 'DELETE'; + } + namespace Slideshare { + // Generated from: com/linkedin/avro2pegasus/events/slideshare/LixExperiment.pdsc + + export interface LixExperiment { + lixKey: string; + lixTreatment: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/RecommendedEntity.pdsc + + export interface RecommendedEntity { + entityUrn: string; + entityInstance: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + sourceName: SourceType; + sourceModel?: string; + score?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SearchContentCreatedAtRange.pdsc + + export type SearchContentCreatedAtRange = 'LAST_WEEK' | 'LAST_MONTH' | 'LAST_YEAR'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SearchResultContentType.pdsc + + export type SearchResultContentType = 'PRESENTATION' | 'DOCUMENT' | 'VIDEO' | 'INFOGRAPHIC' | 'CLIPBOARD'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SearchResultSortAttribute.pdsc + + export type SearchResultSortAttribute = 'VIEW_COUNT' | 'CONTENT_CREATION_DATE' | 'RELEVANCE'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareAccountCreationEvent.pdsc + + export interface SlideShareAccountCreationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + loginTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channel: SlideShareLoginChannelType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareAccountCreationFailedEvent.pdsc + + export interface SlideShareAccountCreationFailedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + loginTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channel: SlideShareLoginChannelType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareClipboardPrivacySettings.pdsc + + export interface SlideShareClipboardPrivacySettings { + isPublic: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareClipboardPrivacySettingsChangedEvent.pdsc + + export interface SlideShareClipboardPrivacySettingsChangedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + slideShareClipboardUrn: string; + oldPrivacySettings: SlideShareClipboardPrivacySettings; + newPrivacySettings: SlideShareClipboardPrivacySettings; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareEmailSettings.pdsc + + export interface SlideShareEmailSettings { + isSendFavoriteEnabled: boolean; + isSendDownloadSelfEnabled: boolean; + isSendPopularContentEnabled: boolean; + isSendAnalyticsEnabled: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareEmailSettingsChangedEvent.pdsc + + export interface SlideShareEmailSettingsChangedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + oldEmailSettings: SlideShareEmailSettings; + newEmailSettings: SlideShareEmailSettings; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareExternalShareEvent.pdsc + + export interface SlideShareExternalShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sharingTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + entityUrn: string; + isOwner: boolean; + isEmbed: boolean; + shareType: SlideShareExternalShareType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareExternalShareType.pdsc + + export type SlideShareExternalShareType = + | 'DIRECT_LINK' + | 'EMAIL' + | 'FACEBOOK' + | 'GOOGLE_PLUS' + | 'LINKEDIN' + | 'PINTEREST' + | 'TWITTER'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareLoginChannelType.pdsc + + export type SlideShareLoginChannelType = + | 'FACEBOOK' + | 'LINKEDIN' + | 'SLIDESHARE' + | 'LINKEDIN_SSO' + | 'LINKEDIN_UTZ' + | 'LINKEDIN_REG'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareLoginClickEvent.pdsc + + export interface SlideShareLoginClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + loginTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channel: SlideShareLoginChannelType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareLoginFailureEvent.pdsc + + export interface SlideShareLoginFailureEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + loginTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channel: SlideShareLoginChannelType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareLoginImpressionEvent.pdsc + + export interface SlideShareLoginImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + slideShareGuestUrn?: string; + loginTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + source?: SlideShareLoginSourceAction; + sourceTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channels: SlideShareLoginChannelType[]; + loginImpressionType: SlideShareLoginImpressionType; + pageViewType: SlideShareLoginPageViewType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareLoginImpressionType.pdsc + + export type SlideShareLoginImpressionType = 'LOGIN' | 'SIGNUP'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareLoginPageViewType.pdsc + + export type SlideShareLoginPageViewType = 'FULL' | 'PARTIAL'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareLoginSourceAction.pdsc + + export type SlideShareLoginSourceAction = + | 'UPLOAD' + | 'DOWNLOAD' + | 'CLIP' + | 'LIKE' + | 'COMMENT' + | 'FOLLOW' + | 'TOPNAV'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareLoginSuccessEvent.pdsc + + export interface SlideShareLoginSuccessEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + loginTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + channel: SlideShareLoginChannelType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareRecommendationActionEvent.pdsc + + export interface SlideShareRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + entityInstance: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + entityUrn: string; + actionType: SlideShareRecommendationActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareRecommendationActionType.pdsc + + export type SlideShareRecommendationActionType = 'VIEW_ENTITY'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareRecommendationImpressionEvent.pdsc + + export interface SlideShareRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + sourceUrn: string; + recommendations: RecommendedEntity[]; + recommendationsSetInstance: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + designKey: string; + finalRankerModel: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareResourceAccessEvent.pdsc + + export interface SlideShareResourceAccessEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + isRequestAllowed: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareSearchActionEvent.pdsc + + export interface SlideShareSearchActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + slideshareUserUrn?: string; + searchResultEntityUrn: string; + actionType: SlideShareSearchActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareSearchActionType.pdsc + + export type SlideShareSearchActionType = 'VIEW_ENTITY'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareSearchImpressionEvent.pdsc + + export interface SlideShareSearchImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + slideshareUserUrn?: string; + searchTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + searchText: string; + searchContentCreatedAtRange?: SearchContentCreatedAtRange; + searchResultContentTypes?: SearchResultContentType[]; + searchResultSortAttribute: SearchResultSortAttribute; + searchResultSortOrder: Com.Linkedin.Avro2pegasus.Events.SortOrder; + searchResultPageNum: number; + searchLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + lixExperiments?: LixExperiment[]; + searchResults: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareSlideShowPrivacySettings.pdsc + + export interface SlideShareSlideShowPrivacySettings { + isPublic: boolean; + isSecretLinkAccessible: boolean; + isPasswordProtected: boolean; + isDownloadable: boolean; + isEmbeddable: boolean; + isClippable: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareSlideShowPrivacySettingsChangedEvent.pdsc + + export interface SlideShareSlideShowPrivacySettingsChangedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + slideShareSlideshowUrn: string; + oldPrivacySettings: SlideShareSlideShowPrivacySettings; + newPrivacySettings: SlideShareSlideShowPrivacySettings; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareSlideviewPlayerNavigationActionType.pdsc + + export type SlideShareSlideviewPlayerNavigationActionType = 'PREV' | 'NEXT'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareSlideviewPlayerNavigationEvent.pdsc + + export interface SlideShareSlideviewPlayerNavigationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + slideviewPlayerInstanceId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + slideshowUrn: string; + slideNumber: number; + actionType: SlideShareSlideviewPlayerNavigationActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareUserAclActionType.pdsc + + export type SlideShareUserAclActionType = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareUserAclChangeEvent.pdsc + + export interface SlideShareUserAclChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + changedBySlideShareUserUrn: string; + changedForSlideShareUserUrn: string; + actionType: SlideShareUserAclActionType; + previousRole?: SlideShareUserAclRoleType; + newRole?: SlideShareUserAclRoleType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideShareUserAclRoleType.pdsc + + export type SlideShareUserAclRoleType = + | 'ADMINISTRATOR' + | 'SUPER_USER' + | 'INTERNAL_API_USER' + | 'ACCOUNT_PURGE_API_USER' + | 'TNS_ADMIN_USER' + | 'GCO_ADMIN_USER' + | 'EDITOR_ADMIN_USER'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideshowType.pdsc + + export type SlideshowType = 'PRESENTATION' | 'DOCUMENT' | 'VIDEO' | 'INFOGRAPHIC' | 'HTML'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideshowViewPlayerType.pdsc + + export type SlideshowViewPlayerType = 'EMBED' | 'MOBILE' | 'SLIDEVIEW'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SlideshowViewRefererType.pdsc + + export type SlideshowViewRefererType = 'DIRECT' | 'REFERRAL' | 'SEARCH' | 'SLIDESHARE' | 'SOCIAL'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/SourceType.pdsc + + export type SourceType = + | 'BROWSEMAP' + | 'CUP_RANKER' + | 'EDITOR_OVERRIDE' + | 'FEATURED' + | 'LYNDA_RECOMMENDER' + | 'MORE_FROM_USER' + | 'CLIPBOARD_RECOMMENDATION'; + namespace Clipping { + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClipActionEvent.pdsc + + export interface SlideShareClipActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + clippingSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + clipUrn: string; + clipboardUrn?: string; + slideshowUrn: string; + position: number; + actionType: SlideShareClipActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClipActionType.pdsc + + export type SlideShareClipActionType = 'CREATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClipboardActionEvent.pdsc + + export interface SlideShareClipboardActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + clippingSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + clipboardUrn: string; + title?: string; + isPrivate?: boolean; + actionType: SlideShareClipboardActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClipboardActionType.pdsc + + export type SlideShareClipboardActionType = 'CREATE' | 'DELETE' | 'EDIT'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClipOrganizeActionEvent.pdsc + + export interface SlideShareClipOrganizeActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + clippingSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + clipUrns: string[]; + sourceClipboardUrn?: string; + targetClipboardUrn?: string; + quantityType: SlideShareClipOrganizeQuantityType; + actionType: SlideShareClipOrganizeActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClipOrganizeActionType.pdsc + + export type SlideShareClipOrganizeActionType = 'ADD' | 'COPY' | 'MOVE' | 'REMOVE' | 'REORDER' | 'RECLIP'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClipOrganizeQuantityType.pdsc + + export type SlideShareClipOrganizeQuantityType = 'BATCH' | 'SINGLE'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClippingClickActionType.pdsc + + export type SlideShareClippingClickActionType = + | 'CHANGE_VIEW_TO_GRID' + | 'CHANGE_VIEW_TO_LIST' + | 'CLIP' + | 'CLIPBOARDS_NAV' + | 'CLIP_THUMBNAIL' + | 'PROFILE_DROPDOWN' + | 'SHARE_CLIP' + | 'SHARE_CLIPBOARD' + | 'CLIP_TOAST_TOGGLE_DOWN' + | 'CLIP_TOAST_TOGGLE_UP' + | 'SLIDEVIEW_TOP_CLIPBOARDS_OPEN' + | 'TOP_CLIPBOARDS_MODAL_CLIPBOARD_OWNER' + | 'TOP_CLIPBOARDS_MODAL_CLIPBOARD_THUMBNAIL' + | 'TOP_CLIPBOARDS_MODAL_CLIPBOARD_TITLE'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClippingClickEvent.pdsc + + export interface SlideShareClippingClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + clippingSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + clipUrn?: string; + clipboardUrn?: string; + isOwner?: boolean; + actionType: SlideShareClippingClickActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClippingShareEvent.pdsc + + export interface SlideShareClippingShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + clippingSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + entityUrn: string; + isOwner?: boolean; + shareType: SlideShareClippingShareType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClippingShareType.pdsc + + export type SlideShareClippingShareType = + | 'DIRECT_LINK' + | 'EMAIL' + | 'FACEBOOK' + | 'GOOGLE_PLUS' + | 'LINKEDIN' + | 'PINTEREST' + | 'TWITTER'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/clipping/SlideShareClippingViewEvent.pdsc + + export interface SlideShareClippingViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + clippingSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + referrerType?: string; + clipboardUrn?: string; + isOwner?: boolean; + } + } + namespace Leads { + // Generated from: com/linkedin/avro2pegasus/events/slideshare/leads/SlideShareLeadCampaignInfo.pdsc + + export interface SlideShareLeadCampaignInfo { + slideshowUrn: string; + leadCampaignUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/leads/SlideShareLeadCreatedEvent.pdsc + + export interface SlideShareLeadCreatedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + leadCampaignInfo: SlideShareLeadCampaignInfo; + triggerInfo: SlideShareLeadFormTriggerInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/leads/SlideShareLeadFormTriggerInfo.pdsc + + export interface SlideShareLeadFormTriggerInfo { + trigger: SlideShareLeadFormTriggerType; + slideNumber?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/leads/SlideShareLeadFormTriggerType.pdsc + + export type SlideShareLeadFormTriggerType = 'GET_IN_TOUCH' | 'ON_SLIDE' | 'ON_END' | 'ON_DOWNLOAD'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/leads/SlideShareLeadFormViewEvent.pdsc + + export interface SlideShareLeadFormViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + leadCampaignInfo: SlideShareLeadCampaignInfo; + triggerInfo: SlideShareLeadFormTriggerInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/leads/SlideShareLinkClickEvent.pdsc + + export interface SlideShareLinkClickEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + impressionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/leads/SlideShareLinkImpressionEvent.pdsc + + export interface SlideShareLinkImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + slideShareGuestUrn?: string; + impressionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + linkInfo: SlideShareLinkInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/leads/SlideShareLinkInfo.pdsc + + export interface SlideShareLinkInfo { + slideshowUrn: string; + url: string; + slideNumber?: number; + displayRectangle?: Com.Linkedin.Avro2pegasus.Events.Common.DisplayRectangle; + linkType: SlideShareLinkType; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/leads/SlideShareLinkType.pdsc + + export type SlideShareLinkType = 'ORGANIC' | 'OVERLAID_CTA'; + // Generated from: com/linkedin/avro2pegasus/events/slideshare/leads/SlideShareWithLeadFormViewEvent.pdsc + + export interface SlideShareWithLeadFormViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + leadCampaignInfo: SlideShareLeadCampaignInfo; + } + } + namespace Upload { + // Generated from: com/linkedin/avro2pegasus/events/slideshare/upload/SlideShareUploadPublishEvent.pdsc + + export interface SlideShareUploadPublishEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + uploadBatchId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + slideshowUrn: string; + source: SlideshowUploadSourceType; + slideshowType: Com.Linkedin.Avro2pegasus.Events.Slideshare.SlideshowType; + fileExtension: string; + totalSlides?: number; + videoLength?: number; + fileSize: number; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshare/upload/SlideshowUploadSourceType.pdsc + + export type SlideshowUploadSourceType = + | 'DESKTOP_WEB' + | 'LI_PROFILE' + | 'LI_SHARE' + | 'API_LINK' + | 'API_FILE' + | 'HAIKUDECK' + | 'DROPBOX' + | 'GOOGLE_DRIVE' + | 'BOX' + | 'ONE_DRIVE' + | 'GMAIL' + | 'LINK'; + } + } + namespace Slideshow { + // Generated from: com/linkedin/avro2pegasus/events/slideshow/slideshareAccountTypeEnum.pdsc + + export type slideshareAccountTypeEnum = + | 'DEFAULT' + | 'PR' + | 'COMPANY' + | 'ORGANIZER' + | 'NGO_GOV' + | 'DESIGN' + | 'PRO_SPEAKER' + | 'SCHOOL'; + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideShareProfileChangeEvent.pdsc + + export interface SlideShareProfileChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + time: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + accountType: slideshareAccountTypeEnum; + linkedInMemberUrn?: string; + userTags: string[]; + occupation?: string; + organization?: string; + website?: string; + description?: string; + city?: string; + country?: string; + lastLoginTime?: number; + isPhotoPresent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/slideshowCategoryEnum.pdsc + + export type slideshowCategoryEnum = + | 'AUTOMOTIVE' + | 'BUSINESS' + | 'CAREER' + | 'DESIGN' + | 'EDUCATION' + | 'ENTERTAINMENT_AND_HUMOR' + | 'ECONOMY_AND_FINANCE' + | 'LIFESTYLE' + | 'DEVICES_AND_HARDWARE' + | 'HEALTH_AND_MEDICINE' + | 'ART_AND_PHOTOS' + | 'REAL_ESTATE' + | 'TECHNOLOGY' + | 'SELF_IMPROVEMENT' + | 'TRAVEL' + | 'NEWS_AND_POLITICS' + | 'SPIRITUAL' + | 'SPORTS' + | 'INVESTOR_RELATIONS' + | 'MARKETING' + | 'SOCIAL_MEDIA' + | 'DATA_AND_ANALYTICS' + | 'ENGINEERING' + | 'ENVIRONMENT' + | 'FOOD' + | 'GOVERNMENT_AND_NONPROFIT' + | 'HEALTHCARE' + | 'INTERNET' + | 'LAW' + | 'LEADERSHIP_AND_MANAGEMENT' + | 'MOBILE' + | 'PRESENTATIONS_AND_PUBLIC_SPEAKING' + | 'SOFTWARE' + | 'RECRUITING_AND_HR' + | 'RETAIL' + | 'SALES' + | 'SERVICES' + | 'SCIENCE' + | 'SMALL_BUSINESS_AND_ENTREPRENEURSHIP' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowCommentEvent.pdsc + + export interface SlideshowCommentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + slideshowUrn: string; + commentUrn: string; + commentInfo?: SlideshowCommentInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowCommentInfo.pdsc + + export interface SlideshowCommentInfo { + commentText: string; + replyToCommentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowCreationEvent.pdsc + + export interface SlideshowCreationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + time: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + slideshowUrn: string; + slideshowInfo: SlideshowInfo; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowDeletionEvent.pdsc + + export interface SlideshowDeletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + time: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + slideshowUrn: string; + deletionReason: SlideshowDeletionReason; + spamScore?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowDeletionReason.pdsc + + export type SlideshowDeletionReason = 'AUTHOR_DELETION' | 'ADMIN_DELETION' | 'MADE_PRIVATE' | 'SPAM'; + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowDownloadEvent.pdsc + + export interface SlideshowDownloadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + slideshowUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowEmailEvent.pdsc + + export interface SlideshowEmailEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + slideshowUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowEmbedEvent.pdsc + + export interface SlideshowEmbedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + slideshowUrn: string; + embedUrl: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowInfo.pdsc + + export interface SlideshowInfo { + title?: string; + fileLocation?: string; + strippedTitle?: string; + description?: string; + totalSlides?: number; + userUrn: string; + locale?: string; + extension?: string; + slideshowType: slideshowTypeEnum; + license: slideshowLicenseTypeEnum; + userLogin: string; + authorName?: string; + category: slideshowCategoryEnum; + transcriptText?: string; + transcriptHtml?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/slideshowLicenseTypeEnum.pdsc + + export type slideshowLicenseTypeEnum = + | 'ALL_RESERVED' + | 'CC' + | 'CC_NODERIVS' + | 'CC_NONCOMMERCIAL' + | 'CC_NONCOMMERCIAL_NODERIVS' + | 'CC_SHAREALIKE' + | 'CC_NONCOMMERCIAL_SHAREALIKE' + | 'US_GOVT'; + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowLikeEvent.pdsc + + export interface SlideshowLikeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + slideshowUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowSearchEvent.pdsc + + export interface SlideshowSearchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + query: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowShareEvent.pdsc + + export interface SlideshowShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + slideshowUrn: string; + sharedTo: slideshowShareTypeEnum; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/slideshowShareTypeEnum.pdsc + + export type slideshowShareTypeEnum = 'FACEBOOK' | 'TWITTER' | 'LINKEDIN' | 'PINTEREST' | 'GOOGLE_PLUS'; + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowTagEvent.pdsc + + export interface SlideshowTagEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + slideshowUrn: string; + tagUrn: string; + tagText: string; + creatorUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/slideshowTypeEnum.pdsc + + export type slideshowTypeEnum = 'SLIDESHOW' | 'DOCUMENT' | 'VIDEO' | 'INFOGRAPHIC'; + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowViewEvent.pdsc + + export interface SlideshowViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + slideshowUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/slideshow/SlideshowViewStatsEvent.pdsc + + export interface SlideshowViewStatsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + recommendationId?: string; + slideshowUrn: string; + userEvent?: string; + documentType?: string; + } + } + namespace Socialaction { + // Generated from: com/linkedin/avro2pegasus/events/socialaction/Opcode.pdsc + + export type Opcode = 'INSERT' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/events/socialaction/Reaction.pdsc + + export type Reaction = + | 'LIKE' + | 'PRAISE' + | 'INSPIRATION' + | 'MAYBE' + | 'EMPATHY' + | 'INTEREST' + | 'APPRECIATION' + | 'USEFULNESS' + | 'ENTERTAINMENT' + | 'CELEBRATION' + | 'ASSENT'; + // Generated from: com/linkedin/avro2pegasus/events/socialaction/ReactionEvent.pdsc + + export interface ReactionEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + entityUrn: string; + creatorUrn: string; + reaction: Reaction; + previousReaction?: Reaction; + opcode: Opcode; + createdTime: number; + } + } + namespace Standardization { + // Generated from: com/linkedin/avro2pegasus/events/standardization/Contact.pdsc + + export interface Contact { + firstName?: string; + lastName?: string; + emailAddress?: string; + title?: string; + companyName?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/IpAsBytes.pdsc + + export type IpAsBytes = string; + // Generated from: com/linkedin/avro2pegasus/events/standardization/OnDemandCompanyStandardizationEvent.pdsc + + export interface OnDemandCompanyStandardizationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + standardizationSource: StandardizationSource; + standardizerVersion: StandardizerVersion; + companyName?: string; + billingStreet?: string; + billingCity?: string; + billingState?: string; + billingPostalCode?: string; + description?: string; + industry?: string; + lastActivityTime?: number; + numberOfEmployees?: number; + phone?: string; + shippingStreet?: string; + shippingCity?: string; + shippingPostalCode?: string; + shippingState?: string; + tickerSymbol?: string; + websiteUrl?: string; + ipAsBytes?: IpAsBytes; + emailAddress?: string; + contactMetadata: Contact[]; + standardizedCompanies?: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/StandardizationSource.pdsc + + export type StandardizationSource = 'LIGHTHOUSE' | 'NEW_REG' | 'QA'; + // Generated from: com/linkedin/avro2pegasus/events/standardization/StandardizerVersion.pdsc + + export type StandardizerVersion = + | 'NEW_REG_IP_MODEL' + | 'LITE_COMPANY_STANDARDIZER_LEGACY_MODEL' + | 'RULE_BASED_MODEL_V1' + | 'QA'; + // Generated from: com/linkedin/avro2pegasus/events/standardization/TaxonomyTaskFeedbackEvent.pdsc + + export interface TaxonomyTaskFeedbackEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + taskUrn: string; + country?: string; + corpUserUrn?: string; + taskFeedback: Com.Linkedin.Avro2pegasus.Events.Common.Standardization.TaxonomyTaskFeedback; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/TaxonomyTaskImpressionEvent.pdsc + + export interface TaxonomyTaskImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + taskUrn: string; + country?: string; + corpUserUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/TaxonomyTaskResponseEvent.pdsc + + export interface TaxonomyTaskResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + taskUrn: string; + country?: string; + corpUserUrn?: string; + taskResponse?: Com.Linkedin.Avro2pegasus.Events.Common.Standardization.TaxonomyTaskResponse; + } + namespace Company { + // Generated from: com/linkedin/avro2pegasus/events/standardization/company/CandidateCompany.pdsc + + export interface CandidateCompany { + organizationUrn: string; + score: number; + companyFeatures?: CompanyFeature[]; + jobToCompanyFeatures?: JobToCompanyFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/company/CompanyFeature.pdsc + + export interface CompanyFeature { + featureName: string; + featureValue: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/company/CompanyIdAndScore.pdsc + + export interface CompanyIdAndScore { + companyId: number; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/company/CompanyResolutionEvent.pdsc + + export interface CompanyResolutionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rawCompanyName?: string; + address?: Com.Linkedin.Avro2pegasus.Events.Common.Address; + industryUrn?: string; + numberOfEmployeesRange?: Com.Linkedin.Avro2pegasus.Events.Common.StaffCountRangeType; + phoneNumber?: Com.Linkedin.Avro2pegasus.Events.Common.PhoneNumber; + website?: string; + emailAddress?: string; + stockSymbol?: string; + modelType: string; + modelVersion: number; + companyResolutionInfo?: CompanyResolutionInfo; + evaluationPipelineInput?: EvaluationPipelineInput; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/company/CompanyResolutionInfo.pdsc + + export interface CompanyResolutionInfo { + top1ResolvedCompanyIdAndScore: CompanyIdAndScore; + otherResolvedCompanyIds?: CompanyIdAndScore[]; + resolutionMatchesGroundTruth?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/company/EvaluationPipelineInput.pdsc + + export interface EvaluationPipelineInput { + experimentDataBatchId?: string; + externalCompanyEntityId?: string; + groundTruthCompanyId?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/company/JobDerivedCompaniesServedEvent.pdsc + + export interface JobDerivedCompaniesServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + partnerJobCode?: string; + modelVersion?: string; + jobCompanyName?: string; + jobDescription?: string; + jobCompanyWebsite?: string; + jobCompanyAddress?: string; + jobLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + countryCode?: string; + rawJobUrn?: string; + jobIngestionEmployerUrn?: string; + standardizedOrganizationUrn?: string; + serviceLatency: number; + failureReason?: JobToCompanyStdFailureReason; + candidateCompanies?: CandidateCompany[]; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/company/JobToCompanyFeature.pdsc + + export interface JobToCompanyFeature { + featureName: string; + featureValue: number; + } + // Generated from: com/linkedin/avro2pegasus/events/standardization/company/JobToCompanyStdFailureReason.pdsc + + export type JobToCompanyStdFailureReason = + | 'PARSEQ_ENGINE_NO_CAPACITY' + | 'QUOTA_EXCEEDED' + | 'EXECUTION_FAILURE' + | 'NULL_OR_EMPTY_COMPANY_NAME' + | 'NO_CANDIDATES' + | 'INVALID_MODEL_VERSION' + | 'EXECUTION_INTERRUPTED'; + } + } + namespace Stats { + // Generated from: com/linkedin/avro2pegasus/events/stats/ActionCount.pdsc + + export interface ActionCount { + action: string; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/events/stats/ItemStats.pdsc + + export interface ItemStats { + id?: number; + itemId?: string; + counts: ActionCount[]; + } + } + namespace Stories { + // Generated from: com/linkedin/avro2pegasus/events/stories/StoryItemInteractionEvent.pdsc + + export interface StoryItemInteractionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + actorUrn: string; + storyItemUgcUrn: string; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.Stories.StoryItemActionType; + actorPrivacySetting?: Com.Linkedin.Avro2pegasus.Events.Common.Stories.PrivacySetting; + } + } + namespace Subscriptions { + // Generated from: com/linkedin/avro2pegasus/events/subscriptions/ActionType.pdsc + + export type ActionType = 'CLICK' | 'CONVERSION'; + // Generated from: com/linkedin/avro2pegasus/events/subscriptions/SubsRecurrence.pdsc + + export type SubsRecurrence = 'MONTHLY' | 'ANNUAL'; + } + namespace Talent { + // Generated from: com/linkedin/avro2pegasus/events/talent/CandidateHireStatusType.pdsc + + export type CandidateHireStatusType = + | 'POTENTIAL_CANDIDATE' + | 'SHORTLISTED' + | 'PHONE_SCREEN' + | 'INTERVIEW' + | 'OFFER_EXTENDED' + | 'HIRED' + | 'REJECTED' + | 'CONTACTED' + | 'REPLIED' + | 'ON_HOLD' + | 'ARCHIVED' + | 'MIXED_STATUSES' + | 'USER_DEFINED' + | 'HIDDEN'; + // Generated from: com/linkedin/avro2pegasus/events/talent/ConversationDirection.pdsc + + export type ConversationDirection = 'FROM_CANDIDATE' | 'FROM_RECRUITER'; + // Generated from: com/linkedin/avro2pegasus/events/talent/HiringManagerCandidateActionEvent.pdsc + + export interface HiringManagerCandidateActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + operation: string; + memberUrns: string[]; + actorUrn: string; + candidateHiringStateType?: CandidateHireStatusType; + sourcingChannelType?: SourcingChannelType; + hiringProjectUrn: string; + hiringContextUrn: string; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + recruiterContextualSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterContextualSearchHeader; + candidatePositionsInPage?: number[]; + pageNumber?: number; + isWillingToShareWithCandidate?: boolean; + sortType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringCandidateSortType; + pagingContext?: Com.Linkedin.Avro2pegasus.Events.PagingContext; + previousCandidateHiringStateUrn?: string; + currentCandidateHiringStateUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/HiringPlatformOneInBoxConversationActionEvent.pdsc + + export interface HiringPlatformOneInBoxConversationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + interviewerUrn: string; + direction: ConversationDirection; + candidateUrn: string; + hiringContextUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/InterviewScheduleActionEvent.pdsc + + export interface InterviewScheduleActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + operation: InterviewScheduleOptionType; + interviewUrn: string; + interviewType: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentInterviewType; + actorUrn: string; + meetingRequestId?: string; + scheduleRequestId?: string; + hiringContextUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/InterviewScheduleOptionType.pdsc + + export type InterviewScheduleOptionType = 'CREATED' | 'RESCHEDULED' | 'CANCELLED'; + // Generated from: com/linkedin/avro2pegasus/events/talent/PipelineBuilderLeadCreationEvent.pdsc + + export interface PipelineBuilderLeadCreationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + createdTime: number; + memberUrn: string; + sponsoredInmailCampaignUrn: string; + sponsoredInmailCampaignName: string; + hiringProjectUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/PipelineReportingMetricsEvent.pdsc + + export interface PipelineReportingMetricsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + stateUpdateTimestamp: number; + capAccountId?: number; + contractId: number; + seatId?: number; + hiringProjectId: number; + prospectId?: number; + hireIdentityId?: number; + experienceLevel?: Com.Linkedin.Avro2pegasus.Events.Jobs.ExperienceLevel; + jobFunctions: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobFunction[]; + sourceHiringStateId?: number; + sourceHireStatusType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HireStatusType; + sourceSystemHiringStateId?: number; + sourceSystemHireStatusType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HireStatusType; + destinationHiringStateId: number; + destinationHireStatusType: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HireStatusType; + hiringStateIdProgression?: number; + hireStatusTypeProgression?: number; + systemHiringStateIdProgression?: number; + systemHireStatusTypeProgression?: number; + timeEnteredSourceHiringState?: number; + timeInSourceHiringState?: number; + timeEnteredSourceHireStatusType?: number; + timeInSourceHireStatusType?: number; + timeEnteredSourceSystemHiringState?: number; + timeInSourceSystemHiringState?: number; + timeEnteredSourceSystemHireStatusType?: number; + timeInSourceSystemHireStatusType?: number; + totalTimeInPipeline?: number; + sourcingChannelIds: number[]; + hiringProjectType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectType; + projectCreatedTime?: number; + isFirstHiredForProject?: boolean; + isFirstCandidateForProject?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/ProposedQuestionRecommendation.pdsc + + export interface ProposedQuestionRecommendation { + questionRecommendationUrn: string; + confidenceScore?: number; + isAccepted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/QualarooSurveyResponseEvent.pdsc + + export interface QualarooSurveyResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + jobPostingUrn: string; + sourcingChannelUrn: string; + surveyId: string; + question: string; + answer?: string; + responseGuid?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/ResumeDownloadProcess.pdsc + + export type ResumeDownloadProcess = 'APPLICANT_VIEW_PAGE' | 'NEW_APPLICANT_EMAIL'; + // Generated from: com/linkedin/avro2pegasus/events/talent/ResumeDownloadStatus.pdsc + + export type ResumeDownloadStatus = 'SUCCEEDED' | 'BLOCKED_FOR_TOO_MANY_TRIES' | 'BLOCKED_FOR_EXPIRED_URL'; + // Generated from: com/linkedin/avro2pegasus/events/talent/ScreeningBasedJobRecommendationsEvent.pdsc + + export interface ScreeningBasedJobRecommendationsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + memberSavedResponseCount: number; + screeningBasedJobRecommendations: Com.Linkedin.Avro2pegasus.Events.Common.Talent.ScreeningBasedJobRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/SkillBasedJobRecommendationActionEvent.pdsc + + export interface SkillBasedJobRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + skillUrn: string; + action: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + jobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/SkillBasedJobRecommendationImpressionEvent.pdsc + + export interface SkillBasedJobRecommendationImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + skillUrn: string; + jobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/SkillBasedJobRecommendationsEvent.pdsc + + export interface SkillBasedJobRecommendationsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + memberVerifiedSkillsCount: number; + screeningBasedJobRecommendations: Com.Linkedin.Avro2pegasus.Events.Common.Talent.ScreeningBasedJobRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/SourcingChannelType.pdsc + + export type SourcingChannelType = + | 'JOB_POSTING' + | 'TALENT_POOL' + | 'PROFILE_MATCHING' + | 'RECRUITER_SEARCH' + | 'APPLY_STARTERS' + | 'AUTOMATED_SOURCING' + | 'COMPANY_CONNECTIONS' + | 'LEAD_CAPTURE' + | 'PIPELINE_BUILDER' + | 'NETWORK_CONNECTIONS' + | 'TALENT_DIRECT' + | 'MANUAL_IMPORT' + | 'PROJECT_IMPORT' + | 'INHERITED_JOB_POSTING' + | 'INHERITED_APPLY_STARTERS' + | 'INHERITED_PIPELINE_BUILDER' + | 'TALENT_PACKAGE'; + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentAuthenticatedActionEvent.pdsc + + export interface TalentAuthenticatedActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + talentServiceType: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentServiceType; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentCandidateHiringNoteCreateActionEvent.pdsc + + export interface TalentCandidateHiringNoteCreateActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + bulkActionBatchSize: number; + candidateHiringNoteUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentCandidateHiringNoteDeleteActionEvent.pdsc + + export interface TalentCandidateHiringNoteDeleteActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + bulkActionBatchSize: number; + candidateHiringNoteUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentCandidateHiringNoteUpdateActionEvent.pdsc + + export interface TalentCandidateHiringNoteUpdateActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + bulkActionBatchSize: number; + candidateHiringNoteUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentEverestMigrationMetadataEvent.pdsc + + export interface TalentEverestMigrationMetadataEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + isNewRecruiterJobsAvailable: boolean; + isNewRecruiterJobsOptOut: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentFullProfileImpressionEvent.pdsc + + export interface TalentFullProfileImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + hiringProjectUrn?: string; + hireIdentityUrn: string; + candidateProfileUIInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.CandidateProfileUIInfo; + profileViewEntrypointType?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.ProfileViewEntrypointType; + profileViewFormatType: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.ProfileViewFormatType; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentFullProfileServedEvent.pdsc + + export interface TalentFullProfileServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + sourcingChannelUrn?: string; + hiringProjectState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentHideCandidateInProjectActionEvent.pdsc + + export interface TalentHideCandidateInProjectActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + hireIdentityUrn: string; + hiringProjectUrn: string; + sourcingChannelUrn: string; + bulkActionBatchSize: number; + hiringProjectState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentLandingPageActionEvent.pdsc + + export interface TalentLandingPageActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + sourceType: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentLeadSourceType; + organizationUrn: string; + landingPageId: string; + contractUrn: string; + campaignUrns?: string[]; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentActionType; + isEmailShared?: boolean; + isPhoneNumberShared?: boolean; + isHighlightPopulated?: boolean; + isEmployeeShowcaseVisible?: boolean; + isCompanyDescriptionVisible?: boolean; + isRecruiterVisible?: boolean; + mediaType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentMediaType; + isInsightDisplayed?: boolean; + sourceCampaignUrn?: string; + isEmailAvailable?: boolean; + isPhoneNumberAvailable?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentLandingPageAdminDashboardActionEvent.pdsc + + export interface TalentLandingPageAdminDashboardActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organizationUrn: string; + contractUrn: string; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentAdminActionType; + landingPageId?: string; + landingPageState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentLandingPageState; + pageType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentAdminPageType; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentLandingPageAdminDashboardViewEvent.pdsc + + export interface TalentLandingPageAdminDashboardViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organizationUrn: string; + contractUrn: string; + landingPageId?: string; + landingPageState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentLandingPageState; + pageType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentAdminPageType; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentLandingPageViewEvent.pdsc + + export interface TalentLandingPageViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + organizationUrn: string; + landingPageId: string; + contractUrn: string; + isHighlightPopulated?: boolean; + isEmployeeShowcaseVisible?: boolean; + isCompanyDescriptionVisible?: boolean; + isRecruiterVisible?: boolean; + mediaType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentMediaType; + sourceType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentLeadSourceType; + isInsightDisplayed?: boolean; + sourceCampaignUrn?: string; + landingPageCallToActionType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentLandingPageCallToActionType; + landingPageCallToActionSecondaryTextType?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentLandingPageCallToActionSecondaryTextType; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentPoolImpressionEvent.pdsc + + export interface TalentPoolImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + sourcingChannelSelections: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentPoolSourcingChannelSelection[]; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentProfileListElementImpressionEvent.pdsc + + export interface TalentProfileListElementImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + hiringProjectUrn?: string; + hireIdentityUrn: string; + candidateProfileUIInfo?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.CandidateProfileUIInfo; + pageNum?: number; + pageSize?: number; + position?: number; + profileViewEntrypointType?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.ProfileViewEntrypointType; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentProfileListServedEvent.pdsc + + export interface TalentProfileListServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + hiringProjectUrn?: string; + hireIdentities: string[]; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + sourcingChannelUrn?: string; + hiringProjectState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentProfileShareActionEvent.pdsc + + export interface TalentProfileShareActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + bulkActionBatchSize: number; + reviewerUrn: string; + referralCandidateFeedbackUrn: string; + sourcingChannelUrn?: string; + hiringProjectState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentProjectPipelineImpressionEvent.pdsc + + export interface TalentProjectPipelineImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn: string; + hiringPipelineUrn: string; + hiringStateSelections: Com.Linkedin.Avro2pegasus.Events.Common.Talent.ProjectPipelineHiringStateSelection[]; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentQuestionRecommendationActionEvent.pdsc + + export interface TalentQuestionRecommendationActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + hiringEntityUrn: string; + proposedRecommendations: ProposedQuestionRecommendation[]; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentResumeDownloadEvent.pdsc + + export interface TalentResumeDownloadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + contractUrn?: string; + jobPostingUrn: string; + jobApplicationUrn: string; + applicantMemberUrn?: string; + downloadProcess: ResumeDownloadProcess; + status: ResumeDownloadStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentSaveCandidateToProjectActionEvent.pdsc + + export interface TalentSaveCandidateToProjectActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + recruiterSearchHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.RecruiterSearchHeader; + hireIdentityUrn: string; + targetHiringProjectUrn: string; + sourcingChannelUrn?: string; + bulkActionBatchSize: number; + isCandidateAddedToANewProject: boolean; + isCopiedFromAnotherProject: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentSaveToPdfActionEvent.pdsc + + export interface TalentSaveToPdfActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + bulkActionBatchSize: number; + ambryBlobUrn: string; + sourcingChannelUrn?: string; + hiringProjectState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentSmartNoteCreateActionEvent.pdsc + + export interface TalentSmartNoteCreateActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + bulkActionBatchSize: number; + smartNoteUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentSmartNoteDeleteActionEvent.pdsc + + export interface TalentSmartNoteDeleteActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + bulkActionBatchSize: number; + smartNoteUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentSmartNoteUpdateActionEvent.pdsc + + export interface TalentSmartNoteUpdateActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + bulkActionBatchSize: number; + smartNoteUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentTagAddedActionEvent.pdsc + + export interface TalentTagAddedActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + capTagUrn: string; + bulkActionBatchSize: number; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentTagRemovedActionEvent.pdsc + + export interface TalentTagRemovedActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hiringProjectUrn?: string; + hireIdentityUrn: string; + capTagUrn: string; + bulkActionBatchSize: number; + } + // Generated from: com/linkedin/avro2pegasus/events/talent/TalentUnhideCandidateInProjectActionEvent.pdsc + + export interface TalentUnhideCandidateInProjectActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentCommonHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talent.TalentCommonHeader; + hireIdentityUrn: string; + hiringProjectUrn: string; + bulkActionBatchSize: number; + sourcingChannelUrn?: string; + hiringProjectState?: Com.Linkedin.Avro2pegasus.Events.Common.Talent.HiringProjectState; + } + } + namespace Talentinsights { + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/AutomatedInsightActionType.pdsc + + export type AutomatedInsightActionType = 'SELECT' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/ClientType.pdsc + + export type ClientType = + | 'LTI_WEB' + | 'LTI_EXPORT' + | 'LEARNING_ENTERPRISE' + | 'VOYAGER_API_SEARCH' + | 'TALENT_INSIGHTS_RECRUITER_API' + | 'PREMIUM_INSIGHTS' + | 'SALES_NAVIGATOR' + | 'VOYAGER_API_PAGES' + | 'ORGANIZATION_GUEST_FRONTEND' + | 'LTI_NOTIFICATIONS' + | 'CAREER_PAGES' + | 'ZEPHYR_API_CAREER_INSIGHT' + | 'LITE'; + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/FacetSearchResultActionType.pdsc + + export type FacetSearchResultActionType = 'SELECT' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/ReportExportFormat.pdsc + + export type ReportExportFormat = 'PDF' | 'PPT' | 'CSV' | 'XLS'; + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/ServingImpressionAction.pdsc + + export type ServingImpressionAction = 'SERVE' | 'IMPRESS' | 'SELECT' | 'DISMISS'; + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/SharedReportLinkShareErrorType.pdsc + + export type SharedReportLinkShareErrorType = 'NOT_FOUND' | 'INVALID_ACCESS'; + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/SharedReportLinkVisitErrorType.pdsc + + export type SharedReportLinkVisitErrorType = 'NOT_FOUND' | 'INVALID_ACCESS'; + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsAutomatedInsightActionEvent.pdsc + + export interface TalentInsightsAutomatedInsightActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + enterpriseApplicationUserProfile: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.EnterpriseApplicationUserProfile; + insightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.AutomatedInsightTrackingId; + actionOnInsight: AutomatedInsightActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsAutomatedInsightEmailSelectEvent.pdsc + + export interface TalentInsightsAutomatedInsightEmailSelectEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + emailRecipient: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.EnterpriseApplicationUserProfile; + insightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.AutomatedInsightIds; + talentintelSearchHistoryV2Urn: string; + emailTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsAutomatedInsightEmailSentEvent.pdsc + + export interface TalentInsightsAutomatedInsightEmailSentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + emailRecipient: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.EnterpriseApplicationUserProfile; + insightTrackingIds: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.AutomatedInsightIds[]; + emailTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsAutomatedInsightHomepageImpressionEvent.pdsc + + export interface TalentInsightsAutomatedInsightHomepageImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + ltiUser: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.EnterpriseApplicationUserProfile; + insightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.AutomatedInsightIds; + insightPageIndex: number; + insightPositionIndex: number; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsAutomatedInsightHomepageSelectEvent.pdsc + + export interface TalentInsightsAutomatedInsightHomepageSelectEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + ltiUser: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.EnterpriseApplicationUserProfile; + insightTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.AutomatedInsightIds; + talentintelSearchHistoryV2Urn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsAutomatedInsightHomepageServedEvent.pdsc + + export interface TalentInsightsAutomatedInsightHomepageServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ltiUser: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.EnterpriseApplicationUserProfile; + insightTrackingIds: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.AutomatedInsightIds[]; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsAutomatedInsightImpressionEvent.pdsc + + export interface TalentInsightsAutomatedInsightImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + enterpriseApplicationUserProfile: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.EnterpriseApplicationUserProfile; + insightTrackingIds: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.AutomatedInsightTrackingId[]; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsAutomatedInsightServedEvent.pdsc + + export interface TalentInsightsAutomatedInsightServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + enterpriseApplicationUserProfile: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.EnterpriseApplicationUserProfile; + insightTrackingIds: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.AutomatedInsightTrackingId[]; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsEnterpriseAccountToOrganizationEvent.pdsc + + export interface TalentInsightsEnterpriseAccountToOrganizationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + enterpriseAccountUrn: string; + organizationUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsFacetSearchResultsActionEvent.pdsc + + export interface TalentInsightsFacetSearchResultsActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentInsightsFacetSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.FacetSearchHeader; + actionType: FacetSearchResultActionType; + searchResult?: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.FacetSearchResult; + searchResultPosition?: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.FacetSearchResultPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsFacetSearchResultsImpressionEvent.pdsc + + export interface TalentInsightsFacetSearchResultsImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentInsightsFacetSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.FacetSearchHeader; + searchResults: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.FacetSearchResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsFacetSearchResultsServedEvent.pdsc + + export interface TalentInsightsFacetSearchResultsServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentInsightsFacetSearchHeader: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.FacetSearchHeader; + searchResults: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.FacetSearchResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsModuleImpressionEvent.pdsc + + export interface TalentInsightsModuleImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentintelSearchHistoryUrn?: string; + moduleIdentifier: string; + duration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsPinotQueryEvent.pdsc + + export interface TalentInsightsPinotQueryEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + webRoute?: string; + pinotQuery: string; + pinotTable: string; + filterColumns: string[]; + groupColumns: string[]; + queryDuration: number; + retryCount: number; + httpResponseCode: number; + totalPinotDocs?: number; + numPinotDocsScanned?: number; + numPinotEntriesScannedInFilter?: number; + numPinotEntriesScannedPostFilter?: number; + isPartialResult?: boolean; + clientType?: ClientType; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsProfileLinkType.pdsc + + export type TalentInsightsProfileLinkType = 'RECRUITER' | 'FLAGSHIP'; + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsProfileNavigationEvent.pdsc + + export interface TalentInsightsProfileNavigationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + profileLinkType: TalentInsightsProfileLinkType; + memberUrn: string; + moduleIdentifier: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsRecruiterSearchResultsComparisonEvent.pdsc + + export interface TalentInsightsRecruiterSearchResultsComparisonEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + talentInsightsTotalProfessionalCount: number; + recruiterTotalProfessionalCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsReportExportEvent.pdsc + + export interface TalentInsightsReportExportEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentintelSearchHistoryUrn?: string; + moduleIdentifiers: string[]; + exportFormat: ReportExportFormat; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsReportRecommendationServingImpressionActionEvent.pdsc + + export interface TalentInsightsReportRecommendationServingImpressionActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + requestReportRecommendationId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + enterpriseApplicationUserProfile: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.EnterpriseApplicationUserProfile; + reportRecommendations: Com.Linkedin.Avro2pegasus.Events.Common.Talentinsights.ReportRecommendation[]; + servingImpressionAction: ServingImpressionAction; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsReportSaveToFolderEvent.pdsc + + export interface TalentInsightsReportSaveToFolderEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentintelSearchHistoryUrn?: string; + moduleIdentifiers: string[]; + talentintelFolderReportUrn?: string; + talentintelFolderUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsSearchEvent.pdsc + + export interface TalentInsightsSearchEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentintelSearchHistoryUrn: string; + overrideCompanyUrn?: string; + talentintelSearchHistoryUrnV2?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsSharedReportLinkShareEvent.pdsc + + export interface TalentInsightsSharedReportLinkShareEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentintelSearchHistoryV2Urn?: string; + reportUniqueKey?: string; + errorType?: SharedReportLinkShareErrorType; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsSharedReportLinkVisitEvent.pdsc + + export interface TalentInsightsSharedReportLinkVisitEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + talentintelSearchHistoryV2Urn?: string; + viewerEnterpriseApplicationUrn: string; + viewedTalentintelSearchHistoryV2Urn?: string; + reportUniqueKey: string; + errorType?: SharedReportLinkVisitErrorType; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsTablePaginateEvent.pdsc + + export interface TalentInsightsTablePaginateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + moduleIdentifier: string; + pageNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/events/talentinsights/TalentInsightsTableSortEvent.pdsc + + export interface TalentInsightsTableSortEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + moduleIdentifier: string; + sortColumnName: string; + } + } + namespace Thirdparty { + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/ActionType.pdsc + + export type ActionType = 'CANCEL' | 'ACCEPT' | 'LEARN_MORE'; + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/AuthorizationType.pdsc + + export type AuthorizationType = + | 'OAUTH2_AUTHORIZATION_CODE' + | 'MOBILE_SDK_WEB' + | 'MOBILE_SDK_IOS' + | 'MOBILE_SDK_ANDROID' + | 'OAUTH2_CLIENT_CREDENTIALS' + | 'OAUTH2_REFRESH_TOKEN_EXCHANGE' + | 'MOBILE_SDK_PKCE' + | 'UNRESOLVED' + | 'NATIVE_PKCE' + | 'OAUTH2_FEDERATION' + | 'MOBILE_SDK_NATIVE' + | 'OAUTH1_REQUEST_TOKEN'; + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/ConfirmationActionType.pdsc + + export type ConfirmationActionType = 'VERIFY' | 'RESEND'; + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/ConfirmationType.pdsc + + export type ConfirmationType = 'EMAIL_LINK' | 'EMAIL_PIN'; + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/ConsentType.pdsc + + export type ConsentType = 'FULL_SCOPE' | 'ELEVATED_SCOPE'; + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/LoginError.pdsc + + export type LoginError = + | 'INVALID_EMAIL' + | 'UNKNOWN_EMAIL' + | 'INVALID_PHONE' + | 'UNKNOWN_PHONE' + | 'INVALID_PASSWORD' + | 'UNKNOWN_PASSWORD'; + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/LoginType.pdsc + + export type LoginType = 'SINGLE_PAGE_EMAIL_PASSWORD' | 'SINGLE_PAGE_EMAIL_PHONE_PASSWORD'; + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/MemberAuthorizationConfirmAccountActionEvent.pdsc + + export interface MemberAuthorizationConfirmAccountActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: ConfirmationActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/MemberAuthorizationConfirmAccountViewEvent.pdsc + + export interface MemberAuthorizationConfirmAccountViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + confirmationType: ConfirmationType; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/MemberAuthorizationExitEvent.pdsc + + export interface MemberAuthorizationExitEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/MemberAuthorizationLoginResultEvent.pdsc + + export interface MemberAuthorizationLoginResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + error?: LoginError; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/MemberAuthorizationLoginViewEvent.pdsc + + export interface MemberAuthorizationLoginViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + loginType: LoginType; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/MemberAuthorizationStageViewEvent.pdsc + + export interface MemberAuthorizationStageViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/MemberAuthorizationStartEvent.pdsc + + export interface MemberAuthorizationStartEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + developerApplicationUrn: string; + parentDeveloperApplicationUrn?: string; + flowExperienceName: string; + referrerFlowModifier?: string; + rawReferrerApplicationId?: string; + rawReferrerPageId?: string; + rawReferrerControlId?: string; + rawReferrerApplicationInstance?: string; + rawReferrerPageInstance?: string; + rawReferrerUserId?: string; + rawReferrerRequestId?: string; + requestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/MemberAuthorizationUserConsentActionEvent.pdsc + + export interface MemberAuthorizationUserConsentActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + actionType: ActionType; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/MemberAuthorizationUserConsentViewEvent.pdsc + + export interface MemberAuthorizationUserConsentViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + flowTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + consentType: ConsentType; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/ThirdPartyAccessAuthorizationEvent.pdsc + + export interface ThirdPartyAccessAuthorizationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + userRequestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + applicationUrn?: string; + parentApplicationUrn?: string; + memberUrn?: string; + authorizationType: AuthorizationType; + entryStage: ThirdPartyAuthorizationFlowStageType; + entrySubStage?: number; + exitStage: ThirdPartyAuthorizationFlowStageType; + exitSubStage?: number; + authorizationFlowExperience?: string; + throttlingAction: ThrottlingAction; + throttleResourceType?: string; + errorCode?: string; + errorMessage?: string; + callDuration: number; + fuseRestrictionType?: Com.Linkedin.Avro2pegasus.Events.FuseRestrictionType; + internalErrorCode?: string; + errorType?: Com.Linkedin.Avro2pegasus.Events.Common.Thirdparty.ThirdPartyAuthorizationFlowErrorType; + correlationId?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/ThirdPartyAuthorizationFlowStageType.pdsc + + export type ThirdPartyAuthorizationFlowStageType = + | 'START' + | 'PRELOGIN' + | 'LOGIN' + | 'LOGIN_SUCCESS' + | 'LOGIN_CANCEL' + | 'LOGIN_AND_AUTHORIZE' + | 'POSTLOGIN' + | 'AUTHORIZE' + | 'AUTHORIZE_SUCCESS' + | 'AUTHORIZE_CANCEL' + | 'AUTHORIZATION_CODE' + | 'ACCESS_TOKEN' + | 'EMAIL_CONFIRMATION' + | 'AUTHORIZE_SKIP' + | 'SEQUENTIAL_BIND_HANDOFF'; + // Generated from: com/linkedin/avro2pegasus/events/thirdparty/ThrottlingAction.pdsc + + export type ThrottlingAction = 'NONE' | 'WARN' | 'DROP'; + } + namespace Thirdpartypushevents { + // Generated from: com/linkedin/avro2pegasus/events/thirdpartypushevents/ThirdPartyPushAbortReason.pdsc + + export type ThirdPartyPushAbortReason = + | 'RETRY_COUNT_EXCEEDED' + | 'APPLICATION_NOT_FOUND' + | 'PAYLOAD_SIGNATURE_COMPUTATION_FAILED' + | 'CONTENT_DESERIALIZATION_ERROR' + | 'PAYLOAD_GENERATION_FAILED' + | 'INVALID_PUSH_EVENT_DATA' + | 'GAAP_SCRIPT_NOT_CONFIGURED' + | 'CONTENT_ENCRYPTION_ERROR' + | 'CONTENT_DECRYPTION_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/thirdpartypushevents/ThirdPartyPushEventAbortReason.pdsc + + export type ThirdPartyPushEventAbortReason = + | 'RETRY_COUNT_EXCEEDED' + | 'APPLICATION_NOT_FOUND' + | 'PAYLOAD_SIGNATURE_COMPUTATION_FAILED' + | 'CONTENT_DESERIALIZATION_ERROR' + | 'INVALID_NOTIFICATION_DATA' + | 'PAYLOAD_GENERATION_FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/thirdpartypushevents/ThirdPartyPushEventExecutionStatus.pdsc + + export type ThirdPartyPushEventExecutionStatus = 'SUCCESSFULLY_DELIVERED' | 'RETRY_SCHEDULED' | 'ABORTED'; + // Generated from: com/linkedin/avro2pegasus/events/thirdpartypushevents/ThirdPartyPushEventExecutionStatusEvent.pdsc + + export interface ThirdPartyPushEventExecutionStatusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientThirdPartyApplicationUrn: string; + recipientThirdPartyNotificationUrl: string; + activityId: string; + eventType: string; + currentRunCount: number; + maximumRetryCount: number; + executionStatus: ThirdPartyPushEventExecutionStatus; + retryReason?: ThirdPartyPushEventRetryReason; + abortReason?: ThirdPartyPushEventAbortReason; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdpartypushevents/ThirdPartyPushEventRetryReason.pdsc + + export type ThirdPartyPushEventRetryReason = 'RESTLI_INVOCATION_ERROR' | 'GAAP_SCRIPT_EXECUTION_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/thirdpartypushevents/ThirdPartyPushExecutionStatus.pdsc + + export type ThirdPartyPushExecutionStatus = 'SUCCESSFULLY_DELIVERED' | 'RETRY_SCHEDULED' | 'ABORTED'; + // Generated from: com/linkedin/avro2pegasus/events/thirdpartypushevents/ThirdPartyPushExecutionStatusEvent.pdsc + + export interface ThirdPartyPushExecutionStatusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientApplicationUrn: string; + recipientApplicationUrl: string; + eventId: string; + eventType: string; + currentRunCount: number; + maximumRetryCount: number; + executionStatus: ThirdPartyPushExecutionStatus; + retryReason?: ThirdPartyPushRetryReason; + abortReason?: ThirdPartyPushAbortReason; + activityContext?: string; + eventReceivedTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdpartypushevents/ThirdPartyPushRetryReason.pdsc + + export type ThirdPartyPushRetryReason = 'RESTLI_INVOCATION_ERROR' | 'GAAP_SCRIPT_EXECUTION_ERROR'; + } + namespace Thirdpartywebhooks { + // Generated from: com/linkedin/avro2pegasus/events/thirdpartywebhooks/ThirdPartyWebhookValidationEvent.pdsc + + export interface ThirdPartyWebhookValidationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + developerApplicationUrn: string; + webhookUrl: string; + validationStatus: ThirdPartyWebhookValidationStatus; + failureReason?: ThirdPartyWebhookValidationFailureReason; + isBlocked: boolean; + actorUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/thirdpartywebhooks/ThirdPartyWebhookValidationFailureReason.pdsc + + export type ThirdPartyWebhookValidationFailureReason = + | 'INTERNAL_ERROR' + | 'UCV_URI_VALIDATION_FAILED' + | 'CHALLENGE_VALIDATION_FAILED' + | 'DISABLED_BY_APP'; + // Generated from: com/linkedin/avro2pegasus/events/thirdpartywebhooks/ThirdPartyWebhookValidationStatus.pdsc + + export type ThirdPartyWebhookValidationStatus = 'PASSED' | 'FAILED' | 'TIMED_OUT'; + } + namespace Tools { + // Generated from: com/linkedin/avro2pegasus/events/tools/RecordingStore.pdsc + + export type RecordingStore = 'MEMORY' | 'FILE' | 'CENTRAL'; + // Generated from: com/linkedin/avro2pegasus/events/tools/RtfActivityEvent.pdsc + + export interface RtfActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rtfMode: RtfMode; + rtfInterface: RtfInterface; + languageSource?: RtfLanguageSource; + corpuserUrn?: string; + suiteId: string; + testId: string; + versionName: string; + isCentralStoreEnabled: boolean; + isFileStoreEnabled: boolean; + isMemoryStoreEnabled: boolean; + isClosestMatchEnabled: boolean; + isClosestMatchUsed: boolean; + replayRecordingStoreUsed?: RecordingStore; + processingDuration: number; + } + // Generated from: com/linkedin/avro2pegasus/events/tools/RtfInterface.pdsc + + export type RtfInterface = 'R2' | 'D2' | 'LIX' | 'HTTP' | 'PARAMETERS'; + // Generated from: com/linkedin/avro2pegasus/events/tools/RtfLanguageSource.pdsc + + export type RtfLanguageSource = 'PYTHON' | 'JAVA'; + // Generated from: com/linkedin/avro2pegasus/events/tools/RtfMode.pdsc + + export type RtfMode = 'RECORD' | 'REPLAY' | 'PASSTHROUGH'; + } + namespace Topology { + // Generated from: com/linkedin/avro2pegasus/events/topology/TopologyChangeEvent.pdsc + + export interface TopologyChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + productName: string; + applicationName: string; + instanceDiscriminator: string; + clusterID: string; + fabricUrn?: string; + productTag?: string; + } + } + namespace Tracking { + // Generated from: com/linkedin/avro2pegasus/events/tracking/ClientEventStat.pdsc + + export interface ClientEventStat { + eventName: string; + topicName: string; + eventsEnqueuedCount: number; + eventsDroppedCount: number; + serializationErrorCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/tracking/ClientTrackingMonitoringEvent.pdsc + + export interface ClientTrackingMonitoringEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + clientEventStats: ClientEventStat[]; + requestsFailedCount: number; + requestsFailedWith400Count: number; + requestsAttemptedCount: number; + startTime: number; + endTime: number; + periodicSyncAttemptedCount?: number; + eventsSentInPeriodicSyncCounts?: number[]; + eventsDroppedCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/tracking/HttpHeader.pdsc + + export interface HttpHeader { + headerName: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/tracking/MetricLifeCycleProcessCheckPoint.pdsc + + export type MetricLifeCycleProcessCheckPoint = 'FAILED' | 'STARTED' | 'SUCCEEDED' | 'IN_PROGRESS'; + // Generated from: com/linkedin/avro2pegasus/events/tracking/MetricLifeCycleProcessCheckPointBody.pdsc + + export interface MetricLifeCycleProcessCheckPointBody { + started?: Com.Linkedin.Avro2pegasus.Common.Tracking.UmpDevLifeCycleStartedDetail; + inProgress?: Com.Linkedin.Avro2pegasus.Common.Tracking.UmpDevLifeCycleInProgressDetail; + succeeded?: Com.Linkedin.Avro2pegasus.Common.Tracking.UmpDevLifeCycleSucceededDetail; + failed?: Com.Linkedin.Avro2pegasus.Common.Tracking.UmpDevLifeCycleFailureDetail; + } + // Generated from: com/linkedin/avro2pegasus/events/tracking/RestLiRecordFieldsUsageCountsEvent.pdsc + + export interface RestLiRecordFieldsUsageCountsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + stackTrace: string; + fieldUsageCounts: { [id: string]: number }; + } + // Generated from: com/linkedin/avro2pegasus/events/tracking/SchemaLifecycleEvent.pdsc + + export interface SchemaLifecycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + schemaFullName: string; + schemaFingerprint: string; + avroVersion: string; + step: SchemaLifecycleStep; + stepBody: SchemaLifecycleStepBody; + } + // Generated from: com/linkedin/avro2pegasus/events/tracking/SchemaLifecycleStep.pdsc + + export type SchemaLifecycleStep = + | 'NEW_SCHEMA_IN_ARTIFACTORY' + | 'SCHEMA_REGISTER' + | 'NEW_SCHEMA_IN_SCHEMA_REGISTRY' + | 'TOPIC_WHITELIST_VIOLATION' + | 'APP_ID_WHITELIST_VIOLATION' + | 'EMIT_KAFKA' + | 'NEW_SCHEMA_SEEN_BY_TRACKING_FRONTEND'; + // Generated from: com/linkedin/avro2pegasus/events/tracking/SchemaLifecycleStepBody.pdsc + + export interface SchemaLifecycleStepBody { + register?: Com.Linkedin.Avro2pegasus.Common.Tracking.SchemaLifecycleTopicRecord; + topicWhitelistViolation?: Com.Linkedin.Avro2pegasus.Common.Tracking.SchemaLifecycleTopicRecord; + appIdWhitelistViolation?: Com.Linkedin.Avro2pegasus.Common.Tracking.SchemaLifecycleAppIdRecord; + emitKafka?: Com.Linkedin.Avro2pegasus.Common.Tracking.SchemaLifecycleTopicRecord; + newSchemaSeenByTrackingFrontend?: Com.Linkedin.Avro2pegasus.Common.Tracking.SchemaLifecycleTopicRecord; + } + // Generated from: com/linkedin/avro2pegasus/events/tracking/TrackingRequestErrorEvent.pdsc + + export interface TrackingRequestErrorEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + clientSpecifiedAppName: string; + schemaName: string; + topicName?: string; + rawEventBody: string; + httpRequestHeaders: HttpHeader[]; + error: string; + statusCode: number; + samplingFraction: number; + } + // Generated from: com/linkedin/avro2pegasus/events/tracking/UmpDevLifeCycleEvent.pdsc + + export interface UmpDevLifeCycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + processUuid: string; + processName: string; + checkPointTime: number; + processStartTime: number; + corpUserUrn: string; + multiProductUrn: string; + componentName: string; + checkPoint: MetricLifeCycleProcessCheckPoint; + checkPointBody: MetricLifeCycleProcessCheckPointBody; + } + } + namespace Traffic { + // Generated from: com/linkedin/avro2pegasus/events/traffic/ResumptionCategory.pdsc + + export type ResumptionCategory = + | 'NO_ID_OR_TICKET' + | 'ID_RESUMED' + | 'ID_NOT_RESUMED_SUPPORT_TICKET' + | 'ID_NOT_RESUMED_NOT_SUPPORT_TICKET' + | 'TICKET_RESUMED' + | 'TICKET_NOT_RESUMED' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/events/traffic/SessionResumptionCategoryEvent.pdsc + + export interface SessionResumptionCategoryEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + resumptionCategory: ResumptionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/traffic/StickyroutingNewBucketAssignmentEvent.pdsc + + export interface StickyroutingNewBucketAssignmentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + popFabricUrn: string; + preferredFabricUrn: string; + secondaryFabricUrn: string; + } + } + namespace Translation { + // Generated from: com/linkedin/avro2pegasus/events/translation/TranslationKeysResolutionEvent.pdsc + + export interface TranslationKeysResolutionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + translationKeyNames: string[]; + } + } + namespace Ucv { + // Generated from: com/linkedin/avro2pegasus/events/ucv/AbuseClusterEntityScoreEvent.pdsc + + export interface AbuseClusterEntityScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cluster: EntityCluster; + clusterWindowWithEndTime: AbuseClusterWindowWithEndTime; + scoringFlow: ScoringFlow; + scoredEntityUrn: string; + featureMetadata: Com.Linkedin.Avro2pegasus.Events.Common.Proml.FeatureMetadata[]; + entityFeatures: Com.Linkedin.Avro2pegasus.Events.Common.Proml.EntityFeatures[]; + modelResult?: ModelResult; + activatedLogic: ActivatedLogic; + accountActions: AccountActions; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/AbuseClusterScoreEvent.pdsc + + export interface AbuseClusterScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cluster: EntityCluster; + clusterWindowWithEndTime: AbuseClusterWindowWithEndTime; + scoringFlow: ScoringFlow; + clusterEntityUrns: string[]; + restrictedEntityUrns: string[]; + featureMetadata: Com.Linkedin.Avro2pegasus.Events.Common.Proml.FeatureMetadata[]; + entityFeatures: Com.Linkedin.Avro2pegasus.Events.Common.Proml.EntityFeatures[]; + modelResult?: ModelResult; + activatedLogic: ActivatedLogic; + initialClusterLabel: ClusterLabel; + finalClusterLabel: ClusterLabel; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/AbuseClusterWindowWithEndTime.pdsc + + export interface AbuseClusterWindowWithEndTime { + clusterWindow: ClusterWindow; + endTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/AccountActions.pdsc + + export interface AccountActions { + isSpamRestrictRequired: boolean; + isLoginRestrictRequired: boolean; + isLogoutAllSessionsRequired: boolean; + isReviewRequired: boolean; + isLogoutFromCurrentSessionRequired: boolean; + isInvitationWithoutEmailRestrictRequired?: boolean; + invitationWithoutEmailRestrictionLevel?: InvitationWithoutEmailRestrictionLevel; + isRehabRestrictRequired?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/AccountType.pdsc + + export type AccountType = 'CAP' | 'PREMIUM' | 'SALES_NAVIGATOR'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ActivatedLogic.pdsc + + export interface ActivatedLogic { + staticDecisions: string[]; + droolsRules: string[]; + overrideDecisions: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/AdClassificationMetadataEvent.pdsc + + export interface AdClassificationMetadataEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + classificationScorerType: Com.Linkedin.Avro2pegasus.Events.ContentClassificationScorerType; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + advertiserReputation?: Com.Linkedin.Avro2pegasus.Security.Ucv.Reputation.AdvertiserReputation; + classificationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + sponsoredAccountType?: SponsoredAccountType; + sponsoredAccountCreationTime?: number; + sponsoredCreativeTitle?: string; + sponsoredCreativeDescription?: string; + companyFollowerCount?: number; + companyEmployeeCount?: number; + thankYouMessage?: string; + legalDisclaimer?: string; + privacyPolicyUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ASNReputation.pdsc + + export interface ASNReputation { + isAbusive: boolean; + isOwnedByHostingService: boolean; + abuseScore: number; + pageViewEventCount: number; + uniqueMemberCount: number; + uniqueIpSubnetCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/BrowserIdActionType.pdsc + + export type BrowserIdActionType = 'ADD' | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/BrowserIdLabel.pdsc + + export type BrowserIdLabel = 'RESTRICTED' | 'ATO' | 'GOOD'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/BrowserIdReputation.pdsc + + export interface BrowserIdReputation { + label?: BrowserIdLabel; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/CacheLookupResult.pdsc + + export type CacheLookupResult = 'CACHE_HIT' | 'CACHE_MISS' | 'CACHE_ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ChallengeResult.pdsc + + export interface ChallengeResult { + challengeType: Com.Linkedin.Avro2pegasus.Events.SecurityChallengeType; + ignoreRatio?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ClarityHtmlElementChangedEvent.pdsc + + export interface ClarityHtmlElementChangedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + clarityImpressionId: string; + elementTagName: string; + elementId?: string; + elementClassNames: string[]; + elementAttributes: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ClarityPageTrackingRequestEvent.pdsc + + export interface ClarityPageTrackingRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + compressedPageActivities: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ClassficationExecutionStatus.pdsc + + export type ClassficationExecutionStatus = 'SUCCESS' | 'FAILURE'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ClassificationExplanation.pdsc + + export interface ClassificationExplanation { + classifierId: string; + classifierVersion: string; + classificationType: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType; + score: number; + confidence: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamConfidence; + executionStatus?: ClassficationExecutionStatus; + classifierMetadata?: ClassifierMetadata; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ClassificationSystem.pdsc + + export type ClassificationSystem = + | 'MACHINE_ASYNC' + | 'MACHINE_SYNC' + | 'HUMAN' + | 'HUMAN_DERIVED' + | 'RULES_ENGINE' + | 'MACHINE_NEARLINE' + | 'MACHINE_OFFLINE'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ClassifierMetadata.pdsc + + export interface ClassifierMetadata { + minorExplicitClassificationMetadataArray?: MinorExplicitClassificationMetadata[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ClusterLabel.pdsc + + export type ClusterLabel = 'SUSPICIOUS' | 'FAKE' | 'ACCOUNT_TAKE_OVER' | 'WHITELISTED' | 'NOT_CLASSIFIED'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ClusterReputationSource.pdsc + + export type ClusterReputationSource = 'OFFLINE' | 'FANOUT' | 'CLUSTERING'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ClusterType.pdsc + + export type ClusterType = 'BCOOKIE_USE' | 'IP_USE'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ClusterWindow.pdsc + + export type ClusterWindow = 'SEVEN_DAYS' | 'TWENTY_FOUR_HOURS' | 'INFINITY'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ContentClassificationFlow.pdsc + + export type ContentClassificationFlow = + | 'SYNC' + | 'ASYNC' + | 'USER_FLAGGING' + | 'NEARLINE' + | 'OFFLINE' + | 'HUMAN_REVIEWER'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ContentClassificationResultEvent.pdsc + + export interface ContentClassificationResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentMetadata: ContentMetadata; + classificationScorerType: Com.Linkedin.Avro2pegasus.Events.ContentClassificationScorerType; + contentUrn?: string; + system: ClassificationSystem; + actorUrn?: string; + isSpam: boolean; + spamExplanations: ClassificationExplanation[]; + isLowQuality: boolean; + contentRelevanceExplanations: ClassificationExplanation[]; + isReviewRequired: boolean; + priority?: ReviewPriority; + containsBadUrl: boolean; + containsBadMedia: boolean; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + classificationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + classificationFlow: ContentClassificationFlow; + containsUnsafeUrl: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ContentMetadata.pdsc + + export interface ContentMetadata { + contentCreatorUrn?: string; + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + appName?: string; + parentUrn?: string; + parentCreatorUrn?: string; + locale?: Com.Linkedin.Avro2pegasus.Events.Locale; + parentLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + lastUpdateTimestamp?: number; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/Counter.pdsc + + export interface Counter { + key: string; + bucketDurationMins: number; + bucketCount: number; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/CountryReputation.pdsc + + export interface CountryReputation { + isAbusive: boolean; + abuseScore: number; + pageViewEventCount: number; + uniqueMemberCount: number; + uniqueIpSubnetCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/CsRepSpamDecisionResult.pdsc + + export interface CsRepSpamDecisionResult { + csRepId: number; + isSpam: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/DistributionModelComputationEvent.pdsc + + export interface DistributionModelComputationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + scorerType: Com.Linkedin.Avro2pegasus.Events.ScorerType; + filteringFeatures: DistributionModelFeature[]; + primarySignal: DistributionModelFeature[]; + lostCount: number; + distributionScores: DistributionModelScore[]; + aggregationStartTime: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/DistributionModelFeature.pdsc + + export interface DistributionModelFeature { + name: DistributionModelFeatureName; + value?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/DistributionModelFeatureName.pdsc + + export type DistributionModelFeatureName = + | 'TOP_LEVEL_PATH' + | 'HEADER_COMBINATION' + | 'USER_AGENT' + | 'COOKIE_COMBINATION' + | 'REFERER' + | 'DIGITAL_ELEMENT_ORGANIZATION' + | 'REGISTRATION_TYPE' + | 'APPLICATION_TYPE' + | 'EMAIL_DOMAIN' + | 'LOCALE' + | 'PYMK' + | 'COUNTRY_CODE' + | 'PAGE_KEY'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/DistributionModelScore.pdsc + + export interface DistributionModelScore { + version: string; + score: number; + secondaryFeatureScores: SecondaryScore[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/DistributionModelScoreMetadata.pdsc + + export interface DistributionModelScoreMetadata { + primaryFeatureNames: DistributionModelFeatureName[]; + scoreAge: number; + lostCount: number; + distributionScore: DistributionModelScore; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/DnsDomainEntry.pdsc + + export interface DnsDomainEntry { + domainName?: string; + cacheResult: CacheLookupResult; + domainLookupResult?: DomainLookupResultType; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/DomainLookupResultType.pdsc + + export type DomainLookupResultType = 'FOUND' | 'NOT_FOUND' | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/EmailDomainReputation.pdsc + + export interface EmailDomainReputation { + abuseScore: number; + isAbusive: boolean; + isOwnedByCorp: boolean; + isBlacklisted: boolean; + totalMemberCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/EmailInfo.pdsc + + export interface EmailInfo { + encryptedEmailAddress: string; + encryptedCanonicalEmailAddress: string; + emailDomain: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/EntityCluster.pdsc + + export interface EntityCluster { + clusterType: ClusterType; + clusterValue: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/FileHashInfo.pdsc + + export interface FileHashInfo { + hash: string; + hashAlgorithm: FileHashType; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/FileHashType.pdsc + + export type FileHashType = 'SHA256' | 'MD5'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/FingerprintingPageSwapEvent.pdsc + + export interface FingerprintingPageSwapEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + initialPageRequestTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + fid: string; + javascriptError: string; + isPageSwapSuccessful: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/GeoReputation.pdsc + + export interface GeoReputation { + ipDerivedSubnet: string; + ipSubnetReputation?: IPSubnetReputation; + organization?: string; + organizationReputation?: OrganizationReputation; + asn?: number; + asnReputation?: ASNReputation; + countryCode?: string; + countryReputation?: CountryReputation; + ipDomainName?: string; + isLinkedInIp: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/HandleInfo.pdsc + + export interface HandleInfo { + emailInfo?: EmailInfo; + phoneInfo?: PhoneInfo; + handleUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/IdentityVerificationProfileData.pdsc + + export interface IdentityVerificationProfileData { + encryptedFirstName: string; + encryptedLastName: string; + encryptedInferredBirthYear?: string; + encryptedCompanyUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/IdentityVerificationScoreEvent.pdsc + + export interface IdentityVerificationScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + scoringHeader: ScoringHeader; + reputationData: ReputationData; + memberLoginHistory: MemberLoginHistory; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + counters: Counter[]; + activatedLogic: ActivatedLogic; + jumioVerificationResult: Com.Linkedin.Avro2pegasus.Events.Checkpoint.JumioResponse; + profileData: IdentityVerificationProfileData; + identityVerificationScoringResult: IdentityVerificationScoringResult; + submissionId: string; + isProfileNameMatch: boolean; + isLoginHistoryCountryMatch: boolean; + isProfileCountryMatch: boolean; + encryptedContactEmail: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/IdentityVerificationScoringResult.pdsc + + export type IdentityVerificationScoringResult = + | 'APPROVED' + | 'AUDIT_APPROVED' + | 'REVIEW_REQUIRED' + | 'DENIED_FRAUD' + | 'DENIED_UNSUPPORTED_ID_TYPE' + | 'DENIED_UNSUPPORTED_ID_COUNTRY' + | 'DENIED_NOT_READABLE_ID' + | 'DENIED_NO_ID_UPLOADED' + | 'DENIED_EXPIRED_ID'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/InvitationScoreEvent.pdsc + + export interface InvitationScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + counterInfo: Counter[]; + recipients: string[]; + result: InvitationScoreResult; + activatedLogic: ActivatedLogic; + accountActions?: AccountActions; + sentInvitationCount?: number; + acceptedInvitationCount?: number; + rejectedInvitationCount?: number; + ignoredInvitationCount?: number; + blockedInvitationCount?: number; + totalInvitationSpamReportCount?: number; + activeInvitationSpamReportCount?: number; + reputationData?: ReputationData; + laserModelResults?: LaserModelResult[]; + inviterActivityStatistics?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ActivityStatistics; + rehabRestrictionData?: Com.Linkedin.Avro2pegasus.Events.RehabRestrictionData; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/InvitationScoreResult.pdsc + + export type InvitationScoreResult = 'APPROVED' | 'NOT_APPROVED'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/InvitationWithoutEmailRestrictionLevel.pdsc + + export type InvitationWithoutEmailRestrictionLevel = 'SELF_HEAL' | 'TWENTY_FOUR_HOURS' | 'PERMANENT'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/IPSubnetReputation.pdsc + + export interface IPSubnetReputation { + isAbusive: boolean; + isOwnedByCorp: boolean; + isOwnedByHostingService: boolean; + abuseScore: number; + pageViewEventCount: number; + uniqueMemberCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/JobReviewEvent.pdsc + + export interface JobReviewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + jobPosterUrn: string; + siftScore?: number; + activatedLogic: ActivatedLogic; + isJobContactEmailDomainOwnedByCorp: boolean; + jobPosterReputationLabel: MemberReputationLabel; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/LaserModelResult.pdsc + + export interface LaserModelResult { + name: string; + version: string; + score?: number; + classification?: string; + minorVersion?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/LoginAttemptData.pdsc + + export interface LoginAttemptData { + inputData: LoginInputData; + passwordVerificationResult?: PasswordVerificationResult; + isLoginWithProfile: boolean; + submissionId: string; + twoStepOptinStatus: TwoStepOptinStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/LoginInputData.pdsc + + export interface LoginInputData { + handleInfo: HandleInfo; + consumerKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/LoginScoreEvent.pdsc + + export interface LoginScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + scoringHeader: ScoringHeader; + challengeResult?: ChallengeResult; + accountActions: AccountActions; + reputationData: ReputationData; + memberLoginHistory: MemberLoginHistory; + attemptData: LoginAttemptData; + laserModelResults: LaserModelResult[]; + memberScoringAttributes: MemberScoringAttributes; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + counters: Counter[]; + activatedLogic: ActivatedLogic; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/MediaScanErrorEvent.pdsc + + export interface MediaScanErrorEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mediaUrn: string; + isReclassificationRequest: boolean; + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + errorType: MediaScanErrorType; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/MediaScanErrorType.pdsc + + export type MediaScanErrorType = 'DOWNLOAD' | 'OTHER' | 'DOWNLOAD_FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/MediaScannedEvent.pdsc + + export interface MediaScannedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mediaId: string; + fileHash: string; + scanResult: MediaScanResult; + detectedEngineList: string[]; + engineDefinitionHash: string; + fileSize: number; + firstScan: boolean; + scanTime: number; + score: number; + scanType: ScanType; + photoDnaHash?: number; + photoDnaMatchedHash?: number; + photoDnaDistance?: number; + photoDnaHashDatabase?: Com.Linkedin.Avro2pegasus.Events.Contentfilter.PhotoDnaHashDatabase; + photoDnaMatchedHashes?: PhotoDnaMatchedHash[]; + isReclassificationRequest: boolean; + contentSource?: Com.Linkedin.Avro2pegasus.Events.ContentSource; + fileHashes?: FileHashInfo[]; + ucfContextUrn?: string; + detonationMetadata?: Com.Linkedin.Avro2pegasus.Events.Contentfilter.MSSonarDetonationMetadata; + mimeType?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/MediaScanResult.pdsc + + export type MediaScanResult = 'DIRTY' | 'CLEAN' | 'NOT_SCANNED'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/MemberAccountAttributes.pdsc + + export interface MemberAccountAttributes { + subscriptionAccountAttributes?: SubscriptionAccountAttributes[]; + isInfluencer?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/MemberAccountManagementScoreEvent.pdsc + + export interface MemberAccountManagementScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + scoringHeader: ScoringHeader; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + submissionId: string; + activatedLogic: ActivatedLogic; + accountLabel?: Com.Linkedin.Avro2pegasus.Events.AccountLabel; + scoringResult: ScoringResult; + lastChallengeTypeValidated?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ChallengeType; + counters: Counter[]; + reputationData: ReputationData; + accountManagementScenario: Com.Linkedin.Avro2pegasus.Common.Events.Ucv.AccountManagementScenario; + handleChangeData?: Com.Linkedin.Avro2pegasus.Common.Events.Ucv.HandleChangeData; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/MemberCluster.pdsc + + export interface MemberCluster { + clusterType: ClusterType; + clusterValue: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/MemberLoginHistory.pdsc + + export interface MemberLoginHistory { + browserIdMatchCount: number; + signedBrowserIdMatchCount: number; + ipSubnetMatchCount: number; + orgMatchCount: number; + asnMatchCount: number; + countryMatchCount: number; + userAgentMatchCount: number; + historyEventsCount: number; + isAsnInMemberSessionHistory: boolean; + isAsnInConnectionSessionHistory: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/MemberReputationLabel.pdsc + + export type MemberReputationLabel = 'REAL' | 'COULD_NOT_CLASSIFY'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/MemberScoringAttributes.pdsc + + export interface MemberScoringAttributes { + strictnessHint?: StrictnessHint; + presetChallenge?: Com.Linkedin.Avro2pegasus.Events.SecurityChallengeType; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/MergeConnectionsScoreEvent.pdsc + + export interface MergeConnectionsScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + scoringHeader: ScoringHeader; + sourceMemberUrn: string; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + counters: Counter[]; + targetProfileData: IdentityVerificationProfileData; + sourceProfileData: IdentityVerificationProfileData; + activatedLogic: ActivatedLogic; + scoringResult: MergeConnectionsScoringResult; + submissionId: string; + isNameMatch: boolean; + isCountryMatch: boolean; + isIPSubnetMatch: boolean; + isASNMatch: boolean; + isBrowserIdMatch: boolean; + isCompanyMatch?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/MergeConnectionsScoringResult.pdsc + + export type MergeConnectionsScoringResult = 'APPROVED' | 'AUDIT_APPROVED' | 'REVIEW_REQUIRED'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/MinorExplicitClassificationMetadata.pdsc + + export interface MinorExplicitClassificationMetadata { + mediaUrn: string; + matchType: MinorExplicitMatchType; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/MinorExplicitMatchType.pdsc + + export type MinorExplicitMatchType = 'NCMEC_HASHES' | 'NCMEC_INDUSTRY_HASHES'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ModelResult.pdsc + + export interface ModelResult { + name: string; + modelType: ModelType; + majorVersion: string; + minorVersion?: number; + score?: number; + classification?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ModelType.pdsc + + export type ModelType = 'LASER' | 'QUASAR'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/OrganizationReputation.pdsc + + export interface OrganizationReputation { + isAbusive: boolean; + isOwnedByHostingService: boolean; + abuseScore: number; + pageViewEventCount: number; + uniqueMemberCount: number; + uniqueIpSubnetCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/PasswordResetScoreEvent.pdsc + + export interface PasswordResetScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + scoringHeader: ScoringHeader; + submissionId: string; + handle: HandleInfo; + reputationData?: ReputationData; + memberAccountAttributes?: MemberAccountAttributes; + memberLoginHistory?: MemberLoginHistory; + lastChallengeTypeValidated?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ChallengeType; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + scoringResult: ScoringResult; + modelResults: ModelResult[]; + activatedLogic: ActivatedLogic; + accountActions: AccountActions; + accountLabel?: Com.Linkedin.Avro2pegasus.Events.AccountLabel; + counters: Counter[]; + activityStatistics?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ActivityStatistics; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/PasswordVerificationResult.pdsc + + export type PasswordVerificationResult = + | 'FAIL' + | 'LOGIN_RESTRICTED' + | 'PASSWORD_INVALIDATED' + | 'PASSWORD_WEAK' + | 'PASS' + | 'PASS_2STEP_VERIFIED' + | 'TWO_STEP_PIN_EXPIRED' + | 'CLOAK_TOKEN_EXPIRED' + | 'SSO_SESSION_EXPIRED' + | 'SSO_UNAUTHORIZED' + | 'SSO_TWO_STEP_REQUIRED' + | 'SSO_UNAUTHORIZED_EXTERNAL'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/PhoneInfo.pdsc + + export interface PhoneInfo { + encryptedPhoneNumber: string; + encryptedCanonicalPhoneNumber: string; + countryCode: string; + lastFourDigits: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/PhotoDnaMatchedHash.pdsc + + export interface PhotoDnaMatchedHash { + hash: number; + distance: number; + hashDatabase: Com.Linkedin.Avro2pegasus.Events.Contentfilter.PhotoDnaHashDatabase; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/PYMKRecommendationInfo.pdsc + + export interface PYMKRecommendationInfo { + maxMemberUrn: string; + minMemberUrn: string; + topRecommendedMemberUrn: string; + recommendationCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/QueryTriggeringType.pdsc + + export type QueryTriggeringType = 'USER_INITIATED' | 'SYSTEM_REQUEST'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/RegistrationAttemptData.pdsc + + export interface RegistrationAttemptData { + inputData: RegistrationInputData; + validationFailureReasons: RegistrationValidationFailureReason[]; + registrationType: RegistrationType; + submissionId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/RegistrationInputData.pdsc + + export interface RegistrationInputData { + firstName: string; + lastName: string; + handleInfo: HandleInfo; + thirdPartyProfileProvider?: ThirdPartyProfileProvider; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/RegistrationScoreEvent.pdsc + + export interface RegistrationScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + scoringHeader: ScoringHeader; + challengeResult?: ChallengeResult; + accountActions: AccountActions; + reputationData: ReputationData; + attemptData: RegistrationAttemptData; + laserModelResults: LaserModelResult[]; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + counterInfo: Counter[]; + activatedLogic: ActivatedLogic; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/RegistrationType.pdsc + + export type RegistrationType = 'COLD' | 'WARM'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/RegistrationValidationFailureReason.pdsc + + export type RegistrationValidationFailureReason = 'HANDLE_TAKEN' | 'INVALID_NAME' | 'MALFORMED_HANDLE'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ReporterType.pdsc + + export type ReporterType = 'INFLUENCER' | 'THREAD_AUTHOR' | 'LI_EMPLOYEE' | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ReportSpamEvent.pdsc + + export interface ReportSpamEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + authorMemberId: number; + ugcContent?: { [id: string]: string }; + contentSource: string; + contentCreationTime: number; + reportSpamResult?: ReportSpamResultType; + isSpam: boolean; + needsReview: boolean; + scorerStage?: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + sequenceId: number; + currentModelRiskDecisionResult?: SpamDecisionResult; + proposedModelRiskDecisionResult?: SpamDecisionResult; + metaData?: { [id: string]: string }; + contentSpamClassificationResult?: Com.Linkedin.Avro2pegasus.Events.Contentfilter.ContentSpamClassificationResult; + activatedRules?: string[]; + scoredContentId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + authorActivityStatistics?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ActivityStatistics; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ReportSpamPublicEvent.pdsc + + export interface ReportSpamPublicEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + authorUrn: string; + contentUrn?: string; + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + contentCreationTime: number; + reportSpamResult?: ReportSpamResultType; + isSpam: boolean; + isReviewNeeded: boolean; + scorerStage?: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + sequenceId: number; + currentModelRiskDecisionResult?: SpamDecisionResult; + proposedModelRiskDecisionResult?: SpamDecisionResult; + threadUrn?: string; + threadAuthorUrn?: string; + reporterType?: ReporterType; + contentSpamClassificationResult?: Com.Linkedin.Avro2pegasus.Events.Contentfilter.ContentSpamClassificationResult; + activatedRules?: string[]; + scoredContentId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + counterInfo?: { [id: string]: number }; + authorActivityStatistics?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ActivityStatistics; + userFlaggingReason?: UserFlaggingReason; + reportSpamModelScore?: number; + reportSpamModelVersion?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ReportSpamResultType.pdsc + + export type ReportSpamResultType = + | 'AUTHOR_ALREADY_SPAMMER' + | 'REPORTER_SPAMMER' + | 'REPORTER_FUSE_RESTRICTED' + | 'REPORTER_JOIN_DATE_TOO_RECENT' + | 'SCORING_SUCCEEDED' + | 'SCORING_FAILED' + | 'UNDO_REPORT' + | 'MISSING_AUTHOR'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ReputationData.pdsc + + export interface ReputationData { + geoReputation?: GeoReputation; + browserIdReputation?: BrowserIdReputation; + emailDomainReputation?: EmailDomainReputation; + memberReputationLabel?: MemberReputationLabel; + requestCookieNameCombinationReputation?: RequestCookieNameCombinationReputation; + emailAddressReputation?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.EmailAddressReputation; + countryMismatchReputation?: Com.Linkedin.Avro2pegasus.Common.Events.Ucv.CountryMismatchReputation; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/RequestCookieNameCombinationReputation.pdsc + + export interface RequestCookieNameCombinationReputation { + isAbusive?: boolean; + abuseScore?: number; + sortedFilteredCookieNames: string[]; + isBsCookieNew: boolean; + numberOfImportantUserRequestEvents?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ReviewPriority.pdsc + + export type ReviewPriority = 'LOW' | 'MEDIUM' | 'HIGH'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScanType.pdsc + + export type ScanType = 'ANTIVIRUS' | 'NUDITY' | 'MINOR_EXPLICIT' | 'MEDIA_REPUTATION' | 'DETONATION'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScoreAddressBookContact.pdsc + + export interface ScoreAddressBookContact { + emails: string; + phoneNumbers: string; + firstName: string; + lastName: string; + company: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScoreAddressBookContactEvent.pdsc + + export interface ScoreAddressBookContactEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + scoringResult: ScoringActionResult; + submissionID: string; + contact: ScoreAddressBookContact; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScoreDecision.pdsc + + export type ScoreDecision = 'ACCEPT' | 'REJECT' | 'CHALLENGE'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScoringActionResult.pdsc + + export type ScoringActionResult = 'ACCEPT' | 'REJECT'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScoringFlow.pdsc + + export type ScoringFlow = 'FANOUT' | 'TAINTING' | 'CLUSTERING'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScoringHeader.pdsc + + export interface ScoringHeader { + signedBrowserId: string; + signedBrowserIdIssueTime: number; + httpMethod?: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + query?: string; + cookieNames?: string[]; + headers?: { [id: string]: string }; + headerNames?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScoringMode.pdsc + + export type ScoringMode = 'REAL_TIME' | 'CACHE' | 'SIMULATION'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScoringResult.pdsc + + export interface ScoringResult { + scoreDecision: ScoreDecision; + challengeType: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ChallengeType; + scoreDecisionReasons: Com.Linkedin.Avro2pegasus.Common.Events.Ucv.ScoreDecisionReason[]; + inControlGroup: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScrapingScoreEvent.pdsc + + export interface ScrapingScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + scoringHeader: ScoringHeader; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + scoringResult: ScrapingScoringResult; + scoringMode: ScoringMode; + activatedLogic: ActivatedLogic; + whitelistType?: UsageControlWhitelistType; + userAgentBotType?: UserAgentBotType; + counters: Counter[]; + reputationData: ReputationData; + laserModelResults: LaserModelResult[]; + isEligibleForModels?: boolean; + isIpSoftBlockCreated?: boolean; + vendorBotDetectionData?: VendorBotDetectionData; + falsePositivesControllerData?: Com.Linkedin.Avro2pegasus.Common.Ucv.FalsePositivesControllerData; + initialPageRequestTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + isInitialPageRequestTreeIdValid?: boolean; + requestFCookie?: string; + responseFCookie?: string; + distributionModelScores?: DistributionModelScoreMetadata[]; + dnsDomainEntry?: DnsDomainEntry; + serviceCallTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + scoringDuration?: number; + challengeType?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ChallengeType; + submissionId?: string; + hasValidCCookie?: boolean; + lastChallengeTypeValidated?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ChallengeType; + responseBCookie?: string; + fid?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ScrapingScoringResult.pdsc + + export type ScrapingScoringResult = 'ACCEPT' | 'REDIRECT' | 'REJECT' | 'CHALLENGE'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/SecondaryScore.pdsc + + export interface SecondaryScore { + secondaryFeatureName: DistributionModelFeatureName; + secondaryScore: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/SentinelPartialPageServedEvent.pdsc + + export interface SentinelPartialPageServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + fid: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/SentinelTimingEvent.pdsc + + export interface SentinelTimingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + initialPageRequestTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + fid?: string; + excludePathsLookupDurationMicros: number; + whitelistLookupDurationMicros: number; + restrictedIpFilterLookupDurationMicros: number; + individualIpRestrictionLookUpDurationMicros: number; + classCIpRestrictionLookUpDurationMicros: number; + softBlockIpRestrictionLookUpDurationMicros: number; + orgRestrictionLookUpDurationMicros: number; + blockFilterDurationMicros: number; + preFcookieValidationConditionsDurationMicros: number; + fingerprintHeadersCheckDurationMicros: number; + respondPartialPageDurationMicros: number; + fidCheckDurationMicros: number; + fcookieCheckDurationMicros: number; + l1RoundTripDurationMicros: number; + interpretL1ResponseAndFinalResponseDurationMicros: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/SpamDecisionResult.pdsc + + export interface SpamDecisionResult { + modelName: string; + modelVersion: number; + isSpam: boolean; + needsReview: boolean; + counters?: { [id: string]: string }; + scoringSucceeded: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/SponsoredAccountType.pdsc + + export type SponsoredAccountType = + | 'PERSONAL' + | 'BUSINESS' + | 'ENTERPRISE' + | 'SYSTEM' + | 'SPONSORED_JOB' + | 'TEST' + | 'SLIDESHARE'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/StrictnessHint.pdsc + + export type StrictnessHint = 'LEVEL_ONE' | 'LEVEL_TWO'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/SubscriptionAccountAttributes.pdsc + + export interface SubscriptionAccountAttributes { + accountType: AccountType; + isTrialUser?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ThirdPartyProfileProvider.pdsc + + export type ThirdPartyProfileProvider = 'FACEBOOK' | 'WECHAT'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ThirdPartyScrapingScoreEvent.pdsc + + export interface ThirdPartyScrapingScoreEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + scoringHeader: ScoringHeader; + thirdPartyEntityIdentifier: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ThirdPartyEntityIdentifier; + scorerStage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + scoringResult: ScoringResult; + modelResults: ModelResult[]; + activatedLogic: ActivatedLogic; + accountActions: AccountActions; + counters: Counter[]; + originApplicationUrn: string; + requestedEntities: string[]; + queryTriggeringType: QueryTriggeringType; + rawIpAddress?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + hashedIpAddress?: string; + projections?: string; + thirdPartyRequestId?: string; + linkedInTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + responseStatusCode?: number; + responseEntityUrns?: string[]; + accountLabel?: Com.Linkedin.Avro2pegasus.Events.AccountLabel; + activityStatistics?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ActivityStatistics; + reputationData?: ReputationData; + memberAccountAttributes?: MemberAccountAttributes; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/TwoStepOptinStatus.pdsc + + export type TwoStepOptinStatus = 'OPTED_IN' | 'OPTED_OUT' | 'FORCE_OPTED_OUT'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/UgcSubmitResultType.pdsc + + export type UgcSubmitResultType = 'QUEUE_FULL' | 'ALREADY_SPAMMER' | 'QUEUED_FOR_SCORING' | 'MISSING_MEMBER'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/UgcValidationRequestEvent.pdsc + + export interface UgcValidationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + recipientMemberIDs?: number[]; + recipientEmails?: string[]; + ugcContent?: { [id: string]: string }; + requestAction: string; + ugcSubmitResult?: UgcSubmitResultType; + currentModelRiskDecisionResult?: SpamDecisionResult; + proposedModelRiskDecisionResult?: SpamDecisionResult; + scorerStage?: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + sequenceId: number; + csRepRiskDecisionResult?: CsRepSpamDecisionResult; + metaData?: { [id: string]: string }; + contentSpamClassificationResult?: Com.Linkedin.Avro2pegasus.Events.Contentfilter.ContentSpamClassificationResult; + activatedRules?: string[]; + isReviewNeeded?: boolean; + scoredContentId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + memberActivityStatistics?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ActivityStatistics; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/UgcValidationRequestPublicEvent.pdsc + + export interface UgcValidationRequestPublicEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + recipientMemberIDs?: number[]; + recipientEmails?: string[]; + requestAction: string; + ugcSubmitResult?: UgcSubmitResultType; + currentModelRiskDecisionResult?: SpamDecisionResult; + proposedModelRiskDecisionResult?: SpamDecisionResult; + sequenceId: number; + scorerStage?: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + csRepRiskDecisionResult?: CsRepSpamDecisionResult; + metaData?: { [id: string]: string }; + contentSpamClassificationResult?: Com.Linkedin.Avro2pegasus.Events.Contentfilter.ContentSpamClassificationResult; + activatedRules?: string[]; + isReviewNeeded?: boolean; + scoredContentId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + memberActivityStatistics?: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.ActivityStatistics; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/URLValidationRequestEvent.pdsc + + export interface URLValidationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + requestType: string; + urls?: string[]; + shortLinks?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/UsageControlWhitelistType.pdsc + + export type UsageControlWhitelistType = 'ORG' | 'IP' | 'DNS_DOMAIN'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/UserAgentBotType.pdsc + + export type UserAgentBotType = 'GOOD'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/UserFlaggingReason.pdsc + + export type UserFlaggingReason = + | 'ADVERTISEMENT' + | 'COPYRIGHT' + | 'PORNOGRAPHIC' + | 'INAPPROPRIATE_CONTENT' + | 'INAPPROPRIATE_PICTURE' + | 'MISREPRESENTATION' + | 'OUT_OF_DATE' + | 'OTHER' + | 'TERRORISM' + | 'SHOCKING_OR_VIOLENT' + | 'SPAM_CONTENT' + | 'PLAGIARISM' + | 'IRRELEVANT' + | 'PROMOTION' + | 'GRATUITOUSLY_SHOCKING' + | 'HARASSMENT' + | 'THREATS_OF_VIOLENCE' + | 'ACCOUNT_HACKED' + | 'OFFENSIVE' + | 'IMPERSONATION' + | 'FAKE_IDENTITY' + | 'FAKE_CONTENT' + | 'SUICIDAL' + | 'INACCURATE_MEMBER_INFORMATION' + | 'DECEASED' + | 'SEEN_OFTEN' + | 'BROKEN_LINKS' + | 'INAPPROPRIATE_LINKS' + | 'HATE_SPEECH' + | 'TERRORISM_OR_EXTREME_VIOLENCE' + | 'ADULT_CONTENT' + | 'VIOLATION_OF_HUMAN_DIGNITY' + | 'GENOCIDE_DENIAL' + | 'CLOSED_JOB' + | 'INCORRECT_JOB_COMPANY' + | 'INCORRECT_JOB_LOCATION' + | 'INCORRECT_JOB_DETAIL_FORMAT' + | 'INVALID_JOB_POST'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/ValidateUriEvent.pdsc + + export interface ValidateUriEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + uri?: string; + foundUri?: string; + resultDangerous: boolean; + resultType?: ValidateUriResponseType; + isRedirectURL?: boolean; + uriValidationResultListForRedirects: Com.Linkedin.Avro2pegasus.Events.Common.Ucv.UriValidationResult[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/ValidateUriResponseType.pdsc + + export type ValidateUriResponseType = + | 'GOOGLE_MALWARE' + | 'GOOGLE_PHISHING' + | 'SPAMHAUS' + | 'SURBL' + | 'FUSE' + | 'INTERNAL_WHITELIST' + | 'RESERVED_IP' + | 'OTHER' + | 'CONFUSABLE'; + // Generated from: com/linkedin/avro2pegasus/events/ucv/VendorBotDetectionData.pdsc + + export interface VendorBotDetectionData { + isFlaggedAsBot: boolean; + flaggingReason?: string; + browserInstanceFingerprint?: string; + userFingerprint?: string; + detectionLatencyInSec?: number; + isHostingAsn?: boolean; + isFakeUserAgent?: boolean; + hasFakeBrowserProperty?: boolean; + hasCopyPasteBehavior?: boolean; + cpuCores?: number; + isKnownBotTool?: boolean; + inferredBrowserFamily?: string; + isMobile?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ucv/VendorBotDetectionEvent.pdsc + + export interface VendorBotDetectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + vendorBotDetectionData?: VendorBotDetectionData; + initialPageRequestTreeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + isInitialPageRequestTreeIdValid?: boolean; + requestFCookie?: string; + responseFCookie?: string; + httpMethod?: Com.Linkedin.Avro2pegasus.Events.Common.HttpMethod; + eventSequenceIndex?: number; + encryptedInitialPageRequestTreeId?: string; + useCase?: string; + } + } + namespace Ufo { + // Generated from: com/linkedin/avro2pegasus/events/ufo/UnifiedFollowsTelemetryFindByFromAndToEntityTypeEvent.pdsc + + export interface UnifiedFollowsTelemetryFindByFromAndToEntityTypeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + fromUrn: string; + toEntityType: string; + includeConnections: boolean; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + numberOfElements?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ufo/UnifiedFollowsTelemetryFindByToAndFromEntityTypeEvent.pdsc + + export interface UnifiedFollowsTelemetryFindByToAndFromEntityTypeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + toUrn: string; + fromEntityType: string; + includeConnections: boolean; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + numberOfElements?: number; + } + } + namespace Ugc { + // Generated from: com/linkedin/avro2pegasus/events/ugc/Attribute.pdsc + + export interface Attribute { + start: number; + length: number; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/AttributedText.pdsc + + export interface AttributedText { + text: string; + inferredLocale?: string; + attributes: Attribute[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/AuthorContentInContainerDeleteRequestEvent.pdsc + + export interface AuthorContentInContainerDeleteRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + authorUrn: string; + containerUrn: string; + applicationUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ContainerPendingPostPurgeEvent.pdsc + + export interface ContainerPendingPostPurgeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + containerUrn: string; + entityUrn: string; + createdTimestamp: number; + deletedTimestamp: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/Distribution.pdsc + + export interface Distribution { + externalDistributionChannels: ExternalDistributionChannel[]; + feedDistribution: FeedDistribution; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ExternalDistributionChannel.pdsc + + export interface ExternalDistributionChannel { + externalDistributionChannelType: ExternalDistributionChannelType; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ExternalDistributionChannelType.pdsc + + export type ExternalDistributionChannelType = 'TWITTER' | 'TENCENT' | 'WEIBO'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/FeedDistribution.pdsc + + export type FeedDistribution = 'NONE' | 'MAIN_FEED' | 'CONTAINER_ONLY'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/GroupContentVisibility.pdsc + + export type GroupContentVisibility = 'GROUP_MEMBERS'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/IntentType.pdsc + + export type IntentType = 'QUESTION'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/LandingPage.pdsc + + export interface LandingPage { + landingPageUrl: string; + landingPageTitle?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/LifecycleState.pdsc + + export type LifecycleState = + | 'DRAFT' + | 'PUBLISH_REQUESTED' + | 'PUBLISH_SUCCEEDED' + | 'PUBLISH_FAILED' + | 'DELETED'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/MemberNetworkVisibility.pdsc + + export type MemberNetworkVisibility = 'CONNECTIONS' | 'PUBLIC' | 'LOGGED_IN' | 'CONTAINER'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/NativeMediaSource.pdsc + + export type NativeMediaSource = 'APP_CAPTURED' | 'PRE_RECORDED'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/Origin.pdsc + + export type Origin = + | 'API' + | 'ELEVATE' + | 'FIREFOX' + | 'FLAGSHIP' + | 'IN_SHARE' + | 'DESKTOP' + | 'LSS' + | 'PULSE' + | 'SLIDESHARE' + | 'LI_BADGE' + | 'ANET' + | 'SLIDESHARE_MIGRATION' + | 'ADS' + | 'CONTAINER_FEED' + | 'DAILY_RUNDOWN' + | 'DEEPLINK' + | 'FEED' + | 'HASHTAG_FEED' + | 'JOB_PROMO' + | 'JOB_SEARCH' + | 'JOB_HOME' + | 'KEYBOARD_SHORTCUT' + | 'LEARNING' + | 'LITE' + | 'MEDIA_ENTITY_PAGE' + | 'NAVIGATION_BAR' + | 'NOTIFICATION' + | 'ORGANIZATION' + | 'ORGANIZATION_SHARE' + | 'PROFILE' + | 'PROFILE_MORE_PAGE' + | 'PUBLISHING' + | 'RESHARE' + | 'SHARE_EXTENSION' + | 'WEBVIEW' + | 'MISSING'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/OverlayMetadata.pdsc + + export interface OverlayMetadata { + tapTargets: TapTarget[]; + overlayTexts: string[]; + stickers: string[]; + taggedEntities: TaggedEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/PercentageOffsetPoint.pdsc + + export interface PercentageOffsetPoint { + xOffsetPercentage: number; + yOffsetPercentage: number; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/PercentageOffsetRectangle.pdsc + + export interface PercentageOffsetRectangle { + firstCorner: PercentageOffsetPoint; + secondCorner: PercentageOffsetPoint; + thirdCorner: PercentageOffsetPoint; + fourthCorner: PercentageOffsetPoint; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/PostContent.pdsc + + export interface PostContent { + commentary: Com.Linkedin.Avro2pegasus.Events.Common.AttributedText; + content?: Com.Linkedin.Avro2pegasus.Events.Common.Content.ActionableContent; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ProcessingFailedStateInfo.pdsc + + export interface ProcessingFailedStateInfo { + processingFailedReasons: Com.Linkedin.Avro2pegasus.Events.Common.Ugc.ProcessingType[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ProcessingStateInfo.pdsc + + export interface ProcessingStateInfo { + assetStatus?: Com.Linkedin.Avro2pegasus.Events.Common.Ugc.ProcessingState; + reviewStatus?: Com.Linkedin.Avro2pegasus.Events.Common.Ugc.ProcessingState; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/PublishFailedStateInfo.pdsc + + export interface PublishFailedStateInfo { + publishRequestStep: PublishRequestStep; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/PublishRequestedStateInfo.pdsc + + export interface PublishRequestedStateInfo { + contentStatus?: Com.Linkedin.Avro2pegasus.Events.Common.Ugc.ProcessingState; + reviewStatus?: Com.Linkedin.Avro2pegasus.Events.Common.Ugc.ProcessingState; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/PublishRequestStep.pdsc + + export type PublishRequestStep = 'CONTENT_PROCESSING' | 'REVIEW'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/PublishSucceededStateInfo.pdsc + + export interface PublishSucceededStateInfo { + editedByAuthor: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ReshareContext.pdsc + + export interface ReshareContext { + parentUrn: string; + rootUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ResponseContext.pdsc + + export interface ResponseContext { + rootUrn: string; + parentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ShareContent.pdsc + + export interface ShareContent { + shareCommentary: AttributedText; + media: ShareMedia[]; + shareMediaCategory: ShareMediaCategory; + shareFeatures?: ShareFeatures; + primaryLandingPageUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ShareFeatures.pdsc + + export interface ShareFeatures { + hashtags?: string[]; + intent?: IntentType; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ShareMedia.pdsc + + export interface ShareMedia { + title?: AttributedText; + description?: AttributedText; + mediaUrn: string; + status: ShareMediaStatus; + originalUrl?: string; + landingPage?: LandingPage; + overlayMetadata?: OverlayMetadata; + nativeMediaSource?: NativeMediaSource; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/ShareMediaCategory.pdsc + + export type ShareMediaCategory = + | 'ARTICLE' + | 'IMAGE' + | 'NONE' + | 'RICH' + | 'VIDEO' + | 'LEARNING_COURSE' + | 'JOB' + | 'QUESTION' + | 'ANSWER' + | 'CAROUSEL' + | 'TOPIC' + | 'NATIVE_DOCUMENT' + | 'URN_REFERENCE' + | 'LIVE_VIDEO'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/ShareMediaStatus.pdsc + + export type ShareMediaStatus = 'PROCESSING' | 'READY' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/SkillSubmittedInPost.pdsc + + export interface SkillSubmittedInPost { + skillTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/SpecificContent.pdsc + + export interface SpecificContent { + specificContentType: SpecificContentType; + shareContent?: ShareContent; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/SpecificContentType.pdsc + + export type SpecificContentType = 'SHARE'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/SponsoredContentVisibility.pdsc + + export type SponsoredContentVisibility = 'DARK'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/TaggedEntity.pdsc + + export interface TaggedEntity { + type: TaggedEntityType; + position?: PercentageOffsetRectangle; + taggedEntityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/TaggedEntityType.pdsc + + export type TaggedEntityType = 'PHOTO_TAG' | 'TAP_TARGET'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/TapTarget.pdsc + + export interface TapTarget { + area: PercentageOffsetRectangle; + attribute: TapTargetAttribute; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/TapTargetAttribute.pdsc + + export interface TapTargetAttribute { + attributeType: TapTargetAttributeType; + memberUrn?: string; + hashTag?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/TapTargetAttributeType.pdsc + + export type TapTargetAttributeType = 'MEMBER_URN' | 'HASH_TAG'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/Target.pdsc + + export interface Target { + industryUrns: string[]; + jobFunctionUrns: string[]; + seniorityUrns: string[]; + locationUrns: string[]; + staffCountRanges: Com.Linkedin.Avro2pegasus.Events.Common.EmployeeCountRangeType[]; + interfaceLocales: Com.Linkedin.Avro2pegasus.Events.Locale[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/TargetAudience.pdsc + + export interface TargetAudience { + targetedEntities: Target[]; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/UgcPostV2Event.pdsc + + export interface UgcPostV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + postUrn: string; + authorUrn: string; + postContent: PostContent; + containerEntityUrn?: string; + visibility: MemberNetworkVisibility; + distribution: Com.Linkedin.Avro2pegasus.Events.Common.Ugc.DistributionV2; + lifecycleState: LifecycleState; + publishRequestedStateInfo?: PublishRequestedStateInfo; + publishSucceededStateInfo?: PublishSucceededStateInfo; + publishFailedStateInfo?: PublishFailedStateInfo; + published?: Com.Linkedin.Avro2pegasus.Events.Common.AuditStamp; + reshareContext?: ReshareContext; + origin: Origin; + developerApplicationUrn?: string; + contentCertificationRecord?: string; + versionTag: Com.Linkedin.Avro2pegasus.Events.Common.VersionTag; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/UserGeneratedContentContainerDeletedEvent.pdsc + + export interface UserGeneratedContentContainerDeletedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + containerUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/UserGeneratedContentEvent.pdsc + + export interface UserGeneratedContentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + idUrn: string; + authorUrn: string; + visibility: Visibility; + targetAudience?: TargetAudience; + contentCertificationRecord?: string; + permalinkSuffix?: string; + firstPublishedTime?: number; + lifecycleState: UserGeneratedContentLifecycleState; + specificContent: SpecificContent; + versionTag?: string; + responseContext?: ResponseContext; + skillsSubmittedinPost: SkillSubmittedInPost[]; + containerEntityUrn?: string; + origin?: Com.Linkedin.Avro2pegasus.Ugc.Origin; + clientApplication?: string; + processingStateInfo?: ProcessingStateInfo; + processingFailedStateInfo?: ProcessingFailedStateInfo; + isOnlyUTMQueryParameterUpdated?: boolean; + firstPublishedActor?: string; + distribution?: Distribution; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/UserGeneratedContentLifecycleState.pdsc + + export type UserGeneratedContentLifecycleState = + | 'DRAFT' + | 'PUBLISHED' + | 'PROCESSING' + | 'PROCESSING_FAILED' + | 'DELETED' + | 'PUBLISHED_EDITED'; + // Generated from: com/linkedin/avro2pegasus/events/ugc/UserGeneratedContentReviewDoneEvent.pdsc + + export interface UserGeneratedContentReviewDoneEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + userGeneratedContentUrn: string; + versionTag: string; + contentHash: string; + associatedEntityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/Visibility.pdsc + + export interface Visibility { + visibilityType: VisibilityType; + memberNetworkVisibility?: MemberNetworkVisibility; + sponsoredContentVisibility?: SponsoredContentVisibility; + groupContentVisibility?: GroupContentVisibility; + } + // Generated from: com/linkedin/avro2pegasus/events/ugc/VisibilityType.pdsc + + export type VisibilityType = 'MEMBER_NETWORK' | 'SPONSORED_CONTENT' | 'GROUP_CONTENT'; + } + namespace Vector { + // Generated from: com/linkedin/avro2pegasus/events/vector/CompleteStatus.pdsc + + export type CompleteStatus = 'SUCCESS' | 'FAILED' | 'CANCELLED'; + // Generated from: com/linkedin/avro2pegasus/events/vector/LiveEventAllocationResult.pdsc + + export type LiveEventAllocationResult = 'ALLOCATED' | 'UNAVAILABLE' | 'ERRORS'; + // Generated from: com/linkedin/avro2pegasus/events/vector/LiveEventOperationType.pdsc + + export type LiveEventOperationType = + | 'CREATION_STARTED' + | 'CREATED' + | 'ALLOCATED' + | 'RECYCLED' + | 'STREAM_STARTED' + | 'DELETED'; + // Generated from: com/linkedin/avro2pegasus/events/vector/OperationType.pdsc + + export type OperationType = 'CREATED' | 'COMMITTED' | 'REPROCESSED' | 'DELETION_SCHEDULED' | 'DELETED'; + // Generated from: com/linkedin/avro2pegasus/events/vector/VectorLiveAllocationRequestEvent.pdsc + + export interface VectorLiveAllocationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + account: string; + requestedAt: number; + allocationResult: LiveEventAllocationResult; + autoCaptionLanguage?: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/events/vector/VectorLiveCreateEvent.pdsc + + export interface VectorLiveCreateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + assetUrn: string; + eventId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/vector/VectorLiveCreateV2Event.pdsc + + export interface VectorLiveCreateV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + account: string; + eventId: string; + autoCaptionLanguage?: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/events/vector/VectorLiveEventOperationEvent.pdsc + + export interface VectorLiveEventOperationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + liveEventUrn: string; + account: string; + assetUrn?: string; + operationType: LiveEventOperationType; + operationTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/vector/VectorLiveRecycleEvent.pdsc + + export interface VectorLiveRecycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + assetUrn: string; + currentEventId: string; + newEventId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/vector/VectorLiveRecycleV2Event.pdsc + + export interface VectorLiveRecycleV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + assetUrn: string; + account: string; + currentEventId: string; + newEventId: string; + isLiveAssetDeletionRequired: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/vector/VectorLiveResetEvent.pdsc + + export interface VectorLiveResetEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + assetUrn: string; + eventId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/vector/VectorLiveResetV2Event.pdsc + + export interface VectorLiveResetV2Event { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + account: string; + eventId: string; + } + // Generated from: com/linkedin/avro2pegasus/events/vector/VectorMigrationTaskCompleteEvent.pdsc + + export interface VectorMigrationTaskCompleteEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobName: string; + batchId: string; + blobIndicator: string; + foreignKey?: string; + assetUrn: string; + completeStatus: CompleteStatus; + diagnosis?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/vector/VectorOperationEvent.pdsc + + export interface VectorOperationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + assetUrn: string; + tenantUrn: string; + operationType: OperationType; + serviceName: string; + transientAsset?: boolean; + } + } + namespace Video { + namespace Prefetching { + // Generated from: com/linkedin/avro2pegasus/events/video/prefetching/VideoCacheLookupEvent.pdsc + + export interface VideoCacheLookupEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + digitalAssetURN: string; + status: Com.Linkedin.Avro2pegasus.Events.Common.Video.Prefetching.VideoCacheLookupStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/video/prefetching/VideoCacheStatusEvent.pdsc + + export interface VideoCacheStatusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + digitalAssetURN: string; + status: Com.Linkedin.Avro2pegasus.Events.Common.Video.Prefetching.VideoCacheStatus; + cacheSize: number; + } + } + } + namespace Viral { + // Generated from: com/linkedin/avro2pegasus/events/viral/ViralCardActionEvent.pdsc + + export interface ViralCardActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viralCardTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + controlUrn: string; + actionCategory: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + } + // Generated from: com/linkedin/avro2pegasus/events/viral/ViralCardImpressionEvent.pdsc + + export interface ViralCardImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viralPanelTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + viralCardTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + listPosition?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + visibleTime?: number; + duration?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/viral/ViralPanelImpressionEvent.pdsc + + export interface ViralPanelImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + viralPanelTracking: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + } + namespace Voyager { + // Generated from: com/linkedin/avro2pegasus/events/voyager/BufferedFrontendVoyagerDecorationMonitoringEvent.pdsc + + export interface BufferedFrontendVoyagerDecorationMonitoringEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + frontendDecoEndpointUrn: string; + applicationInstanceUrn: string; + dataPoints: RecipeDataPoint[]; + } + // Generated from: com/linkedin/avro2pegasus/events/voyager/CodeQualityMetricsEvent.pdsc + + export interface CodeQualityMetricsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + multiProductUrn: string; + commit: string; + buildId: string; + metricsData: MetricsEvent[]; + } + // Generated from: com/linkedin/avro2pegasus/events/voyager/FlagshipLeverSaazMigrationProgressEvent.pdsc + + export interface FlagshipLeverSaazMigrationProgressEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + checkoutTime: number; + multiProductVersion: string; + multiProductUrn: string; + pillarName?: string; + aclName?: string; + file: string; + migratedLoc: number; + unmigratedLoc: number; + } + // Generated from: com/linkedin/avro2pegasus/events/voyager/LixEnforcerCommitBlockEvent.pdsc + + export interface LixEnforcerCommitBlockEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + platform?: Com.Linkedin.Avro2pegasus.Events.Common.Voyager.CodeReviewGroup; + pillarsBlocked: string[]; + commitMessage?: string; + submitterUrn?: string; + isOverride: boolean; + } + // Generated from: com/linkedin/avro2pegasus/events/voyager/LixEnforcerLixUpdateEvent.pdsc + + export interface LixEnforcerLixUpdateEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + lixEnforcerLixRecordModificationAction: Com.Linkedin.Avro2pegasus.Events.Common.Voyager.LixEnforcerLixRecordModificationAction; + platform?: Com.Linkedin.Avro2pegasus.Events.Common.Voyager.CodeReviewGroup; + lixEntryUrn?: string; + lixKey: string; + cronJobExecutionTrackingId?: string; + eventDetail?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/voyager/LixEnforcerRequestEvent.pdsc + + export interface LixEnforcerRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestType: Com.Linkedin.Avro2pegasus.Events.Common.Voyager.LixEnforcerRequestType; + requestState: Com.Linkedin.Avro2pegasus.Events.Common.Voyager.LixEnforcerRequestState; + platformId: number; + requestId: number; + lixEntryUrn?: string; + lixKey: string; + submitterUrn?: string; + requestDetail?: string; + message?: string; + errorMessage?: string; + platform?: Com.Linkedin.Avro2pegasus.Events.Common.Voyager.CodeReviewGroup; + } + // Generated from: com/linkedin/avro2pegasus/events/voyager/MetricsEvent.pdsc + + export interface MetricsEvent { + team: string; + type: string; + numOfIssues: number; + } + // Generated from: com/linkedin/avro2pegasus/events/voyager/RecipeDataPoint.pdsc + + export interface RecipeDataPoint { + recipeName: string; + recipeVersion: number; + rootEndpointDataPoints: RootEndpointDataPoint[]; + } + // Generated from: com/linkedin/avro2pegasus/events/voyager/ReviewButlerRBLifeCycleEvent.pdsc + + export interface ReviewButlerRBLifeCycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + codeReviewState: Com.Linkedin.Avro2pegasus.Events.Common.Voyager.ReviewButlerCodeReviewState; + rbNumber?: number; + cronJobExecutionTrackingId?: string; + revieweeUrn?: string; + reviewerUrn?: string; + codeReviewGroup?: Com.Linkedin.Avro2pegasus.Events.Common.Voyager.CodeReviewGroup; + message?: string; + errorMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/voyager/RootEndpointDataPoint.pdsc + + export interface RootEndpointDataPoint { + rootEndpointUrn: string; + latencies: number[]; + totalCalls: number; + errorCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/voyager/VoyagerToolSchedulerEvent.pdsc + + export interface VoyagerToolSchedulerEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cronJobExecutionTrackingId: string; + eventName: string; + message?: string; + errorMessage?: string; + } + } + namespace Webcrawling { + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/CompanyWebSearchRequestEvent.pdsc + + export interface CompanyWebSearchRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + batchId?: string; + document: Com.Linkedin.Avro2pegasus.Common.Webcrawling.CompanyWebSearchRequest; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/CompressedRawWebDocumentEvent.pdsc + + export interface CompressedRawWebDocumentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + seedIngestionSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + document: Com.Linkedin.Avro2pegasus.Common.Webcrawling.CompressedRawWebDocument; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/HomepageUrlsEvent.pdsc + + export interface HomepageUrlsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + seedIngestionSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + document: Com.Linkedin.Avro2pegasus.Common.Webcrawling.HomepageUrls; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/IngestedUrlStatusEvent.pdsc + + export interface IngestedUrlStatusEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + seedIngestionSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + document: Com.Linkedin.Avro2pegasus.Common.Webcrawling.IngestedUrlStatus; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/OrganizationWebSearchRequestEvent.pdsc + + export interface OrganizationWebSearchRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + batchId?: string; + document: Com.Linkedin.Avro2pegasus.Common.Webcrawling.OrganizationWebSearchRequest; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/OrganizationWebSearchResponseEvent.pdsc + + export interface OrganizationWebSearchResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + batchId?: string; + request: Com.Linkedin.Avro2pegasus.Common.Webcrawling.OrganizationWebSearchRequest; + response: Com.Linkedin.Avro2pegasus.Common.Webcrawling.WebSearchResponse; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/RawJobWebSearchRequestEvent.pdsc + + export interface RawJobWebSearchRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rawJobId: number; + batchId?: string; + document: Com.Linkedin.Avro2pegasus.Common.Webcrawling.RawJobWebSearchRequest; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/RawJobWebSearchResponseEvent.pdsc + + export interface RawJobWebSearchResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rawJobId: number; + batchId?: string; + request: Com.Linkedin.Avro2pegasus.Common.Webcrawling.RawJobWebSearchRequest; + response: Com.Linkedin.Avro2pegasus.Common.Webcrawling.WebSearchResponse; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/RawWebDocumentEvent.pdsc + + export interface RawWebDocumentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + seedIngestionSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + document: Com.Linkedin.Avro2pegasus.Common.Webcrawling.RawWebDocument; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/SearchResultUrlsEvent.pdsc + + export interface SearchResultUrlsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + seedIngestionSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + document: Com.Linkedin.Avro2pegasus.Common.Webcrawling.SearchResultUrls; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/SeedUrlsEvent.pdsc + + export interface SeedUrlsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + seedIngestionSessionId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + document: Com.Linkedin.Avro2pegasus.Common.Webcrawling.SeedUrls; + } + // Generated from: com/linkedin/avro2pegasus/events/webcrawling/WebSearchResponseEvent.pdsc + + export interface WebSearchResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + batchId?: string; + document: Com.Linkedin.Avro2pegasus.Common.Webcrawling.WebSearchResponse; + } + } + namespace Webframeworks { + // Generated from: com/linkedin/avro2pegasus/events/webframeworks/PemberlyAppColdBuildCompletionEvent.pdsc + + export interface PemberlyAppColdBuildCompletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + multiProductVersion: number; + multiProductUrn: string; + buildDuration: number; + basePageRendererSetupDuration: number; + checkoutDuration?: number; + completeProcessDuration: number; + initializationDuration?: number; + serverReadyDuration: number; + cssBuildDuration?: number; + javascriptTranspilationDuration?: number; + emberCliBuildDuration: number; + hardware: Com.Linkedin.Avro2pegasus.Events.Common.Webframeworks.PemberlyBuildHardware; + cacheHitRate?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/webframeworks/PemberlyAppRebuildCompletionEvent.pdsc + + export interface PemberlyAppRebuildCompletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + multiProductVersion: number; + multiProductUrn: string; + completeProcessDuration: number; + fileWatchingDuration: number; + livereloadDuration: number; + pageLoadDuration: number; + rebuildDuration: number; + cssBuildDuration?: number; + javascriptTranspilationDuration?: number; + emberCliBuildDuration: number; + hardware: Com.Linkedin.Avro2pegasus.Events.Common.Webframeworks.PemberlyBuildHardware; + cacheHitRate?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/webframeworks/PemberlyAppWarmBuildCompletionEvent.pdsc + + export interface PemberlyAppWarmBuildCompletionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + multiProductVersion: number; + multiProductUrn: string; + basePageRendererSetupDuration: number; + buildDuration: number; + completeProcessDuration: number; + serverReadyDuration: number; + cssBuildDuration?: number; + javascriptTranspilationDuration?: number; + emberCliBuildDuration: number; + hardware: Com.Linkedin.Avro2pegasus.Events.Common.Webframeworks.PemberlyBuildHardware; + cacheHitRate?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/webframeworks/ServiceWorkerInstalledEvent.pdsc + + export interface ServiceWorkerInstalledEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + cachedShell?: Com.Linkedin.Avro2pegasus.Events.Common.Webframeworks.ServiceWorkerCachedShell; + numClients: number; + serviceWorkerVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/events/webframeworks/ServiceWorkerScriptResponseEvent.pdsc + + export interface ServiceWorkerScriptResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + responseCode: number; + serviceWorkerVersion: string; + embeddedLixFlags?: { [id: string]: boolean }; + scriptType: ServiceWorkerScriptType; + clearSiteDataDirectives?: Com.Linkedin.Avro2pegasus.Events.Common.ClearSiteDataDirectiveType[]; + scriptTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + lastSeenVersion?: string; + previousScriptTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/events/webframeworks/ServiceWorkerScriptType.pdsc + + export type ServiceWorkerScriptType = 'STANDARD' | 'NOOP' | 'PURGE'; + // Generated from: com/linkedin/avro2pegasus/events/webframeworks/ServiceWorkerShellResponseEvent.pdsc + + export interface ServiceWorkerShellResponseEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + responseCode: number; + currentServiceWorkerVersion: string; + clearSiteDataDirectives?: Com.Linkedin.Avro2pegasus.Events.Common.ClearSiteDataDirectiveType[]; + shellTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + previousShellTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + requestingServiceWorkerVersion?: string; + } + // Generated from: com/linkedin/avro2pegasus/events/webframeworks/ServiceWorkerShellServedEvent.pdsc + + export interface ServiceWorkerShellServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + cachedShell: Com.Linkedin.Avro2pegasus.Events.Common.Webframeworks.ServiceWorkerCachedShell; + serviceWorkerVersion: string; + } + } + namespace Yarn { + // Generated from: com/linkedin/avro2pegasus/events/yarn/ContainerLifeCycleEvent.pdsc + + export interface ContainerLifeCycleEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + containerId: string; + applicationId: string; + operationTimestamp: number; + grid: string; + operation: string; + userId: string; + queue: string; + containerDetails: ContainerMetaData; + } + // Generated from: com/linkedin/avro2pegasus/events/yarn/ContainerMetaData.pdsc + + export interface ContainerMetaData { + resourceMemory: number; + resourceCores: number; + nodeId: string; + nodeIpAddress: string; + } + } + namespace Zephyr { + // Generated from: com/linkedin/avro2pegasus/events/zephyr/CourseEntity.pdsc + + export interface CourseEntity { + trackableCourseObject: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + visibleTime: number; + visibleDurationOnScreen: number; + listPosition: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + positionInAggregation?: Com.Linkedin.Avro2pegasus.Events.Common.ListPosition; + size: Com.Linkedin.Avro2pegasus.Events.Common.EntityDimension; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ExcludedJobCandidateRecommendation.pdsc + + export interface ExcludedJobCandidateRecommendation { + excludedCandidateUrn: string; + excludedReason: JobExcludedReasonType; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/JobExcludedReasonType.pdsc + + export type JobExcludedReasonType = 'OPT_OUT'; + // Generated from: com/linkedin/avro2pegasus/events/zephyr/SMSCampaignRequestEvent.pdsc + + export interface SMSCampaignRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientUrn: string; + smsCampaignType: SMSCampaignRequestType; + actorUrns: string[]; + messageCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/SMSCampaignRequestType.pdsc + + export type SMSCampaignRequestType = + | 'MEMBER_TO_MEMBER_MESSAGE' + | 'WHO_VIEWED_MY_PROFILE' + | 'INVITATION_RECEIVED' + | 'MARS_PROJECT' + | 'JOBS_RECOMMENDATION'; + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrCareerPathImpressionEvent.pdsc + + export interface ZephyrCareerPathImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + careerPathCardEntity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrContentActionEvent.pdsc + + export interface ZephyrContentActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: string; + objectUrn: string; + controlUrn: string; + actionType: ZephyrContentActionType; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrContentActionType.pdsc + + export type ZephyrContentActionType = + | 'VIEW_PROFILE' + | 'VIEW_HASHTAG' + | 'VIEW_DETAIL' + | 'VIEW_ALL' + | 'EXPAND_QUESTION' + | 'EXPAND_ANSWER' + | 'INVITE_TO_ANSWER' + | 'ANSWER_QUESTION' + | 'SHARE' + | 'LIKE' + | 'UNLIKE' + | 'COMMENT' + | 'EDIT' + | 'DELETE' + | 'REPORT' + | 'PUBLISH_QUESTION'; + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrContentDetailViewEvent.pdsc + + export interface ZephyrContentDetailViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: string; + trackingCode: string; + objectUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrContentImpressionEvent.pdsc + + export interface ZephyrContentImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: string; + objectUrn: string; + duration: number; + visibleTime: number; + gridPosition: Com.Linkedin.Avro2pegasus.Events.Common.GridPosition; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrContentServedEvent.pdsc + + export interface ZephyrContentServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + trackingId: string; + objectUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrCourseActionEvent.pdsc + + export interface ZephyrCourseActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + actionType: Com.Linkedin.Avro2pegasus.Events.Common.ActionCategory; + subActionType?: string; + courseEntity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrCourseImpressionEvent.pdsc + + export interface ZephyrCourseImpressionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + entities: CourseEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrCourseServedEvent.pdsc + + export interface ZephyrCourseServedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + courseEntity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrCourseViewEvent.pdsc + + export interface ZephyrCourseViewEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + courseEntity: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrJobCandidateRecommendationsEvent.pdsc + + export interface ZephyrJobCandidateRecommendationsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + recommendedCandidateUrns: string[]; + excludedRecommendations: ExcludedJobCandidateRecommendation[]; + isFromCache: boolean; + totalCount: number; + } + // Generated from: com/linkedin/avro2pegasus/events/zephyr/ZephyrJobPostingManagementActionEvent.pdsc + + export interface ZephyrJobPostingManagementActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + jobPostingUrn: string; + actionType: Com.Linkedin.Avro2pegasus.Events.Jobs.JobPostingManagementActionType; + } + } + } + namespace Firehose { + // Generated from: com/linkedin/avro2pegasus/firehose/CompanyInfo.pdsc + + export interface CompanyInfo { + id: number; + companyNames: string[]; + universalName: string; + logoId: string; + squareLogoMediaId: string; + website: string; + companyType: string; + employeeCountRange: string; + industries: number[]; + stockSymbol: string; + exchangeId: number; + foundedYear: number; + } + // Generated from: com/linkedin/avro2pegasus/firehose/DiscussionInfo.pdsc + + export interface DiscussionInfo { + id: number; + isGoodQuality: Com.Linkedin.Avro2pegasus.Events.ScoredBoolean; + isSpam: Com.Linkedin.Avro2pegasus.Events.ScoredBoolean; + topics: Com.Linkedin.Avro2pegasus.Events.RelevanceTopic[]; + discussionClusterId: number; + } + // Generated from: com/linkedin/avro2pegasus/firehose/FirehoseMetadata.pdsc + + export interface FirehoseMetadata { + samplingFactor: number; + } + // Generated from: com/linkedin/avro2pegasus/firehose/JunkClassification.pdsc + + export interface JunkClassification { + isJunk: boolean; + confidence: number; + } + // Generated from: com/linkedin/avro2pegasus/firehose/Location.pdsc + + export interface Location { + country: string; + region: string; + postalCode: string; + place: string; + latitude: string; + longitude: string; + } + // Generated from: com/linkedin/avro2pegasus/firehose/PersonInfo.pdsc + + export interface PersonInfo { + id: number; + active: boolean; + deleted: boolean; + name: string; + firstName: string; + lastName: string; + maidenName: string; + headline: string; + industryId: number; + pictureId: string; + showPictureSetting: string; + showFullLastName: boolean; + createdTime: number; + location: Location; + currentIndustries: number[]; + currentTitles: number[]; + currentCompanies: number[]; + currentFuncareas: number[]; + pastTitles: number[]; + pastCompanies: number[]; + pastFuncareas: number[]; + pastIndustries: number[]; + jobSeniorities: number[]; + standardizedSkills: number[]; + schools: number[]; + fieldsOfStudy: number[]; + degreeIds: number[]; + skillsAndScores: SkillAndScore[]; + anetMembership: number[]; + connectionCount: number; + fortune1000: number[]; + nusReputationScore: number; + } + // Generated from: com/linkedin/avro2pegasus/firehose/SkillAndScore.pdsc + + export interface SkillAndScore { + id: number; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/firehose/UrlUnwoundInfo.pdsc + + export interface UrlUnwoundInfo { + submittedUrl: string; + resolvedUrl: string; + title: string; + description: string; + primaryImageUrl: string; + createdAt: number; + entityId: Com.Linkedin.Avro2pegasus.Events.EntityID; + hasBadWords: boolean; + topics: Com.Linkedin.Avro2pegasus.Events.RelevanceTopic[]; + junkClassification: JunkClassification; + articleClusterId: number; + isJunk: Com.Linkedin.Avro2pegasus.Events.ScoredBoolean; + } + } + namespace Graph { + // Generated from: com/linkedin/avro2pegasus/graph/GraphEdge.pdsc + + export interface GraphEdge { + timestamp: number; + from: number; + to: number; + operation: GraphOperationType; + type: string; + attributes: { [id: string]: number }; + } + // Generated from: com/linkedin/avro2pegasus/graph/GraphEdgeKey.pdsc + + export interface GraphEdgeKey { + from: number; + to: number; + operation: GraphOperationType; + type: string; + } + // Generated from: com/linkedin/avro2pegasus/graph/GraphNode.pdsc + + export interface GraphNode { + timestamp: number; + id: number; + type: string; + attributes: { [id: string]: number }; + } + // Generated from: com/linkedin/avro2pegasus/graph/GraphNodeKey.pdsc + + export interface GraphNodeKey { + id: number; + type: string; + } + // Generated from: com/linkedin/avro2pegasus/graph/GraphOperationType.pdsc + + export type GraphOperationType = 'UPSERT' | 'UPDATE'; + } + namespace Handle { + namespace Migration { + // Generated from: com/linkedin/avro2pegasus/handle/migration/DigitsMessage.pdsc + + export interface DigitsMessage { + memberId: number; + phoneNum?: string; + countryCode?: string; + state?: string; + stateUpdatedAt: number; + source?: string; + } + } + } + namespace Inbox { + // Generated from: com/linkedin/avro2pegasus/inbox/MailboxItemType.pdsc + + export type MailboxItemType = + | 'PROFILE_UPDATE' + | 'JOB_FORWARD' + | 'RECOMMENDATION_MESSAGE' + | 'RECOMMENDATION_UPDATE' + | 'COMMERCIAL_INMAIL' + | 'LINKEDIN_ANSWERS' + | 'INVITATION_MESSAGE' + | 'PROFILE_FORWARD' + | 'PROPOSAL' + | 'MESSAGE_BETWEEN_CONNECTIONS' + | 'GROUP' + | 'GROUP_INVITATION' + | 'SHARE' + | 'GENERIC_EMAIL' + | 'COMPANY_MESSAGE' + | 'SYSTEM_MESSAGE'; + } + namespace Jobs { + // Generated from: com/linkedin/avro2pegasus/jobs/JobOpportunityMessageType.pdsc + + export type JobOpportunityMessageType = + | 'JOB_SEEKER_REACH_OUT' + | 'JOB_SEEKER_APPLY_FOR_JOB' + | 'JOB_POSTER_ACCEPT_APPLICATION' + | 'JOB_POSTER_REJECT_APPLICATION' + | 'JOB_POSTER_REACH_OUT' + | 'JOB_OPPORTUNITY_FOLLOW_UP'; + } + namespace Jobwrapping { + namespace Events { + // Generated from: com/linkedin/avro2pegasus/jobwrapping/events/JobWrappedEvent.pdsc + + export interface JobWrappedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + number: number; + jobTitle: string; + jobFunctions: string[]; + regionId: number; + stateId?: string; + postalCode?: string; + countryCode: string; + postedDate: number; + renewDate?: number; + recruiterEmail: string; + customerJobCode?: string; + criteriaUsed?: string; + customField?: string; + status: PostedJobStatusEnum; + } + // Generated from: com/linkedin/avro2pegasus/jobwrapping/events/PostedJobStatusEnum.pdsc + + export type PostedJobStatusEnum = 'NEW' | 'RENEWED' | 'UPDATED' | 'DELETED' | 'UNCHANGED' | 'EXCLUDED'; + } + } + namespace Learning { + // Generated from: com/linkedin/avro2pegasus/learning/EmailResultType.pdsc + + export type EmailResultType = 'SUCCESS' | 'MESSAGE_DROPPED' | 'DELIVERY_FAILED'; + // Generated from: com/linkedin/avro2pegasus/learning/LearningEnterpriseEmailStatusMessage.pdsc + + export interface LearningEnterpriseEmailStatusMessage { + messageId: Com.Linkedin.Avro2pegasus.Events.Messages.MessageId; + statusType: EmailResultType; + statusCode?: string; + statusDescription?: string; + } + } + namespace Liar { + // Generated from: com/linkedin/avro2pegasus/liar/FieldMap.pdsc + + export interface FieldMap { + name: string; + queryable: boolean; + indexable: boolean; + termvector: { [id: string]: number }; + } + namespace App { + namespace Sink { + // Generated from: com/linkedin/avro2pegasus/liar/app/sink/EntityMatchSinkEvent.pdsc + + export interface EntityMatchSinkEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sourceId: number; + algorithm: number; + intent: string; + sourceType: number; + targetType: number; + returnStatus: number; + lastModifiedTimestamp: number; + hits: EntityMatchSinkHitEvent[]; + } + // Generated from: com/linkedin/avro2pegasus/liar/app/sink/EntityMatchSinkHitEvent.pdsc + + export interface EntityMatchSinkHitEvent { + id: number; + score: number; + } + } + } + namespace Life { + // Generated from: com/linkedin/avro2pegasus/liar/life/Company.pdsc + + export interface Company { + companyId: number; + isCurrent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/liar/life/FieldMap.pdsc + + export interface FieldMap { + name: string; + queryable: boolean; + indexable: boolean; + termvector: { [id: string]: number }; + } + // Generated from: com/linkedin/avro2pegasus/liar/life/LiarEntityInfo.pdsc + + export interface LiarEntityInfo { + id: number; + type: string; + deleted: boolean; + active: boolean; + fields: { [id: string]: FieldMap }; + } + // Generated from: com/linkedin/avro2pegasus/liar/life/MemberCompanies.pdsc + + export interface MemberCompanies { + memberId: number; + timestamp: number; + companies: Company[]; + } + } + namespace News { + // Generated from: com/linkedin/avro2pegasus/liar/news/NewsResultArticle.pdsc + + export interface NewsResultArticle { + score: number; + id: number; + breedAppropriate: boolean; + source: string; + memberIds: number[]; + trendingResults: NewsTrendingResult[]; + } + // Generated from: com/linkedin/avro2pegasus/liar/news/NewsResultGroup.pdsc + + export interface NewsResultGroup { + score: number; + resultArticles: NewsResultArticle[]; + } + // Generated from: com/linkedin/avro2pegasus/liar/news/NewsTopic.pdsc + + export interface NewsTopic { + entityType: string; + entityId: number; + entityStringId: string; + breed: string; + period: string; + } + // Generated from: com/linkedin/avro2pegasus/liar/news/NewsTopicUpdate.pdsc + + export interface NewsTopicUpdate { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + topic: NewsTopic; + model: number; + resultGroups: NewsResultGroup[]; + } + // Generated from: com/linkedin/avro2pegasus/liar/news/NewsTrendingResult.pdsc + + export interface NewsTrendingResult { + topic: NewsTopic; + id: number; + timestamp: number; + rankOfArticleInResultGroup: number; + rankOfResultGroupInTopic: number; + } + } + } + namespace Lix { + namespace Hadoop { + // Generated from: com/linkedin/avro2pegasus/lix/hadoop/MemberLixTreatment.pdsc + + export interface MemberLixTreatment { + memberId: number; + testkey: string; + experimentId: number; + variant: string; + segmentId: number; + timestamp: number; + } + } + } + namespace Message { + // Generated from: com/linkedin/avro2pegasus/message/LixInternalMemberUpdateMessage.pdsc + + export interface LixInternalMemberUpdateMessage { + memberUrn: string; + groupUrns?: number[]; + connectionCount?: number; + countryCode?: string; + currentCompanyIds?: number[]; + currentPositionCount?: number; + firstName?: string; + hasProfilePicture?: boolean; + industryId?: number; + inviterId?: number; + isActive?: boolean; + lastAbookImportTime?: number; + lastLoginTime?: number; + lastName?: string; + locale?: string; + pastCompanyIds?: number[]; + positionCount?: number; + primaryEmail?: string; + profileViewerCount?: number; + recentGraduationYear?: number; + registrationTime?: number; + schoolCount?: number; + isUsedPymk?: boolean; + interfaceLocale?: boolean; + subscriptionPlanId?: number; + isRecruiter?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/message/ProviderResponseStoreMessage.pdsc + + export interface ProviderResponseStoreMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + provider: ProviderType; + requestKey: string; + response: string; + } + // Generated from: com/linkedin/avro2pegasus/message/ProviderType.pdsc + + export type ProviderType = 'WEIBO' | 'TENCENT'; + namespace Commerce { + // Generated from: com/linkedin/avro2pegasus/message/commerce/CommerceOrderNotificationMessage.pdsc + + export interface CommerceOrderNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + opportunityUrn: string; + orderUrn: string; + customerUrn: string; + orderState: orderStateEnum; + } + // Generated from: com/linkedin/avro2pegasus/message/commerce/CommerceSalesProposalNotificationMessage.pdsc + + export interface CommerceSalesProposalNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + crmOpportunityUrn: string; + salesProposalUrn: string; + customerUrn: string; + salesProposalChangeType: SalesProposalChangeType; + } + // Generated from: com/linkedin/avro2pegasus/message/commerce/ContractUnpaidBalanceChangeMessage.pdsc + + export interface ContractUnpaidBalanceChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + provisioneeUrn: string; + productScheduleUrn: string; + customerUrn: string; + totalUnpaidBalance: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/message/commerce/orderStateEnum.pdsc + + export type orderStateEnum = 'COMPLETE' | 'CANCELED' | 'DEMOTED' | 'PROMOTED' | 'PLACED'; + // Generated from: com/linkedin/avro2pegasus/message/commerce/SalesProposalChangeType.pdsc + + export type SalesProposalChangeType = + | 'CREATE' + | 'UPDATE' + | 'PROMOTE' + | 'DELETE' + | 'SET_PRIMARY_QUOTE' + | 'DEMOTE' + | 'PROPOSAL_CREATED' + | 'UPDATE_CURRENT_RENEWAL_STATUS' + | 'PROPOSAL_ACCEPTED'; + } + } + namespace Messages { + // Generated from: com/linkedin/avro2pegasus/messages/AntivirusScanRequest.pdsc + + export interface AntivirusScanRequest { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mediaId: string; + fileHash: string; + createdTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ArticleActivityEvent.pdsc + + export interface ArticleActivityEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + articleSource: string; + megaphoneArticleId?: number; + newsArticleId?: number; + megaphonePermLink?: string; + megaphoneAuthorId?: number; + actorId?: number; + action?: string; + actionSubType?: string; + uscpAddDeleteCommentId?: number; + uscpAddDeleteCommentThreadId?: string; + commentText?: string; + uscpActivityId?: number; + uscpParentCommentId?: number; + uscpParentCommentThreadId?: string; + uscpParentCommentActivityId?: number; + uscpLikeUnlikeCommentId?: number; + uscpLikeUnlikeCommentThreadId?: string; + extShareDestinations?: string[]; + mentions?: string; + attributes?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/messages/CapAccountCompanyUpdateMessage.pdsc + + export interface CapAccountCompanyUpdateMessage { + companyId: number; + accountId: number; + lastUpdated: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/CapSeatSharingEnforcement.pdsc + + export type CapSeatSharingEnforcement = 'NONE' | 'EMAIL' | 'WARNING' | 'TWO_FACTOR_AUTHENTICATION'; + // Generated from: com/linkedin/avro2pegasus/messages/CapSeatSharingMessage.pdsc + + export interface CapSeatSharingMessage { + memberId: number; + enforcement: CapSeatSharingEnforcement; + confidence: number; + detectionTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/CareerSiteBeaconEventsSummary.pdsc + + export interface CareerSiteBeaconEventsSummary { + id: number; + day: number; + accountId?: number; + contractId?: number; + jobCode?: string; + hasJobId: string; + jobId?: number; + jobRegion?: number; + jobCompany?: number; + jobFunctions?: string; + hasMemberId: string; + memberRegion?: number; + memberCompany?: number; + memberFunction?: number; + memberTitle?: number; + memberIndustry?: number; + score?: number; + source?: string; + viewCount: number; + applyCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/CareersPreferencesJobAlertFrequency.pdsc + + export type CareersPreferencesJobAlertFrequency = 'DAILY' | 'WEEKLY'; + // Generated from: com/linkedin/avro2pegasus/messages/CareersPreferencesJobAlertsCreateMessage.pdsc + + export interface CareersPreferencesJobAlertsCreateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + jobAlertFrequency: CareersPreferencesJobAlertFrequency; + } + // Generated from: com/linkedin/avro2pegasus/messages/CompanyJobsEmailMessage.pdsc + + export interface CompanyJobsEmailMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + companyId: number; + parentCompanyId?: number; + companyIdsToFetchJobsFrom?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/CompanySize.pdsc + + export type CompanySize = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I'; + // Generated from: com/linkedin/avro2pegasus/messages/CompanyViewEvent.pdsc + + export interface CompanyViewEvent { + companyId: number; + memberId: number; + daysSinceEpoch: number; + weeksSinceEpoch?: number; + monthsSinceEpoch: number; + memberIndustries?: number[]; + memberFunctions?: number[]; + memberSeniorities?: number[]; + memberSchools?: number[]; + memberGender: Com.Linkedin.Avro2pegasus.Events.MemberGender; + timeInSeconds: number; + memberCompanySizes?: CompanySize[]; + hashedMemberUrn?: string; + countryCode?: string; + regionId?: number; + reportingId?: string; + careerBannerClickCount: number; + careerInfoClickCount: number; + recruiterClickCount: number; + salesClickCount: number; + employeesClickCount: number; + jobsClickCount: number; + productClickCount: number; + promotionClickCount: number; + productBannerClickCount: number; + salesEmployeeClickCount: number; + pageViewOverviewCount: number; + pageViewCareerCount: number; + pageViewProductsCount: number; + distinctPageViewOverviewCount: number; + distinctPageViewCareerCount: number; + distinctPageViewProductsCount: number; + distinctPageViewAllCount: number; + viewTime?: number; + companyViewEventId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + pageViewLifeAtCount?: number; + distinctPageViewLifeAtCount?: number; + pageViewJobsCount?: number; + distinctPageViewJobsCount?: number; + mobilePageViewOverviewCount?: number; + mobilePageViewLifeAtCount?: number; + mobilePageViewJobsCount?: number; + distinctMobilePageViewOverviewCount?: number; + distinctMobilePageViewJobsCount?: number; + distinctMobilePageViewLifeAtCount?: number; + mobileEmployeesClickCount?: number; + mobileJobsClickCount?: number; + mobileCustomModulesClickCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ContentState.pdsc + + export type ContentState = 'PENDING' | 'AVAILABLE' | 'UNAVAILABLE'; + // Generated from: com/linkedin/avro2pegasus/messages/ContentUpdatedMessage.pdsc + + export interface ContentUpdatedMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentUrn: string; + contentState?: ContentState; + } + // Generated from: com/linkedin/avro2pegasus/messages/CouchbaseAction.pdsc + + export type CouchbaseAction = 'PUT' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/messages/CouchbaseXdcrHeader.pdsc + + export interface CouchbaseXdcrHeader { + originFabric: Fabric; + action: CouchbaseAction; + } + // Generated from: com/linkedin/avro2pegasus/messages/DimensionValue.pdsc + + export interface DimensionValue { + dimension: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/DistanceEnum.pdsc + + export type DistanceEnum = + | 'SELF' + | 'DISTANCE_1' + | 'DISTANCE_2' + | 'DISTANCE_3' + | 'OUT_OF_NETWORK' + | 'UNKNOWN' + | 'INVITED' + | 'GROUP'; + // Generated from: com/linkedin/avro2pegasus/messages/edge.pdsc + + export interface edge { + combinedScore: number; + destId: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/EdgeScores.pdsc + + export interface EdgeScores { + sourceId: number; + edges: edge[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/edgeType.pdsc + + export type edgeType = + | 'UNKNOWN' + | 'MemberToMember' + | 'MemberToCompany' + | 'CompanyToMember' + | 'TeamLinkMember' + | 'MemberLinkedByTeam' + | 'MemberToAnet' + | 'AnetToMember' + | 'MemberFollowingMember' + | 'MemberFollowedByMember' + | 'MemberFollowingCompany' + | 'CompanyFollowedByMember'; + // Generated from: com/linkedin/avro2pegasus/messages/EndorsementBatchEvent.pdsc + + export interface EndorsementBatchEvent { + endorsements: Com.Linkedin.Avro2pegasus.Events.Endorsement[]; + profileData: { + [id: string]: Com.Linkedin.Avro2pegasus.Common.EndorsementProfileData; + }; + } + // Generated from: com/linkedin/avro2pegasus/messages/EventType.pdsc + + export type EventType = 'SEARCH' | 'PROFILE_VIEW' | 'INMAIL_SEND'; + // Generated from: com/linkedin/avro2pegasus/messages/ExecutionContext.pdsc + + export interface ExecutionContext { + hiringContext: string; + hiringProjectUrn?: string; + hireIdentityUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ExternalImportedJobMessage.pdsc + + export interface ExternalImportedJobMessage { + companyId?: number; + state: string; + dateIndexed: string; + dateProcessed: string; + source: string; + data: string; + dataFormat: string; + uuid: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ExternalPostersEmailAlertMessage.pdsc + + export interface ExternalPostersEmailAlertMessage { + companyId?: number; + recipientMemberId: number; + recipientEmailAddr?: string; + importedJobsXMLList?: string; + matchingMeta?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/Fabric.pdsc + + export type Fabric = 'EI_LCA1' | 'EI_LTX1' | 'PROD_LOR1' | 'PROD_LTX1' | 'PROD_LVA1' | 'PROD_LSG1'; + // Generated from: com/linkedin/avro2pegasus/messages/FuseRequestEvent.pdsc + + export interface FuseRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + domains: string[]; + attributes: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/messages/GenericEdgeScores.pdsc + + export interface GenericEdgeScores { + sourceUrn: string; + type: edgeType; + edges?: Com.Linkedin.Avro2pegasus.Events.ScoredEntity[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/Guid.pdsc + + export type Guid = string; + // Generated from: com/linkedin/avro2pegasus/messages/HadoopNusUpdate.pdsc + + export interface HadoopNusUpdate { + memberId: number; + updateType: string; + time: number; + guid: Guid; + trackingCode?: string; + parameters: NusParam[]; + targetRule?: TargetRule; + } + // Generated from: com/linkedin/avro2pegasus/messages/HireRuleDataChangeTrigger.pdsc + + export interface HireRuleDataChangeTrigger { + databaseName: string; + tableName: string; + opcode?: Opcode; + previousPayloadRecord?: number; + currentPayloadRecord?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/HireRuleKafkaTrigger.pdsc + + export interface HireRuleKafkaTrigger { + eventName: string; + eventContent: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/idCountPair.pdsc + + export interface idCountPair { + memberId: number; + companyOverlapCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/InferredMemberLocaleMessageEvent.pdsc + + export interface InferredMemberLocaleMessageEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + countryUrn: string; + gmtOffset: number; + geoUrn?: string; + timeZone?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/InvitationNotificationEvent.pdsc + + export interface InvitationNotificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + invitationId?: number; + inviterId?: number; + invitationType?: InvitationType; + reconnectRelationship?: ReconnectRelationshipType; + recipientMemberId?: number; + recipientEmailAddress?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/InvitationType.pdsc + + export type InvitationType = 'MEMBER_INVITE' | 'GUEST_INVITE'; + // Generated from: com/linkedin/avro2pegasus/messages/JobAlertsEmailMessage.pdsc + + export interface JobAlertsEmailMessage { + memberId: number; + mobileOsNames?: string[]; + flightmeterScore?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/JobApplicantAnalyticsEvent.pdsc + + export interface JobApplicantAnalyticsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobId: number; + memberId: number; + jobPostingId: number; + applicantId: number; + daysSinceEpoch: number; + hoursSinceEpoch: number; + seniorityId: number; + numConnectionsToCompany?: number; + memberSkillIds?: number[]; + degreeId: number; + fieldOfStudyId: number; + memberCompanyId: number; + isOffsiteApplication?: boolean; + regionCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/JobPostingApplicantDigest.pdsc + + export interface JobPostingApplicantDigest { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingId: number; + startOfDigestWindow: number; + newApplicationIds?: number[]; + previousApplicationIds?: number[]; + lastApplicationDateProcessed: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/MediaAttachmentAction.pdsc + + export type MediaAttachmentAction = 'UPLOAD' | 'DOWNLOAD'; + // Generated from: com/linkedin/avro2pegasus/messages/MediaAttachmentEvent.pdsc + + export interface MediaAttachmentEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberId: number; + mediaId: string; + action: MediaAttachmentAction; + source: string; + data?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/messages/MirrorAnalyticsPublishEvent.pdsc + + export interface MirrorAnalyticsPublishEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + application: string; + actor: string; + action: string; + object: string; + owner: string; + referrerCategory?: string; + deviceType?: string; + actorOwnerDegreesSeparation?: number; + count: number; + timestamp: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/MirrorDecoratedProfileViewEvent.pdsc + + export interface MirrorDecoratedProfileViewEvent { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + viewerId: number; + viewerType: string; + vieweeId: number; + referrerCategory?: string; + searchKeywordCategories?: number[]; + viewerCompany?: number; + viewerCompanies?: number[]; + viewerCountry?: string; + viewerRegionCode?: number; + viewerBingGeoEntityCode?: number; + viewerIndustry?: number; + viewerOccupation?: number; + viewerOccupations?: number[]; + viewerSchool?: number; + viewerSchools?: number[]; + viewerSeniority?: number; + viewerPrivacySetting?: string; + viewerObfuscationType?: string; + vieweePrivacySetting?: string; + count: number; + weeksSinceEpochSunday: number; + daysSinceEpoch: number; + hoursSinceEpoch: number; + minutesSinceEpoch: number; + timestamp: number; + weeksSinceEpochMonday?: number; + weeksSinceEpochTuesday?: number; + weeksSinceEpochWednesday?: number; + weeksSinceEpochThursday?: number; + weeksSinceEpochFriday?: number; + weeksSinceEpochSaturday?: number; + processedTimeInEpoch?: number; + notabilityScore?: number; + notableViewerTypes?: NotableViewerType[]; + notableJob?: number; + notableCompany?: number; + vieweeOccupation?: number; + extraNotableViewerInfo?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/MirrorDecoratedSocialGestureEvent.pdsc + + export interface MirrorDecoratedSocialGestureEvent { + application: string; + actorId: number; + objectId: number; + ownerId: number; + actorOwnerDegreesSeparation?: number; + impressionCount: number; + clickCount: number; + followCount: number; + weeksSinceEpochSunday: number; + daysSinceEpoch: number; + hoursSinceEpoch: number; + minutesSinceEpoch: number; + referrerCategory?: string; + deviceType?: string; + actorRegion?: number; + actorIndustry?: number; + actorCompanies?: number[]; + actorOccupations?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/MirrorDecorationEvent.pdsc + + export interface MirrorDecorationEvent { + itemId: number; + itemType: string; + memberId: number; + memberAction: string; + industryCode: number; + countryCode: string; + distance?: number; + seniority: number; + timeInDays: number; + timeInHours: number; + timeInMinutes: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/NewsMentionMessage.pdsc + + export interface NewsMentionMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + entityUrn?: string; + news?: NewsMessage; + controlModelPrediction?: Com.Linkedin.Avro2pegasus.Events.Mitn.ModelPrediction; + experimentalModelPredictions?: Com.Linkedin.Avro2pegasus.Events.Mitn.ModelPrediction[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/NewsMessage.pdsc + + export interface NewsMessage { + id: number; + title: string; + snippet: string; + source: string; + url: string; + imgUrl: string; + publishDate?: number; + fetchDate?: number; + overallScore: number; + relevanceScore: number; + qualityScore: number; + siteScore: number; + activityUrn?: string; + articlesPerMonth?: number; + sourceQuality?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/NotableViewerType.pdsc + + export type NotableViewerType = + | 'DIFFERENT_INDUSTRY_SENIOR' + | 'HIGHLY_FOLLOWED' + | 'INFLUENCER' + | 'LEADER' + | 'SAME_INDUSTRY_SENIOR' + | 'HIRING_MANAGER_APPLIED' + | 'HIRING_MANAGER_FGC' + | 'HIRING_MANAGER_JYMBII' + | 'HIRING_MANAGER_TAJ' + | 'JOB_CONNECTOR_APPLIED' + | 'JOB_CONNECTOR_FGC' + | 'JOB_CONNECTOR_TAJ' + | 'POSTER_APPLIED' + | 'POSTER_JYMBII' + | 'POSTER_TAJ' + | 'RECRUITER_APPLIED' + | 'RECRUITER_FGC' + | 'RECRUITER_JYMBII' + | 'RECRUITER_TAJ' + | 'HIRING_MANAGER_SAVED_JOBS' + | 'JOB_CONNECTOR_COMPANY_FOLLOWED' + | 'JOB_CONNECTOR_SAVED_JOBS' + | 'JOB_POSTER_SAVED_JOBS' + | 'RECRUITER_SAVED_JOBS'; + // Generated from: com/linkedin/avro2pegasus/messages/NusParam.pdsc + + export interface NusParam { + key: string; + value: string; + type: NusParamType; + tag?: NusTagType; + } + // Generated from: com/linkedin/avro2pegasus/messages/NusParamType.pdsc + + export type NusParamType = + | 'TEXT' + | 'MEMBER_ID' + | 'GROUP_ID' + | 'COMPANY_ID' + | 'URL' + | 'CONTENT_SOURCE' + | 'INDUSTRY' + | 'NESTED' + | 'SHARE'; + // Generated from: com/linkedin/avro2pegasus/messages/NusTagType.pdsc + + export type NusTagType = 'ANET' | 'COMPANY' | 'INDUSTRY'; + // Generated from: com/linkedin/avro2pegasus/messages/Opcode.pdsc + + export type Opcode = 'INSERT' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/messages/PosterJobExpirationReminder.pdsc + + export interface PosterJobExpirationReminder { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobId: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/PremiumHomeDashboardUpdateMessage.pdsc + + export interface PremiumHomeDashboardUpdateMessage { + eventType: EventType; + id: number; + time: number; + memberId: number; + targetId?: number; + searchRequest?: string; + usedPremiumFacet?: number; + numSearchResults?: number; + isExpandedProfileView?: number; + proposalId?: number; + authToken?: string; + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/PremiumTypeEnum.pdsc + + export type PremiumTypeEnum = 'BASIC' | 'PRO' | 'JOB_SEEKER' | 'TALENT' | 'SALES'; + // Generated from: com/linkedin/avro2pegasus/messages/ProfileSnapshotPublishEvent.pdsc + + export interface ProfileSnapshotPublishEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberId?: number; + snapshotId?: number; + hasEducationDifferences: boolean; + hasPositionDifferences: boolean; + hasURLDifferences: boolean; + hasPublicationDifferences: boolean; + hasPatentDifferences: boolean; + hasCertificationDifferences: boolean; + hasLanguageDifferences: boolean; + hasSkillDifferences: boolean; + hasCourseDifferences: boolean; + hasHonorAwardDifferences: boolean; + hasOrganizationDifferences: boolean; + hasProjectDifferences: boolean; + hasTestScoreDifferences: boolean; + hasVolunteerExperienceDifferences: boolean; + hasHeadlineDifference: boolean; + hasAssociationDifference: boolean; + hasExpertiseDifference: boolean; + hasHonorsDifference: boolean; + hasInterestsDifference: boolean; + hasIndustryDifference: boolean; + hasSpecialitiesDifference: boolean; + hasFirstNameDifference: boolean; + hasLastNameDifference: boolean; + hasMaidenNameDifference: boolean; + hasAddressDifferences: boolean; + hasLocationDifference: boolean; + hasBirthdayDifferences: boolean; + hasPhoneNumberDifferences: boolean; + hasIMDifferences: boolean; + hasNewIMDifferences: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/ProfileViewPayWallMessage.pdsc + + export interface ProfileViewPayWallMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + viewerUrn: string; + vieweeUrn: string; + networkDistance: DistanceEnum; + premiumType: PremiumTypeEnum; + } + // Generated from: com/linkedin/avro2pegasus/messages/ReconnectRelationshipType.pdsc + + export type ReconnectRelationshipType = + | 'CURRENT_COLLEAGUE' + | 'PAST_COLLEAGUE' + | 'CLASSMATE' + | 'UNKNOWN' + | 'IWE_FRIEND' + | 'IWE_BUSINESS' + | 'IWE_COLLEAGUE' + | 'IWE_EDUCATION' + | 'IWE_GROUP_ASSOCIATION' + | 'IWE_SOCIETY_ACTIVITY'; + // Generated from: com/linkedin/avro2pegasus/messages/RuleTriggerRequestMessage.pdsc + + export interface RuleTriggerRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + executionContext?: ExecutionContext; + triggerSourceInfo?: HireRuleDataChangeTrigger | HireRuleKafkaTrigger; + triggerConditionType?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/SavedJobExpiryMessage.pdsc + + export interface SavedJobExpiryMessage { + memberId: number; + jobId: number; + jobTitle: string; + companyId?: number; + expirationDate: number; + communicationChannel?: Com.Linkedin.Avro2pegasus.Events.Communications.Channel; + } + // Generated from: com/linkedin/avro2pegasus/messages/StatServerEvent.pdsc + + export interface StatServerEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + application: string; + eventTime: number; + dimensions: DimensionValue[]; + itemId: string; + counts: { [id: string]: number }; + } + // Generated from: com/linkedin/avro2pegasus/messages/TargetRule.pdsc + + export type TargetRule = 'FIRST_DEGREE' | 'SELF'; + // Generated from: com/linkedin/avro2pegasus/messages/TeamlinkCompanyOverlapMessage.pdsc + + export interface TeamlinkCompanyOverlapMessage { + companyId: number; + part: number; + totalParts: number; + companyOverlapCounts: idCountPair[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/WvatjCapJobEventMessage.pdsc + + export interface WvatjCapJobEventMessage { + jobId: number; + contractId: number; + accountId: number; + day: number; + attribute: number; + value?: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/WvatjCapJobFunctionMessage.pdsc + + export interface WvatjCapJobFunctionMessage { + jobId: number; + contractId: number; + accountId: number; + jobFunction: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/WvatjCapJobMessage.pdsc + + export interface WvatjCapJobMessage { + jobId: number; + contractId: number; + accountId: number; + posterId: number; + country: string; + regionCode?: number; + jobFunctions?: string; + jobTitle: string; + closeDay?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/WVMXDecorationEvent.pdsc + + export interface WVMXDecorationEvent { + itemId: number; + memberId: number; + memberAction: string; + industryCode: number; + countryCode: string; + referer?: string; + seniority: number; + timeInDays: number; + timeInHours: number; + timeInMinutes: number; + } + namespace Abook { + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookContactEmailConfirmedEvent.pdsc + + export interface ABookContactEmailConfirmedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + email?: string; + emailConfirmedTime?: number; + version: ABookMessageVersion; + connectionUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookContactFromInvitation.pdsc + + export interface ABookContactFromInvitation { + firstName?: string; + lastName?: string; + email?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookContactsDeleteEvent.pdsc + + export interface ABookContactsDeleteEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + deleteTime?: number; + version: ABookMessageVersion; + sourceIds?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookContactsFromInvitationEvent.pdsc + + export interface ABookContactsFromInvitationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + inviterUrn: string; + invitationTime?: number; + version: ABookMessageVersion; + invitees?: ABookContactFromInvitation[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookContactsUploadEvent.pdsc + + export interface ABookContactsUploadEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + mediaId?: string; + origin?: string; + email?: string; + isDeleteMedia: boolean; + country?: string; + contactImportTime?: number; + ticketId?: string; + version: ABookMessageVersion; + abookImportTransactionId?: string; + memberSessionUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookMessageVersion.pdsc + + export interface ABookMessageVersion { + versionNumber?: versionNumberEnum; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookSearchConnectionChangeEvent.pdsc + + export interface ABookSearchConnectionChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + changeType: changeTypeEnum; + version: ABookMessageVersion; + connectionUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookSearchContext.pdsc + + export interface ABookSearchContext { + locale?: Com.Linkedin.Avro2pegasus.Events.Locale; + cutoffTimeForNewConns?: number; + cutoffTimeForConnsWithNewConns?: number; + isFetchConnsFromDB: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookSearchInvalidateIndexEvent.pdsc + + export interface ABookSearchInvalidateIndexEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + version: ABookMessageVersion; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookSearchMarkDirtyEvent.pdsc + + export interface ABookSearchMarkDirtyEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + version: ABookMessageVersion; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookSearchRebuildIndexEvent.pdsc + + export interface ABookSearchRebuildIndexEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + version: ABookMessageVersion; + userLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookSearchTagChangeEvent.pdsc + + export interface ABookSearchTagChangeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + version: ABookMessageVersion; + abookSearchContext?: ABookSearchContext; + tags?: { [id: string]: null | number[] }; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookSyncMemberMappingsEvent.pdsc + + export interface ABookSyncMemberMappingsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + taskId?: string; + version: ABookMessageVersion; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookTag.pdsc + + export interface ABookTag { + tagId: number; + tagName?: string; + tagType: tagTypeEnum; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookTagAddTagsToSubjectsEvent.pdsc + + export interface ABookTagAddTagsToSubjectsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + version: ABookMessageVersion; + abookSearchContext?: ABookSearchContext; + isCreateNewTags: boolean; + tags?: ABookTag[]; + subjects?: ABookTagSubject[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookTagBreakConnectionEvent.pdsc + + export interface ABookTagBreakConnectionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn1: string; + memberUrn2: string; + version: ABookMessageVersion; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookTagCloseAccountEvent.pdsc + + export interface ABookTagCloseAccountEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + version: ABookMessageVersion; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/ABookTagSubject.pdsc + + export interface ABookTagSubject { + subjectId: number; + subjectType: subjectTypeEnum; + } + // Generated from: com/linkedin/avro2pegasus/messages/abook/changeTypeEnum.pdsc + + export type changeTypeEnum = 'ADD' | 'REMOVE'; + // Generated from: com/linkedin/avro2pegasus/messages/abook/subjectTypeEnum.pdsc + + export type subjectTypeEnum = 'MEMBER' | 'ABOOK_CONTACT'; + // Generated from: com/linkedin/avro2pegasus/messages/abook/tagTypeEnum.pdsc + + export type tagTypeEnum = 'CLASSMATES' | 'COLLEAGUES' | 'FRIENDS' | 'GROUP_MEMBERS' | 'PARTNERS'; + // Generated from: com/linkedin/avro2pegasus/messages/abook/versionNumberEnum.pdsc + + export type versionNumberEnum = + | 'CURRENT' + | 'LEGACY' + | 'OTHER' + | 'PRE_INVALIDATE_INDEX' + | 'PRE_HIGH_AVAILABILITY'; + } + namespace Accessgrantproof { + // Generated from: com/linkedin/avro2pegasus/messages/accessgrantproof/AccessGrantPermission.pdsc + + export interface AccessGrantPermission { + permissionUrn: string; + type: AccessGrantPermissionType; + name: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/accessgrantproof/AccessGrantPermissionType.pdsc + + export type AccessGrantPermissionType = + | 'EXTERNAL_MEMBER_PERMISSION' + | 'APPLICATION_THREE_LEGGED' + | 'APPLICATION_TWO_LEGGED'; + // Generated from: com/linkedin/avro2pegasus/messages/accessgrantproof/AccessGrantProofStatus.pdsc + + export type AccessGrantProofStatus = 'VALID' | 'DISABLED'; + // Generated from: com/linkedin/avro2pegasus/messages/accessgrantproof/AccessTokenProofContent.pdsc + + export interface AccessTokenProofContent { + identityUrns: string[]; + developerApplicationUrn: string; + tokenId: number; + status: AccessTokenProofStatus; + secret: string; + scopeId: number; + permissions: AccessGrantPermission[]; + expirationTime: number; + creationTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/accessgrantproof/AccessTokenProofStatus.pdsc + + export type AccessTokenProofStatus = 'VALID' | 'REVOKED' | 'MEMBER_RESTRICTED'; + // Generated from: com/linkedin/avro2pegasus/messages/accessgrantproof/ApplicationAccessGrantProofContent.pdsc + + export interface ApplicationAccessGrantProofContent { + developerApplicationUrn: string; + parentDeveloperApplicationUrn?: string; + status: AccessGrantProofStatus; + permissions: AccessGrantPermission[]; + creationTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/accessgrantproof/ThirdPartyAccessGrantProofMessage.pdsc + + export interface ThirdPartyAccessGrantProofMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + serializedContent: string; + serializedContentClass: string; + signature: string; + } + } + namespace Ads { + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdAccountsFulfilledPromotionCriteriaMessage.pdsc + + export interface AdAccountsFulfilledPromotionCriteriaMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + accountUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdAudienceMatchMatchingRateUpdateMessage.pdsc + + export interface AdAudienceMatchMatchingRateUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + adAudienceMatchUrn: string; + matchingRate: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdAudienceMatchSegmentMemberCountUpdateMessage.pdsc + + export interface AdAudienceMatchSegmentMemberCountUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + segmentUrn: string; + memberCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdBudgetUpdateMessage.pdsc + + export interface AdBudgetUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + spenderUrn: string; + dailyBudgetSpent: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + totalBudgetSpent: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + budgetSpentTime: number; + sliceId?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdCampaignAudienceCountHoldUpdateMessage.pdsc + + export interface AdCampaignAudienceCountHoldUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + campaignUrn: string; + campaignHoldStatusOperation: CampaignHoldStatusOperationType; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdCampaignDeliveredMessage.pdsc + + export interface AdCampaignDeliveredMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + campaignUrn: string; + campaignGroupUrn: string; + accountUrn: string; + ecpi: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + servedTime: number; + impressionProbability: number; + discountFactor: number; + thresholdAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdConversionTrackingProcessorMessage.pdsc + + export interface AdConversionTrackingProcessorMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + conversionTime: number; + bizoEncryptedMemberUrn?: string; + encryptedUserAgent?: string; + llaPartnerUrn: string; + llaConversionUrn: string; + llaRuleUrns: string[]; + conversionActionType: Com.Linkedin.Avro2pegasus.Events.Ads.AdConversionActionType; + conversionValue: Com.Linkedin.Avro2pegasus.Events.MoneyValue; + sponsoredCampaignUrns: string[]; + liptCookieContents?: string; + adConversionExternalEventSource?: Com.Linkedin.Avro2pegasus.Events.Ads.AdConversionExternalEventSource; + postClickAttributionWindowSizeSetting?: number; + viewThroughAttributionWindowSizeSetting?: number; + conversionMethod?: Com.Linkedin.Avro2pegasus.Events.Ads.AdConversionMethod; + oatmlCookieData?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.OffsiteAdTrackingCookie; + insightTagFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.InsightTagFormat; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdConversionTrackingSamzaCacheUpdateMessage.pdsc + + export interface AdConversionTrackingSamzaCacheUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + expiredLlaConversionUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdCreativeServingStatusChangeMessage.pdsc + + export interface AdCreativeServingStatusChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + creativeUrns: string[]; + accountUrn: string; + servingStatusesToAdd: CreativeServingStatus[]; + servingStatusesToRemove: CreativeServingStatus[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdCreativeStatsMessage.pdsc + + export interface AdCreativeStatsMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: string; + advertiserUrn: string; + campaignUrn: string; + creativeUrn: string; + timestamp: number; + campaignType: number; + impressionCount: number; + clickCount: number; + otherClickCount: number; + conversionCount: number; + costInCurrency: number; + currency: string; + cost: number; + costAdjustment: number; + campaignGroupUrn?: string; + dailyBudget?: number; + accountCostAdjustment?: number; + campaignGroupCostAdjustment?: number; + campaignCostAdjustment?: number; + videoViewCount?: number; + totalBudget?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdEntityCacheChangeMessage.pdsc + + export interface AdEntityCacheChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + eventSourceType: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdEntityCacheEventSourceType; + entityUrn: string; + eventConsumerList: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdEntityCacheEventConsumerType[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdEntityChangeAuditMessage.pdsc + + export interface AdEntityChangeAuditMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + trackingId: string; + entityType: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.AdEntityType; + metadata: AdEntityChangeMetadata; + sponsoredAccountUrn?: string; + sponsoredCampaignGroupUrn?: string; + sponsoredCampaignUrn?: string; + sponsoredCreativeUrn?: string; + oldEntity?: string; + newEntity?: string; + changedFields: string[]; + diff?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdEntityChangeMetadata.pdsc + + export interface AdEntityChangeMetadata { + sourceUrn: string; + forwardingColo?: string; + processingColo: string; + isSuperUser: boolean; + isSystemUser: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdEventWithConversionDeleteMessage.pdsc + + export interface AdEventWithConversionDeleteMessage { + sponsoredAccountUrn: string; + adEventId: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdExperimentResultAvailableMessage.pdsc + + export interface AdExperimentResultAvailableMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + adExperimentUrn: string; + lastCollectedTime: number; + isWinnerAvailable: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdGenericRtbScoreMessage.pdsc + + export interface AdGenericRtbScoreMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + targetId: string; + provider: string; + version: string; + createdAt: number; + lastModified: number; + trackingInfo: string; + itemScoreTuples: itemScoreTuple[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdRealTimeBiddingPublisherUpdateEvent.pdsc + + export interface AdRealTimeBiddingPublisherUpdateEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + adsPublisherIdentifier: string; + adsPublisherInventoryType: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.AdsPublisherInventoryType; + adsPublisherIabCategories?: string[]; + reviewPriority?: ReviewPriority; + adFormat?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdFormat; + adExchangeId?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.AdExchangeId; + thirdPartyDataProvider?: ThirdPartyDataProvider; + requestedInformation?: PublisherInformationType[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdRealTimeBiddingServingQualityMessage.pdsc + + export interface AdRealTimeBiddingServingQualityMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + reportedFraudulentEntity: ReportedFraudulentEntity; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdSegmentStatisticsUpdateMessage.pdsc + + export interface AdSegmentStatisticsUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + adSegmentUrn: string; + segmentStatus?: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.AdSegmentStatus; + targetableAudienceCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdServedCampaignMessage.pdsc + + export interface AdServedCampaignMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + campaignUrn: string; + campaignGroupUrn: string; + accountUrn: string; + ecpi: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + servedTime: number; + campaignIndex: number; + campaignType: Com.Linkedin.Avro2pegasus.Events.AdCampaignType; + campaignBidType: Com.Linkedin.Avro2pegasus.Events.Ads.AdBidType; + channelId: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdsModelCoefficientMessage.pdsc + + export interface AdsModelCoefficientMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + coefficientKey: CoefficientKey; + coefficientValues: CoefficientValues; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdTargetingCacheUpdateNotificationEvent.pdsc + + export interface AdTargetingCacheUpdateNotificationEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + adTargetId: Com.Linkedin.Avro2pegasus.Events.AdTargetId; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdvertiserLandingPageGaapTaskRequest.pdsc + + export interface AdvertiserLandingPageGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: ScrapeAdvertiserLandingPageRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AdvertiserLandingPageGaapTaskResponse.pdsc + + export interface AdvertiserLandingPageGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: ScrapeAdvertiserLandingPageResponse; + taskInput?: ScrapeAdvertiserLandingPageRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AppNexusUserSegmentUpdatesGaapTaskRequest.pdsc + + export interface AppNexusUserSegmentUpdatesGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: EncodedUserSegmentUpdates; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/AssetCopyActionUpdateStateMessage.pdsc + + export interface AssetCopyActionUpdateStateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + assetCopyActionUrn: string; + state: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.AssetCopyActionState; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/BatchSegmentUpdateGaapTaskRequest.pdsc + + export interface BatchSegmentUpdateGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: BatchUserSegmentUpdates; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/BatchSegmentUpdateJobDetails.pdsc + + export interface BatchSegmentUpdateJobDetails { + destination: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.DMPDestination; + jobId: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/BatchSegmentUpdateResults.pdsc + + export interface BatchSegmentUpdateResults { + destination: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.DMPDestination; + validCount: number; + validUserCount: number; + invalidUserCount: number; + invalidFormatCount: number; + invalidSegmentCount: number; + unauthorizedSegmentCount: number; + inactiveSegmentCount: number; + pastExpirationCount: number; + otherErrorCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/BatchUserSegmentUpdates.pdsc + + export interface BatchUserSegmentUpdates { + updates: UserSegmentUpdates[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/CampaignCreativeSelection.pdsc + + export type CampaignCreativeSelection = 'ROUND_ROBIN' | 'OPTIMIZED'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/CampaignHoldStatusOperationType.pdsc + + export type CampaignHoldStatusOperationType = + | 'CAMPAIGN_AUDIENCE_COUNT_HOLD' + | 'CAMPAIGN_AUDIENCE_COUNT_UNHOLD'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/CampaignInsightMessage.pdsc + + export interface CampaignInsightMessage { + type: CampaignInsightType; + name?: string; + hypotheticalSelfInsightData: HypotheticalSelfInsightData[]; + hypotheticalComparativeInsightData: HypotheticalComparativeInsightData[]; + historicalSelfInsightData: HistoricalSelfInsightData[]; + historicalComparativeInsightData: HistoricalComparativeInsightData[]; + targetingInsightData: TargetingInsightData[]; + healthScore?: number; + campaignUrn: string; + status: CampaignInsightStatus; + source: CampaignInsightSource; + sourceName?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/CampaignInsightSource.pdsc + + export type CampaignInsightSource = 'ADS_ENGINEERING' | 'DATA_TEAM' | 'BIZ_ANALYTICS' | 'CUSTOM'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/CampaignInsightStatus.pdsc + + export type CampaignInsightStatus = 'ACTIVE' | 'DISMISSED' | 'COMPLETED' | 'DELETED'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/CampaignInsightType.pdsc + + export type CampaignInsightType = + | 'BID' + | 'TARGETING' + | 'CREATIVE_SELECTION' + | 'DAILY_BUDGET' + | 'TOTAL_BUDGET' + | 'CTR' + | 'CREATIVES' + | 'CUSTOM'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/CampaignRecommendationMessage.pdsc + + export interface CampaignRecommendationMessage { + campaignUrn: string; + status: RecommendationStatus; + recommendations: Recommendations; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/CampaignStatus.pdsc + + export type CampaignStatus = 'ACTIVE' | 'PAUSED' | 'ARCHIVED' | 'COMPLETED' | 'CANCELED'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/CampaignTargetingExpressionRegenerationEvent.pdsc + + export interface CampaignTargetingExpressionRegenerationEvent { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + campaignUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/CampaignType.pdsc + + export type CampaignType = 'TEXT_AD' | 'SPONSORED_UPDATES'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/CoefficientKey.pdsc + + export interface CoefficientKey { + entityUrn?: string; + version: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/CoefficientValues.pdsc + + export interface CoefficientValues { + pushVersion: number; + sections: Section[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/CostType.pdsc + + export type CostType = 'CPM' | 'CPC' | 'CPA'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/CreativeServingStatus.pdsc + + export type CreativeServingStatus = + | 'RUNNABLE' + | 'STOPPED' + | 'UNDER_REVIEW' + | 'REJECTED' + | 'FORM_HOLD' + | 'PROCESSING' + | 'PROCESSING_FAILED' + | 'REFERRED_CONTENT_QUALITY_HOLD' + | 'JOB_POSTING_ON_HOLD' + | 'JOB_POSTING_INVALID'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/DirectSponsoredContentCleanupMessage.pdsc + + export interface DirectSponsoredContentCleanupMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + urn: string; + workflow: WorkflowType; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/DMPSegmentMatchRateUpdateMessage.pdsc + + export interface DMPSegmentMatchRateUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + segmentUrn: string; + destination: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.DMPDestination; + matchedCount: number; + targetableAudienceCount: number; + totalInputCount: number; + lastModifiedTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/DMPSegmentMembershipUpdateRequestMessage.pdsc + + export interface DMPSegmentMembershipUpdateRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + segmentUrn: string; + company?: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPCompany; + user?: Com.Linkedin.Avro2pegasus.Events.Sis.TypedId; + action: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPEntityAction; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/DMPSegmentStatisticsUpdateMessage.pdsc + + export interface DMPSegmentStatisticsUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + dmpSegmentUrn: string; + destination: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.DMPDestination; + segmentStatus?: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.DMPSegmentStatus; + matchedCount?: number; + targetableAudienceCount?: number; + inputEntryCount?: number; + lastModifiedTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/ElementPair.pdsc + + export interface ElementPair { + index: number; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/EncodedUserSegmentUpdates.pdsc + + export interface EncodedUserSegmentUpdates { + encodedUpdates: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/HistoricalComparativeInsightData.pdsc + + export interface HistoricalComparativeInsightData { + timeRange: Com.Linkedin.Avro2pegasus.Messages.Common.TimeRange; + population: InsightVariable[]; + populationMetrics?: InsightPopulationMetric; + comparativeResults: InsightComparativeMetric; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/HistoricalSelfInsightData.pdsc + + export interface HistoricalSelfInsightData { + timeRange: Com.Linkedin.Avro2pegasus.Messages.Common.TimeRange; + outcome: InsightOutcome; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/HttpRequestHeader.pdsc + + export interface HttpRequestHeader { + name: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/HttpResponseHeader.pdsc + + export interface HttpResponseHeader { + name: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/HypotheticalComparativeInsightData.pdsc + + export interface HypotheticalComparativeInsightData { + precondition: InsightSettableAttribute; + outcome: InsightComparativeMetric; + population: InsightVariable[]; + timeRange: Com.Linkedin.Avro2pegasus.Messages.Common.TimeRange; + confidenceScore: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/HypotheticalSelfInsightData.pdsc + + export interface HypotheticalSelfInsightData { + precondition: InsightSettableAttribute; + outcome: InsightOutcome; + timeRange?: Com.Linkedin.Avro2pegasus.Messages.Common.TimeRange; + confidenceScore: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightComparativeMetric.pdsc + + export interface InsightComparativeMetric { + impressions?: InsightComparativeValue; + clicks?: InsightComparativeValue; + follows?: InsightComparativeValue; + likes?: InsightComparativeValue; + comments?: InsightComparativeValue; + shares?: InsightComparativeValue; + membersTargeted?: InsightComparativeValue; + unitCost?: InsightComparativeValue; + cost?: InsightComparativeValue; + cpc?: InsightComparativeValue; + cpm?: InsightComparativeValue; + ctr?: InsightComparativeValue; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightComparativeValue.pdsc + + export interface InsightComparativeValue { + percentile: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightOutcome.pdsc + + export interface InsightOutcome { + impressions?: number; + clicks?: number; + follows?: number; + likes?: number; + comments?: number; + shares?: number; + membersTargeted?: number; + cost?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + cpc?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + cpm?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + ctr?: number; + uniqueMembersForImpressions?: number; + uniqueMembersForClicks?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightPopulationMetric.pdsc + + export interface InsightPopulationMetric { + impressions?: InsightPopulationMetricLongValue; + clicks?: InsightPopulationMetricLongValue; + follows?: InsightPopulationMetricLongValue; + likes?: InsightPopulationMetricLongValue; + comments?: InsightPopulationMetricLongValue; + shares?: InsightPopulationMetricLongValue; + membersTargeted?: InsightPopulationMetricLongValue; + unitCost?: InsightPopulationMetricMoneyAmountValue; + cost?: InsightPopulationMetricMoneyAmountValue; + cpc?: InsightPopulationMetricMoneyAmountValue; + cpm?: InsightPopulationMetricMoneyAmountValue; + ctr?: InsightPopulationMetricDoubleValue; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightPopulationMetricDoubleValue.pdsc + + export interface InsightPopulationMetricDoubleValue { + maximum?: number; + minimum?: number; + average?: number; + median?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightPopulationMetricLongValue.pdsc + + export interface InsightPopulationMetricLongValue { + maximum?: number; + minimum?: number; + average?: number; + median?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightPopulationMetricMoneyAmountValue.pdsc + + export interface InsightPopulationMetricMoneyAmountValue { + maximum?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + minimum?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + average?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + median?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightSettableAttribute.pdsc + + export interface InsightSettableAttribute { + creativeSelection?: CampaignCreativeSelection; + unitCost?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + dailyBudget?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + totalBudget?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + targets?: TargetFacets; + offsiteDeliveryAllowed?: boolean; + broadMatchEnabled?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightVariable.pdsc + + export interface InsightVariable { + campaignType?: CampaignType; + costType?: CostType; + creativeSelection?: CampaignCreativeSelection; + targets?: TargetFacets; + numOfCreatives?: InsightVariableLongRange; + unitCost?: InsightVariableMoneyAmountRange; + dailyBudget?: InsightVariableMoneyAmountRange; + totalBudget?: InsightVariableMoneyAmountRange; + offsiteDeliveryAllowed?: boolean; + broadMatchEnabled?: boolean; + impressions?: InsightVariableLongRange; + clicks?: InsightVariableLongRange; + follows?: InsightVariableLongRange; + likes?: InsightVariableLongRange; + comments?: InsightVariableLongRange; + shares?: InsightVariableLongRange; + membersTargeted?: InsightVariableLongRange; + cost?: InsightVariableMoneyAmountRange; + ctr?: InsightVariableDoubleRange; + uniqueMembersForImpressions?: InsightVariableLongRange; + uniqueMembersForClicks?: InsightVariableLongRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightVariableDoubleRange.pdsc + + export interface InsightVariableDoubleRange { + start?: number; + end?: number; + startExclusive: boolean; + endExclusive: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightVariableLongRange.pdsc + + export interface InsightVariableLongRange { + start?: number; + end?: number; + startExclusive: boolean; + endExclusive: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/InsightVariableMoneyAmountRange.pdsc + + export interface InsightVariableMoneyAmountRange { + start?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + end?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + startExclusive: boolean; + endExclusive: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/itemScoreTuple.pdsc + + export interface itemScoreTuple { + itemId: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/LeadNotificationGaapTaskRequest.pdsc + + export interface LeadNotificationGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + taskInput: Com.Linkedin.Avro2pegasus.Messages.Ads.Lead.NotificationParameters; + gaapAuthenticationHeader?: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/LeadNotificationGaapTaskResponse.pdsc + + export interface LeadNotificationGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskInput?: Com.Linkedin.Avro2pegasus.Messages.Ads.Lead.NotificationParameters; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/PublisherInformationType.pdsc + + export type PublisherInformationType = 'GENERAL' | 'FRAUD' | 'CONTEXTUAL' | 'AUTHORIZED_DIGITAL_SELLERS'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/Recommendations.pdsc + + export interface Recommendations { + status?: CampaignStatus; + statusReason?: string[]; + dailyBudget?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + dailyBudgetReason?: string[]; + totalBudget?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + totalBudgetReason?: string[]; + unitCost?: Com.Linkedin.Avro2pegasus.Messages.Common.MoneyAmount; + unitCostReason?: string[]; + creativeSelection?: CampaignCreativeSelection; + creativeSelectionReason?: string[]; + targets?: TargetFacets; + targetFacetsReason?: string[]; + runSchedule?: Com.Linkedin.Avro2pegasus.Messages.Common.TimeRange; + runScheduleReason?: string[]; + numOfCreatives?: number; + numOfCreativesReason?: string[]; + activateCreatives?: string[]; + activateCreativesReason?: string[]; + pauseCreatives?: string[]; + pauseCreativesReason?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/RecommendationStatus.pdsc + + export type RecommendationStatus = 'ACTIVE' | 'ACCEPTED' | 'REJECTED' | 'OUT_OF_DATE' | 'INACTIVE'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/ReportedFraudulentEntity.pdsc + + export interface ReportedFraudulentEntity { + entityName: string; + entityValue: string; + fraudulentProbability: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/ReviewerInfo.pdsc + + export interface ReviewerInfo { + memberUrn?: string; + csUserUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/ReviewPriority.pdsc + + export type ReviewPriority = 'HIGH' | 'MEDIUM' | 'LOW'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/ScrapeAdvertiserLandingPageRequest.pdsc + + export interface ScrapeAdvertiserLandingPageRequest { + scrapeId: string; + advertiserLandingPageUrl: string; + contentUrn: string; + httpRequestHeaders: HttpRequestHeader[]; + count?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/ScrapeAdvertiserLandingPageResponse.pdsc + + export interface ScrapeAdvertiserLandingPageResponse { + scrapeId: string; + httpStatusCode: number; + httpResponseHeaders: HttpResponseHeader[]; + isCookiePresent?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/Section.pdsc + + export interface Section { + name: string; + vector: SparseVector; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/SegmentCopyMessage.pdsc + + export interface SegmentCopyMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + assetCopyHistoryId: number; + sourceSegmentUrn: string; + destinationSegmentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/SegmentUpdate.pdsc + + export interface SegmentUpdate { + segmentId: string; + action: Com.Linkedin.Avro2pegasus.Events.Common.Ads.DMPEntityAction; + timestamp: number; + expirationTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/SegmentUpdateGaapTaskResponse.pdsc + + export interface SegmentUpdateGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: BatchSegmentUpdateResults; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/SegmentUpdateV2GaaPTaskResponse.pdsc + + export interface SegmentUpdateV2GaaPTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: BatchSegmentUpdateJobDetails; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/SparseVector.pdsc + + export interface SparseVector { + elements: ElementPair[]; + dimension: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/TargetFacet.pdsc + + export interface TargetFacet { + facet?: TargetFacetType; + include: string[]; + exclude: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/TargetFacets.pdsc + + export interface TargetFacets { + dataVersion: number; + facets?: TargetFacet[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/TargetFacetType.pdsc + + export type TargetFacetType = + | 'INDUSTRIES' + | 'GENDER' + | 'JOB_FUNCTIONS' + | 'SENIORITIES' + | 'AGES' + | 'LOCATIONS' + | 'COMPANY_SIZES' + | 'COMPANIES' + | 'GROUPS' + | 'TITLES' + | 'SKILLS' + | 'SCHOOLS' + | 'LANGUAGES' + | 'FOLLOW_COMPANIES' + | 'DEGREES' + | 'FIELDS_OF_STUDY' + | 'GRADUATION_YEARS'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/TargetingInsightData.pdsc + + export interface TargetingInsightData { + timeRange: Com.Linkedin.Avro2pegasus.Messages.Common.TimeRange; + targetFacets: TargetFacets; + outcome: InsightOutcome; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/ThirdPartyDataProvider.pdsc + + export type ThirdPartyDataProvider = 'APPANNIE' | 'PIXALATE' | 'IAS'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/UserSegmentUpdates.pdsc + + export interface UserSegmentUpdates { + destination: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.DMPDestination; + userId: string; + optOut: boolean; + userSegmentUpdates: SegmentUpdate[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/WorkflowType.pdsc + + export type WorkflowType = 'CREATIVE_CANCEL'; + namespace Bulkaction { + // Generated from: com/linkedin/avro2pegasus/messages/ads/bulkaction/AdBulkActionMessage.pdsc + + export interface AdBulkActionMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + id: string; + ownerUrn: string; + entityType: Com.Linkedin.Avro2pegasus.Messages.Common.Ads.AdEntityType; + sourceUrn: string; + } + } + namespace Lead { + // Generated from: com/linkedin/avro2pegasus/messages/ads/lead/NotificationParameters.pdsc + + export interface NotificationParameters { + createdTime: number; + externalNotificationUrl: string; + retryTimes: number; + accountUrn: string; + campaignUrn: string; + creativeUrn: string; + formUrn: string; + formResponseUrn: string; + developerApplicationUrn?: string; + } + } + namespace Quality { + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/AdReviewTriggerAction.pdsc + + export type AdReviewTriggerAction = + | 'USER_REPORT' + | 'CREATIVE_CREATE' + | 'CREATIVE_UPDATE' + | 'CAMPAIGN_UPDATE' + | 'ADS_TRANSPARENCY_USER_REPORT' + | 'ASSOCIATED_FORM_UPDATE'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewDecision.pdsc + + export type ReviewDecision = + | 'APPROVED' + | 'REJECTED' + | 'LOW_CONFIDENCE_APPROVED' + | 'LOW_CONFIDENCE_REJECTED' + | 'NOT_SURE' + | 'ESCALATION'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewDecisionReasons.pdsc + + export interface ReviewDecisionReasons { + reviewDecisionReasons?: ReviewRejectionReasons; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewObject.pdsc + + export interface ReviewObject { + entityUrn: string; + reviewTrigger: AdReviewTriggerAction; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewRejectionReasons.pdsc + + export interface ReviewRejectionReasons { + rejectionReasons: Com.Linkedin.Avro2pegasus.Events.Ads.RejectionCode[]; + cardsRejectionInformation: Com.Linkedin.Avro2pegasus.Events.Ads.CardRejectionInformation[]; + messageRejectionInformation?: Com.Linkedin.Avro2pegasus.Events.Ads.MessageRejectionInformation[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewRequest.pdsc + + export interface ReviewRequest { + requestSystem: ReviewSystem; + responseSystem: ReviewSystem; + requestType: ReviewRequestType; + session: ReviewSession; + reviewObject: ReviewObject; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewRequestMessage.pdsc + + export interface ReviewRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + reviewRequest: ReviewRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewRequestType.pdsc + + export type ReviewRequestType = 'REVIEW' | 'ABANDON'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewResponse.pdsc + + export interface ReviewResponse { + requestSystem: ReviewSystem; + responseSystem: ReviewSystem; + requestType: ReviewRequestType; + session: ReviewSession; + reviewDecision: ReviewDecision; + reviewDecisionReasons?: ReviewDecisionReasons; + reviewObject: ReviewObject; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewResponseMessage.pdsc + + export interface ReviewResponseMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + reviewResponse: ReviewResponse; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewSession.pdsc + + export interface ReviewSession { + sessionID: string; + contentTimestamp?: number; + contentHash?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/quality/ReviewSystem.pdsc + + export interface ReviewSystem { + namespace: string; + id: number; + } + } + namespace Review { + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/AbandonDecision.pdsc + + export interface AbandonDecision { + decisionOutcome: AbandonDecisionOutcome; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/AbandonDecisionOutcome.pdsc + + export type AbandonDecisionOutcome = 'ABANDONED' | 'REVIEWED'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/AbandonRequest.pdsc + + export interface AbandonRequest { + clientServer: ClientServer; + reviewee: Reviewee; + reviewSession: ReviewSession; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/AbandonRequestMessageV1.pdsc + + export interface AbandonRequestMessageV1 { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + abandonRequest: AbandonRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/AbandonResponse.pdsc + + export interface AbandonResponse { + clientServer: ClientServer; + abandonDecision: AbandonDecision; + reviewee: Reviewee; + reviewSession: ReviewSession; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/AbandonResponseMessageV1.pdsc + + export interface AbandonResponseMessageV1 { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + abandonResponse: AbandonResponse; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/Actor.pdsc + + export interface Actor { + namespace: string; + actorUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ApprovalCode.pdsc + + export type ApprovalCode = 'ENTERPRISE'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ApprovalDecision.pdsc + + export interface ApprovalDecision { + approvalDecisionDetails: ApprovalDecisionDetail[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ApprovalDecisionDetail.pdsc + + export interface ApprovalDecisionDetail { + approvalCode: ApprovalCode; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ClientServer.pdsc + + export interface ClientServer { + client: Actor; + server: Actor; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/NodeRejectionDetail.pdsc + + export interface NodeRejectionDetail { + indexUrn: string; + rejectionDecisionDetails: RejectionDecisionDetail[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/RejectionDecision.pdsc + + export interface RejectionDecision { + rejectionDecisionDetails: RejectionDecisionDetail[]; + nodeLevelRejectionDetails?: NodeRejectionDetail[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/RejectionDecisionDetail.pdsc + + export interface RejectionDecisionDetail { + rejectionCode: Com.Linkedin.Avro2pegasus.Events.Ads.RejectionCode; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ReviewDecision.pdsc + + export interface ReviewDecision { + decisionOutcome: ReviewDecisionOutcome; + approvalDecision?: ApprovalDecision; + rejectionDecision?: RejectionDecision; + unreviewedDecision?: UnreviewedDecision; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ReviewDecisionOutcome.pdsc + + export type ReviewDecisionOutcome = 'APPROVED' | 'REJECTED' | 'UNREVIEWED'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/Reviewee.pdsc + + export interface Reviewee { + entityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ReviewRequest.pdsc + + export interface ReviewRequest { + clientServer: ClientServer; + reviewee: Reviewee; + reviewSession: ReviewSession; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ReviewRequestMessageV1.pdsc + + export interface ReviewRequestMessageV1 { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + reviewRequest: ReviewRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ReviewResponse.pdsc + + export interface ReviewResponse { + clientServer: ClientServer; + reviewDecision: ReviewDecision; + reviewee: Reviewee; + reviewSession: ReviewSession; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ReviewResponseMessageV1.pdsc + + export interface ReviewResponseMessageV1 { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + reviewResponse: ReviewResponse; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/ReviewSession.pdsc + + export interface ReviewSession { + sessionID: string; + sessionMetadata?: SessionMetadata; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/SessionMetadata.pdsc + + export interface SessionMetadata { + source?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/UnreviewedCode.pdsc + + export type UnreviewedCode = 'QUALITY' | 'CAPACITY'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/UnreviewedDecision.pdsc + + export interface UnreviewedDecision { + unreviewedDecisionDetail: UnreviewedDecisionDetail[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/review/UnreviewedDecisionDetail.pdsc + + export interface UnreviewedDecisionDetail { + unreviewedCode: UnreviewedCode; + } + } + namespace Tracking { + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/aggregateTagStatsRow.pdsc + + export interface aggregateTagStatsRow { + account: string; + campaign: string; + creative: string; + tag: string; + eventType: Com.Linkedin.Avro2pegasus.Tracking.Common.Ads.TrackingEventType; + eventTypeCount: number; + supplementalData?: ThirdPartyTrackingSftpMoatData; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/HttpHeader.pdsc + + export interface HttpHeader { + headerName: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/ThirdPartyTrackingGaapTaskRequest.pdsc + + export interface ThirdPartyTrackingGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + taskInput: ThirdPartyTrackingParameters; + gaapAuthenticationHeader?: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/ThirdPartyTrackingGaapTaskResponse.pdsc + + export interface ThirdPartyTrackingGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskInput?: ThirdPartyTrackingParameters; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/ThirdPartyTrackingParameters.pdsc + + export interface ThirdPartyTrackingParameters { + createdAt: number; + numOfRetries: number; + accountUrn: string; + campaignGroupUrn: string; + campaignUrn: string; + creativeUrn: string; + trackingEventType: Com.Linkedin.Avro2pegasus.Tracking.Common.Ads.TrackingEventType; + trackingUrl: string; + trackingVendor: Com.Linkedin.Avro2pegasus.Tracking.Common.Ads.ThirdPartyTrackingPlatform; + httpRequestHeaders?: HttpHeader[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/ThirdPartyTrackingSftpAction.pdsc + + export type ThirdPartyTrackingSftpAction = 'PUSH' | 'PULL'; + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/ThirdPartyTrackingSftpData.pdsc + + export interface ThirdPartyTrackingSftpData { + date: Com.Linkedin.Avro2pegasus.Events.Common.Date; + timeZone: string; + aggregateTagStats: aggregateTagStatsRow[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/ThirdPartyTrackingSftpGaapTaskRequest.pdsc + + export interface ThirdPartyTrackingSftpGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: ThirdPartyTrackingSftpParameters; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/ThirdPartyTrackingSftpGaapTaskResponse.pdsc + + export interface ThirdPartyTrackingSftpGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: ThirdPartyTrackingSftpParameters; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/ThirdPartyTrackingSftpMoatData.pdsc + + export interface ThirdPartyTrackingSftpMoatData { + accountName: string; + campaignName: string; + creativeName: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ads/tracking/ThirdPartyTrackingSftpParameters.pdsc + + export interface ThirdPartyTrackingSftpParameters { + operation: ThirdPartyTrackingSftpAction; + aggregateStats?: ThirdPartyTrackingSftpData; + } + } + } + namespace Approvals { + // Generated from: com/linkedin/avro2pegasus/messages/approvals/ApprovalCompletionMessage.pdsc + + export interface ApprovalCompletionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + approvalUrn: string; + approvalEntityUrn: string; + approvalCompletionActionType: ApprovalCompletionType; + routingEntityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/approvals/ApprovalCompletionType.pdsc + + export type ApprovalCompletionType = 'APPROVED' | 'REJECTED' | 'CANCELED'; + } + namespace Assessments { + // Generated from: com/linkedin/avro2pegasus/messages/assessments/SkillAssessmentCalibrationCompletionMessage.pdsc + + export interface SkillAssessmentCalibrationCompletionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + completedCalibrations: SkillCalibration[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/assessments/SkillCalibration.pdsc + + export interface SkillCalibration { + skillUrn: string; + } + } + namespace Atsmiddleware { + // Generated from: com/linkedin/avro2pegasus/messages/atsmiddleware/ApplicantTrackingSystemCandidatePendingMatchedMembersEvent.pdsc + + export interface ApplicantTrackingSystemCandidatePendingMatchedMembersEvent { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + integrationContextUrn: string; + dataProviderUrn: string; + atsCandidateId: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/atsmiddleware/ApplicantTrackingSystemCandidatePendingMatchedMembersMessage.pdsc + + export interface ApplicantTrackingSystemCandidatePendingMatchedMembersMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + integrationContextUrn: string; + dataProviderUrn: string; + atsCandidateId: string; + } + } + namespace Audits { + // Generated from: com/linkedin/avro2pegasus/messages/audits/AuditLoggingEvent.pdsc + + export interface AuditLoggingEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + timeRange: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + clientUrn: string; + clientIp: Com.Linkedin.Avro2pegasus.Events.IPAddress; + serverHostName: string; + targetUrl: string; + targetApplicationUrn: string; + requestHeaders: string[]; + clientConfigParameters?: string; + responseCode: number; + exceptions: string[]; + eventTag?: string; + parentEventTag?: string; + } + } + namespace Aws { + // Generated from: com/linkedin/avro2pegasus/messages/aws/KinesisToKafkaBridgeMessage.pdsc + + export interface KinesisToKafkaBridgeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + payload: number; + } + } + namespace Cap { + // Generated from: com/linkedin/avro2pegasus/messages/cap/Address.pdsc + + export interface Address { + country: string; + zip?: string; + state?: string; + city?: string; + street?: string; + type: AddressType; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/AddressType.pdsc + + export type AddressType = 'HOME' | 'SCHOOL' | 'WORK' | 'MAILING'; + // Generated from: com/linkedin/avro2pegasus/messages/cap/CapPenaltyBoxMessage.pdsc + + export interface CapPenaltyBoxMessage { + seatUrn: string; + contractUrn: string; + status: CapPenaltyBoxStatus; + updateTime: number; + highestStatus: CapPenaltyBoxStatus; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/CapPenaltyBoxStatus.pdsc + + export type CapPenaltyBoxStatus = 'NONE' | 'WARNED' | 'BLOCKED'; + // Generated from: com/linkedin/avro2pegasus/messages/cap/CapProspectInfo.pdsc + + export interface CapProspectInfo { + jobs: Job[]; + emails: Email[]; + primary_email: string; + phones: Phone[]; + addresses: Address[]; + location?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/Email.pdsc + + export interface Email { + email: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/Job.pdsc + + export interface Job { + title: string; + company: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/Phone.pdsc + + export interface Phone { + number: string; + type: PhoneType; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/PhoneType.pdsc + + export type PhoneType = 'HOME' | 'MOBILE' | 'WORK' | 'FAX'; + // Generated from: com/linkedin/avro2pegasus/messages/cap/ProspectAssociationType.pdsc + + export type ProspectAssociationType = 'LINK' | 'UNLINK'; + // Generated from: com/linkedin/avro2pegasus/messages/cap/ProspectHeader.pdsc + + export interface ProspectHeader { + docUrn: string; + prospectUrn: string; + contractUrn: string; + ownerUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/ProspectMemberMappingEvent.pdsc + + export interface ProspectMemberMappingEvent { + prospectUrn: string; + contractUrn: string; + oldMemberUrn?: string; + newMemberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/ProspectUpdateEvent.pdsc + + export interface ProspectUpdateEvent { + prospectHeader: ProspectHeader; + isActive: boolean; + memberUrn?: string; + firstName?: string; + lastName?: string; + source: Source; + prospectInfo?: CapProspectInfo; + lastUpdatedTime?: number; + authType?: string; + authToken?: string; + atsId?: string; + closedMemberUrn?: string; + virtualProspectUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/ProspectVirtualizationMessage.pdsc + + export interface ProspectVirtualizationMessage { + kafkaAuditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + prospectUrn?: string; + virtualProspectUrn?: string; + contractUrn: string; + parentContractUrn?: string; + action: ProspectAssociationType; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/ProxyPhoneMappingDeleteMessage.pdsc + + export interface ProxyPhoneMappingDeleteMessage { + memberUrn: string; + seatUrn: string; + isRecheckNeeded?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/Source.pdsc + + export interface Source { + sourceUrn: string; + name: string; + parentSourceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/SourceUpdateMessage.pdsc + + export interface SourceUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + prospectUrn: string; + virtualProspectUrn?: string; + isProspectActive: boolean; + memberUrn?: string; + contractUrn: string; + parentContractUrn: string; + ownerUrn: string; + actorUrn?: string; + firstName?: string; + lastName?: string; + createdTime: number; + lastUpdatedTime: number; + sourceUrn: string; + sourceName: string; + parentSourceUrn?: string; + isSourceActive: boolean; + atsId?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/TaggingUpdateMessage.pdsc + + export interface TaggingUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + prospectUrn: string; + virtualProspectUrn?: string; + memberUrn?: string; + contractUrn: string; + parentContractUrn: string; + ownerUrn: string; + tagType: TagType; + tagUrn: string; + parentTagUrn?: string; + tagName?: string; + projectUrn?: string; + projectName?: string; + isTagOnProspectActive: boolean; + isTagActive: boolean; + createdTime: number; + lastUpdatedTime: number; + isProjectActive?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/cap/TagType.pdsc + + export type TagType = 'STATUS' | 'TAG'; + } + namespace Careers { + // Generated from: com/linkedin/avro2pegasus/messages/careers/CategoryName.pdsc + + export type CategoryName = + | 'MEMBER_DEGREE' + | 'MEMBER_FOS' + | 'RESOLVEDSENIORITYTUPLE' + | 'MEMBER_ROLLEDUPDEGREE' + | 'IS_JOB_SEEKER' + | 'IS_STUDENT' + | 'JFU_MEMBER_STANDARDIZEDSKILLS' + | 'NICE_MEMBER_CURRENTCOMPANYSIZE' + | 'NICE_MEMBER_CURRENTFUNCTIONS' + | 'NICE_MEMBER_CURRENTSUPERTITLE' + | 'NICE_MEMBER_CURRENTTITLE' + | 'NICE_MEMBER_DEFAULTPROFILELANGUAGE' + | 'NICE_MEMBER_DEGREEIDS' + | 'NICE_MEMBER_FIELDOFSTUDY' + | 'NICE_MEMBER_INTERFACELANGUAGE' + | 'NICE_MEMBER_JOBSENIORITY' + | 'NICE_MEMBER_LOCATION' + | 'NICE_MEMBER_PROFILEINDUSTRY' + | 'JFU_MEMBER_EMBEDDINGS' + | 'INTERCEPT' + | 'MEMBER_JOB_COSINE_SIM'; + // Generated from: com/linkedin/avro2pegasus/messages/careers/CoefficientVector.pdsc + + export interface CoefficientVector { + categoryName: CategoryName; + termVector: TermVectorEntry[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/careers/RandomEffectLinearModel.pdsc + + export interface RandomEffectLinearModel { + entityUrn: string; + coefficientVectors: CoefficientVector[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/careers/RandomEffectLinearModelMessage.pdsc + + export interface RandomEffectLinearModelMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + randomEffectLinearModel: RandomEffectLinearModel; + } + // Generated from: com/linkedin/avro2pegasus/messages/careers/TermVectorEntry.pdsc + + export interface TermVectorEntry { + term: string; + value: number; + } + } + namespace Checkpoint { + // Generated from: com/linkedin/avro2pegasus/messages/checkpoint/BouncedEmailCorrectionMessage.pdsc + + export interface BouncedEmailCorrectionMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + bouncedEmailCorrectionParameters: Com.Linkedin.Avro2pegasus.Events.Checkpoint.BouncedEmailCorrectionParameters; + } + } + namespace Citadel { + // Generated from: com/linkedin/avro2pegasus/messages/citadel/BusinessUnit.pdsc + + export type BusinessUnit = 'LTS' | 'LLS' | 'LSS' | 'LMS' | 'LV8'; + // Generated from: com/linkedin/avro2pegasus/messages/citadel/CitadelAccount.pdsc + + export interface CitadelAccount { + numMembers?: number; + llsNamedAccount?: string; + lmsNamedAccount?: string; + lssNamedAccount?: string; + ltsNamedAccount?: string; + relationshipType?: string; + customerUrn?: string; + dynamicsParentAccountUrn?: string; + salesforceParentAccountId?: string; + parentCustomerUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/citadel/CitadelAccountTeamMember.pdsc + + export interface CitadelAccountTeamMember { + dynamicsOwnerId?: string; + salesforceOwnerId?: string; + teamMemberRole?: string; + businessUnit?: string; + salesRepType?: string; + sdRepSubType?: string; + topLevelSalesRegion?: string; + salesRegion?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/citadel/CitadelContact.pdsc + + export interface CitadelContact { + countryName?: string; + numMerlinApacReps?: number; + numMerlinEmeaReps?: number; + numMerlinLatamReps?: number; + numMerlinNamerReps?: number; + numMerlinOtherReps?: number; + totalMerlinReps?: number; + dynamicsContactUrn?: string; + salesforceContactId?: string; + memberId?: number; + email?: string; + dynamicsAccountUrn?: string; + salesforceAccountId?: string; + lastActivityDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + lastModifiedDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + customerUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/citadel/CitadelOpportunity.pdsc + + export interface CitadelOpportunity { + salesRegion?: string; + businessUnit?: string; + closeDate: Com.Linkedin.Avro2pegasus.Events.Common.Date; + type?: string; + stage: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/citadel/CrmLeadCreationMessage.pdsc + + export interface CrmLeadCreationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + marketingCampaignResponseUrn: string; + enterpriseCrmLeadUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/citadel/CrmType.pdsc + + export type CrmType = 'DYNAMICS' | 'SALESFORCE'; + // Generated from: com/linkedin/avro2pegasus/messages/citadel/ElevateAccountTier.pdsc + + export type ElevateAccountTier = 'TIER_1' | 'TIER_2' | 'TIER_3' | 'TIER_4'; + // Generated from: com/linkedin/avro2pegasus/messages/citadel/LeadRegion.pdsc + + export type LeadRegion = 'APAC' | 'INDIA' | 'LATAM' | 'EMEA' | 'CHINA' | 'NAMER' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/messages/citadel/LeadScores.pdsc + + export interface LeadScores { + aLeadScore: number; + brcLeadScore: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/citadel/LeadSource.pdsc + + export type LeadSource = 'SALES_FORM' | 'ELOQUA' | 'SILO' | 'MICROSOFT' | 'THIRD_PARTY'; + // Generated from: com/linkedin/avro2pegasus/messages/citadel/LeadSubregion.pdsc + + export type LeadSubregion = + | 'AFRICA' + | 'ANZ' + | 'BENELUX' + | 'BRAZIL' + | 'CHINA' + | 'DACH' + | 'EAST_ASIA' + | 'EASTERN_EUROPE' + | 'FRANCE' + | 'INDIA' + | 'ITALY' + | 'MENA' + | 'NAMER' + | 'NORDICS' + | 'NORTH_HISPANIC' + | 'SOUTH_HISPANIC' + | 'SOUTHEAST_ASIA' + | 'SPAIN' + | 'UKIE' + | 'NORTH_ASIA' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/messages/citadel/LeadType.pdsc + + export type LeadType = 'A' | 'B' | 'REQUEST_CONTENT' | 'EVENT_BASED_ACCOUNT_MARKETING' | 'REFERRAL'; + // Generated from: com/linkedin/avro2pegasus/messages/citadel/MemberStatus.pdsc + + export type MemberStatus = + | 'ATTENDED' + | 'CANCELLED' + | 'NO_SHOW' + | 'REGISTERED' + | 'REMOVE' + | 'RESPONDED' + | 'SENT' + | 'WAIT_LISTED'; + // Generated from: com/linkedin/avro2pegasus/messages/citadel/SalesLeadMessage.pdsc + + export interface SalesLeadMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + id: number; + createdTime: number; + isSfdcSuccessful?: boolean; + sfdcResponse?: string; + isEloquaSuccessful?: boolean; + eloquaResponse?: string; + isDynamicsCrmSuccessful?: boolean; + dynamicsCrmResponse?: string; + leadSource: LeadSource; + sourcePageUrl?: string; + siloId?: string; + firstName?: string; + lastName?: string; + phone?: string; + email: string; + companyName?: string; + jobTitle?: string; + role?: string; + companyIndustry?: string; + numSalesReps?: string; + orgSize?: string; + hasAdvertisingBudget?: boolean; + locale?: string; + isEmailOptOut?: boolean; + memberUrn?: number; + formData: { [id: string]: string }; + ltsLtvTier?: string; + regionalLssRepCount?: number; + llsLeadScores?: LeadScores; + lssLeadScores?: LeadScores; + ltsLeadScores?: LeadScores; + lmsSop?: number; + ltsSop?: number; + mcid?: string; + companyUrn?: string; + countryCode?: string; + region?: LeadRegion; + subregion?: LeadSubregion; + state?: string; + customerUrn?: string; + isContactMe?: boolean; + hasOpenOpportunity?: boolean; + inquiryType?: string; + businessUnit?: BusinessUnit; + campaignType?: string; + campaignDescription?: string; + memberStatus?: MemberStatus; + elevateAccountTier?: ElevateAccountTier; + numMembers?: number; + relationshipType?: string; + isElevateCustomer?: boolean; + isLlsCustomer?: boolean; + llsNamedAccount?: string; + isLmsCustomer?: boolean; + lmsNamedAccount?: string; + isLssCustomer?: boolean; + lssNamedAccount?: string; + isLtsCustomer?: boolean; + ltsNamedAccount?: string; + accountAeRoleInRegion?: string; + parentAccountAeRoleInRegion?: string; + accountRmRoleInRegion?: string; + parentAccountRmRoleInRegion?: string; + accountSdSdrmRoleInRegion?: string; + parentAccountSdSdrmRoleInRegion?: string; + hasPreviousMql?: boolean; + priority?: number; + slaInHours?: number; + leadType?: LeadType; + isMql?: boolean; + assignedSdGroup?: string; + assignedSdId?: string; + isSdRamped?: boolean; + contact?: CitadelContact; + account?: CitadelAccount; + accountTeamMembers?: CitadelAccountTeamMember[]; + parentAccount?: CitadelAccount; + parentAccountTeamMembers?: CitadelAccountTeamMember[]; + opportunities?: CitadelOpportunity[]; + crmSource?: CrmType; + considerLeadFlow?: boolean; + isLeadCreationCampaignResponse?: boolean; + } + } + namespace Comm { + // Generated from: com/linkedin/avro2pegasus/messages/comm/BounceCommandMessageEvent.pdsc + + export interface BounceCommandMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + email?: string; + ownerIdentity?: string; + bounceKey?: string; + batchKey?: string; + bounceClassification?: string; + emailId?: string; + bounceReason?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/CancelAllCommandMessageEvent.pdsc + + export interface CancelAllCommandMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ownerIdentity: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/CancelCommandMessageEvent.pdsc + + export interface CancelCommandMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + toAddressList: MessageAddress[]; + fromAddress?: MessageAddress; + cancelKey: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/ContentActionCommandMessageEvent.pdsc + + export interface ContentActionCommandMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + toAddressList?: MessageAddress[]; + fromAddress?: MessageAddress; + contentTypeList?: string[]; + contentIdsList?: string[]; + actionStatus?: MBoxItemActionStatus; + contentStatus?: MBoxItemContentStatus; + cancelDelivery?: boolean; + withdrawMessage?: boolean; + suspendStatus?: boolean; + clearReminders?: boolean; + cutoffDate?: string; + deliveryDirective?: MBoxItemDeliveryDirective; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/DeactivateMBoxCommandEvent.pdsc + + export interface DeactivateMBoxCommandEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ownerIdentity?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/DispatcherLightMessageEvent.pdsc + + export interface DispatcherLightMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + fromAddress?: MessageAddress; + toAddress?: MessageAddress; + locale?: string; + httpRequestDescriptor?: string; + emailKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/DispatcherMessageEvent.pdsc + + export interface DispatcherMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messageHeader: MessageHeader; + messageBody: MessageBody; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/InvitationMessageEvent.pdsc + + export interface InvitationMessageEvent { + invitationUrn?: string; + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + inviterID: number; + personalizedInvitedList: PersonalizedInvite[]; + subject?: string; + body?: string; + batchCount?: number; + autoResend?: boolean; + contentTemplateID?: string; + suppressInvitationEmail?: boolean; + useSpamFilter?: boolean; + hasCustomNote?: boolean; + locale?: string; + template?: string; + httpRequestDescriptor?: string; + cancelkey?: string; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/InviteeInfo.pdsc + + export interface InviteeInfo { + firstName?: string; + lastName?: string; + emailAddress?: string; + inviteeID: number; + inviteeHandleUrn?: string; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/Location.pdsc + + export interface Location { + continentCode?: string; + countryCode: string; + postalCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/LogMBoxItemsCommandMessageEvent.pdsc + + export interface LogMBoxItemsCommandMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberIdsList?: number[]; + standardFormat?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/MBoxExpectedDeliveryMethod.pdsc + + export type MBoxExpectedDeliveryMethod = + | 'EMAIL' + | 'BATCH1' + | 'BATCH2' + | 'WEB' + | 'RSS' + | 'REJECTED' + | 'DISCARDED' + | 'APPROVAL'; + // Generated from: com/linkedin/avro2pegasus/messages/comm/MBoxItemActionStatus.pdsc + + export type MBoxItemActionStatus = 'NOACTION' | 'PENDING' | 'ACTIONED'; + // Generated from: com/linkedin/avro2pegasus/messages/comm/MBoxItemActionType.pdsc + + export type MBoxItemActionType = + | 'INTR_REQUEST' + | 'INTR_RECEIVED' + | 'INTR_WITHDRAWN' + | 'INTR_ACCEPTED' + | 'INTR_DECLINED' + | 'INTR_REPLY' + | 'INTR_DECLINED_FORWARD' + | 'INTR_CS_WITHDRAWN' + | 'INML_RECEIVED' + | 'INML_ACCEPTED' + | 'INML_DECLINED' + | 'INML_REPLY' + | 'INML_WITHDRAWN' + | 'INML_CS_WITHDRAWN'; + // Generated from: com/linkedin/avro2pegasus/messages/comm/MBoxItemBodyType.pdsc + + export type MBoxItemBodyType = 'STATIC' | 'TEMPLATED'; + // Generated from: com/linkedin/avro2pegasus/messages/comm/MBoxItemContentStatus.pdsc + + export type MBoxItemContentStatus = + | 'NOACTION' + | 'CURRENT' + | 'ACTIONED' + | 'WITHDRAWN' + | 'REPLACED' + | 'EXPIRED' + | 'ACCEPTED' + | 'DECLINED' + | 'FULFILLED' + | 'HIDDEN' + | 'ABUSIVE' + | 'FORWARDED' + | 'REPLIEDTO' + | 'UNAVAILABLE' + | 'IGNORED'; + // Generated from: com/linkedin/avro2pegasus/messages/comm/MBoxItemDeliveryDirective.pdsc + + export type MBoxItemDeliveryDirective = 'NONE' | 'APPROVAL'; + // Generated from: com/linkedin/avro2pegasus/messages/comm/MBoxItemType.pdsc + + export type MBoxItemType = + | 'PROFILE_UPDATE' + | 'JOB_FORWARD' + | 'RECOMMENDATION_MESSAGE' + | 'RECOMMENDATION_UPDATE' + | 'COMMERCIAL_INMAIL' + | 'LINKEDIN_ANSWERS' + | 'INVITATION_MESSAGE' + | 'PROFILE_FORWARD' + | 'PROPOSAL' + | 'MESSAGE_BETWEEN_CONNECTIONS' + | 'GROUP' + | 'GROUP_INVITATION' + | 'SHARE' + | 'GENERIC_EMAIL' + | 'SYSTEM_MESSAGE'; + // Generated from: com/linkedin/avro2pegasus/messages/comm/MergeCommandMessageEvent.pdsc + + export interface MergeCommandMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + fromIdentity?: string; + toIdentity?: string; + excludeSentItems?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/MessageAddress.pdsc + + export interface MessageAddress { + name?: string; + memberID?: number; + email?: string; + emailID?: number; + contractID?: number; + locale?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/MessageBody.pdsc + + export interface MessageBody { + subject?: string; + body?: string; + bodyType?: string; + messageOverrideContentList?: MessageOverrideContentType[]; + messageTypeOverrideList?: MessageTypeOverrideType[]; + msgBodyType?: MBoxItemBodyType; + mBoxItemType?: MBoxItemType; + mailboxItemType?: string; + contentType?: string; + contentId?: string; + deliveryParams?: string; + cancelKey?: string; + bounceKey?: string; + relatedToId?: number; + revealEmail?: boolean; + actionStatus?: MBoxItemActionStatus; + contentStatus?: MBoxItemContentStatus; + deliveryDirective?: MBoxItemDeliveryDirective; + actionType?: MBoxItemActionType; + messagePayloadList?: MessagePayload[]; + msgBody?: string; + senderGeoLocation?: SenderGeoLocation; + legacyID?: string; + encryptedSubject?: string; + encryptedBody?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/MessageHeader.pdsc + + export interface MessageHeader { + toAddressList: MessageAddress[]; + fromAddress?: MessageAddress; + recipientsShown?: boolean; + copyToSender?: boolean; + useSpamFilter?: boolean; + spamConviction?: string; + httpRequestDescriptor?: string; + cancelKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/MessageOverrideContentType.pdsc + + export interface MessageOverrideContentType { + contentType?: string; + targetsList?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/MessagePayload.pdsc + + export interface MessagePayload { + type?: PayloadType; + mailboxItemPayloadType?: string; + value?: string; + isAttachment?: boolean; + targetsList?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/MessageTypeOverrideType.pdsc + + export interface MessageTypeOverrideType { + messageType?: MBoxItemType; + mailboxItemType?: string; + targetsList?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/PayloadType.pdsc + + export type PayloadType = + | 'ANET' + | 'ARTICLE_ANET' + | 'LOCALE' + | 'COML_URL' + | 'ENTITY_TYPE' + | 'ENTITY_ID' + | 'CUSTOM_NOTE' + | 'RELATIONSHIP_CODE' + | 'RELATIONSHIP_SOURCE' + | 'CAMPAIGN_TYPE' + | 'PROPOSAL_TYPE' + | 'INCLUDE_PROFILE' + | 'ATTACHMENT' + | 'OPIN_INFO' + | 'COML_PIC_INFO' + | 'COMP_INFO' + | 'PROPOSAL_INFO' + | 'CAP_PREF' + | 'DISABLE_EMAIL' + | 'COML_PAYLOAD'; + // Generated from: com/linkedin/avro2pegasus/messages/comm/PersonalizedInvite.pdsc + + export interface PersonalizedInvite { + invitee: InviteeInfo; + salutation?: string; + inviteLocation?: Location; + sharedKey?: string; + invitationTemplate?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/PurgeAccountCommandMessageEvent.pdsc + + export interface PurgeAccountCommandMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberID?: number; + contractID?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/ReactivateMBoxCommandEvent.pdsc + + export interface ReactivateMBoxCommandEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + ownerIdentity?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/ReconnectInvitationMessageEvent.pdsc + + export interface ReconnectInvitationMessageEvent { + invitationUrn?: string; + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + inviterID: number; + reconnectInviteeInfo: InviteeInfo; + subject?: string; + body?: string; + invitationTemplate?: string; + batchCount?: number; + relationship?: string; + commonOrganization?: string; + sharedKey?: string; + hasCustomNote?: boolean; + httpRequestDescriptor?: string; + cancelkey?: string; + reconnectLocation?: Location; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/ResetDeliveryHoldCommandMessageEvent.pdsc + + export interface ResetDeliveryHoldCommandMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + toAddressList?: MessageAddress[]; + fromAddress?: MessageAddress; + cancelKey?: string; + deliverAfter?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/SenderGeoLocation.pdsc + + export interface SenderGeoLocation { + country?: string; + gmtOffset?: string; + useDST?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/comm/UndeliveredCommandMessageEvent.pdsc + + export interface UndeliveredCommandMessageEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + email?: string; + ownerIdentity?: string; + bounceKey?: string; + batchKey?: string; + } + } + namespace Commerce { + // Generated from: com/linkedin/avro2pegasus/messages/commerce/CommerceIssueMessage.pdsc + + export interface CommerceIssueMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + issueUrn: string; + exceptionFingerprint: string; + exceptionChain: Com.Linkedin.Avro2pegasus.Messages.Common.Exception.EventException[]; + issueContextDataMap: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/commerce/CustomerVerificationAndCreditCheckNotificationMessage.pdsc + + export interface CustomerVerificationAndCreditCheckNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + requestUrn: string; + customerUrn: string; + ownerUrn: string; + lineOfBusiness: LineOfBusiness; + sourceApplication: SourceApplication; + } + // Generated from: com/linkedin/avro2pegasus/messages/commerce/LineOfBusiness.pdsc + + export type LineOfBusiness = 'LMS' | 'LTS'; + // Generated from: com/linkedin/avro2pegasus/messages/commerce/SourceApplication.pdsc + + export type SourceApplication = 'CAMPAIGN_MANAGER' | 'ABACUS' | 'ABACUS_PROPOSAL'; + // Generated from: com/linkedin/avro2pegasus/messages/commerce/TsepOutputPricingSheetUploadMessage.pdsc + + export interface TsepOutputPricingSheetUploadMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + salesProposalUrn: string; + salesQuoteUrn: string; + customerUrn: string; + } + } + namespace Common { + // Generated from: com/linkedin/avro2pegasus/messages/common/AnyRecord.pdsc + + export interface AnyRecord { + pegasusClassName: string; + serializedDataMap: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/DataFormat.pdsc + + export type DataFormat = + | 'AVRO' + | 'BINARY_JSON' + | 'ASV' + | 'CSV' + | 'PSV' + | 'TSV' + | 'ZSV' + | 'JSON' + | 'XML' + | 'TEXT'; + // Generated from: com/linkedin/avro2pegasus/messages/common/JobBenefit.pdsc + + export type JobBenefit = + | 'CHILD_CARE_SUPPORT' + | 'COMMUTER_BENEFITS' + | 'DENTAL_INSURANCE' + | 'DISABILITY_INSURANCE' + | 'DISCRETIONARY_TIME_OFF' + | 'EMPLOYEE_DISCOUNT' + | 'FLEXIBLE_HOURS' + | 'FOUR_ZERO_ONE_K_MATCH' + | 'FREE_FOOD' + | 'MEDICAL_INSURANCE' + | 'MOBILE_PHONE_REIMBURSEMENT' + | 'PAID_MATERNITY_LEAVE' + | 'PAID_PATERNITY_LEAVE' + | 'PAID_TIME_OFF' + | 'PENSION_PLAN' + | 'PROFESSIONAL_DEVELOPMENT' + | 'STUDENT_LOAN_ASSISTANCE' + | 'TELECOMMUTING_OPTION' + | 'TUITION_ASSISTANCE' + | 'VISION_INSURANCE'; + // Generated from: com/linkedin/avro2pegasus/messages/common/MoneyAmount.pdsc + + export interface MoneyAmount { + currencyCode: string; + amount: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/TimeRange.pdsc + + export interface TimeRange { + start?: number; + end?: number; + } + namespace Ads { + // Generated from: com/linkedin/avro2pegasus/messages/common/ads/AdEntityType.pdsc + + export type AdEntityType = 'ACCOUNT' | 'CAMPAIGN_GROUP' | 'CAMPAIGN' | 'CREATIVE'; + // Generated from: com/linkedin/avro2pegasus/messages/common/ads/AdSegmentStatus.pdsc + + export type AdSegmentStatus = 'READY' | 'FAILED' | 'ARCHIVED' | 'BUILDING' | 'UPDATING' | 'EXPIRED'; + // Generated from: com/linkedin/avro2pegasus/messages/common/ads/AdsPublisherInventoryType.pdsc + + export type AdsPublisherInventoryType = 'IOS' | 'ANDROID' | 'WEB'; + // Generated from: com/linkedin/avro2pegasus/messages/common/ads/AssetCopyActionState.pdsc + + export type AssetCopyActionState = 'PENDING' | 'COMPLETED' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/messages/common/ads/DMPDestination.pdsc + + export type DMPDestination = 'APPNEXUS' | 'LINKEDIN'; + // Generated from: com/linkedin/avro2pegasus/messages/common/ads/DMPSegmentStatus.pdsc + + export type DMPSegmentStatus = 'READY' | 'FAILED' | 'ARCHIVED' | 'BUILDING' | 'UPDATING' | 'EXPIRED'; + } + namespace Compensation { + // Generated from: com/linkedin/avro2pegasus/messages/common/compensation/BookingAttribution.pdsc + + export interface BookingAttribution { + attributedUserUrn: string; + attributedUserManagerUrn: string; + userRegion: string; + totalAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + amountsByYear: Com.Linkedin.Avro2pegasus.Messages.Compensation.AmountsByYear; + tempCoverage: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/compensation/BookingEventType.pdsc + + export type BookingEventType = 'CANCELLATION' | 'OWNER_CHANGE' | 'PURCHASE' | 'SPLIT'; + // Generated from: com/linkedin/avro2pegasus/messages/common/compensation/BookingLineItemModification.pdsc + + export interface BookingLineItemModification { + createdTime: number; + bookingLineItemModificationUrn: string; + parentUrn?: string; + originalUrn?: string; + bookingEventUrn: string; + childType?: BookingLineItemModificationType; + enterpriseCrmOpportunityUrn: string; + opportunityOwnerUrn: string; + contractDuration: Com.Linkedin.Avro2pegasus.Messages.Compensation.ContractDuration; + productQuantitySegments: ProductQuantitySegment[]; + effectiveDate: Com.Linkedin.Avro2pegasus.Messages.Compensation.Date; + sourceEventHeaderTime: number; + commerceOrderDetails: CommerceOrderDetails; + amountsByYear: Com.Linkedin.Avro2pegasus.Messages.Compensation.AmountsByYear; + bookingAttributions?: Com.Linkedin.Avro2pegasus.Messages.Compensation.CommonAttribution[]; + bookingEventType: BookingEventType; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/compensation/BookingLineItemModificationType.pdsc + + export type BookingLineItemModificationType = 'DEBOOK' | 'PUTBACK'; + // Generated from: com/linkedin/avro2pegasus/messages/common/compensation/BookingLineItemModificationV2.pdsc + + export interface BookingLineItemModificationV2 { + createdTime: number; + bookingLineItemModificationUrn: string; + parentUrn?: string; + originalUrn?: string; + bookingEventUrn: string; + childType?: BookingLineItemModificationType; + enterpriseCrmOpportunityUrn: string; + opportunityOwnerUrn: string; + contractDuration: Com.Linkedin.Avro2pegasus.Messages.Compensation.ContractDuration; + productQuantitySegments: ProductQuantitySegment[]; + effectiveDate: Com.Linkedin.Avro2pegasus.Messages.Compensation.Date; + sourceEventHeaderTime: number; + commerceOrderDetails: CommerceOrderDetails; + amountsByYear: Com.Linkedin.Avro2pegasus.Messages.Compensation.AmountsByYear; + bookingAttributions: BookingAttribution[]; + bookingEventType: BookingEventType; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/compensation/CommerceOrderDetails.pdsc + + export interface CommerceOrderDetails { + orderUrn: string; + orderLineItemUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/compensation/PercentageByYear.pdsc + + export interface PercentageByYear { + yearIndex: number; + percentage: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/compensation/PercentagesByYear.pdsc + + export interface PercentagesByYear { + percentagesByYear: PercentageByYear[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/compensation/ProductQuantitySegment.pdsc + + export interface ProductQuantitySegment { + displayStartDate: Com.Linkedin.Avro2pegasus.Messages.Compensation.Date; + displayEndDate: Com.Linkedin.Avro2pegasus.Messages.Compensation.Date; + productQuantity: number; + } + } + namespace Couchbase { + // Generated from: com/linkedin/avro2pegasus/messages/common/couchbase/CouchbaseReplicationMessage.pdsc + + export interface CouchbaseReplicationMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + couchbaseMessage: CouchbaseXdcrGenericMessage; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/couchbase/CouchbaseXdcrGenericMessage.pdsc + + export interface CouchbaseXdcrGenericMessage { + replicationHeader: Com.Linkedin.Avro2pegasus.Messages.CouchbaseXdcrHeader; + key: string; + value?: boolean | number | number | number | number | string | number; + } + } + namespace Exception { + // Generated from: com/linkedin/avro2pegasus/messages/common/exception/EventException.pdsc + + export interface EventException { + index: number; + message: string; + stackTrace: StackTraceFrame[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/exception/StackTraceFrame.pdsc + + export interface StackTraceFrame { + call: string; + columnNumber?: number; + fileName?: string; + index: number; + lineNumber: number; + nativeMethod: boolean; + source: string; + } + } + namespace Groups { + // Generated from: com/linkedin/avro2pegasus/messages/common/groups/GroupMemberActionType.pdsc + + export type GroupMemberActionType = + | 'CONNECT' + | 'MESSAGE' + | 'PROMOTE_TO_OWNER' + | 'PROMOTE_TO_MANAGER' + | 'DEMOTE_TO_MANAGER' + | 'DEMOTE_TO_MEMBER' + | 'ACCEPT_REQUEST' + | 'DENY_REQUEST' + | 'RESCIND_INVITATION' + | 'REMOVE' + | 'BLOCK' + | 'UNBLOCK' + | 'SEND_REQUEST' + | 'RESCIND_REQUEST' + | 'SEND_INVITATION' + | 'ACCEPT_INVITATION' + | 'LEAVE_GROUP' + | 'TRANSFER_OWNERSHIP'; + } + namespace Mcm { + // Generated from: com/linkedin/avro2pegasus/messages/common/mcm/HireStatusType.pdsc + + export type HireStatusType = + | 'POTENTIAL_CANDIDATE' + | 'SHORTLISTED' + | 'PHONE_SCREEN' + | 'INTERVIEW' + | 'OFFER_EXTENDED' + | 'HIRED' + | 'ARCHIVED' + | 'CONTACTED' + | 'REPLIED' + | 'ON_HOLD' + | 'USER_DEFINED' + | 'UNCATEGORIZED'; + // Generated from: com/linkedin/avro2pegasus/messages/common/mcm/HiringProject.pdsc + + export interface HiringProject { + hiringProjectUrn: string; + hiringProjectState: HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/mcm/HiringProjectCandidateState.pdsc + + export type HiringProjectCandidateState = 'ACTIVE' | 'ARCHIVED'; + // Generated from: com/linkedin/avro2pegasus/messages/common/mcm/HiringProjectState.pdsc + + export type HiringProjectState = 'ACTIVE' | 'CLOSED' | 'DRAFT' | 'DELETED' | 'DORMANT'; + } + namespace Messaging { + // Generated from: com/linkedin/avro2pegasus/messages/common/messaging/ThreadExtensionContent.pdsc + + export interface ThreadExtensionContent { + contentRecordMap: { + [id: string]: Com.Linkedin.Avro2pegasus.Messages.Common.AnyRecord; + }; + } + } + namespace Recruiter { + // Generated from: com/linkedin/avro2pegasus/messages/common/recruiter/HiringPlatformMigrationValidationAndFixCapEntity.pdsc + + export interface HiringPlatformMigrationValidationAndFixCapEntity { + entityUrn: string; + scopeUrn?: string; + } + } + namespace Rtf { + // Generated from: com/linkedin/avro2pegasus/messages/common/rtf/DownstreamOffset.pdsc + + export interface DownstreamOffset { + downstreamRequestOffset: number; + downstreamRequestLength: number; + downstreamResponseOffset: number; + downstreamResponseLength: number; + latency: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/common/rtf/EpsilonMetaData.pdsc + + export interface EpsilonMetaData { + oldVersionRunCount: number; + newVersionRunCount: number; + configs?: { [id: string]: string }; + } + } + namespace Talentinsights { + // Generated from: com/linkedin/avro2pegasus/messages/common/talentinsights/LocationType.pdsc + + export type LocationType = 'REGION' | 'COUNTRY' | 'CONTINENT'; + // Generated from: com/linkedin/avro2pegasus/messages/common/talentinsights/WorkforceCategory.pdsc + + export type WorkforceCategory = + | 'FUNCTION' + | 'SKILL' + | 'LOCATION' + | 'HIRE' + | 'DEPARTURE' + | 'SCHOOL' + | 'FIELD_OF_STUDY' + | 'ATTRITION_FUNCTION' + | 'ATTRITION_LOCATION' + | 'INDUSTRY' + | 'TITLE' + | 'GENDER_DISTRIBUTION' + | 'INDUSTRY_GENDER_DISTRIBUTION'; + } + } + namespace Communications { + namespace Internal { + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/AggregationCriteria.pdsc + + export interface AggregationCriteria { + numberOfRequests: number; + triggerWindow: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/AggregationModel.pdsc + + export interface AggregationModel { + modelName: string; + communicationKey: Com.Linkedin.Avro2pegasus.Events.Communications.CommunicationKey; + entryAggregationCriteria: AggregationCriteria; + exitAggregationCriteria: AggregationCriteria; + aggregationDeliveryDaySet: Com.Linkedin.Avro2pegasus.Events.DayOfWeek[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/CommunicationKeyRelevanceData.pdsc + + export interface CommunicationKeyRelevanceData { + communicationKey?: Com.Linkedin.Avro2pegasus.Events.Communications.CommunicationKey; + lookBackDurationMillis: number; + numberOfRequestsReceived: number; + numberOfRequestsQueued: number; + numberOfMessagesHandedOff: number; + numberOfMessagesActedOn?: number; + numberOfRequestsToEnterAggregationMode?: number; + numberOfRequestsToExitAggregationMode?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/MemberLifeCycle.pdsc + + export type MemberLifeCycle = + | 'UNKNOWN' + | 'ONBOARDING' + | 'DORMANT' + | 'ONEBYONE' + | 'ONEBYTHREE' + | 'FOURBYFOUR'; + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/MessageTiming.pdsc + + export interface MessageTiming { + communicationKey: Com.Linkedin.Avro2pegasus.Events.Communications.CommunicationKey; + channel: Com.Linkedin.Avro2pegasus.Events.Communications.Channel; + model: string; + scoredTimeRanges: ScoredTimeOfDayRange[]; + followUpDurationMinutes?: number; + communicationCategory: Com.Linkedin.Avro2pegasus.Events.Communications.CommunicationCategory; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/RecipientActorContentUtilityScore.pdsc + + export interface RecipientActorContentUtilityScore { + recipientUrn: string; + actorUrn: string; + contentUtilityKey: string; + creationTime: number; + utilityScores: UtilityScore[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/RecipientAggregation.pdsc + + export interface RecipientAggregation { + recipient: Com.Linkedin.Avro2pegasus.Events.Communications.Recipient; + aggregationModels: AggregationModel[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/RecipientOfflineFeature.pdsc + + export interface RecipientOfflineFeature { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipient: Com.Linkedin.Avro2pegasus.Events.Communications.Recipient; + createdTime: number; + memberLifeCycle?: MemberLifeCycle; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/RecipientOfflineScore.pdsc + + export interface RecipientOfflineScore { + recipient: Com.Linkedin.Avro2pegasus.Events.Communications.Recipient; + createdAt: number; + offlineScores: UtilityScore[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/RecipientTiming.pdsc + + export interface RecipientTiming { + recipient: Com.Linkedin.Avro2pegasus.Events.Communications.Recipient; + createdAt: number; + messageTimings: MessageTiming[]; + utcOffsetHours?: number; + countryCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/RecipientUtilityScore.pdsc + + export interface RecipientUtilityScore { + recipient: Com.Linkedin.Avro2pegasus.Events.Communications.Recipient; + timestamp: number; + utilityScores: UtilityScore[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/ScoredTimeOfDayRange.pdsc + + export interface ScoredTimeOfDayRange { + score: number; + startAtSeconds: number; + endAtSeconds: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/communications/internal/UtilityScore.pdsc + + export interface UtilityScore { + communicationKey: string; + channel: Com.Linkedin.Avro2pegasus.Events.Communications.Channel; + model: string; + score: number; + } + } + } + namespace Communities { + // Generated from: com/linkedin/avro2pegasus/messages/communities/GroupsHighlightsSource.pdsc + + export type GroupsHighlightsSource = 'DIGEST_OF_DIGESTS'; + // Generated from: com/linkedin/avro2pegasus/messages/communities/GroupsHighlightsUpdateMessage.pdsc + + export interface GroupsHighlightsUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + type: GroupsHighlightsUpdateType; + highlightBatches?: HighlightBatch[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/communities/GroupsHighlightsUpdateType.pdsc + + export type GroupsHighlightsUpdateType = 'READY' | 'EXPIRED'; + // Generated from: com/linkedin/avro2pegasus/messages/communities/HighlightBatch.pdsc + + export interface HighlightBatch { + id: number; + producer: GroupsHighlightsSource; + storeName: string; + creationTime: number; + } + } + namespace Company { + // Generated from: com/linkedin/avro2pegasus/messages/company/Address.pdsc + + export interface Address { + line1?: string; + line2?: string; + line3?: string; + line4?: string; + city?: string; + geographicAreaType?: GeographicAreaType; + geographicArea?: string; + postalCode?: string; + country?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/AdminClaimFlowPermissionMessage.pdsc + + export interface AdminClaimFlowPermissionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + companyUrn: string; + memberUrn: string; + claimUrl?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/BizCompanyStatus.pdsc + + export type BizCompanyStatus = + | 'OPERATING' + | 'OPERATING_SUBSIDIARY' + | 'REORGANIZING' + | 'OUT_OF_BUSINESS' + | 'ACQUIRED'; + // Generated from: com/linkedin/avro2pegasus/messages/company/BizCompanyType.pdsc + + export type BizCompanyType = + | 'PUBLIC_COMPANY' + | 'EDUCATIONAL' + | 'SELF_EMPLOYED' + | 'GOVERNMENT_AGENCY' + | 'NON_PROFIT' + | 'SELF_OWNED' + | 'PRIVATELY_HELD' + | 'PARTNERSHIP' + | 'COLLEGE_PAGE' + | 'BRAND'; + // Generated from: com/linkedin/avro2pegasus/messages/company/BizDescription.pdsc + + export interface BizDescription { + description?: string; + locale?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/BizEmployeeCountRange.pdsc + + export type BizEmployeeCountRange = + | 'MYSELF_ONLY' + | 'SIZE_2_TO_10' + | 'SIZE_11_TO_50' + | 'SIZE_51_TO_200' + | 'SIZE_201_TO_500' + | 'SIZE_501_TO_1000' + | 'SIZE_1001_TO_5000' + | 'SIZE_5001_TO_10000' + | 'SIZE_10001_OR_MORE'; + // Generated from: com/linkedin/avro2pegasus/messages/company/BizImage.pdsc + + export interface BizImage { + mediaUrn: string; + type: BizImageType; + croppedMediaUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/BizImageType.pdsc + + export type BizImageType = 'SQUARE_LOGO' | 'LOGO_LEGACY' | 'SQUARE_LOGO_LEGACY'; + // Generated from: com/linkedin/avro2pegasus/messages/company/BizIndustry.pdsc + + export type BizIndustry = + | 'ACCOUNTING' + | 'AIRLINES_AVIATION' + | 'ALTERNATIVE_DISPUTE_RESOLUTION' + | 'ALTERNATIVE_MEDICINE' + | 'ANIMATION' + | 'APPAREL_AND_FASHION' + | 'ARCHITECTURE_AND_PLANNING' + | 'ARTS_AND_CRAFTS' + | 'AUTOMOTIVE' + | 'AVIATION_AND_AEROSPACE' + | 'BANKING' + | 'BIOTECHNOLOGY' + | 'BROADCAST_MEDIA' + | 'BUILDING_MATERIALS' + | 'BUSINESS_SUPPLIES_AND_EQUIPMENT' + | 'CAPITAL_MARKETS' + | 'CHEMICALS' + | 'CIVIC_AND_SOCIAL_ORGANIZATION' + | 'CIVIL_ENGINEERING' + | 'COMMERCIAL_REAL_ESTATE' + | 'COMPUTER_AND_NETWORK_SECURITY' + | 'COMPUTER_GAMES' + | 'COMPUTER_HARDWARE' + | 'COMPUTER_NETWORKING' + | 'COMPUTER_SOFTWARE' + | 'CONSTRUCTION' + | 'CONSUMER_ELECTRONICS' + | 'CONSUMER_GOODS' + | 'CONSUMER_SERVICES' + | 'COSMETICS' + | 'DAIRY' + | 'DEFENSE_AND_SPACE' + | 'DESIGN' + | 'EDUCATION_MANAGEMENT' + | 'ELECTRICAL_AND_ELECTRONIC_MANUFACTURING' + | 'ENTERTAINMENT' + | 'ENVIRONMENTAL_SERVICES' + | 'EVENTS_SERVICES' + | 'EXECUTIVE_OFFICE' + | 'E_LEARNING' + | 'FACILITIES_SERVICES' + | 'FARMING' + | 'FINANCIAL_SERVICES' + | 'FINE_ART' + | 'FISHERY' + | 'FOOD_AND_BEVERAGES' + | 'FOOD_PRODUCTION' + | 'FUNDRAISING' + | 'FURNITURE' + | 'GAMBLING_AND_CASINOS' + | 'GLASS_CERAMICS_AND_CONCRETE' + | 'GOVERNMENT_ADMINISTRATION' + | 'GOVERNMENT_RELATIONS' + | 'GRAPHIC_DESIGN' + | 'HEALTH_WELLNESS_AND_FITNESS' + | 'HIGHER_EDUCATION' + | 'HOSPITALITY' + | 'HOSPITAL_AND_HEALTH_CARE' + | 'HUMAN_RESOURCES' + | 'IMPORT_AND_EXPORT' + | 'INDIVIDUAL_AND_FAMILY_SERVICES' + | 'INDUSTRIAL_AUTOMATION' + | 'INFORMATION_SERVICES' + | 'INFORMATION_TECHNOLOGY_AND_SERVICES' + | 'INSURANCE' + | 'INTERNATIONAL_AFFAIRS' + | 'INTERNATIONAL_TRADE_AND_DEVELOPMENT' + | 'INTERNET' + | 'INVESTMENT_BANKING_AND_VENTURE' + | 'INVESTMENT_MANAGEMENT' + | 'JUDICIARY' + | 'LAW_ENFORCEMENT' + | 'LAW_PRACTICE' + | 'LEGAL_SERVICES' + | 'LEGISLATIVE_OFFICE' + | 'LEISURE_AND_TRAVEL' + | 'LIBRARIES' + | 'LOGISTICS_AND_SUPPLY_CHAIN' + | 'LUXURY_GOODS_AND_JEWELRY' + | 'MACHINERY' + | 'MANAGEMENT_CONSULTING' + | 'MARITIME' + | 'MARKETING_AND_ADVERTISING' + | 'MARKET_RESEARCH' + | 'MECHANICAL_OR_INDUSTRIAL_ENGINEERING' + | 'MEDIA_PRODUCTION' + | 'MEDICAL_DEVICE' + | 'MEDICAL_PRACTICE' + | 'MENTAL_HEALTH_CARE' + | 'MILITARY' + | 'MINING_AND_METALS' + | 'MOTION_PICTURES_AND_FILM' + | 'MUSEUMS_AND_INSTITUTIONS' + | 'MUSIC' + | 'NANOTECHNOLOGY' + | 'NEWSPAPERS' + | 'NON_PROFIT_ORGANIZATION_MANAGEMENT' + | 'OIL_AND_ENERGY' + | 'ONLINE_PUBLISHING' + | 'OUTSOURCING_OFFSHORING' + | 'PACKAGE_AND_FREIGHT_DELIVERY' + | 'PACKAGING_AND_CONTAINERS' + | 'PAPER_AND_FOREST_PRODUCTS' + | 'PERFORMING_ARTS' + | 'PHARMACEUTICALS' + | 'PHILANTHROPY' + | 'PHOTOGRAPHY' + | 'PLASTICS' + | 'POLITICAL_ORGANIZATION' + | 'PRIMARY_SECONDARY' + | 'PRINTING' + | 'PROFESSIONAL_TRAINING' + | 'PROGRAM_DEVELOPMENT' + | 'PUBLIC_POLICY' + | 'PUBLIC_RELATIONS' + | 'PUBLIC_SAFETY' + | 'PUBLISHING' + | 'RAILROAD_MANUFACTURE' + | 'RANCHING' + | 'REAL_ESTATE' + | 'RECREATIONAL_FACILITIES_AND_SERVICES' + | 'RELIGIOUS_INSTITUTIONS' + | 'RENEWABLES_AND_ENVIRONMENT' + | 'RESEARCH' + | 'RESTAURANTS' + | 'RETAIL' + | 'SECURITY_AND_INVESTIGATIONS' + | 'SEMICONDUCTORS' + | 'SHIPBUILDING' + | 'SPORTING_GOODS' + | 'SPORTS' + | 'STAFFING_AND_RECRUITING' + | 'SUPERMARKETS' + | 'TELECOMMUNICATIONS' + | 'TEXTILES' + | 'THINK_TANKS' + | 'TOBACCO' + | 'TRANSLATION_AND_LOCALIZATION' + | 'TRANSPORTATION_TRUCKING_AND_RAILROAD' + | 'UTILITIES' + | 'VENTURE_CAPITAL' + | 'VETERINARY' + | 'WAREHOUSING' + | 'WHOLESALE' + | 'WINE_AND_SPIRITS' + | 'WIRELESS' + | 'WRITING_AND_EDITING'; + // Generated from: com/linkedin/avro2pegasus/messages/company/BizLocation.pdsc + + export interface BizLocation { + isActive: boolean; + isHeadquarters: boolean; + street1?: string; + street2?: string; + city?: string; + state?: string; + postalCode?: string; + countryCode?: string; + regionCode?: number; + phone1?: string; + phone2?: string; + fax?: string; + description?: string; + employeeCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/BizName.pdsc + + export interface BizName { + isActive: boolean; + name: string; + locale?: string; + type?: BizNameType; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/BizNameType.pdsc + + export type BizNameType = 'UNIVERSAL' | 'CANONICAL' | 'ALTERNATE'; + // Generated from: com/linkedin/avro2pegasus/messages/company/BizRevenue.pdsc + + export interface BizRevenue { + amount?: string; + currencyCode?: string; + year?: number; + month?: number; + day?: number; + period?: BizRevenuePeriod; + rangeAmount?: Com.Linkedin.Avro2pegasus.Events.Common.ClosedDoubleRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/BizRevenuePeriod.pdsc + + export type BizRevenuePeriod = 'Q1' | 'Q2' | 'Q3' | 'Q4' | 'ANNUAL'; + // Generated from: com/linkedin/avro2pegasus/messages/company/CompanyAutoCreateGoldenRecordMessage.pdsc + + export interface CompanyAutoCreateGoldenRecordMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + rosettaId: string; + createdTime: number; + names?: BizName[]; + locations?: BizLocation[]; + descriptions?: BizDescription[]; + websiteUrl?: string; + companyType?: BizCompanyType; + status?: BizCompanyStatus; + industries?: BizIndustry[]; + employeeCountRange?: BizEmployeeCountRange; + startYear?: number; + revenues?: BizRevenue[]; + logoUrl?: string; + images?: BizImage[]; + state: CompanyAutoCreateRosettaState; + partnerSourceCode?: string; + partnerCompanyUrl?: string; + batchId?: string; + partnerSources?: PartnerSource[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/CompanyAutoCreateOrUpdateRequest.pdsc + + export interface CompanyAutoCreateOrUpdateRequest { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + company: Com.Linkedin.Avro2pegasus.Company.Bizprofile.Ds.Api.Espresso.BizCompany; + companyUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/CompanyAutoCreateRosettaCompanyMessage.pdsc + + export interface CompanyAutoCreateRosettaCompanyMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + rosettaId: string; + companyUrn: string; + state: CompanyAutoCreateRosettaState; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/CompanyAutoCreateRosettaState.pdsc + + export type CompanyAutoCreateRosettaState = + | 'DUPLICATE_URL_FOUND' + | 'DUPLICATE_DOMAIN_FOUND' + | 'SOURCED_FROM_LINKEDIN' + | 'NOT_NAMEX' + | 'NO_ACTIVE_MEMBER' + | 'READY_FOR_CREATION' + | 'FOUND_DUPLICATE_ONLINE' + | 'LOGO_NOT_FOUND' + | 'CREATION_FAILED' + | 'COMPANY_ID_NOT_ASSOCIATED' + | 'CREATED' + | 'DUPLICATE_OFFLINE_SUBSET' + | 'DUPLICATE_OFFLINE_COMBINED' + | 'READY_FOR_ACTIVATION' + | 'COMPANY_ACTIVATED' + | 'COMPANY_ACTIVATION_FAILED' + | 'MISSING_BIZNAME' + | 'MISSING_ROSETTA_ID' + | 'COMPANY_UPDATED' + | 'COMPANY_UPDATE_FAILED' + | 'EXISTING_DUPLICATE_OFFLINE_SUBSET' + | 'EXISTING_DUPLICATE_OFFLINE_COMBINED'; + // Generated from: com/linkedin/avro2pegasus/messages/company/CompanyEnrichmentGaapResponse.pdsc + + export interface CompanyEnrichmentGaapResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: Com.Linkedin.Avro2pegasus.Events.Company.RawBizCompany; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/CompanyEnrichmentGaapTaskRequest.pdsc + + export interface CompanyEnrichmentGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + taskInput: CompanyEnrichmentTaskInput; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/CompanyEnrichmentRequest.pdsc + + export interface CompanyEnrichmentRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + searchFacets: CompanyEnrichmentSearchFacets; + clientTag?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/CompanyEnrichmentSearchFacets.pdsc + + export interface CompanyEnrichmentSearchFacets { + companyName: string; + countryCode?: string; + stateCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/CompanyEnrichmentTaskInput.pdsc + + export interface CompanyEnrichmentTaskInput { + companyName: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/GeographicAreaType.pdsc + + export type GeographicAreaType = 'PROVINCE' | 'STATE'; + // Generated from: com/linkedin/avro2pegasus/messages/company/MergeOrganizationRequestEvent.pdsc + + export interface MergeOrganizationRequestEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + organizationUrn: string; + destinationOrganizationUrn: string; + requesterUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/MigrateBrandToOrganizationRequestEvent.pdsc + + export interface MigrateBrandToOrganizationRequestEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + organizationBrandUrn: string; + organizationRelationshipType: OrganizationRelationshipType; + requesterUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/MigrateOrganizationToBrandRequestEvent.pdsc + + export interface MigrateOrganizationToBrandRequestEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + organizationUrn: string; + newParentOrganizationUrn: string; + requesterUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/NewOrganizationLocationSuggestionMessage.pdsc + + export interface NewOrganizationLocationSuggestionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + organizationUrn: string; + address?: Address; + batchId?: string; + suggestedAt?: number; + autoConfirmEnabled: boolean; + suggestionHash?: string; + additionalSuggestionsCount: number; + batchSequenceNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/NewOrganizationSuggestionMessage.pdsc + + export interface NewOrganizationSuggestionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + organizationUrn: string; + address?: Address; + industryUrn?: string; + logoUrn?: string; + url?: string; + batchId?: string; + autoConfirmEnabled: boolean; + additionalSuggestionsCount: number; + batchSequenceNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/OrganizationActivationMessage.pdsc + + export interface OrganizationActivationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + organizationUrn: string; + operation: OrganizationActivationOperation; + reason?: OrganizationActivationReason; + organizationDataVersion: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/OrganizationActivationOperation.pdsc + + export type OrganizationActivationOperation = 'ACTIVATE' | 'DEACTIVATE'; + // Generated from: com/linkedin/avro2pegasus/messages/company/OrganizationActivationReason.pdsc + + export type OrganizationActivationReason = 'DUPLICATE' | 'FAKE' | 'LOW_QUALITY'; + // Generated from: com/linkedin/avro2pegasus/messages/company/OrganizationContentPurgeMemberMessage.pdsc + + export interface OrganizationContentPurgeMemberMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + organizationTargetedContentUrn: string; + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/OrganizationLocationSuggestionAutoConfirmMessage.pdsc + + export interface OrganizationLocationSuggestionAutoConfirmMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + organizationLocationSuggestionUrn: string; + emailSentTime: number; + numDaysWithoutAdminAnswer: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/OrganizationNewAdminRequest.pdsc + + export interface OrganizationNewAdminRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + organizationUrn: string; + memberUrn: string; + requestTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/company/OrganizationRelationshipType.pdsc + + export type OrganizationRelationshipType = 'SUBSIDIARY' | 'ACQUISITION' | 'SCHOOL'; + // Generated from: com/linkedin/avro2pegasus/messages/company/PartnerSource.pdsc + + export interface PartnerSource { + partnerSourceCode?: string; + partnerSourceId?: string; + partnerCompanyUrl?: string; + } + } + namespace Compensation { + // Generated from: com/linkedin/avro2pegasus/messages/compensation/AdjustmentEventType.pdsc + + export type AdjustmentEventType = 'SPLIT' | 'DOUBLE_BUBBLE' | 'OWNER_DETAIL_CHANGE'; + // Generated from: com/linkedin/avro2pegasus/messages/compensation/AmountsByYear.pdsc + + export interface AmountsByYear { + currencyCode: string; + basesByYear: BasesByYear[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/BasesByYear.pdsc + + export interface BasesByYear { + yearIndex: number; + amount: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/BookingAttribution.pdsc + + export interface BookingAttribution { + commonAttribution: CommonAttribution; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/BookingAttributionV2.pdsc + + export interface BookingAttributionV2 { + commonAttributionV2: CommonAttributionV2; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/BookingsSyncMessage.pdsc + + export interface BookingsSyncMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + opportunityUrn: string; + deletions: string[]; + insertions: Com.Linkedin.Avro2pegasus.Messages.Common.Compensation.BookingLineItemModification[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/BookingsSyncMessageV2.pdsc + + export interface BookingsSyncMessageV2 { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + opportunityUrn: string; + deletions: string[]; + insertions: Com.Linkedin.Avro2pegasus.Messages.Common.Compensation.BookingLineItemModificationV2[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/CommonAttribution.pdsc + + export interface CommonAttribution { + attributedUserUrn: string; + attributedUserManagerUrn: string; + userRegion: string; + totalAmount?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + amountsByYear?: AmountsByYear; + tempCoverage: boolean; + percentagesByYear?: Com.Linkedin.Avro2pegasus.Messages.Common.Compensation.PercentagesByYear; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/CommonAttributionV2.pdsc + + export interface CommonAttributionV2 { + attributedUserUrn: string; + attributedUserManagerUrn: string; + userRegion: string; + totalAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + amountsByYear: AmountsByYear; + tempCoverage: boolean; + percentage?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/CompensationAdjustmentMessage.pdsc + + export interface CompensationAdjustmentMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + compensationAdjustmentRequests: CompensationAdjustmentRequest[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/CompensationAdjustmentMessageV2.pdsc + + export interface CompensationAdjustmentMessageV2 { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + compensationAdjustmentRequests: CompensationAdjustmentRequestV2[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/CompensationAdjustmentRequest.pdsc + + export interface CompensationAdjustmentRequest { + opportunityUrn: string; + adjustmentRequestUrn: string; + enterpriseOrderLineItemUrn: string; + eventType: AdjustmentEventType; + enterpriseOrderUrn: string; + ownerUrn: string; + effectiveDate?: Date; + totalAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + contractDuration: ContractDuration; + bookingAttributions?: BookingAttribution[]; + compensationAttributions?: CompensationAttribution[]; + totalAmountsByYear: AmountsByYear; + opportunityType?: Com.Linkedin.Avro2pegasus.Messages.Crm.CrmOpportunityType; + effectiveDuration?: Com.Linkedin.Avro2pegasus.Events.Common.DateRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/CompensationAdjustmentRequestV2.pdsc + + export interface CompensationAdjustmentRequestV2 { + opportunityUrn: string; + adjustmentRequestUrn: string; + enterpriseOrderLineItemUrn: string; + eventType: AdjustmentEventType; + enterpriseOrderUrn: string; + ownerUrn: string; + totalAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + contractDuration: ContractDuration; + bookingAttributions?: BookingAttributionV2[]; + compensationAttributions?: CompensationAttributionV2[]; + totalAmountsByYear: AmountsByYear; + opportunityType: Com.Linkedin.Avro2pegasus.Messages.Crm.CrmOpportunityType; + effectiveDuration: Com.Linkedin.Avro2pegasus.Events.Common.DateRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/CompensationAdjustmentSource.pdsc + + export type CompensationAdjustmentSource = 'LTS_DOUBLE_BUBBLE'; + // Generated from: com/linkedin/avro2pegasus/messages/compensation/CompensationAttribution.pdsc + + export interface CompensationAttribution { + commonAttribution: CommonAttribution; + sourceType: CompensationAdjustmentSource; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/CompensationAttributionV2.pdsc + + export interface CompensationAttributionV2 { + commonAttributionV2: CommonAttributionV2; + sourceType: CompensationAdjustmentSource; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/CompensationReplayRequestMessage.pdsc + + export interface CompensationReplayRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + replayReason: ReplayReason; + comments?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/ContractDuration.pdsc + + export interface ContractDuration { + displayStartDate: Date; + displayEndDate: Date; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/Date.pdsc + + export interface Date { + day: number; + month: number; + year: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/FinanceRevenueRecognitionMessage.pdsc + + export interface FinanceRevenueRecognitionMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + batchId: string; + batchCount: number; + revenueRecognitionOrders: FinanceRevenueRecognitionOrder[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/FinanceRevenueRecognitionOrder.pdsc + + export interface FinanceRevenueRecognitionOrder { + orderUrn: string; + enterpriseCrmOpportunityUrn: string; + opportunityControlAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + controlCount: number; + revenueRecognitionProducts: FinanceRevenueRecognitionProduct[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/FinanceRevenueRecognitionProduct.pdsc + + export interface FinanceRevenueRecognitionProduct { + productCode: string; + productName: string; + productQuantity: number; + orderLineUrn: string; + sponsoredAccountUrn?: string; + revenueRecognizedAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + oracleContractNumber: string; + transactionNumber: string; + transactionDate: Date; + billingMonth: Com.Linkedin.Avro2pegasus.Events.Common.MonthYear; + originalTransactionNumber?: string; + originalTransactionDate?: Date; + originalBillingMonth?: Com.Linkedin.Avro2pegasus.Events.Common.MonthYear; + } + // Generated from: com/linkedin/avro2pegasus/messages/compensation/ReplayReason.pdsc + + export type ReplayReason = + | 'BUG_FIX' + | 'LOGIC_CHANGE' + | 'ORDERING_CONFLICTS' + | 'DATA_MIGRATION' + | 'DATA_CORRUPTION' + | 'MISCELLANEOUS'; + } + namespace Compliance { + // Generated from: com/linkedin/avro2pegasus/messages/compliance/MemberDataExportCompletionEvent.pdsc + + export interface MemberDataExportCompletionEvent { + memberUrn: string; + filePath: string; + timestamp: number; + domain?: string; + sizeInBytes?: number; + datasetUrns?: string[]; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + dataExportFiles?: Com.Linkedin.Avro2pegasus.Events.Dataexport.DataExportFile[]; + isComplete?: boolean; + } + } + namespace Contacts { + // Generated from: com/linkedin/avro2pegasus/messages/contacts/CalendarImportRequestMessage.pdsc + + export interface CalendarImportRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader?: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: CalendarImportTaskInput; + } + // Generated from: com/linkedin/avro2pegasus/messages/contacts/CalendarImportTaskInput.pdsc + + export interface CalendarImportTaskInput { + startTime: number; + endTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/contacts/ContactsImportRequestMessage.pdsc + + export interface ContactsImportRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader?: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/contacts/ContactsImportResponseMessage.pdsc + + export interface ContactsImportResponseMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: ContactsImportResult; + } + // Generated from: com/linkedin/avro2pegasus/messages/contacts/ContactsImportResult.pdsc + + export interface ContactsImportResult { + resultUrn: string; + } + } + namespace Content { + // Generated from: com/linkedin/avro2pegasus/messages/content/ApiProvider.pdsc + + export type ApiProvider = 'UNKNOWN' | 'BING_NEWS_FEED' | 'BING_NEWS_SEARCH'; + // Generated from: com/linkedin/avro2pegasus/messages/content/ContentIngestionRequestMessage.pdsc + + export interface ContentIngestionRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + url: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/ContentProvider.pdsc + + export interface ContentProvider { + name: string; + type: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/ContentType.pdsc + + export type ContentType = 'UNKNOWN' | 'ARTICLE' | 'IMAGE' | 'RICH' | 'VIDEO'; + // Generated from: com/linkedin/avro2pegasus/messages/content/InterestGaapTaskRequest.pdsc + + export interface InterestGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: NewsQueryRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/InterestGaapTaskResponse.pdsc + + export interface InterestGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: NewsQueryResponse; + taskInput?: NewsQueryRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/InterestRequestMessage.pdsc + + export interface InterestRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hashtagUrn?: string; + hashtagName?: string; + interestUrn?: string; + interestName?: string; + contentTopicUrn?: string; + contentTopicName?: string; + companyUrn?: string; + companyName?: string; + industryUrn?: string; + industryName?: string; + marketLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/NewsQueryRequest.pdsc + + export interface NewsQueryRequest { + apiProvider: ApiProvider; + companyName?: string; + companyId?: string; + topic?: string; + topicUrn?: string; + requestedArticleCount: number; + jobTitle?: string; + marketLocale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/NewsQueryResponse.pdsc + + export interface NewsQueryResponse { + apiProvider: ApiProvider; + type: ContentType; + title: string; + url: string; + labels: string[]; + providers: ContentProvider[]; + publishedOn?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + recommendedReasons: Recommendation[]; + sourceType?: string; + isSubscriptionRequired?: boolean; + topicUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/OrphanContentDeletionRequestMessage.pdsc + + export interface OrphanContentDeletionRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/Recommendation.pdsc + + export interface Recommendation { + description: string; + reason: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/RelatedArticle.pdsc + + export interface RelatedArticle { + relatedArticleUrn: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/RelatedArticlesMessage.pdsc + + export interface RelatedArticlesMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + articleUrn: string; + taggerVersion: number; + generationTime: number; + relatedArticles: RelatedArticle[]; + newRelatedArticles: RelatedArticle[]; + expiredRelatedArticles: RelatedArticle[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/TwitterTrendsGaapTaskRequest.pdsc + + export interface TwitterTrendsGaapTaskRequest { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: TwitterTrendsRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/TwitterTrendsGaapTaskResponse.pdsc + + export interface TwitterTrendsGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: TwitterTrendsResponse; + taskInput?: TwitterTrendsRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/TwitterTrendsRequest.pdsc + + export interface TwitterTrendsRequest { + woeId: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/TwitterTrendsResponse.pdsc + + export interface TwitterTrendsResponse { + topic: string; + woeId: number; + url?: string; + volume?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/content/UrlRescrapeRequestMessage.pdsc + + export interface UrlRescrapeRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + ingestedContentUrn: string; + resolvedUrl: string; + } + } + namespace Contentfilter { + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/Action.pdsc + + export type Action = 'OPEN' | 'CLOSED'; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/AggregateActionMessage.pdsc + + export interface AggregateActionMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + usecase: AnomalyDetectorUsecase; + aggregateKey: string; + action: Action; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/AggregateClassifierResponseMessage.pdsc + + export interface AggregateClassifierResponseMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + contentCreatorUrn?: string; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + spamClassifierExplanations: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + lowQualityClassifierExplanations: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + system?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SystemName; + spamClassifierExplanationsForReview?: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + lowQualityClassifierExplanationsForReview?: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + contentClassificationFlow?: Com.Linkedin.Avro2pegasus.Events.Ucv.ContentClassificationFlow; + contentType?: ContentType; + ucfContextUrn?: string; + isReclassificationFlow?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/AggregateRequestMessage.pdsc + + export interface AggregateRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + aggregateKey: string; + usecase: AnomalyDetectorUsecase; + counters: Counter[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/AnomalyDetectorInfo.pdsc + + export interface AnomalyDetectorInfo { + aggregateKey: string; + usecase: AnomalyDetectorUsecase; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/AnomalyDetectorUsecase.pdsc + + export type AnomalyDetectorUsecase = + | 'IMAGE_VIRALITY' + | 'USER_FLAGGING_AGGREGATION' + | 'ALPHA_NUMERIC_COMMENTS'; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/Content.pdsc + + export interface Content { + authorUrn: string; + contentUrn: string; + contentText?: ContentText; + contentSource?: ContentSource; + contentSourceType?: Com.Linkedin.Avro2pegasus.Events.ContentSource; + contentMetadata?: ContentMetadata; + richMedia?: MediaEntity[]; + lastModifiedTime?: number; + flaggedItemContainerUrn?: string; + creationTimeMillis?: number; + ucfContextUrn?: string; + contentHash?: ContentHash; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentCertificationUpdateMessage.pdsc + + export interface ContentCertificationUpdateMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + contentCertificationToken: string; + updateTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentClassificationRequestEvent.pdsc + + export interface ContentClassificationRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + content: Content; + reviewInfo?: ReviewInfo; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + isCoreClassificationComplete?: boolean; + isReclassificationRequest?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentData.pdsc + + export interface ContentData { + type: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentHash.pdsc + + export interface ContentHash { + extractedContentMd5Hash: string; + lastModifiedAt: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentLabelKey.pdsc + + export interface ContentLabelKey { + labelString: string; + labelType: ContentLabelType; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentLabelType.pdsc + + export type ContentLabelType = 'SPAM' | 'LOW_QUALITY' | 'CONTENT_TAG'; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentMetadata.pdsc + + export interface ContentMetadata { + threadUrn?: string; + threadOwnerUrn?: string; + threadLocale?: string; + appName?: string; + isThreadOwnerInfluencer?: boolean; + isThreadSponsoredContent?: boolean; + isContentCreatorInfluencer?: boolean; + threadContent?: string; + originCountryCode?: string; + ucfContextUrn?: string; + contentHash?: ContentHash; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentReviewActionEvent.pdsc + + export interface ContentReviewActionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + restriction: GeoBlockRestriction | KeywordReviewRestriction; + reviewAction: ReviewAction; + reviewerUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentReviewReason.pdsc + + export type ContentReviewReason = 'KEYWORD_REVIEW'; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentReviewRequestEvent.pdsc + + export interface ContentReviewRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + authorUrn: string; + reviewReason: ContentReviewReason; + reviewMetadata: ReviewMetadata; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentSource.pdsc + + export type ContentSource = + | 'INBOX_NEW_MESSAGE' + | 'INBOX_REPLY' + | 'INBOX_FORWARD' + | 'INBOX_PROFILE_UPDATE' + | 'INBOX_JOB_FORWARD' + | 'INBOX_RECOMMENDATION_MESSAGE' + | 'INBOX_RECOMMENDATION_UPDATE' + | 'INBOX_COMMERCIAL_INMAIL' + | 'INBOX_LINKEDIN_ANSWERS' + | 'INBOX_INVITATION_MESSAGE' + | 'INBOX_PROFILE_FORWARD' + | 'INBOX_PROPOSAL' + | 'INBOX_MESSAGE_BETWEEN_CONNECTIONS' + | 'INBOX_GROUP' + | 'INBOX_GROUP_INVITATION' + | 'INBOX_SHARE' + | 'INBOX_GENERIC_EMAIL' + | 'INBOX_SYSTEM_MESSAGE' + | 'INBOX_REPORT_SPAM' + | 'GROUPS_NEW_GROUP' + | 'GROUPS_NEW_COMMENT' + | 'GROUPS_NEW_DISCUSSION' + | 'GROUPS_NEW_POLL' + | 'GROUPS_NEW_PROMOTION' + | 'GROUPS_REPORT_SPAM_COMMENT' + | 'GROUPS_REPORT_SPAM_DISCUSSION' + | 'GROUPS_REPLY' + | 'REGISTRATION_JOIN' + | 'REGISTRATION_PROFILE_UPDATE' + | 'USCP' + | 'USCP_USER_REPORT_SPAM' + | 'USCP_ADMIN_REPORT_SPAM' + | 'USCP_USER_UNDO_REPORT_SPAM' + | 'USCP_ADMIN_UNDO_REPORT_SPAM' + | 'INVITATIONS_CONNECT' + | 'INVITATIONS_REPORT_SPAM' + | 'INVITATIONS_DECLINE' + | 'INVITATIONS_IGNORE' + | 'INVITATIONS_REPLY' + | 'PROFILE_BASIC_INFO' + | 'PROFILE_PATENT_UPDATE' + | 'PROFILE_SUMMARY_UPDATE' + | 'PROFILE_EDUCATION_UPDATE' + | 'PROFILE_PERSONAL_INFO_UPDATE' + | 'PROFILE_PROJECT_UPDATE' + | 'PROFILE_COURSE_UPDATE' + | 'PROFILE_EXPERIENCE_UPDATE' + | 'PROFILE_CERTIFICATION_UPDATE' + | 'PROFILE_LANGUAGE_UPDATE' + | 'PROFILE_PUBLICATION_UPDATE' + | 'PROFILE_ADDITIONAL_INFO_UPDATE' + | 'PROFILE_SKILL_UPDATE' + | 'PROFILE_VOLUNTEER_UPDATE' + | 'PROFILE_REPORT_SPAM' + | 'PROFILE_TREASURY_REPORT_SPAM' + | 'PROFILE_TREASURY_POST_NEW' + | 'PROFILE_TREASURY_POST_UPDATE' + | 'PROFILE_TREASURY_VIEW_CONTENT' + | 'PROFILE_PICTURE_REPORT_INAPPROPRIATE' + | 'SCHOOL_TREASURY_POST_NEW' + | 'SCHOOL_TREASURY_POST_UPDATE' + | 'SCHOOL_TREASURY_VIEW_CONTENT' + | 'NUS_REPORT_SPAM_COMMENT' + | 'NUS_REPORT_SPAM_SHARE' + | 'NUS_RICH_MEDIA_REPORT_SPAM' + | 'NUS_RICH_MEDIA_POST_NEW' + | 'NUS_RICH_MEDIA_POST_UPDATE' + | 'COMPANY_REPORT_SPAM_DESCRIPTION' + | 'COMPANY_REPORT_SPAM_RECOMMENDATION' + | 'PAYMENTS_PURCHASE' + | 'TSCP_CAMPAIGN' + | 'TSCP_CREATIVE' + | 'JOBS_CREATE' + | 'JOBS_VIEW' + | 'JOBS_APPLY' + | 'JOBS_REPORT_SPAM' + | 'PONCHO_ARTICLE' + | 'INFLUENCER_ARTICLE' + | 'INFLUENCER_REPORT_SPAM_COMMENT' + | 'TODAY_REPORT_SPAM_COMMENT' + | 'LOGIN_COOKIE_RENEWAL' + | 'RAPPORTIVE_LOGIN' + | 'PASSWORD_RESET' + | 'MEMBER_LOGIN' + | 'BOOTSTRAP' + | 'SLIDESHARE_UGC_UPLOAD' + | 'MEDIA_SERVER_UPLOAD' + | 'MEDIA_SERVER_DOWNLOAD' + | 'USCP_USER_FLAG_ACTIVITY_SPAM' + | 'USCP_USER_UNDO_FLAG_ACTIVITY_SPAM' + | 'USCP_USER_FLAG_COMMENT_SPAM' + | 'USCP_USER_UNDO_FLAG_COMMENT_SPAM' + | 'USCP_ADMIN_FLAG_COMMENT_SPAM' + | 'USCP_ADMIN_UNDO_FLAG_COMMENT_SPAM' + | 'USCP_ADMIN_FLAG_ACTIVITY_SPAM' + | 'USCP_ADMIN_UNDO_FLAG_ACTIVITY_SPAM' + | 'PURCHASE_AUTH' + | 'MOBILE_DETECT_URLS' + | 'SHORTLINK_CREATE_LINK' + | 'SHORTLINK_RESOLVE_LINK' + | 'REDIRECT_RESOLVE_LINK' + | 'DEPO_REGISTER_REDIRECT_URL' + | 'LEO_REDIRECT' + | 'NABOOK_ACCEPT_INVITATION' + | 'UNKNOWN' + | 'SHARE_CREATE_LINK'; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentText.pdsc + + export interface ContentText { + title?: string; + body?: string; + contentData?: ContentData; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ContentType.pdsc + + export type ContentType = 'TEXT' | 'IMAGE' | 'VIDEO' | 'WHOLE'; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/Counter.pdsc + + export interface Counter { + key: string; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/CounterUpdateMessage.pdsc + + export interface CounterUpdateMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + usecase: AnomalyDetectorUsecase; + aggregateKey: string; + counterKey: string; + counterValue: number; + timestamp: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/fixed16.pdsc + + export type fixed16 = string; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/GeoBlockRestriction.pdsc + + export interface GeoBlockRestriction { + countryCode: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/KeywordReviewRestriction.pdsc + + export interface KeywordReviewRestriction { + countryCode: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/MediaClassificationRequestMessage.pdsc + + export interface MediaClassificationRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mediaEntities: MediaInfo[]; + contentUrn: string; + contentCreatorUrn?: string; + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/MediaEntity.pdsc + + export interface MediaEntity { + mediaUrn: string; + fileName?: string; + fileHash?: fixed16; + mimeType?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/MediaInfo.pdsc + + export interface MediaInfo { + mediaUrl?: string; + mediaUrn?: string; + contentType: ContentType; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/NearDuplicateDocumentDeleteMessage.pdsc + + export interface NearDuplicateDocumentDeleteMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + domain: Com.Linkedin.Avro2pegasus.Events.Contentfilter.ContentDomain; + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ReviewAction.pdsc + + export type ReviewAction = 'BLOCK' | 'CLEAR' | 'PENDING'; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ReviewInfo.pdsc + + export interface ReviewInfo { + spamTypes: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + priority?: ReviewPriority; + status: ReviewStatus; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ReviewMetadata.pdsc + + export interface ReviewMetadata { + originCountryCode?: string; + targetCountryCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ReviewPriority.pdsc + + export type ReviewPriority = 'LOW' | 'MEDIUM' | 'HIGH'; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/ReviewStatus.pdsc + + export type ReviewStatus = 'NOT_REQUIRED' | 'REQUIRED' | 'COMPLETE'; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/UserFlaggingInfo.pdsc + + export interface UserFlaggingInfo { + reporterUrn: string; + flaggingMetadata: UserReportedFlaggingMetadata; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/UserReportedClassifierLabel.pdsc + + export type UserReportedClassifierLabel = + | 'DEFAULT_THRESHOLD_CROSSED' + | 'LANGUAGE_SPECIFIC_THRESHOLD_CROSSED' + | 'PORNOGRAPHIC' + | 'INAPPROPRIATE_CONTENT' + | 'ELITE_USER_FLAGGED' + | 'THREAD_OWNER_FLAGGED' + | 'GROUP_OWNER_FLAGGED'; + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/UserReportedDetailedFlaggingEvent.pdsc + + export interface UserReportedDetailedFlaggingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + content: Content; + totalFlags: number; + flaggingInfos: UserFlaggingInfo[]; + inferredLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + totalImplicitFlags?: number; + contentCertificationToken?: string; + reporterUrn?: string; + flaggingMetadata?: UserReportedFlaggingMetadata; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/UserReportedFlaggingEvent.pdsc + + export interface UserReportedFlaggingEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + contentUrn: string; + contentSource?: ContentSource; + contentSourceType?: Com.Linkedin.Avro2pegasus.Events.ContentSource; + flaggingInfo: UserFlaggingInfo; + containerUrn?: string; + isImplicitFlag?: boolean; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/UserReportedFlaggingMetadata.pdsc + + export interface UserReportedFlaggingMetadata { + flaggingReason: UserReportedFlagReason; + reportedTimestamp?: number; + reporterGeoUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentfilter/UserReportedFlagReason.pdsc + + export type UserReportedFlagReason = + | 'ADVERTISEMENT' + | 'COPYRIGHT' + | 'PORNOGRAPHIC' + | 'INAPPROPRIATE_CONTENT' + | 'INAPPROPRIATE_PICTURE' + | 'MISREPRESENTATION' + | 'OUT_OF_DATE' + | 'SPAM_CONTENT' + | 'PLAGIARISM' + | 'OTHER' + | 'IRRELEVANT' + | 'PROMOTION' + | 'GRATUITOUSLY_SHOCKING' + | 'HARASSMENT' + | 'THREATS_OF_VIOLENCE' + | 'ACCOUNT_HACKED' + | 'OFFENSIVE' + | 'IMPERSONATION' + | 'FAKE_IDENTITY' + | 'FAKE_CONTENT' + | 'SUICIDAL' + | 'INACCURATE_MEMBER_INFORMATION' + | 'DECEASED' + | 'SEEN_OFTEN' + | 'BROKEN_LINKS' + | 'INAPPROPRIATE_LINKS' + | 'TERRORISM' + | 'SHOCKING_OR_VIOLENT' + | 'HATE_SPEECH' + | 'TERRORISM_OR_EXTREME_VIOLENCE' + | 'ADULT_CONTENT' + | 'VIOLATION_OF_HUMAN_DIGNITY' + | 'GENOCIDE_DENIAL' + | 'CLOSED_JOB' + | 'INCORRECT_JOB_COMPANY' + | 'INCORRECT_JOB_LOCATION' + | 'INCORRECT_JOB_DETAIL_FORMAT' + | 'INVALID_JOB_POST'; + } + namespace Contentspam { + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/ContentCertificationStatusUpdateMessage.pdsc + + export interface ContentCertificationStatusUpdateMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + statusUpdate: + | InvalidateContentClassifiersSignature + | PurgeUserReportedRestrictions + | UpdateCoreClassificationCompleteStatus; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/ContentReviewResult.pdsc + + export interface ContentReviewResult { + isSpam: boolean; + isLowQuality: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/ContentSpamResultEvent.pdsc + + export interface ContentSpamResultEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + contentCreatorUrn: string; + isSpam: boolean; + isLowQuality: boolean; + spamOutcome?: Com.Linkedin.Avro2pegasus.Events.Contentspam.ContentSpamOutcome[]; + qualityOutcome?: Com.Linkedin.Avro2pegasus.Events.Contentspam.ContentQualityOutcome[]; + system?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SystemName; + reviewInfo?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ReviewInfo; + isCoreClassificationComplete?: boolean; + contentSource?: Com.Linkedin.Avro2pegasus.Events.ContentSource; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/InvalidateContentClassifiersSignature.pdsc + + export interface InvalidateContentClassifiersSignature {} + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/LabellingSource.pdsc + + export type LabellingSource = + | 'INTERNAL_CROWDSOURCING' + | 'EXTERNAL_CROWDSOURCING' + | 'MEMBER_REPORTED' + | 'REVIEW_QUEUE' + | 'SPAM_TOOL' + | 'VIRALITY_REVIEW_QUEUE'; + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/ManualSpamClassificationMessage.pdsc + + export interface ManualSpamClassificationMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + eventHeader?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sourceId: string; + content: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.Content; + locale?: Com.Linkedin.Avro2pegasus.Events.Locale; + reviewerUrn: string; + spamLabels?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + lowQualityLabels?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + contentClassificationLabels?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentLabelKey[]; + labelSource: LabellingSource; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/ProfileReviewResult.pdsc + + export interface ProfileReviewResult { + isLoginRestricted: boolean; + isSpamRestricted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/PurgeUserReportedRestrictions.pdsc + + export interface PurgeUserReportedRestrictions { + reporterUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/ReviewProgressNotificationRequestMessage.pdsc + + export interface ReviewProgressNotificationRequestMessage { + eventHeader: Com.Linkedin.Avro2pegasus.Events.EventHeader; + targetUrn: string; + authorUrn: string; + targetUrl?: string; + triggerReason: TriggerReason; + triggeringSource?: TriggeringSource; + reviewResult: ProfileReviewResult | ContentReviewResult; + flaggingInfo?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.UserFlaggingInfo[]; + spamType?: string; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/TriggeringSource.pdsc + + export interface TriggeringSource { + type: string; + identifier: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/TriggerReason.pdsc + + export type TriggerReason = + | 'REPORTED' + | 'REVIEWED_FOR_REPORT' + | 'REVIEWED_FOR_AUTHOR_APPEAL' + | 'REVIEWED_FOR_REPORTER_APPEAL' + | 'REVIEWED_FOR_QA'; + // Generated from: com/linkedin/avro2pegasus/messages/contentspam/UpdateCoreClassificationCompleteStatus.pdsc + + export interface UpdateCoreClassificationCompleteStatus { + coreClassificationComplete: boolean; + } + } + namespace Creditcheck { + // Generated from: com/linkedin/avro2pegasus/messages/creditcheck/CustomerCreditCheckNotificationMessage.pdsc + + export interface CustomerCreditCheckNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + sourceApplication: SourceApplication; + requestId: number; + customerUrn: string; + transactionUrn: string; + customerCreditStatus: CustomerCreditStatus; + dunsNumber: string; + transactionCreditStatus: TransactionCreditStatus; + prepayAmount: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + lineOfCredit: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + availableCapacity: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/messages/creditcheck/CustomerCreditStatus.pdsc + + export type CustomerCreditStatus = + | 'PREPAY_BAD_CREDIT' + | 'BANKRUPTCY' + | 'NET_30_NO_CREDIT' + | 'NOT_CREDIT_CHECKED' + | 'IN_PROGRESS' + | 'APPROVED' + | 'PREPAY_INSUFFICIENT_INFO'; + // Generated from: com/linkedin/avro2pegasus/messages/creditcheck/SourceApplication.pdsc + + export type SourceApplication = 'CAMPAIGN_MANAGER' | 'ABACUS' | 'ABACUS_PROPOSAL'; + // Generated from: com/linkedin/avro2pegasus/messages/creditcheck/TransactionCreditStatus.pdsc + + export type TransactionCreditStatus = + | 'PREPAY_BAD_CREDIT' + | 'PREPAY_INSUFFICIENT_CREDIT' + | 'BANKRUPTCY' + | 'APPROVED_FULL_CREDIT' + | 'PARTIAL_PREPAY_INSUFFICIENT_CREDIT' + | 'NET_30_NO_CREDIT' + | 'NOT_CREDIT_CHECKED' + | 'IN_PROGRESS' + | 'PREPAY_INSUFFICIENT_INFO'; + } + namespace Crm { + // Generated from: com/linkedin/avro2pegasus/messages/crm/CrmOpportunityType.pdsc + + export type CrmOpportunityType = + | 'NEW_BUSINESS' + | 'RENEWAL' + | 'ADD_ON' + | 'ADD_ON_NON_CO_TERM' + | 'BRIDGE_RENEWAL' + | 'PILOT' + | 'PILOT_RENEWAL' + | 'NON_SUB_SVCS' + | 'NEW_AD_ACCOUNT' + | 'AD_ACCOUNT_TOP_UP'; + // Generated from: com/linkedin/avro2pegasus/messages/crm/OpportunityChangeNotificationMessage.pdsc + + export interface OpportunityChangeNotificationMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + opportunityUrn: string; + customerUrn: string; + } + } + namespace Croft { + // Generated from: com/linkedin/avro2pegasus/messages/croft/CroftReplicationEvent.pdsc + + export interface CroftReplicationEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentPath: string; + replicationEventType: ReplicationEventType; + payload?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/croft/ReplicationEventType.pdsc + + export type ReplicationEventType = 'CREATED' | 'DELETED'; + } + namespace Dataapa { + // Generated from: com/linkedin/avro2pegasus/messages/dataapa/ExecutionStatus.pdsc + + export type ExecutionStatus = 'SUCCEEDED' | 'FAILED'; + // Generated from: com/linkedin/avro2pegasus/messages/dataapa/RetinaDataAccessCompletionMessage.pdsc + + export interface RetinaDataAccessCompletionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + id: string; + status: ExecutionStatus; + errorMessage?: string; + } + } + namespace Datasift { + // Generated from: com/linkedin/avro2pegasus/messages/datasift/Age.pdsc + + export type Age = 'UNKNOWN' | 'AGE_18_TO_24' | 'AGE_25_TO_34' | 'AGE_35_TO_54' | 'AGE_55_OR_MORE'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/Article.pdsc + + export interface Article { + id?: string; + domain?: string; + created_at?: string; + content_language?: content_language; + concepts?: concepts; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/ChargeStatus.pdsc + + export type ChargeStatus = 'CHARGEABLE' | 'NOT_CHARGEABLE'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/ClickTagGroup.pdsc + + export type ClickTagGroup = + | 'VIEW_CONTENT' + | 'VIEW_COMPANY_PAGE' + | 'VIEW_MEMBER_ENGAGER' + | 'VIEW_SIMILAR' + | 'EXPAND_UPDATE' + | 'EXPAND_SOCIAL_ENGAGEMENT' + | 'FOLLOW' + | 'LIKE' + | 'COMMENT' + | 'SHARE'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/ClickTagParentGroup.pdsc + + export type ClickTagParentGroup = 'VIEW' | 'EXPAND' | 'FOLLOW' | 'LIKE' | 'COMMENT' | 'SHARE'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/CompanySize.pdsc + + export type CompanySize = + | 'UNKNOWN' + | 'MYSELF_ONLY' + | 'SIZE_1_TO_10' + | 'SIZE_11_TO_50' + | 'SIZE_51_TO_200' + | 'SIZE_201_TO_500' + | 'SIZE_501_TO_1000' + | 'SIZE_1001_TO_5000' + | 'SIZE_5001_TO_10000' + | 'SIZE_10001_OR_MORE'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/concepts.pdsc + + export interface concepts { + debug_version?: string; + names: string[]; + type_names: string[]; + types: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/content_language.pdsc + + export interface content_language { + confidence?: number; + tag?: string; + tag_extended?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/ContentType.pdsc + + export type ContentType = 'ARTICLE' | 'IMAGE' | 'RICH' | 'VIDEO'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftAccessLog.pdsc + + export interface DatasiftAccessLog { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + timestamp?: number; + ipAddress?: string; + request?: Request; + response?: Response; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftAction.pdsc + + export interface DatasiftAction { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hashedMemberUrn: string; + targetUrn: string; + action: DatasiftActionType; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + sourceEventTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftActionType.pdsc + + export type DatasiftActionType = 'VIEW' | 'EXPAND' | 'FOLLOW'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftActivity.pdsc + + export interface DatasiftActivity { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + activityUrn: string; + actorUrn?: string; + publishTime: number; + activityType: DatasiftActivityType; + targetUrn?: string; + attributedActivityUrn?: string; + title?: string; + description?: string; + commentary?: string; + url?: string; + attachment?: string; + isSponsored: boolean; + isDirectSponsoredContent?: boolean; + sourceEventTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftActivityType.pdsc + + export type DatasiftActivityType = 'SHARE' | 'COMMENT' | 'LIKE'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftArticle.pdsc + + export interface DatasiftArticle { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hashedMemberUrn?: string; + articleUrn: string; + publishTime: number; + url: string; + contentType: ContentType; + title?: string; + summary?: string; + text?: string; + imageUrl?: string; + authorUrn?: string; + sourceEventTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftArticleTags.pdsc + + export interface DatasiftArticleTags { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + article?: Article; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftArticleView.pdsc + + export interface DatasiftArticleView { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hashedMemberUrn: string; + articleUrn: string; + authorUrn?: string; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + sourceEventTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftCompanyAttributes.pdsc + + export interface DatasiftCompanyAttributes { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + validAtTime: number; + companyUrn: string; + companyNames?: DatasiftCompanyNameRecord[]; + schoolUrn?: string; + companyUrl?: string; + industryId?: number; + relatedCompanies?: DatasiftRelatedCompanyRecord[]; + companySize: CompanySize; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftCompanyClick.pdsc + + export interface DatasiftCompanyClick { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hashedMemberUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + hashedUpdateUrn: string; + updateUrn: string; + campaignId: number; + creativeId: number; + platform?: Com.Linkedin.Avro2pegasus.Common.Datasift.DatasiftPlatform; + sponsoredStatus: SponsoredStatus; + chargeStatus?: ChargeStatus; + clickTagGroup: ClickTagGroup; + clickTagParentGroup: ClickTagParentGroup; + sourceEventTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftCompanyImpression.pdsc + + export interface DatasiftCompanyImpression { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hashedMemberUrn: string; + feedTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + hashedUpdateUrn: string; + updateUrn: string; + campaignId: number; + creativeId: number; + platform?: Com.Linkedin.Avro2pegasus.Common.Datasift.DatasiftPlatform; + sponsoredStatus: SponsoredStatus; + sourceEventTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftCompanyNameRecord.pdsc + + export interface DatasiftCompanyNameRecord { + name: string; + nameLocale: string; + nameType: DatasiftCompanyNameType; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftCompanyNameType.pdsc + + export type DatasiftCompanyNameType = 'UNKNOWN' | 'CANONICAL' | 'ALTERNATE'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftDelete.pdsc + + export interface DatasiftDelete { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + targetUrn: string; + sourceEventTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftFeedItemImpression.pdsc + + export interface DatasiftFeedItemImpression { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hashedMemberUrn: string; + entities: DatasiftFeedItemImpressionEntity[]; + sourceEventTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftFeedItemImpressionEntity.pdsc + + export interface DatasiftFeedItemImpressionEntity { + entityUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + isSponsored?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftFeedItemServed.pdsc + + export interface DatasiftFeedItemServed { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hashedMemberUrn: string; + entities: DatasiftFeedItemServedEntity[]; + sourceEventTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftFeedItemServedEntity.pdsc + + export interface DatasiftFeedItemServedEntity { + entityUrn: string; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + isSponsored: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftField.pdsc + + export interface DatasiftField { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + id: number; + name: string; + fieldGroup: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftIndustry.pdsc + + export interface DatasiftIndustry { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + id: number; + name: string; + sector: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftMemberAttributes.pdsc + + export interface DatasiftMemberAttributes { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + validAtTime: number; + hashedMemberUrn: string; + memberHashType: MemberHashType; + isInfluencer?: boolean; + minorContinent: MinorContinent; + country?: string; + metroArea?: string; + profileLanguage?: string; + gender: Gender; + age: Age; + seniority?: Seniority[]; + industryIds?: number[]; + functions?: string[]; + companySizes?: CompanySize[]; + occupations?: string[]; + jobTitles?: string[]; + educationStatus: EducationStatus; + schoolUrns?: string[]; + degreeIds?: number[]; + fieldIds?: number[]; + customSegments?: string[]; + followedCompanyUrns?: string[]; + skills?: SkillsRecord[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftMention.pdsc + + export interface DatasiftMention { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + targetUrn: string; + mentionUrns: string[]; + sourceEventTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftRelatedCompanyRecord.pdsc + + export interface DatasiftRelatedCompanyRecord { + relatedCompanyUrn: string; + relationshipType: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftSchool.pdsc + + export interface DatasiftSchool { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + id: number; + defaultLocale?: string; + homePageUrl?: string; + country?: string; + localizedSchoolName?: string; + preferredSchoolName?: string; + companyId?: number; + logo?: string; + schoolType?: string; + yearLevel?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/DatasiftStandardizedDegree.pdsc + + export interface DatasiftStandardizedDegree { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + id: number; + name: string; + degreeGroupId: number; + degreeGroupName: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/EducationStatus.pdsc + + export type EducationStatus = 'UNKNOWN' | 'CURRENT_STUDENT' | 'CURRENT_POSTGRAD' | 'NOT_STUDENT'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/Gender.pdsc + + export type Gender = 'UNKNOWN' | 'MALE' | 'FEMALE'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/Headers.pdsc + + export interface Headers { + contentLength?: string; + xDatasiftTokenId?: string; + xDatasiftSignature?: string; + connection?: string; + accept?: string; + xDatasiftUserId?: string; + host?: string; + xDatasiftRequestId?: string; + date?: string; + contentType?: string; + xForwardedFor?: string; + authorization?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/MemberHashType.pdsc + + export type MemberHashType = 'A' | 'B'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/MinorContinent.pdsc + + export type MinorContinent = + | 'UNKNOWN' + | 'ANTARCTICA' + | 'AUSTRALIA' + | 'CARIBBEAN' + | 'CENTRAL_AFRICA' + | 'CENTRAL_AMERICA' + | 'CENTRAL_ASIA' + | 'EAST_AFRICA' + | 'EASTERN_ASIA' + | 'EASTERN_EUROPE' + | 'MELANESIA' + | 'MICRONESIA' + | 'MIDDLE_EAST' + | 'NEW_ZEALAND' + | 'NORTH_AFRICA' + | 'NORTH_AMERICA' + | 'POLYNESIA' + | 'SOUTH_AFRICA' + | 'SOUTH_AMERICA' + | 'SOUTH_ASIA' + | 'SOUTHEAST_ASIA' + | 'WEST_AFRICA' + | 'WESTERN_EUROPE'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/Request.pdsc + + export interface Request { + body: RequestBody; + headers?: Headers; + uri?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/RequestBody.pdsc + + export interface RequestBody { + recordingId?: string; + type?: string; + name?: string; + parameters?: string; + identityId?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/Response.pdsc + + export interface Response { + status?: number; + body?: ResponseBody; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/ResponseBody.pdsc + + export interface ResponseBody { + status?: string; + size?: number; + tasks?: string; + userId?: number; + name?: string; + parameters?: string; + createdAt?: number; + error?: string; + updatedAt?: number; + page?: number; + identityId?: string; + recordingId?: string; + total?: number; + type?: string; + id?: string; + result?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/Seniority.pdsc + + export type Seniority = + | 'UNKNOWN' + | 'UNPAID' + | 'TRAINING' + | 'ENTRY' + | 'SENIOR' + | 'MANAGER' + | 'DIRECTOR' + | 'VP' + | 'CXO' + | 'PARTNER' + | 'OWNER'; + // Generated from: com/linkedin/avro2pegasus/messages/datasift/SkillsRecord.pdsc + + export interface SkillsRecord { + skill: string; + score: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2; + } + // Generated from: com/linkedin/avro2pegasus/messages/datasift/SponsoredStatus.pdsc + + export type SponsoredStatus = 'ORGANIC' | 'SPONSORED' | 'VIRAL'; + } + namespace Digitalmedia { + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamAudio.pdsc + + export interface AdaptiveStreamAudio { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + bitRate?: BitRate; + segmentTargetDurationInMicroseconds?: number; + segmentContainerFormat: RawFormatSpec; + audioStream: AdaptiveStreamAudioStream; + segments: AdaptiveStreamAudioSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamAudioMasterPlaylist.pdsc + + export interface AdaptiveStreamAudioMasterPlaylist { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + representations: AdaptiveStreamMasterPlaylistRepresentationEntry[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamAudioSegment.pdsc + + export interface AdaptiveStreamAudioSegment { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + fileIndex?: number; + type: AdaptiveStreamMediaSegmentType; + byteRange?: ByteRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamAudioStream.pdsc + + export interface AdaptiveStreamAudioStream { + bitRate?: BitRate; + sampleRate?: number; + channels?: number; + channelLayout?: string; + codec?: RawCodecSpec; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamMasterPlaylistRepresentationEntry.pdsc + + export interface AdaptiveStreamMasterPlaylistRepresentationEntry { + bitrate: BitRate; + codecs: RawCodecSpec[]; + artifactClass: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamMediaPlaylistType.pdsc + + export type AdaptiveStreamMediaPlaylistType = 'VOD' | 'EVENT'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamMediaSegmentType.pdsc + + export type AdaptiveStreamMediaSegmentType = 'INDEX' | 'INITIALIZATION' | 'MEDIA'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamProtocol.pdsc + + export type AdaptiveStreamProtocol = 'HLS' | 'DASH' | 'SMOOTH' | 'HDS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamVideo.pdsc + + export interface AdaptiveStreamVideo { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + bitRate?: BitRate; + segmentTargetDurationInMicroseconds?: number; + segmentContainerFormat: RawFormatSpec; + videoStream: AdaptiveStreamVideoStream; + segments: AdaptiveStreamVideoSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamVideoMasterPlaylist.pdsc + + export interface AdaptiveStreamVideoMasterPlaylist { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + representations: AdaptiveStreamMasterPlaylistRepresentationEntry[]; + displayAspectRatio?: AspectRatio; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamVideoSegment.pdsc + + export interface AdaptiveStreamVideoSegment { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + fileIndex?: number; + type: AdaptiveStreamMediaSegmentType; + byteRange?: ByteRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamVideoStream.pdsc + + export interface AdaptiveStreamVideoStream { + colorSpaceName?: string; + chromaSubsampling?: string; + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + orientation?: ExifOrientation; + pixelAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + colorDepth?: number; + lossyCompression?: boolean; + bitRate?: BitRate; + frameRate?: StreamFps; + codec?: RawCodecSpec; + psnr?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamVideoWithAudio.pdsc + + export interface AdaptiveStreamVideoWithAudio { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + bitRate?: BitRate; + segmentTargetDurationInMicroseconds?: number; + segmentContainerFormat: RawFormatSpec; + videoStream: AdaptiveStreamVideoStream; + audioStream: AdaptiveStreamAudioStream; + segments: AdaptiveStreamVideoSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AdaptiveStreamVideoWithAudioMasterPlaylist.pdsc + + export interface AdaptiveStreamVideoWithAudioMasterPlaylist { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + representations: AdaptiveStreamMasterPlaylistRepresentationEntry[]; + displayAspectRatio?: AspectRatio; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AmbryToVectorOfflineMigrationMessage.pdsc + + export interface AmbryToVectorOfflineMigrationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + ambryUrn: string; + recipeUrn: string; + fileName?: string; + assetUrn?: string; + artifactClassUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ArtifactAction.pdsc + + export type ArtifactAction = + | 'PROCESS_TRIGGERED' + | 'DELETE_REQUESTED' + | 'DELETE_TRIGGERED' + | 'PROCESS' + | 'DELETE' + | 'REPROCESS_REQUESTED' + | 'REPROCESS_TRIGGERED' + | 'REPROCESSED' + | 'INTERNAL_FAILURE' + | 'TIMEOUT_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ArtifactStatus.pdsc + + export type ArtifactStatus = + | 'NEW' + | 'WAITING_DEPENDENCIES' + | 'READY_FOR_PROCESSING' + | 'PROCESSING' + | 'AVAILABLE' + | 'MISSING_DEPENDENCIES' + | 'REJECTED_DEPENDENCIES' + | 'RETRY' + | 'ERROR' + | 'SCHEDULED_FOR_DELETION' + | 'DELETED' + | 'PROCESSING_FAILURE' + | 'TIMEOUT' + | 'SKIPPED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AspectRatio.pdsc + + export interface AspectRatio { + widthAspect: number; + heightAspect: number; + formatted: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AssetFlaggingAnalysis.pdsc + + export interface AssetFlaggingAnalysis { + assetFlaggingService: string; + analyzedAt: number; + analysisResult: AssetFlaggingAnalysisResult; + analysisDescription?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AssetFlaggingAnalysisResult.pdsc + + export type AssetFlaggingAnalysisResult = 'ANALYSIS_IN_PROGRESS' | 'ALLOWED' | 'BLOCKED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AssetTimeoutMessage.pdsc + + export interface AssetTimeoutMessage { + assetUrn: string; + attemptNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AssetTimeoutMessageV2.pdsc + + export interface AssetTimeoutMessageV2 { + assetUrn: string; + attemptNumber: number; + requestedAction: RequestedAction; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AssetUpdateEvent.pdsc + + export interface AssetUpdateEvent { + asset: string; + owner: string; + mediaTypeFamily: MediaTypeFamily; + serviceRelationships: Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.Assetvalues.ServiceRelationship[]; + resourceRelationships: Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.Assetvalues.ResourceRelationship[]; + update: + | Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.Update.AssetStatusUpdate + | Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.Update.ArtifactStatusUpdate + | Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.Update.RecipeStatusUpdate + | Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.Update.AssetReprocessingStatusUpdate; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AssetUpdateEventMessage.pdsc + + export interface AssetUpdateEventMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + assetUpdate: AssetUpdateEvent; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Audio.pdsc + + export interface Audio { + probeScore?: number; + probeSize?: number; + probeTool?: string; + mediaType?: string; + rawFormatSpec?: RawFormatSpec; + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + rawMetadataTags: Tag[]; + audioStreams: AudioStream[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/AudioStream.pdsc + + export interface AudioStream { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + timeBase?: TimeBase; + startTimeInTicks?: number; + durationInTicks?: number; + index: number; + bitRate?: BitRate; + sampleRate?: number; + channels?: number; + channelLayout?: string; + codec?: RawCodecSpec; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/BinaryRunError.pdsc + + export interface BinaryRunError { + exitCode: number; + coreDump?: string; + logInfo?: string; + stdErrorSample?: string; + stdOutSample?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/BinaryRunErrorDiagnosis.pdsc + + export interface BinaryRunErrorDiagnosis { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + artifact: string; + owner: string; + binaryRunError: BinaryRunError; + files: Com.Linkedin.Avro2pegasus.Messaging.Digitalmedia.File[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/BitRate.pdsc + + export interface BitRate { + type: BitRateType; + average?: number; + minimum?: number; + maximum: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/BitRateType.pdsc + + export type BitRateType = 'CBR' | 'VBR' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/BoundingBox.pdsc + + export interface BoundingBox { + multiImageCategory: string; + boundingBoxCoordinates: BoundingBoxCoordinates; + centerShiftPercentage: CenterShiftPercentage; + confidenceScore: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/BoundingBoxCoordinates.pdsc + + export interface BoundingBoxCoordinates { + topLeftX: number; + topLeftY: number; + width: number; + height: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ByteRange.pdsc + + export interface ByteRange { + firstByte?: number; + lastByte?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Captions.pdsc + + export interface Captions { + language: Locale; + description?: string; + trackType: CaptionsTrackType; + largeText: boolean; + closedCaptions: boolean; + formattedForEasyReader: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/CaptionsTrackType.pdsc + + export type CaptionsTrackType = 'ASR' | 'USER_PROVIDED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/CenterShiftPercentage.pdsc + + export interface CenterShiftPercentage { + horizontal: number; + vertical: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Classification.pdsc + + export type Classification = 'POSITIVE' | 'NEGATIVE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ClassificationDetail.pdsc + + export interface ClassificationDetail { + label: string; + classification?: Classification; + score?: number; + threshold?: number; + appliedClassifier: Classifier; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ClassificationInformation.pdsc + + export interface ClassificationInformation { + contentClassLabels: string[]; + appliedClassifier: Classifier; + classificationDetails: ClassificationDetail[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Classifier.pdsc + + export interface Classifier { + classiferId: string; + classifierVersion: string; + scoreRange?: ClassifierScoreRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ClassifierScoreRange.pdsc + + export interface ClassifierScoreRange { + minValue: number; + maxValue: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ContentClassification.pdsc + + export interface ContentClassification { + classificationInformation: ClassificationInformation[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ContentFilterToken.pdsc + + export interface ContentFilterToken { + filter: string; + token: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ContentSource.pdsc + + export type ContentSource = 'DIGITALMEDIA_ASSET'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ContentStatus.pdsc + + export type ContentStatus = 'PURGED' | 'REPORTED' | 'REPORT_IN_PROGRESS' | 'REPORT_FAILED' | 'PURGE_FAILED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/CoreMetadata.pdsc + + export interface CoreMetadata { + extractedFrom?: string; + title?: { [id: string]: ExtractedString }; + creators: Creator[]; + subject?: { [id: string]: ExtractedString }; + description?: { [id: string]: ExtractedString }; + publishers: Publisher[]; + type?: string; + identifier?: string; + source?: string; + languages: string[]; + rights?: { [id: string]: ExtractedString }; + otherMetadataValues: Tag[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Creator.pdsc + + export interface Creator { + urn?: string; + name?: string; + tag?: Tag; + extractedRole?: string; + normalizedRole?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/DataArtifact.pdsc + + export interface DataArtifact { + created: number; + lastModified: number; + deleted?: number; + asset: string; + artifactClass: string; + status: ArtifactStatus; + reprocessingStatus?: ArtifactStatus; + executedActions: ExecutedAction[]; + data?: + | AssetFlaggingAnalysis + | ContentFilterToken + | CoreMetadata + | DisplayText + | ContentClassification + | MediaScanAnalysis + | MediaScanContent + | NullSchema + | Speech + | EncryptedContent; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/DeletionFailedAssetBlobs.pdsc + + export interface DeletionFailedAssetBlobs { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + assetUrn: string; + blobs: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/DisplayText.pdsc + + export interface DisplayText { + alternativeText?: MultiLocaleString; + caption?: MultiLocaleString; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Document.pdsc + + export interface Document { + probeScore?: number; + probeSize?: number; + probeTool?: string; + mediaType?: string; + rawFormatSpec?: RawFormatSpec; + rawMetadataTags: Tag[]; + documentType: DocumentType; + pageCount: number; + title?: string; + author?: string; + wordCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/DocumentImages.pdsc + + export interface DocumentImages { + colorSpaceName?: string; + chromaSubsampling?: string; + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + orientation?: ExifOrientation; + pixelAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + colorDepth?: number; + lossyCompression?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/DocumentMasterManifest.pdsc + + export interface DocumentMasterManifest {} + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/DocumentTranscript.pdsc + + export interface DocumentTranscript { + transcriptLanguage: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/DocumentType.pdsc + + export type DocumentType = 'DOC' | 'DOCX' | 'ODT' | 'PPT' | 'PPTX' | 'PPS' | 'PPSX' | 'ODP' | 'PDF'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/EncryptedContent.pdsc + + export interface EncryptedContent { + encryptedPayload: string; + encryptionKeyId: string; + encryptionScheme: EncryptionScheme; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/EncryptionScheme.pdsc + + export type EncryptionScheme = 'AES_GCM' | 'AES_GCM_WITH_PBKDF2' | 'AES_GCM_WITH_FIXED_IV' | 'AES_CBC_128_16'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ExecutedAction.pdsc + + export interface ExecutedAction { + action: ArtifactAction; + createdAt: number; + artifactStatus: ArtifactStatus; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ExifOrientation.pdsc + + export type ExifOrientation = + | 'TopLeft' + | 'TopRight' + | 'BottomRight' + | 'BottomLeft' + | 'LeftTop' + | 'RightTop' + | 'RightBottom' + | 'LeftBottom'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ExtractedString.pdsc + + export interface ExtractedString { + value?: string; + tag?: Tag; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/File.pdsc + + export interface File { + index: number; + slug?: string; + mediaType: string; + size?: number; + filename?: string; + blob?: string; + hash?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/FileMetadata.pdsc + + export interface FileMetadata { + captionLanguage?: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/FilesDeletionMessage.pdsc + + export interface FilesDeletionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + request: FilesDeletionRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/FilesDeletionMessageV2.pdsc + + export interface FilesDeletionMessageV2 { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + assetUrn: string; + retryCount: number; + blobs: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/FilesDeletionRequest.pdsc + + export interface FilesDeletionRequest { + files: File[]; + currentRetryCount: number; + asset: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Fraction.pdsc + + export interface Fraction { + numerator: number; + denominator: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/FrameRate.pdsc + + export interface FrameRate { + rational?: Fraction; + fps: number; + formatted?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ImageDisplaySize.pdsc + + export interface ImageDisplaySize { + width: number; + height: number; + uom: UnitsOfMeasureForLength; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ImageOCR.pdsc + + export interface ImageOCR { + ocrTextBoxes: OCRTextBox[]; + modelInformation?: SoftwareApplication; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ImageOCRMessage.pdsc + + export interface ImageOCRMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + assetUrn: string; + imageOCR: ImageOCR; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ImageSize.pdsc + + export interface ImageSize { + width: number; + height: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/LiveEventHandleRecycleMessage.pdsc + + export interface LiveEventHandleRecycleMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + eventId: string; + liveOutputIds: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Locale.pdsc + + export interface Locale { + language: string; + country?: string; + variant?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MediaArtifact.pdsc + + export interface MediaArtifact { + created: number; + lastModified: number; + deleted?: number; + asset: string; + artifactClass: string; + status: ArtifactStatus; + reprocessingStatus?: ArtifactStatus; + executedActions: ExecutedAction[]; + isDeleteRequested: boolean; + requestedReprocessingType?: ReprocessingType; + authorizationMethod: MediaArtifactAuthorizationMethod; + pluggableServiceFactory: string; + data?: + | UploadedFile + | StillImage + | Video + | Audio + | AdaptiveStreamVideoWithAudioMasterPlaylist + | AdaptiveStreamVideoMasterPlaylist + | AdaptiveStreamAudioMasterPlaylist + | AdaptiveStreamVideoWithAudio + | AdaptiveStreamVideo + | AdaptiveStreamAudio + | Document + | Captions + | UnpackedSCORM + | DocumentMasterManifest + | DocumentTranscript + | DocumentImages; + files: File[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MediaArtifactAuthorizationMethod.pdsc + + export type MediaArtifactAuthorizationMethod = 'NONE' | 'PUBLIC' | 'INTERNAL' | 'PRIVATE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MediaArtifactsDeletionMessage.pdsc + + export interface MediaArtifactsDeletionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + request: MediaArtifactsDeletionRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MediaArtifactsDeletionMessageV2.pdsc + + export interface MediaArtifactsDeletionMessageV2 { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + assetUrn: string; + retryCount: number; + requestedArtifactClassDeletionInfo: RequestedArtifactClassDeletionInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MediaArtifactsDeletionRequest.pdsc + + export interface MediaArtifactsDeletionRequest { + mediaArtifacts: MediaArtifact[]; + currentRetryCount: number; + asset: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MediaScanAnalysis.pdsc + + export interface MediaScanAnalysis { + scanResult: MediaScanResult; + scanType: ScanType; + photoDnaHash?: number; + hashMatchedDatabase: PhotoDnaHashDatabase; + source: ContentSource; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MediaScanContent.pdsc + + export interface MediaScanContent { + contentStatus: ContentStatus[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MediaScanResult.pdsc + + export interface MediaScanResult { + classification: ScanClassification; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MediaTypeFamily.pdsc + + export type MediaTypeFamily = + | 'BINARYDATA' + | 'STILLIMAGE' + | 'VIDEO' + | 'SOUND' + | 'PAGINATEDDOCUMENT' + | 'SLIDESHOWDOCUMENT' + | 'ARCHIVE' + | 'TEXT' + | 'LIVE_VIDEO'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MigrationTaskMessage.pdsc + + export interface MigrationTaskMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobInfo: SchedulerJobInfo; + blobIndicator: string; + foreignKey?: string; + ownerUrn: string; + recipeUrns: string[]; + fileName?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/MultiLocaleString.pdsc + + export interface MultiLocaleString { + localized: { [id: string]: string }; + preferredLocale?: Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/NullSchema.pdsc + + export interface NullSchema {} + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/OCRTextBox.pdsc + + export interface OCRTextBox { + text: string; + boundingBox: Rectangle; + recognitionScore: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/PhotoDnaHashDatabase.pdsc + + export type PhotoDnaHashDatabase = 'NONE' | 'NCMEC' | 'NCMEC_INDUSTRY_PARTNERS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Publisher.pdsc + + export interface Publisher { + urn?: string; + name?: string; + tag?: Tag; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/RawCodecSpec.pdsc + + export interface RawCodecSpec { + name: string; + longName?: string; + profile?: string; + type?: string; + tagString?: string; + tag?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/RawFormatSpec.pdsc + + export interface RawFormatSpec { + name: string; + longName?: string; + tags: Tag[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Rectangle.pdsc + + export interface Rectangle { + x: number; + y: number; + width: number; + height: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ReprocessingArtifact.pdsc + + export interface ReprocessingArtifact { + artifactClass: string; + artifactLastModifiedAt: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ReprocessingPriority.pdsc + + export type ReprocessingPriority = 'HIGHEST' | 'NORMAL' | 'MINIMUM'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ReprocessingTaskQueryResult.pdsc + + export interface ReprocessingTaskQueryResult { + jobName: string; + asset: string; + assetLastModifiedAt: number; + artifacts: ReprocessingArtifact[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ReprocessingTaskQueryResultMessage.pdsc + + export interface ReprocessingTaskQueryResultMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + queryResult: ReprocessingTaskQueryResult; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ReprocessingTaskQueryResultMessageV2.pdsc + + export interface ReprocessingTaskQueryResultMessageV2 { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobName: string; + assetUrn: string; + assetLastModifiedTime: number; + artifacts: ReprocessingArtifact[]; + reprocesssingPriority: ReprocessingPriority; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ReprocessingType.pdsc + + export type ReprocessingType = 'NORMAL' | 'CLIENT_TRIGGERED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/RequestedAction.pdsc + + export type RequestedAction = 'INITIAL_UPLOAD_PROCESSING' | 'REPROCESSING'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/RequestedArtifactClassDeletionInfo.pdsc + + export interface RequestedArtifactClassDeletionInfo { + artifactClassUrn: string; + blobs: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ScanClassification.pdsc + + export type ScanClassification = 'DIRTY' | 'CLEAN'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/ScanType.pdsc + + export type ScanType = 'ANTIVIRUS' | 'NUDITY' | 'MINOR_EXPLICIT' | 'MEDIA_REPUTATION'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/SchedulerJobInfo.pdsc + + export interface SchedulerJobInfo { + jobName: string; + batchId: string; + jobType: SchedulerJobType; + priority: SchedulerPriority; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/SchedulerJobType.pdsc + + export type SchedulerJobType = 'AMBRY' | 'AWS' | 'AZURE' | 'URL'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/SchedulerPriority.pdsc + + export type SchedulerPriority = 'HIGH' | 'MEDIUM' | 'LOW'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/SmartZoomBoundingBoxMessage.pdsc + + export interface SmartZoomBoundingBoxMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + assetUrn: string; + boundingBox: BoundingBox; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/SoftwareApplication.pdsc + + export interface SoftwareApplication { + name: string; + suite?: string; + version?: string; + builtFor?: string; + builtWith?: string; + libraries: SoftwareApplicationLibrary[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/SoftwareApplicationLibrary.pdsc + + export interface SoftwareApplicationLibrary { + name: string; + version?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Speech.pdsc + + export interface Speech { + name: string; + confidence: SpeechRecognitionConfidence; + locale?: Locale; + lexical?: string; + application: SoftwareApplication; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/SpeechRecognitionConfidence.pdsc + + export type SpeechRecognitionConfidence = + | 'NO_SPEECH' + | 'FALSE_RECOGNITION' + | 'HIGH_CONFIDENCE' + | 'MEDIUM_CONFIDENCE' + | 'LOW_CONFIDENCE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/StillImage.pdsc + + export interface StillImage { + probeScore?: number; + probeSize?: number; + probeTool?: string; + mediaType?: string; + rawFormatSpec?: RawFormatSpec; + colorSpaceName?: string; + chromaSubsampling?: string; + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + orientation?: ExifOrientation; + pixelAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + colorDepth?: number; + lossyCompression?: boolean; + rawMetadataTags: Tag[]; + rawCodecSpec: RawCodecSpec; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/StreamFps.pdsc + + export interface StreamFps { + type: StreamFpsType; + average: FrameRate; + minimum?: FrameRate; + maximum?: FrameRate; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/StreamFpsType.pdsc + + export type StreamFpsType = 'CFR' | 'VFR' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Tag.pdsc + + export interface Tag { + key: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/TimeBase.pdsc + + export interface TimeBase { + rational?: Fraction; + raw: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/UnitsOfMeasureForLength.pdsc + + export type UnitsOfMeasureForLength = 'PX' | 'DP' | 'IN' | 'CM' | 'MM' | 'PT' | 'PC' | 'Q'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/UnpackedSCORM.pdsc + + export interface UnpackedSCORM { + probeScore?: number; + probeSize?: number; + probeTool?: string; + mediaType?: string; + rawFormatSpec?: RawFormatSpec; + rawMetadataTags: Tag[]; + contents: { [id: string]: string }; + manifest: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/UploadedFile.pdsc + + export interface UploadedFile { + uploader?: string; + startedAt?: number; + finishedAt: number; + originIpAddress?: string; + referer?: string; + fileMetadata?: FileMetadata; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/Video.pdsc + + export interface Video { + probeScore?: number; + probeSize?: number; + probeTool?: string; + mediaType?: string; + rawFormatSpec?: RawFormatSpec; + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + rawMetadataTags: Tag[]; + videoStreams: VideoStream[]; + audioStreams: AudioStream[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/VideoStream.pdsc + + export interface VideoStream { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + timeBase?: TimeBase; + startTimeInTicks?: number; + durationInTicks?: number; + index: number; + colorSpaceName?: string; + chromaSubsampling?: string; + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + orientation?: ExifOrientation; + pixelAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + colorDepth?: number; + lossyCompression?: boolean; + bitRate?: BitRate; + frameRate?: StreamFps; + codec?: RawCodecSpec; + psnr?: number; + } + namespace Assetvalues { + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/assetvalues/ResourceRelationship.pdsc + + export interface ResourceRelationship { + relationshipType: ResourceRelationshipType; + resourceIndicator: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/assetvalues/ResourceRelationshipType.pdsc + + export type ResourceRelationshipType = + | 'GENERIC' + | 'CONTENT' + | 'SOURCE' + | 'REPROCESSING_TASK' + | 'EXISTING_SOURCE' + | 'EXTERNAL_USER' + | 'PROXY_CACHED_URL'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/assetvalues/ServiceRelationship.pdsc + + export interface ServiceRelationship { + source: ServiceRelationshipSource; + relationshipType: ServiceRelationshipType; + identifier: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/assetvalues/ServiceRelationshipSource.pdsc + + export type ServiceRelationshipSource = 'PROVIDED' | 'AUTHENTICATION'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/assetvalues/ServiceRelationshipType.pdsc + + export type ServiceRelationshipType = 'GENERIC' | 'CREATOR' | 'OWNER'; + } + namespace Processing { + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/RetryMessage.pdsc + + export interface RetryMessage { + payload: number; + sourceQueueName: string; + retryCount: number; + } + namespace V1 { + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamAudio.pdsc + + export interface AdaptiveStreamAudio { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + bitRate?: BitRate; + segmentTargetDurationInMicroseconds?: number; + segmentContainerFormat: RawFormatSpec; + audioStream: AdaptiveStreamAudioStream; + segments: AdaptiveStreamAudioSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamAudioMasterPlaylist.pdsc + + export interface AdaptiveStreamAudioMasterPlaylist { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + representations: AdaptiveStreamMasterPlaylistRepresentationEntry[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamAudioSegment.pdsc + + export interface AdaptiveStreamAudioSegment { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + fileIndex?: number; + type: AdaptiveStreamMediaSegmentType; + byteRange?: ByteRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamAudioStream.pdsc + + export interface AdaptiveStreamAudioStream { + bitRate?: BitRate; + sampleRate?: number; + channels?: number; + channelLayout?: string; + codec?: RawCodecSpec; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamMasterPlaylistRepresentationEntry.pdsc + + export interface AdaptiveStreamMasterPlaylistRepresentationEntry { + bitrate: BitRate; + codecs: RawCodecSpec[]; + artifactClass: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamMediaPlaylistType.pdsc + + export type AdaptiveStreamMediaPlaylistType = 'VOD' | 'EVENT'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamMediaSegmentType.pdsc + + export type AdaptiveStreamMediaSegmentType = 'INDEX' | 'INITIALIZATION' | 'MEDIA'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamProtocol.pdsc + + export type AdaptiveStreamProtocol = 'HLS' | 'DASH' | 'SMOOTH' | 'HDS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamVideo.pdsc + + export interface AdaptiveStreamVideo { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + bitRate?: BitRate; + segmentTargetDurationInMicroseconds?: number; + segmentContainerFormat: RawFormatSpec; + videoStream: AdaptiveStreamVideoStream; + segments: AdaptiveStreamVideoSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamVideoMasterPlaylist.pdsc + + export interface AdaptiveStreamVideoMasterPlaylist { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + representations: AdaptiveStreamMasterPlaylistRepresentationEntry[]; + displayAspectRatio?: AspectRatio; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamVideoSegment.pdsc + + export interface AdaptiveStreamVideoSegment { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + fileIndex?: number; + type: AdaptiveStreamMediaSegmentType; + byteRange?: ByteRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamVideoStream.pdsc + + export interface AdaptiveStreamVideoStream { + colorSpaceName?: string; + chromaSubsampling?: string; + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + orientation?: ExifOrientation; + pixelAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + colorDepth?: number; + lossyCompression?: boolean; + bitRate?: BitRate; + frameRate?: StreamFps; + codec?: RawCodecSpec; + psnr?: number; + videoMultiMethodAssessmentFusion?: number; + constantRateFactor?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamVideoWithAudio.pdsc + + export interface AdaptiveStreamVideoWithAudio { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + bitRate?: BitRate; + segmentTargetDurationInMicroseconds?: number; + segmentContainerFormat: RawFormatSpec; + videoStream: AdaptiveStreamVideoStream; + audioStream: AdaptiveStreamAudioStream; + segments: AdaptiveStreamVideoSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AdaptiveStreamVideoWithAudioMasterPlaylist.pdsc + + export interface AdaptiveStreamVideoWithAudioMasterPlaylist { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + playlistFileIndex?: number; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + encryptionKeyDataArtifact?: DataArtifact; + representations: AdaptiveStreamMasterPlaylistRepresentationEntry[]; + displayAspectRatio?: AspectRatio; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AMSLiveOutput.pdsc + + export interface AMSLiveOutput { + outputId: string; + assetId: string; + manifestName: string; + outputStatus: AMSLiveOutputStatus; + primaryStreamingLocatorId: string; + backupStreamingLocatorIds: string[]; + primaryStreamingEndpointId: string; + backupStreamingEndpointIds: string[]; + trimmingFilter?: AMSLiveTrimmingFilter; + accountId?: string; + autoCaptionLanguage?: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AMSLiveOutputStatus.pdsc + + export type AMSLiveOutputStatus = 'CREATING' | 'RUNNING' | 'DELETING'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AMSLiveTrimmingFilter.pdsc + + export interface AMSLiveTrimmingFilter { + name: string; + startTimeStamp?: number; + endTimeStamp?: number; + startTimeOffset?: number; + endTimeOffset?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ArtifactAction.pdsc + + export type ArtifactAction = + | 'PROCESS_TRIGGERED' + | 'DELETE_REQUESTED' + | 'DELETE_TRIGGERED' + | 'PROCESS' + | 'DELETE' + | 'REPROCESS_REQUESTED' + | 'REPROCESS_TRIGGERED' + | 'REPROCESSED' + | 'INTERNAL_FAILURE' + | 'TIMEOUT_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ArtifactProcessMessage.pdsc + + export interface ArtifactProcessMessage { + artifactRequest: ArtifactProcessRequest; + retryCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ArtifactProcessRequest.pdsc + + export interface ArtifactProcessRequest { + requestedClass: DataArtifactClass | MediaArtifactClass; + dependencies: { [id: string]: DataArtifact | MediaArtifact }; + asset: Asset; + requestTriggerType: RequestTriggerType; + timeToLive?: TimeSpan; + artifactInstanceId?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ArtifactProcessWorkQueueMessage.pdsc + + export interface ArtifactProcessWorkQueueMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + processMessage: ArtifactProcessMessage; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ArtifactStatus.pdsc + + export type ArtifactStatus = + | 'NEW' + | 'WAITING_DEPENDENCIES' + | 'READY_FOR_PROCESSING' + | 'PROCESSING' + | 'AVAILABLE' + | 'MISSING_DEPENDENCIES' + | 'REJECTED_DEPENDENCIES' + | 'RETRY' + | 'ERROR' + | 'SCHEDULED_FOR_DELETION' + | 'DELETED' + | 'PROCESSING_FAILURE' + | 'TIMEOUT' + | 'SKIPPED' + | 'DISALLOWED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AspectRatio.pdsc + + export interface AspectRatio { + widthAspect: number; + heightAspect: number; + formatted: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Asset.pdsc + + export interface Asset { + created: number; + lastModified: number; + deleted?: number; + id: string; + owner: string; + mediaTypeFamily: MediaTypeFamily; + serviceRelationships: ServiceRelationship[]; + resourceRelationships: ResourceRelationship[]; + recipes: AssetRecipe[]; + status: AssetStatus; + slug?: string; + executedActions?: AssetExecutedAction[]; + committed?: boolean; + expireAt?: number; + parentAssetIds?: string[]; + assetMetadata?: ImageMetadata; + sourceIndicator?: AssetSourceIndicator; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AssetAction.pdsc + + export type AssetAction = + | 'PROCESSING' + | 'PROCESSED' + | 'REPROCESSING_TRIGGERED' + | 'REPROCESSING_DONE' + | 'REPROCESSING_CANCELLED' + | 'DELETE_REQUESTED' + | 'FULL_DELETE_REQUESTED' + | 'PROCESSING_FAILED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AssetExecutedAction.pdsc + + export interface AssetExecutedAction { + action: AssetAction; + createdAt: number; + recipe?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AssetFlaggingAnalysis.pdsc + + export interface AssetFlaggingAnalysis { + assetFlaggingService: string; + analyzedAt: number; + analysisResult: AssetFlaggingAnalysisResult; + analysisDescription?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AssetFlaggingAnalysisResult.pdsc + + export type AssetFlaggingAnalysisResult = 'ANALYSIS_IN_PROGRESS' | 'ALLOWED' | 'BLOCKED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AssetRecipe.pdsc + + export interface AssetRecipe { + recipe: string; + status: RecipeStatus; + version?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AssetSourceIndicator.pdsc + + export interface AssetSourceIndicator { + source?: string; + fieldDiscriminator: AssetSourceIndicatorDiscriminator; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AssetSourceIndicatorDiscriminator.pdsc + + export type AssetSourceIndicatorDiscriminator = 'source'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AssetStatus.pdsc + + export type AssetStatus = 'ALLOWED' | 'BLOCKED' | 'ABANDONED' | 'DELETED' | 'SCHEDULED_DELETION'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Audio.pdsc + + export interface Audio { + probeScore?: number; + probeSize?: number; + probeTool?: string; + mediaType?: string; + rawFormatSpec?: RawFormatSpec; + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + rawMetadataTags: Tag[]; + audioStreams: AudioStream[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AudioStream.pdsc + + export interface AudioStream { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + timeBase?: TimeBase; + startTimeInTicks?: number; + durationInTicks?: number; + index: number; + bitRate?: BitRate; + sampleRate?: number; + channels?: number; + channelLayout?: string; + codec?: RawCodecSpec; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AzureArtifact.pdsc + + export interface AzureArtifact { + content: string; + type: AzureArtifactType; + version?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/AzureArtifactType.pdsc + + export type AzureArtifactType = 'NONE' | 'WEBVTT' | 'IMAGE_ANALYSIS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/BinaryRunError.pdsc + + export interface BinaryRunError { + exitCode: number; + coreDump?: string; + logInfo?: string; + stdErrorSample?: string; + stdOutSample?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/BitRate.pdsc + + export interface BitRate { + type: BitRateType; + average?: number; + minimum?: number; + maximum: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/BitRateType.pdsc + + export type BitRateType = 'CBR' | 'VBR' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/BlobstoreType.pdsc + + export type BlobstoreType = 'S3' | 'AMBRY' | 'AZURE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/BoundingBox.pdsc + + export interface BoundingBox { + multiImageCategory: string; + boundingBoxCoordinates: BoundingBoxCoordinates; + centerShiftPercentage: CenterShiftPercentage; + confidenceScore: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/BoundingBoxCoordinates.pdsc + + export interface BoundingBoxCoordinates { + topLeftX: number; + topLeftY: number; + width: number; + height: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ByteRange.pdsc + + export interface ByteRange { + firstByte?: number; + lastByte?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/CacheControl.pdsc + + export interface CacheControl { + mechanism: CacheControlMechanism; + maxAgeInSeconds?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/CacheControlMechanism.pdsc + + export type CacheControlMechanism = 'PUBLIC' | 'PRIVATE' | 'NO_CACHE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Captions.pdsc + + export interface Captions { + language: Locale; + description?: string; + trackType: CaptionsTrackType; + largeText: boolean; + closedCaptions: boolean; + formattedForEasyReader: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/CaptionsTrackType.pdsc + + export type CaptionsTrackType = 'ASR' | 'USER_PROVIDED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/CenterShiftPercentage.pdsc + + export interface CenterShiftPercentage { + horizontal: number; + vertical: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Classification.pdsc + + export type Classification = 'POSITIVE' | 'NEGATIVE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ClassificationDetail.pdsc + + export interface ClassificationDetail { + label: string; + classification?: Classification; + score?: number; + threshold?: number; + appliedClassifier: Classifier; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ClassificationInformation.pdsc + + export interface ClassificationInformation { + contentClassLabels: string[]; + appliedClassifier: Classifier; + classificationDetails: ClassificationDetail[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Classifier.pdsc + + export interface Classifier { + classiferId: string; + classifierVersion: string; + scoreRange?: ClassifierScoreRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ClassifierScoreRange.pdsc + + export interface ClassifierScoreRange { + minValue: number; + maxValue: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ContainerInfo.pdsc + + export interface ContainerInfo { + blobstoreType: BlobstoreType; + containerName: string; + account?: string; + encryptionKeyId?: string; + clusterName?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ContentClassification.pdsc + + export interface ContentClassification { + classificationInformation: ClassificationInformation[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ContentFilterToken.pdsc + + export interface ContentFilterToken { + filter: string; + token: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ContentSource.pdsc + + export type ContentSource = 'DIGITALMEDIA_ASSET'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ContentStatus.pdsc + + export type ContentStatus = + | 'PURGED' + | 'REPORTED' + | 'REPORT_IN_PROGRESS' + | 'REPORT_FAILED' + | 'PURGE_FAILED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Coordinate2D.pdsc + + export interface Coordinate2D { + x: number; + y: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/CoreMetadata.pdsc + + export interface CoreMetadata { + extractedFrom?: string; + title?: { [id: string]: ExtractedString }; + creators: Creator[]; + subject?: { [id: string]: ExtractedString }; + description?: { [id: string]: ExtractedString }; + publishers: Publisher[]; + type?: string; + identifier?: string; + source?: string; + languages: string[]; + rights?: { [id: string]: ExtractedString }; + otherMetadataValues: Tag[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Creator.pdsc + + export interface Creator { + urn?: string; + name?: string; + tag?: Tag; + extractedRole?: string; + normalizedRole?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/CroppedImageInfo.pdsc + + export interface CroppedImageInfo { + topLeft: Coordinate2D; + topRight: Coordinate2D; + bottomLeft: Coordinate2D; + bottomRight: Coordinate2D; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/DataArtifact.pdsc + + export interface DataArtifact { + created: number; + lastModified: number; + deleted?: number; + asset: string; + artifactClass: string; + status: ArtifactStatus; + reprocessingStatus?: ArtifactStatus; + executedActions: ExecutedAction[]; + isDeleteRequested: boolean; + requestedReprocessingType?: ReprocessingType; + diagnosis?: DiagnosisIssue; + refreshAt?: number; + instanceId?: string; + dependentInstanceIds: string[]; + reprocessingSourceType?: ReprocessingSourceType; + version?: number; + data?: + | AssetFlaggingAnalysis + | ContentFilterToken + | CoreMetadata + | DisplayText + | ContentClassification + | MediaScanAnalysis + | MediaScanContent + | NullSchema + | Speech + | EncryptedContent + | VideoOCR + | StartLiveData + | GoLiveTrigger + | EndLiveTrigger + | BoundingBox + | AzureArtifact + | ForeignTrigger + | ForeignDependency + | ImageOCR + | ImageEditInfo; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/DataArtifactClass.pdsc + + export interface DataArtifactClass { + id: string; + name: string; + description?: string; + dataSchema: string; + assetMediaTypeFamily?: MediaTypeFamily; + dependencies: string[]; + pluggableServiceFactory: string; + processRequestedByAssetManager: boolean; + processInstructions?: ProcessInstructions; + originalArtifactClass?: string; + alternativeArtifactClasses: string[]; + version?: number; + reprocessingType: ReprocessingType; + author?: string; + originalPostProcessingArtifactClass?: string; + isRefreshable: boolean; + multipleInstancesAllowed: boolean; + foreignArtifactClass?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/DiagnosisIssue.pdsc + + export interface DiagnosisIssue { + createdAt: number; + severity: DiagnosisIssueSeverity; + type: DiagnosisIssueType; + message?: string; + binaryRunError?: BinaryRunError; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/DiagnosisIssueSeverity.pdsc + + export type DiagnosisIssueSeverity = 'INFO' | 'WARNING' | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/DiagnosisIssueType.pdsc + + export type DiagnosisIssueType = + | 'FILE_TOO_LARGE' + | 'FILE_NOT_FOUND' + | 'UNSUPPORTED_FORMAT' + | 'CORRUPTED_ENTITY' + | 'PROCESSING_ERROR' + | 'UNDEFINED' + | 'THIRD_PARTY_CONTENT_DOWNLOAD_FAILURE' + | 'THIRD_PARTY_URL_BLACKLISTED' + | 'DOCUMENT_PAGE_SIZE_NOT_SAME' + | 'DOCUMENT_TOO_COMPLEX' + | 'DOCUMENT_TOO_MANY_WORDS' + | 'DOCUMENT_TOO_MANY_PAGES' + | 'PROCESSING_TIME_OUT' + | 'DOCUMENT_ASPECT_RATIO_DIFF_EXCEED_THRESHOLD'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/DisplayText.pdsc + + export interface DisplayText { + alternativeText?: MultiLocaleString; + caption?: MultiLocaleString; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Document.pdsc + + export interface Document { + probeScore?: number; + probeSize?: number; + probeTool?: string; + mediaType?: string; + rawFormatSpec?: RawFormatSpec; + rawMetadataTags: Tag[]; + documentType?: DocumentType; + pageCount: number; + title?: string; + author?: string; + wordCount?: number; + isConvertedDocument: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/DocumentImages.pdsc + + export interface DocumentImages { + colorSpaceName?: string; + chromaSubsampling?: string; + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + orientation?: ExifOrientation; + pixelAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + colorDepth?: number; + lossyCompression?: boolean; + scale?: ScaleOperationType; + padding?: PaddingOperationType; + manifestFileIndex?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/DocumentMasterManifest.pdsc + + export interface DocumentMasterManifest {} + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/DocumentTranscript.pdsc + + export interface DocumentTranscript { + transcriptLanguage: Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/DocumentType.pdsc + + export type DocumentType = 'DOC' | 'DOCX' | 'ODT' | 'PPT' | 'PPTX' | 'PPS' | 'PPSX' | 'ODP' | 'PDF'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/EncryptedContent.pdsc + + export interface EncryptedContent { + encryptedPayload: string; + encryptionKeyId: string; + encryptionScheme: EncryptionScheme; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/EncryptionScheme.pdsc + + export type EncryptionScheme = + | 'AES_GCM' + | 'AES_GCM_WITH_PBKDF2' + | 'AES_GCM_WITH_FIXED_IV' + | 'AES_CBC_128_16'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/EndLiveTrigger.pdsc + + export interface EndLiveTrigger { + triggeredAt: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ExecutedAction.pdsc + + export interface ExecutedAction { + action: ArtifactAction; + createdAt: number; + artifactStatus: ArtifactStatus; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ExifOrientation.pdsc + + export type ExifOrientation = + | 'TopLeft' + | 'TopRight' + | 'BottomRight' + | 'BottomLeft' + | 'LeftTop' + | 'RightTop' + | 'RightBottom' + | 'LeftBottom'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ExtractedString.pdsc + + export interface ExtractedString { + value?: string; + tag?: Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.Tag; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/File.pdsc + + export interface File { + index: number; + slug?: string; + mediaType: string; + size?: number; + filename?: string; + fileId?: number; + blob?: string; + hash?: string; + md5?: string; + sha256?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/FileMetadata.pdsc + + export interface FileMetadata { + captionLanguage?: Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/FileSource.pdsc + + export type FileSource = 'SELF' | 'DEPENDENCY'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/FingerprintOutputFile.pdsc + + export interface FingerprintOutputFile { + fingerprintLibraryVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ForeignDependency.pdsc + + export interface ForeignDependency { + satisfiedAssets: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ForeignTrigger.pdsc + + export interface ForeignTrigger {} + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Fraction.pdsc + + export interface Fraction { + numerator: number; + denominator: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/FrameRate.pdsc + + export interface FrameRate { + rational?: Fraction; + fps: number; + formatted?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/GoLiveTrigger.pdsc + + export interface GoLiveTrigger { + triggeredAt: number; + startTimeOffset?: number; + endTimeOffset?: number; + streamingLocatorId?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ImageDisplaySize.pdsc + + export interface ImageDisplaySize { + width: number; + height: number; + uom: UnitsOfMeasureForLength; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ImageEditInfo.pdsc + + export interface ImageEditInfo { + croppedImageInfo: CroppedImageInfo; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ImageMetadata.pdsc + + export interface ImageMetadata { + originalImageSize: ImageSize; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ImageOCR.pdsc + + export interface ImageOCR { + ocrTextBoxes: OCRTextBox[]; + modelInformation?: Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.SoftwareApplication; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ImageSize.pdsc + + export interface ImageSize { + width: number; + height: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/LiveEncodingType.pdsc + + export type LiveEncodingType = 'BASIC' | 'NONE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/LiveIngestUrl.pdsc + + export interface LiveIngestUrl { + url: string; + ingestProtocol: LiveStreamingIngestProtocol; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/LiveInput.pdsc + + export interface LiveInput { + eventId: string; + ingestUrls: LiveIngestUrl[]; + encodingType: LiveEncodingType; + previewUrls?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/LiveOutput.pdsc + + export interface LiveOutput { + eventId: string; + createdAt: number; + endedAt?: number; + live: boolean; + primaryStreamingUrl: LivePlaybackUrl; + backupStreamingUrls: LivePlaybackUrl[]; + outputData: AMSLiveOutput; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/LivePlaybackUrl.pdsc + + export interface LivePlaybackUrl { + url: string; + deliveryProtocol: LiveStreamingDeliveryProtocol; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/LiveStreamingDeliveryProtocol.pdsc + + export type LiveStreamingDeliveryProtocol = 'HLS' | 'DASH' | 'SMOOTH' | 'PROGRESSIVE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/LiveStreamingIngestProtocol.pdsc + + export type LiveStreamingIngestProtocol = 'RTMP' | 'RTMPS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/LiveStreamOutput.pdsc + + export interface LiveStreamOutput { + eventId: string; + vodManifests: VodManifestStorage[]; + fragmentLiveSegments: LiveStreamSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/LiveStreamSegment.pdsc + + export interface LiveStreamSegment { + blobId: string; + bitrate?: number; + length?: number; + width?: number; + height?: number; + codec?: RawCodecSpec; + protocol?: AdaptiveStreamProtocol; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Locale.pdsc + + export interface Locale { + language: string; + country?: string; + variant?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/MediaArtifact.pdsc + + export interface MediaArtifact { + created: number; + lastModified: number; + deleted?: number; + asset: string; + artifactClass: string; + status: ArtifactStatus; + reprocessingStatus?: ArtifactStatus; + executedActions: ExecutedAction[]; + isDeleteRequested: boolean; + requestedReprocessingType?: ReprocessingType; + diagnosis?: DiagnosisIssue; + refreshAt?: number; + instanceId?: string; + dependentInstanceIds: string[]; + reprocessingSourceType?: ReprocessingSourceType; + version?: number; + authorizationMethod: MediaArtifactAuthorizationMethod; + pluggableServiceFactory: string; + data?: + | UploadedFile + | StillImage + | Video + | Audio + | AdaptiveStreamVideoWithAudioMasterPlaylist + | AdaptiveStreamVideoMasterPlaylist + | AdaptiveStreamAudioMasterPlaylist + | AdaptiveStreamVideoWithAudio + | AdaptiveStreamVideo + | AdaptiveStreamAudio + | Document + | Captions + | UnpackedSCORM + | DocumentMasterManifest + | DocumentTranscript + | DocumentImages + | LiveInput + | LiveOutput + | LiveStreamOutput + | FingerprintOutputFile; + files: File[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/MediaArtifactAuthorizationMethod.pdsc + + export type MediaArtifactAuthorizationMethod = 'NONE' | 'PUBLIC' | 'INTERNAL' | 'PRIVATE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/MediaArtifactClass.pdsc + + export interface MediaArtifactClass { + id: string; + name: string; + description?: string; + dataSchema: string; + assetMediaTypeFamily?: MediaTypeFamily; + dependencies: string[]; + pluggableServiceFactory: string; + processRequestedByAssetManager: boolean; + processInstructions?: ProcessInstructions; + originalArtifactClass?: string; + alternativeArtifactClasses: string[]; + version?: number; + reprocessingType: ReprocessingType; + author?: string; + originalPostProcessingArtifactClass?: string; + isRefreshable: boolean; + multipleInstancesAllowed: boolean; + kind: MediaArtifactClassKind; + intent: MediaArtifactClassIntent; + mediaTypeFamily: MediaTypeFamily; + defaultAuthorizationMethod: MediaArtifactAuthorizationMethod; + guarantees: string[]; + fileSource: FileSource; + cacheControl?: CacheControl; + urlExpirationInSeconds?: number; + containerInfo?: ContainerInfo; + uploadProcessedMedia: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/MediaArtifactClassIntent.pdsc + + export type MediaArtifactClassIntent = + | 'MAINCONTENT' + | 'TRANSLATION' + | 'ACCESSIBILITY' + | 'PREVIEW' + | 'TRICKPLAY' + | 'HUMANREVIEW' + | 'MACHINEANALYSIS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/MediaArtifactClassKind.pdsc + + export type MediaArtifactClassKind = 'RENDITION' | 'COMPONENT' | 'COMPLEMENT'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/MediaScanAnalysis.pdsc + + export interface MediaScanAnalysis { + scanResult: MediaScanResult; + scanType: ScanType; + photoDnaHash?: number; + hashMatchedDatabase: PhotoDnaHashDatabase; + source: ContentSource; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/MediaScanContent.pdsc + + export interface MediaScanContent { + contentStatus: ContentStatus[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/MediaScanResult.pdsc + + export interface MediaScanResult { + classification: ScanClassification; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/MediaTypeFamily.pdsc + + export type MediaTypeFamily = + | 'BINARYDATA' + | 'STILLIMAGE' + | 'VIDEO' + | 'SOUND' + | 'PAGINATEDDOCUMENT' + | 'SLIDESHOWDOCUMENT' + | 'ARCHIVE' + | 'TEXT' + | 'LIVE_VIDEO'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/MultiLocaleString.pdsc + + export interface MultiLocaleString { + localized: { [id: string]: string }; + preferredLocale?: Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/NullSchema.pdsc + + export interface NullSchema {} + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/OCRTextBox.pdsc + + export interface OCRTextBox { + text: string; + boundingBox: Rectangle; + recognitionScore: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/PaddingOperationType.pdsc + + export type PaddingOperationType = 'WHITE' | 'TRANSPARENT'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/PhotoDnaHashDatabase.pdsc + + export type PhotoDnaHashDatabase = 'NONE' | 'NCMEC' | 'NCMEC_INDUSTRY_PARTNERS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ProcessInstructions.pdsc + + export interface ProcessInstructions { + inputValidationInstructions: { [id: string]: string }; + processInstructions: { [id: string]: string }; + outputValidationInstructions: { [id: string]: string }; + configuration: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Publisher.pdsc + + export interface Publisher { + urn?: string; + name?: string; + tag?: Tag; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/RawCodecSpec.pdsc + + export interface RawCodecSpec { + name: string; + longName?: string; + profile?: string; + type?: string; + tagString?: string; + tag?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/RawFormatSpec.pdsc + + export interface RawFormatSpec { + name: string; + longName?: string; + tags: Tag[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/RecipeStatus.pdsc + + export type RecipeStatus = + | 'NEW' + | 'PROCESSING' + | 'AVAILABLE' + | 'INCOMPLETE' + | 'WAITING_UPLOAD' + | 'CLIENT_ERROR' + | 'SERVER_ERROR' + | 'MUTATING'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Rectangle.pdsc + + export interface Rectangle { + x: number; + y: number; + width: number; + height: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ReprocessingSourceType.pdsc + + export type ReprocessingSourceType = 'NORMAL' | 'NEW_INSTANCE' | 'REFRESH' | 'UCF'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ReprocessingType.pdsc + + export type ReprocessingType = 'NORMAL' | 'CLIENT_TRIGGERED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/RequestTriggerType.pdsc + + export type RequestTriggerType = 'ONLINE' | 'REPROCESS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ResourceRelationship.pdsc + + export interface ResourceRelationship { + relationshipType: ResourceRelationshipType; + resourceIndicator: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ResourceRelationshipType.pdsc + + export type ResourceRelationshipType = + | 'GENERIC' + | 'CONTENT' + | 'SOURCE' + | 'REPROCESSING_TASK' + | 'EXISTING_SOURCE' + | 'EXTERNAL_USER' + | 'PROXY_CACHED_URL'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ScaleOperationType.pdsc + + export type ScaleOperationType = 'DOWN' | 'UP' | 'UNCHANGED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ScanClassification.pdsc + + export type ScanClassification = 'DIRTY' | 'CLEAN'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ScanType.pdsc + + export type ScanType = 'ANTIVIRUS' | 'NUDITY' | 'MINOR_EXPLICIT' | 'MEDIA_REPUTATION'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ServiceRelationship.pdsc + + export interface ServiceRelationship { + source: ServiceRelationshipSource; + relationshipType: ServiceRelationshipType; + identifier: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ServiceRelationshipSource.pdsc + + export type ServiceRelationshipSource = 'PROVIDED' | 'AUTHENTICATION'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/ServiceRelationshipType.pdsc + + export type ServiceRelationshipType = 'GENERIC' | 'CREATOR' | 'OWNER'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/SoftwareApplication.pdsc + + export interface SoftwareApplication { + name: string; + suite?: string; + version?: string; + builtFor?: string; + builtWith?: string; + libraries: SoftwareApplicationLibrary[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/SoftwareApplicationLibrary.pdsc + + export interface SoftwareApplicationLibrary { + name: string; + version?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Speech.pdsc + + export interface Speech { + name: string; + confidence: SpeechRecognitionConfidence; + locale?: Locale; + lexical?: string; + application: SoftwareApplication; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/SpeechRecognitionConfidence.pdsc + + export type SpeechRecognitionConfidence = + | 'NO_SPEECH' + | 'FALSE_RECOGNITION' + | 'HIGH_CONFIDENCE' + | 'MEDIUM_CONFIDENCE' + | 'LOW_CONFIDENCE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/StartLiveData.pdsc + + export interface StartLiveData { + archiveWindowLength?: number; + startFrom: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/StillImage.pdsc + + export interface StillImage { + probeScore?: number; + probeSize?: number; + probeTool?: string; + mediaType?: string; + rawFormatSpec?: RawFormatSpec; + colorSpaceName?: string; + chromaSubsampling?: string; + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + orientation?: ExifOrientation; + pixelAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + colorDepth?: number; + lossyCompression?: boolean; + rawMetadataTags: Tag[]; + scale?: ScaleOperationType; + padding?: PaddingOperationType; + rawCodecSpec: RawCodecSpec; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/StreamFps.pdsc + + export interface StreamFps { + type: StreamFpsType; + average: FrameRate; + minimum?: FrameRate; + maximum?: FrameRate; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/StreamFpsType.pdsc + + export type StreamFpsType = 'CFR' | 'VFR' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Tag.pdsc + + export interface Tag { + key: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/TimeBase.pdsc + + export interface TimeBase { + rational?: Fraction; + raw: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/TimeSpan.pdsc + + export interface TimeSpan { + duration: number; + unit: TimeUnit; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/TimeUnit.pdsc + + export type TimeUnit = 'MILLISECOND' | 'SECOND' | 'MINUTE' | 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/UnitsOfMeasureForLength.pdsc + + export type UnitsOfMeasureForLength = 'PX' | 'DP' | 'IN' | 'CM' | 'MM' | 'PT' | 'PC' | 'Q'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/UnpackedSCORM.pdsc + + export interface UnpackedSCORM { + probeScore?: number; + probeSize?: number; + probeTool?: string; + mediaType?: string; + rawFormatSpec?: RawFormatSpec; + rawMetadataTags: Tag[]; + contents: { [id: string]: string }; + manifest: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/UploadedFile.pdsc + + export interface UploadedFile { + uploader?: string; + startedAt?: number; + finishedAt: number; + originIpAddress?: string; + referer?: string; + fileMetadata?: FileMetadata; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/Video.pdsc + + export interface Video { + probeScore?: number; + probeSize?: number; + probeTool?: string; + mediaType?: string; + rawFormatSpec?: RawFormatSpec; + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + rawMetadataTags: Tag[]; + videoStreams: VideoStream[]; + audioStreams: AudioStream[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/VideoFrameOCR.pdsc + + export interface VideoFrameOCR { + ocrTextBoxes: OCRTextBox[]; + modelInformation?: Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.SoftwareApplication; + frameNumber: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/VideoOCR.pdsc + + export interface VideoOCR { + videoFrameOCRs: VideoFrameOCR[]; + failures: number[]; + ocrSamplingRate: number; + videoSamplingRate: number; + ocrSampledFrameCount: number; + modelInformation: SoftwareApplication; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/VideoStream.pdsc + + export interface VideoStream { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + timeBase?: TimeBase; + startTimeInTicks?: number; + durationInTicks?: number; + index: number; + colorSpaceName?: string; + chromaSubsampling?: string; + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + orientation?: ExifOrientation; + pixelAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + colorDepth?: number; + lossyCompression?: boolean; + bitRate?: BitRate; + frameRate?: StreamFps; + codec?: RawCodecSpec; + psnr?: number; + videoMultiMethodAssessmentFusion?: number; + constantRateFactor?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v1/VodManifestStorage.pdsc + + export interface VodManifestStorage { + blobId: string; + protocol: AdaptiveStreamProtocol; + } + } + namespace V2 { + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AdaptiveStreamAudioProcessingData.pdsc + + export interface AdaptiveStreamAudioProcessingData { + segmentContainerFormat: RawFormatSpec; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + durationInMicroseconds?: number; + audioStream: AdaptiveStreamAudioStream; + segments: AdaptiveStreamAudioSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AdaptiveStreamAudioSegment.pdsc + + export interface AdaptiveStreamAudioSegment { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + fileIndex?: number; + type: AdaptiveStreamMediaSegmentType; + byteRange?: ByteRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AdaptiveStreamAudioStream.pdsc + + export interface AdaptiveStreamAudioStream { + bitRate?: BitRate; + sampleRate?: number; + channels?: number; + channelLayout?: string; + codec?: RawCodecSpec; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AdaptiveStreamMediaPlaylistType.pdsc + + export type AdaptiveStreamMediaPlaylistType = 'VOD' | 'EVENT'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AdaptiveStreamMediaSegmentType.pdsc + + export type AdaptiveStreamMediaSegmentType = 'INDEX' | 'INITIALIZATION' | 'MEDIA'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AdaptiveStreamProtocol.pdsc + + export type AdaptiveStreamProtocol = 'HLS' | 'DASH' | 'SMOOTH' | 'HDS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AdaptiveStreamVideoProcessingData.pdsc + + export interface AdaptiveStreamVideoProcessingData { + segmentContainerFormat: RawFormatSpec; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + durationInMicroseconds?: number; + videoStream: AdaptiveStreamVideoStream; + segments: AdaptiveStreamVideoSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AdaptiveStreamVideoSegment.pdsc + + export interface AdaptiveStreamVideoSegment { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + fileIndex?: number; + type: AdaptiveStreamMediaSegmentType; + byteRange?: ByteRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AdaptiveStreamVideoStream.pdsc + + export interface AdaptiveStreamVideoStream { + colorSpaceName?: string; + chromaSubsampling?: string; + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + orientation?: ExifOrientation; + pixelAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + colorDepth?: number; + lossyCompression?: boolean; + bitRate?: BitRate; + frameRate?: StreamFps; + codec?: RawCodecSpec; + psnr?: number; + videoMultiMethodAssessmentFusion?: number; + constantRateFactor?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AdaptiveStreamVideoWithAudioProcessingData.pdsc + + export interface AdaptiveStreamVideoWithAudioProcessingData { + segmentContainerFormat: RawFormatSpec; + playlistType: AdaptiveStreamMediaPlaylistType; + protocol: AdaptiveStreamProtocol; + durationInMicroseconds?: number; + videoStream: AdaptiveStreamVideoStream; + audioStream: AdaptiveStreamAudioStream; + segments: AdaptiveStreamVideoSegment[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AMSLiveOutput.pdsc + + export interface AMSLiveOutput { + outputId: string; + assetId: string; + manifestName: string; + outputStatus: AMSLiveOutputStatus; + primaryStreamingLocatorId: string; + backupStreamingLocatorIds: string[]; + primaryStreamingEndpointId: string; + backupStreamingEndpointIds: string[]; + trimmingFilter?: AMSLiveTrimmingFilter; + accountId?: string; + autoCaptionLanguage?: Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AMSLiveOutputStatus.pdsc + + export type AMSLiveOutputStatus = 'CREATING' | 'RUNNING' | 'DELETING'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AMSLiveTrimmingFilter.pdsc + + export interface AMSLiveTrimmingFilter { + name: string; + startTimeStamp?: number; + endTimeStamp?: number; + startTimeOffset?: number; + endTimeOffset?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ArtifactProcessMessage.pdsc + + export interface ArtifactProcessMessage { + asset: string; + owner: string; + mediaTypeFamily: MediaTypeFamily; + resourceRelationships: ResourceRelationship[]; + requestedClassesInfo: RequestedArtifactClassInfo[]; + dependencies: { + [id: string]: DataArtifactDependency | MediaArtifactDependency; + }; + requestTriggerType: RequestTriggerType; + retryCount: number; + subtaskId?: number; + subtaskRunId?: string; + artifactInstanceId?: string; + assetStatus?: AssetStatus; + source?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ArtifactProcessWorkQueueMessageV2.pdsc + + export interface ArtifactProcessWorkQueueMessageV2 { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + artifactProcessMessage: ArtifactProcessMessage; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AspectRatio.pdsc + + export interface AspectRatio { + widthAspect: number; + heightAspect: number; + formatted: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AssetStatus.pdsc + + export type AssetStatus = 'ALLOWED' | 'BLOCKED' | 'ABANDONED' | 'DELETED' | 'SCHEDULED_DELETION'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AudioProcessingData.pdsc + + export interface AudioProcessingData {} + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/AudioStream.pdsc + + export interface AudioStream { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + timeBase?: TimeBase; + startTimeInTicks?: number; + durationInTicks?: number; + index: number; + bitRate?: BitRate; + sampleRate?: number; + channels?: number; + channelLayout?: string; + codec?: RawCodecSpec; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/BitRate.pdsc + + export interface BitRate { + type: BitRateType; + average?: number; + minimum?: number; + maximum: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/BitRateType.pdsc + + export type BitRateType = 'CBR' | 'VBR' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/BlobstoreType.pdsc + + export type BlobstoreType = 'S3' | 'AMBRY' | 'AZURE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ByteRange.pdsc + + export interface ByteRange { + firstByte?: number; + lastByte?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/CaptionsProcessingData.pdsc + + export interface CaptionsProcessingData {} + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/Classification.pdsc + + export type Classification = 'POSITIVE' | 'NEGATIVE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ClassificationDetail.pdsc + + export interface ClassificationDetail { + label: string; + classification?: Classification; + score?: number; + threshold?: number; + appliedClassifier: Classifier; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ClassificationInformation.pdsc + + export interface ClassificationInformation { + contentClassLabels: string[]; + appliedClassifier: Classifier; + classificationDetails: ClassificationDetail[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/Classifier.pdsc + + export interface Classifier { + classiferId: string; + classifierVersion: string; + scoreRange?: ClassifierScoreRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ClassifierScoreRange.pdsc + + export interface ClassifierScoreRange { + minValue: number; + maxValue: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ContainerInfo.pdsc + + export interface ContainerInfo { + blobstoreType: BlobstoreType; + containerName: string; + account?: string; + encryptionKeyId?: string; + clusterName?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ContentClassificationProcessingData.pdsc + + export interface ContentClassificationProcessingData { + classificationInformation: ClassificationInformation[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ContentFilterTokenProcessingData.pdsc + + export interface ContentFilterTokenProcessingData { + filter: string; + token: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ContentSource.pdsc + + export type ContentSource = 'DIGITALMEDIA_ASSET'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/DataArtifactDependency.pdsc + + export interface DataArtifactDependency { + dataArtifactClass: string; + dependencyData: + | ContentFilterTokenProcessingData + | ContentClassificationProcessingData + | MediaScanAnalysisProcessingData + | NullSchemaProcessingData + | EncryptedContentProcessingData; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/DocumentImageProcessingData.pdsc + + export interface DocumentImageProcessingData { + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + pixelAspectRatio?: AspectRatio; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/DocumentProcessingData.pdsc + + export interface DocumentProcessingData { + documentType?: DocumentType; + pageCount?: number; + wordCount?: number; + isConvertedDocument: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/DocumentTranscriptProcessingData.pdsc + + export interface DocumentTranscriptProcessingData {} + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/DocumentType.pdsc + + export type DocumentType = 'DOC' | 'DOCX' | 'ODT' | 'PPT' | 'PPTX' | 'PPS' | 'PPSX' | 'ODP' | 'PDF'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/EncryptedContentProcessingData.pdsc + + export interface EncryptedContentProcessingData { + encryptedPayload: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ExifOrientation.pdsc + + export type ExifOrientation = + | 'TopLeft' + | 'TopRight' + | 'BottomRight' + | 'BottomLeft' + | 'LeftTop' + | 'RightTop' + | 'RightBottom' + | 'LeftBottom'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/File.pdsc + + export interface File { + index: number; + slug?: string; + mediaType: string; + size?: number; + filename?: string; + fileId?: number; + blob?: string; + hash?: string; + md5?: string; + sha256?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/FileMetadata.pdsc + + export interface FileMetadata { + captionLanguage?: Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/FingerprintOutputFileProcessingData.pdsc + + export interface FingerprintOutputFileProcessingData { + fingerPrintLibraryVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/Fraction.pdsc + + export interface Fraction { + numerator: number; + denominator: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/FrameRate.pdsc + + export interface FrameRate { + rational?: Fraction; + fps: number; + formatted?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ImageDisplaySize.pdsc + + export interface ImageDisplaySize { + width: number; + height: number; + uom: UnitsOfMeasureForLength; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ImageSize.pdsc + + export interface ImageSize { + width: number; + height: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/LiveOutputProcessingData.pdsc + + export interface LiveOutputProcessingData { + eventId: string; + primaryStreamingUrl: LivePlaybackUrl; + backupStreamingUrls: LivePlaybackUrl[]; + outputData: AMSLiveOutput; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/LivePlaybackUrl.pdsc + + export interface LivePlaybackUrl { + url: string; + deliveryProtocol: LiveStreamingDeliveryProtocol; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/LiveStreamingDeliveryProtocol.pdsc + + export type LiveStreamingDeliveryProtocol = 'HLS' | 'DASH' | 'SMOOTH' | 'PROGRESSIVE'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/Locale.pdsc + + export interface Locale { + language: string; + country?: string; + variant?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/MediaArtifactDependency.pdsc + + export interface MediaArtifactDependency { + mediaArtifactClass: string; + files: File[]; + dependencyData?: + | DocumentProcessingData + | DocumentImageProcessingData + | StillImageProcessingData + | VideoProcessingData + | UnpackedSCORMProcessingData + | UploadedFileData + | LiveOutputProcessingData + | DocumentTranscriptProcessingData + | AdaptiveStreamVideoWithAudioProcessingData + | AdaptiveStreamAudioProcessingData + | AdaptiveStreamVideoProcessingData + | FingerprintOutputFileProcessingData + | AudioProcessingData + | CaptionsProcessingData; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/MediaScanAnalysisProcessingData.pdsc + + export interface MediaScanAnalysisProcessingData { + scanResult: MediaScanResult; + scanType: ScanType; + photoDnaHash?: number; + hashMatchedDatabase: PhotoDnaHashDatabase; + source: ContentSource; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/MediaScanResult.pdsc + + export interface MediaScanResult { + classification: ScanClassification; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/MediaTypeFamily.pdsc + + export type MediaTypeFamily = + | 'BINARYDATA' + | 'STILLIMAGE' + | 'VIDEO' + | 'SOUND' + | 'PAGINATEDDOCUMENT' + | 'SLIDESHOWDOCUMENT' + | 'ARCHIVE' + | 'TEXT' + | 'LIVE_VIDEO'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/NullSchemaProcessingData.pdsc + + export interface NullSchemaProcessingData {} + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/PhotoDnaHashDatabase.pdsc + + export type PhotoDnaHashDatabase = 'NONE' | 'NCMEC' | 'NCMEC_INDUSTRY_PARTNERS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ProcessInstructions.pdsc + + export interface ProcessInstructions { + inputValidationInstructions: { [id: string]: string }; + processInstructions: { [id: string]: string }; + outputValidationInstructions: { [id: string]: string }; + configuration: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/RawCodecSpec.pdsc + + export interface RawCodecSpec { + name: string; + longName?: string; + profile?: string; + type?: string; + tagString?: string; + tag?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/RawFormatSpec.pdsc + + export interface RawFormatSpec { + name: string; + longName?: string; + tags: Tag[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/RequestedArtifactClassInfo.pdsc + + export interface RequestedArtifactClassInfo { + requestedClass: string; + processInstructions: ProcessInstructions; + containerInfo?: ContainerInfo; + timeToLive?: TimeSpan; + dataSchema?: string; + mediaTypeFamily?: MediaTypeFamily; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/RequestTriggerType.pdsc + + export type RequestTriggerType = 'ONLINE' | 'REPROCESS'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ResourceRelationship.pdsc + + export interface ResourceRelationship { + relationshipType: ResourceRelationshipType; + resourceIndicator: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ResourceRelationshipType.pdsc + + export type ResourceRelationshipType = + | 'GENERIC' + | 'CONTENT' + | 'SOURCE' + | 'REPROCESSING_TASK' + | 'EXISTING_SOURCE' + | 'EXTERNAL_USER' + | 'PROXY_CACHED_URL'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ScanClassification.pdsc + + export type ScanClassification = 'DIRTY' | 'CLEAN'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/ScanType.pdsc + + export type ScanType = 'ANTIVIRUS' | 'NUDITY' | 'MINOR_EXPLICIT' | 'MEDIA_REPUTATION'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/StillImageProcessingData.pdsc + + export interface StillImageProcessingData { + storageSize: ImageSize; + rawCodecSpec: RawCodecSpec; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/StreamFps.pdsc + + export interface StreamFps { + type: StreamFpsType; + average: FrameRate; + minimum?: FrameRate; + maximum?: FrameRate; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/StreamFpsType.pdsc + + export type StreamFpsType = 'CFR' | 'VFR' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/Tag.pdsc + + export interface Tag { + key: string; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/TimeBase.pdsc + + export interface TimeBase { + rational?: Fraction; + raw: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/TimeSpan.pdsc + + export interface TimeSpan { + duration: number; + unit: TimeUnit; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/TimeUnit.pdsc + + export type TimeUnit = 'MILLISECOND' | 'SECOND' | 'MINUTE' | 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/UnitsOfMeasureForLength.pdsc + + export type UnitsOfMeasureForLength = 'PX' | 'DP' | 'IN' | 'CM' | 'MM' | 'PT' | 'PC' | 'Q'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/UnpackedSCORMProcessingData.pdsc + + export interface UnpackedSCORMProcessingData { + contents: { [id: string]: string }; + manifest: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/UploadedFileData.pdsc + + export interface UploadedFileData { + uploader?: string; + referer?: string; + fileMetadata?: FileMetadata; + originIpAddress?: string; + finishedAt?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/VideoProcessingData.pdsc + + export interface VideoProcessingData { + videoStreams: VideoStream[]; + audioStreams: AudioStream[]; + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + mediaType?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/processing/v2/VideoStream.pdsc + + export interface VideoStream { + startTimeInMicroseconds?: number; + durationInMicroseconds?: number; + timeBase?: TimeBase; + startTimeInTicks?: number; + durationInTicks?: number; + index: number; + colorSpaceName?: string; + chromaSubsampling?: string; + storageSize?: ImageSize; + storageAspectRatio?: AspectRatio; + orientation?: ExifOrientation; + pixelAspectRatio?: AspectRatio; + displaySize?: ImageDisplaySize; + displayAspectRatio?: AspectRatio; + colorDepth?: number; + lossyCompression?: boolean; + bitRate?: BitRate; + frameRate?: StreamFps; + codec?: RawCodecSpec; + psnr?: number; + videoMultiMethodAssessmentFusion?: number; + constantRateFactor?: number; + } + } + } + namespace Update { + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/update/ArtifactStatus.pdsc + + export type ArtifactStatus = + | 'NEW' + | 'WAITING_DEPENDENCIES' + | 'READY_FOR_PROCESSING' + | 'PROCESSING' + | 'AVAILABLE' + | 'MISSING_DEPENDENCIES' + | 'REJECTED_DEPENDENCIES' + | 'RETRY' + | 'ERROR' + | 'SCHEDULED_FOR_DELETION' + | 'DELETED' + | 'PROCESSING_FAILURE' + | 'TIMEOUT' + | 'SKIPPED' + | 'DISALLOWED'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/update/ArtifactStatusUpdate.pdsc + + export interface ArtifactStatusUpdate { + artifactClass: string; + status: ArtifactStatus; + instanceId?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/update/AssetReprocessingStatusUpdate.pdsc + + export interface AssetReprocessingStatusUpdate { + status: ReprocessingStatus; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/update/AssetStatus.pdsc + + export type AssetStatus = 'ALLOWED' | 'BLOCKED' | 'ABANDONED' | 'DELETED' | 'SCHEDULED_DELETION'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/update/AssetStatusUpdate.pdsc + + export interface AssetStatusUpdate { + status: AssetStatus; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/update/RecipeStatus.pdsc + + export type RecipeStatus = + | 'NEW' + | 'PROCESSING' + | 'AVAILABLE' + | 'INCOMPLETE' + | 'WAITING_UPLOAD' + | 'CLIENT_ERROR' + | 'SERVER_ERROR' + | 'MUTATING'; + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/update/RecipeStatusUpdate.pdsc + + export interface RecipeStatusUpdate { + recipe: string; + status: RecipeStatus; + } + // Generated from: com/linkedin/avro2pegasus/messages/digitalmedia/update/ReprocessingStatus.pdsc + + export type ReprocessingStatus = 'STARTED' | 'COMPLETED' | 'CANCELLED'; + } + } + namespace Elevate { + // Generated from: com/linkedin/avro2pegasus/messages/elevate/CuratedEmailType.pdsc + + export type CuratedEmailType = + | 'MILESTONE' + | 'STANDING_OUT' + | 'SHARE_COMMENT' + | 'OUTSIDE_NETWORK' + | 'DIFFERENCE' + | 'VISIBLE' + | 'TALENT' + | 'IMPACT' + | 'NOTICED' + | 'COWORKER_NOTICE' + | 'COWORKER_MILESTONE' + | 'COWORKER_SHARE' + | 'STATIC_COWORKERS' + | 'STATIC_SHARES' + | 'STATIC_COMPANY_JOBS' + | 'STATIC_SHARERS_GROW' + | 'STATIC_ENGAGEMENTS' + | 'STATIC_6X_SHARE_1' + | 'STATIC_THOUGHT_LEADER' + | 'STATIC_CREDIBILITY' + | 'STATIC_GET_NOTICED' + | 'STATIC_GROW_FASTER' + | 'STATIC_6X_SHARE_2' + | 'STATIC_VISIBILITY' + | 'STATIC_REACH_BEYOND' + | 'STATIC_INFLUENCE' + | 'SEND_NO_EMAIL'; + // Generated from: com/linkedin/avro2pegasus/messages/elevate/ElevateDailyEmailMessage.pdsc + + export interface ElevateDailyEmailMessage { + header: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + computedTime: number; + memberUrn: string; + leapContractUrn: string; + leapSeatUrn: string; + curatedEmailType: CuratedEmailType; + curatedEmailParameters: LeapDailyEmailMessageParams[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/elevate/LeapDailyEmailMessageParams.pdsc + + export interface LeapDailyEmailMessageParams { + type: ParamsType; + value: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/elevate/ParamsType.pdsc + + export type ParamsType = 'QUANTITY' | 'MEMBER' | 'COMPANY'; + } + namespace Enterprise { + // Generated from: com/linkedin/avro2pegasus/messages/enterprise/EnterpriseProfileMemberToCompanyMessage.pdsc + + export interface EnterpriseProfileMemberToCompanyMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + isActiveUser: boolean; + memberUrn: string; + companyUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/enterprise/EnterpriseProfileMoveJobEvent.pdsc + + export interface EnterpriseProfileMoveJobEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + createdTime: number; + createdByUrn: string; + sourceProfileUrn: string; + destinationProfileUrn: string; + type: ProfileMoveType; + sourceAppInstanceUrn: string; + destinationAppInstanceUrn: string; + sourceBudgetGroupUrns: string[]; + destinationBudgetGroupUrns: string[]; + undoRequestUrn?: string; + enterpriseProfileMoveJobUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/enterprise/EnterpriseReconciliationEvent.pdsc + + export interface EnterpriseReconciliationEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + enterpriseApplicationUrn: string; + enterpriseAccountUrn: string; + enterpriseApplicationInstanceUrn?: string; + enterpriseEntityUrn: string; + sourceEnterpriseEntityType: EnterpriseReconciliationSourceType; + lastDetectedAt: number; + status: EnterpriseReconciliationStatus; + rootCauses?: string[]; + errorMessages?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/enterprise/EnterpriseReconciliationSourceType.pdsc + + export type EnterpriseReconciliationSourceType = + | 'ACCOUNT' + | 'APPLICATION_INSTANCE' + | 'PROFILE' + | 'LICENSE_ASSIGNMENT' + | 'PARKED_LICENSE_ASSIGNMENT' + | 'ROLE_ASSIGNMENT' + | 'GROUP' + | 'GROUP_ITEM'; + // Generated from: com/linkedin/avro2pegasus/messages/enterprise/EnterpriseReconciliationStatus.pdsc + + export type EnterpriseReconciliationStatus = + | 'ALREADY_SYNCED' + | 'RECONCILIATION_SUCCESS' + | 'RECONCILIATION_ERROR'; + // Generated from: com/linkedin/avro2pegasus/messages/enterprise/ProfileMoveType.pdsc + + export type ProfileMoveType = 'REASSIGN' | 'TRANSFER' | 'UNDO_REASSIGN' | 'UNDO_TRANSFER'; + } + namespace Entitylinking { + // Generated from: com/linkedin/avro2pegasus/messages/entitylinking/ContentType.pdsc + + export type ContentType = 'TextPlain'; + // Generated from: com/linkedin/avro2pegasus/messages/entitylinking/Entity.pdsc + + export interface Entity { + matches: Match[]; + name: string; + wikipediaId: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/entitylinking/EntityLinkingGaapTaskRequest.pdsc + + export interface EntityLinkingGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: EntityLinkingInput; + } + // Generated from: com/linkedin/avro2pegasus/messages/entitylinking/EntityLinkingGaapTaskResponse.pdsc + + export interface EntityLinkingGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: EntityLinkingResults; + } + // Generated from: com/linkedin/avro2pegasus/messages/entitylinking/EntityLinkingInput.pdsc + + export interface EntityLinkingInput { + selection?: string; + offset?: number; + contentType?: ContentType; + body: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/entitylinking/EntityLinkingResults.pdsc + + export interface EntityLinkingResults { + entities: Entity[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/entitylinking/Entry.pdsc + + export interface Entry { + offset: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/entitylinking/Match.pdsc + + export interface Match { + text: string; + entries: Entry[]; + } + } + namespace Epsilon { + // Generated from: com/linkedin/avro2pegasus/messages/epsilon/EpsilonReplayMessage.pdsc + + export interface EpsilonReplayMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + executionUrn: string; + replayBatchUrn: string; + } + } + namespace Feed { + // Generated from: com/linkedin/avro2pegasus/messages/feed/ActionType.pdsc + + export type ActionType = 'VIRAL_ACTION' | 'NON_VIRAL_ACTION'; + // Generated from: com/linkedin/avro2pegasus/messages/feed/FeedActionAndViewerFeaturesMessage.pdsc + + export interface FeedActionAndViewerFeaturesMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + itemUrn: string; + memberFeatureIds?: number[]; + actionType: ActionType; + messageTime?: number; + } + } + namespace Fellowship { + // Generated from: com/linkedin/avro2pegasus/messages/fellowship/FeaturizerNodeCompatibilityMessage.pdsc + + export interface FeaturizerNodeCompatibilityMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + azkabanProjectId: string; + source: string; + sink: string; + sinkInputIndex: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/fellowship/FellowshipModelScoreEvent.pdsc + + export interface FellowshipModelScoreEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + modelTrainingId: string; + contentUrn: string; + instanceExpectedLabel: string; + predictedProbabilityDist: { [id: string]: number }; + } + } + namespace Firedrill { + // Generated from: com/linkedin/avro2pegasus/messages/firedrill/action.pdsc + + export type action = 'BLOCK' | 'UNBLOCK'; + // Generated from: com/linkedin/avro2pegasus/messages/firedrill/FiredrillDFWMessage.pdsc + + export interface FiredrillDFWMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + action: action; + firedrillUrn: string; + targetHosts: string[]; + ttlSeconds: number; + } + } + namespace Fuse { + // Generated from: com/linkedin/avro2pegasus/messages/fuse/FortuneOrgBlockMessage.pdsc + + export interface FortuneOrgBlockMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + blacklistedOrg: string; + orgBlockExemptIps?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/fuse/FuseCacheEntry.pdsc + + export interface FuseCacheEntry { + key: string; + value: string; + expirationTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/fuse/FuseCacheUpdateMessage.pdsc + + export interface FuseCacheUpdateMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + sourceColo: string; + cacheEntries: FuseCacheEntry[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/fuse/UsageControlAggregateRestrictionMessage.pdsc + + export interface UsageControlAggregateRestrictionMessage { + usageControlRestrictionMessage: UsageControlRestrictionMessage; + } + // Generated from: com/linkedin/avro2pegasus/messages/fuse/UsageControlAggregateWhitelistIpMessage.pdsc + + export interface UsageControlAggregateWhitelistIpMessage { + usageControlWhitelistIpMessage: UsageControlWhitelistIpMessage; + } + // Generated from: com/linkedin/avro2pegasus/messages/fuse/UsageControlRestrictionMessage.pdsc + + export interface UsageControlRestrictionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + restrictionTarget: Com.Linkedin.Avro2pegasus.Events.IPAddress | string; + restrictionType: Com.Linkedin.Avro2pegasus.Events.IpRestrictionType; + expirationTime?: number; + creator?: string; + notes?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/fuse/UsageControlWhitelistIpMessage.pdsc + + export interface UsageControlWhitelistIpMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + ip: Com.Linkedin.Avro2pegasus.Events.IPAddress; + cidrNotationIPAddress?: Com.Linkedin.Avro2pegasus.Events.CidrNotationIPAddress; + expirationTime?: number; + creator?: string; + notes?: string; + } + } + namespace Gaap { + // Generated from: com/linkedin/avro2pegasus/messages/gaap/AuthenticationHeader.pdsc + + export interface AuthenticationHeader { + clientCertificate: string; + signature: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/gaap/CredentialData.pdsc + + export interface CredentialData { + username: string; + passwordCredentialStoreEntryUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/gaap/CredentialMetadata.pdsc + + export interface CredentialMetadata { + ownerUrn: string; + handle?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/gaap/InputHeader.pdsc + + export interface InputHeader { + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + scriptUrn: string; + credential?: CredentialMetadata | CredentialData | string; + resultTopicOverride?: string; + authInfoId?: string; + multiProductUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/gaap/OutputHeader.pdsc + + export interface OutputHeader { + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + subHeader: TaskOutputSubHeader | ResultOutputSubHeader; + error?: Com.Linkedin.Avro2pegasus.Common.Gaap.ScriptError; + } + // Generated from: com/linkedin/avro2pegasus/messages/gaap/ResultOutputSubHeader.pdsc + + export interface ResultOutputSubHeader { + state: ResultState; + } + // Generated from: com/linkedin/avro2pegasus/messages/gaap/ResultState.pdsc + + export type ResultState = 'VALID' | 'INVALID'; + // Generated from: com/linkedin/avro2pegasus/messages/gaap/TaskOutputSubHeader.pdsc + + export interface TaskOutputSubHeader { + state: TaskState; + } + // Generated from: com/linkedin/avro2pegasus/messages/gaap/TaskState.pdsc + + export type TaskState = 'COMPLETE' | 'FAILED'; + } + namespace Geo { + // Generated from: com/linkedin/avro2pegasus/messages/geo/Isochrone.pdsc + + export interface Isochrone { + polygons: Polygon[]; + memberUrn?: string; + requestTriggeredTime?: number; + origin?: Com.Linkedin.Avro2pegasus.Events.GeoLocation; + travelTimeSeconds?: number; + coveredGeoUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/geo/IsochroneDeleteRequest.pdsc + + export interface IsochroneDeleteRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + requestTriggeredTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/geo/IsochroneGaapTaskRequest.pdsc + + export interface IsochroneGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: IsochroneRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/geo/IsochroneGaapTaskResponse.pdsc + + export interface IsochroneGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: Isochrone; + taskInput?: IsochroneRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/geo/IsochroneRequest.pdsc + + export interface IsochroneRequest { + startPoint: string; + maximumTravelTimeSeconds: number; + date?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + timeOfDay?: Com.Linkedin.Avro2pegasus.Events.Common.TimeOfDay; + travelMode: TravelMode; + memberUrn?: string; + requestTriggeredTime?: number; + retryCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/geo/Polygon.pdsc + + export interface Polygon { + rings: PolygonRing[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/geo/PolygonRing.pdsc + + export interface PolygonRing { + vertices: Com.Linkedin.Avro2pegasus.Events.GeoLocation[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/geo/TravelMode.pdsc + + export type TravelMode = 'DRIVING' | 'WALKING' | 'TRANSIT'; + } + namespace Gradle { + // Generated from: com/linkedin/avro2pegasus/messages/gradle/GradleBuildFinishedEvent.pdsc + + export interface GradleBuildFinishedEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + buildId: string; + gradleVersion: string; + buildScanPluginVersion: string; + publishedTime: number; + payload: number; + } + } + namespace Graph { + // Generated from: com/linkedin/avro2pegasus/messages/graph/GraphDBEvent.pdsc + + export interface GraphDBEvent { + operation: Operation; + entity: GraphEdgeEntity | GraphNodeEntity; + } + // Generated from: com/linkedin/avro2pegasus/messages/graph/GraphEdgeEntity.pdsc + + export interface GraphEdgeEntity { + from: number; + to: number; + type: string; + attributes: { [id: string]: number }; + } + // Generated from: com/linkedin/avro2pegasus/messages/graph/GraphNodeEntity.pdsc + + export interface GraphNodeEntity { + id: number; + type: string; + attributes: { [id: string]: number }; + } + // Generated from: com/linkedin/avro2pegasus/messages/graph/Operation.pdsc + + export type Operation = 'INSERT' | 'UPDATE' | 'DELETE'; + } + namespace Groups { + // Generated from: com/linkedin/avro2pegasus/messages/groups/BulkGroupMemberActionMessage.pdsc + + export interface BulkGroupMemberActionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + actorUrn: string; + memberListMediaId: string; + actionType: Com.Linkedin.Avro2pegasus.Messages.Common.Groups.GroupMemberActionType; + groupUrn: string; + retryCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/GroupAggregatedMembershipMessage.pdsc + + export interface GroupAggregatedMembershipMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + groupUrn: string; + stateChangeType: Com.Linkedin.Avro2pegasus.Events.Groups.GroupMemberStateEnum; + memberUrns: string[]; + startTime: number; + endTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/GroupCleanupRequestEvent.pdsc + + export interface GroupCleanupRequestEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupCleanupType: GroupCleanupRequestEventType; + groupUrn?: string; + memberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/GroupCleanupRequestEventType.pdsc + + export type GroupCleanupRequestEventType = 'DELETE_DUPLICATE_ANET_CONTACTS' | 'DELETE_GROUP'; + // Generated from: com/linkedin/avro2pegasus/messages/groups/GroupDefinitionDeletionMessage.pdsc + + export interface GroupDefinitionDeletionMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/GroupMediaDeletionMessage.pdsc + + export interface GroupMediaDeletionMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupUrn: string; + assetUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/GroupMembershipsDeletionMessage.pdsc + + export interface GroupMembershipsDeletionMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupUrn: string; + identityUrns: string[]; + } + namespace Content { + // Generated from: com/linkedin/avro2pegasus/messages/groups/content/GroupAnnouncementEvent.pdsc + + export interface GroupAnnouncementEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupUrn: string; + postUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/content/GroupComment.pdsc + + export interface GroupComment { + groupUrn?: string; + postUrn?: string; + commentUrn?: string; + createdAt: number; + authorUrn: string; + message: string; + postTitle?: string; + postDetail?: string; + locale?: string; + isWatchingThread?: boolean; + twitterId?: string; + postFullURL?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/content/GroupPost.pdsc + + export interface GroupPost { + groupUrn?: string; + postUrn?: string; + createdAt: number; + authorUrn: string; + title: string; + detail?: string; + sharedArticleTitle?: string; + sharedArticleDetail?: string; + sharedArticleUrl?: string; + sharedArticleImage?: string; + sharedArticleId?: string; + appsAttr?: string; + locale?: string; + isWatchingThread?: boolean; + isManagersChoice?: boolean; + isAnnouncement?: boolean; + postVisibility?: PostVisibility; + twitterId?: string; + postFullURL?: string; + spamType?: GroupSpamType; + displayCategory?: GroupPostDisplayCategory; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/content/GroupPostDisplayCategory.pdsc + + export type GroupPostDisplayCategory = 'DISCUSSION' | 'JOB' | 'PROMOTION' | 'PREMIUM_JOB'; + // Generated from: com/linkedin/avro2pegasus/messages/groups/content/GroupPostType.pdsc + + export type GroupPostType = 'QUESTION' | 'SHARED_ARTICLE'; + // Generated from: com/linkedin/avro2pegasus/messages/groups/content/GroupPostUpdatedEvent.pdsc + + export interface GroupPostUpdatedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupUrn: string; + postUrn: string; + postType?: GroupPostType; + displayCategory?: GroupPostDisplayCategory; + action: PostUpdatedAction; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/content/GroupSpamType.pdsc + + export type GroupSpamType = + | 'JOB' + | 'EVENT' + | 'UCV_SPAMMER' + | 'PROMOTION' + | 'OTHER_SPAM' + | 'BADURL_MALWARE' + | 'BADURL_PHISHING' + | 'BADURL_SPAM' + | 'NEW_MEMBER_LIX_BLOCKED' + | 'BULK_SPAM' + | 'PROFANITY' + | 'PORN' + | 'UNKNOWN' + | 'CLEAN'; + // Generated from: com/linkedin/avro2pegasus/messages/groups/content/PostUpdatedAction.pdsc + + export type PostUpdatedAction = 'DELETED' | 'MOVED_TO_JOBS'; + // Generated from: com/linkedin/avro2pegasus/messages/groups/content/PostVisibility.pdsc + + export type PostVisibility = 'MEMBERS_ONLY' | 'PUBLIC'; + } + namespace Moderation { + // Generated from: com/linkedin/avro2pegasus/messages/groups/moderation/GroupItemFlaggedEvent.pdsc + + export interface GroupItemFlaggedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupUrn: string; + postUrn: string; + itemUrn: string; + itemType: GroupItemType; + itemContent?: + | Com.Linkedin.Avro2pegasus.Messages.Groups.Content.GroupPost + | Com.Linkedin.Avro2pegasus.Messages.Groups.Content.GroupComment; + flagReason: ItemFlagReason; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/moderation/GroupItemsModeratedEvent.pdsc + + export interface GroupItemsModeratedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupUrn: string; + itemUrns: string[]; + memberUrns?: string[]; + action: ModerationAction; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/moderation/GroupItemType.pdsc + + export type GroupItemType = 'POST' | 'COMMENT'; + // Generated from: com/linkedin/avro2pegasus/messages/groups/moderation/GroupSpammerDeletedEvent.pdsc + + export interface GroupSpammerDeletedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + groupUrn: string; + spammerMemberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/groups/moderation/ItemFlagReason.pdsc + + export type ItemFlagReason = 'INAPPROPRIATE' | 'JOB' | 'PROMOTION'; + // Generated from: com/linkedin/avro2pegasus/messages/groups/moderation/ModerationAction.pdsc + + export type ModerationAction = + | 'APPROVE_ITEM' + | 'REJECT_ITEM' + | 'MOVE_ITEM_TO_JOBS' + | 'MOVE_ITEM_TO_PROMOS' + | 'ITEM_DELETED' + | 'BLOCK_AND_DELETE_MEMBER' + | 'WHITELIST_MEMBER_AND_APPROVE_ITEM' + | 'GRAYLIST_MEMBER_AND_IGNORE_ITEM' + | 'MOVE_ITEM_TO_DISCUSSIONS'; + } + } + namespace Handle { + // Generated from: com/linkedin/avro2pegasus/messages/handle/HandleState.pdsc + + export type HandleState = 'CONFIRMED' | 'CLAIMED' | 'INFERRED' | 'RECOVERY' | 'NONE' | 'TAKENOVER'; + // Generated from: com/linkedin/avro2pegasus/messages/handle/HandleStateChangedMessage.pdsc + + export interface HandleStateChangedMessage { + memberUrn: string; + handleUrn: string; + previousState: HandleState; + currentState: HandleState; + isPrimary: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/handle/ValidatePhoneNumberMessage.pdsc + + export interface ValidatePhoneNumberMessage { + phoneAccountUrn: string; + encryptedCanonicalPhoneNumber: string; + } + } + namespace Helpcenter { + // Generated from: com/linkedin/avro2pegasus/messages/helpcenter/HelpCenterArticleChangeMessage.pdsc + + export interface HelpCenterArticleChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + id: number; + langCode: number; + products: number[]; + title: string; + body: string; + rntKeywords: string; + helpfulness: boolean; + } + } + namespace Hermes { + // Generated from: com/linkedin/avro2pegasus/messages/hermes/FixitMessageData.pdsc + + export interface FixitMessageData { + reportedAt: number; + officeCode: string; + sublocationUrn: string; + equipmentTypeUrn: string; + equipmentUrn: string; + issueUrn?: string; + officeDescription: string; + sublocationDescription: string; + equipmentTypeDescription: string; + equipmentDescription: string; + issueDescription: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/hermes/HermesMessage.pdsc + + export interface HermesMessage { + header: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + createdAt: number; + messageData: FixitMessageData; + } + } + namespace Hire { + // Generated from: com/linkedin/avro2pegasus/messages/hire/HireEmployeeThirdPartyAccountSyncRequest.pdsc + + export interface HireEmployeeThirdPartyAccountSyncRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hiringContextUrn: string; + hireEmployeeProfileUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/hire/HiringManagerContactApplicantsRequest.pdsc + + export interface HiringManagerContactApplicantsRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + candidateUrns?: string[]; + hiringProjectUrn: string; + hiringContextUrn: string; + seatUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/hire/HiringManagerContactApplicantsRequestMessage.pdsc + + export interface HiringManagerContactApplicantsRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + candidateMemberUrns: string[]; + hiringProjectUrn: string; + hiringContextUrn: string; + seatUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/hire/HiringManagerReviewApplicantsRequest.pdsc + + export interface HiringManagerReviewApplicantsRequest { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hiringProjectUrn: string[]; + hiringContextUrn: string; + seatUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/hire/HiringManagerSurveyRequest.pdsc + + export interface HiringManagerSurveyRequest { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + hiringContextUrn: string; + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/hire/IntelligentMatchesPushCandidatesEmailEvent.pdsc + + export interface IntelligentMatchesPushCandidatesEmailEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hiringProjectUrn: string; + hiringContextUrn: string; + recipientSeatUrn: string; + candidateUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/hire/IntelligentMatchesTriggerPushCandidatesComputationMessage.pdsc + + export interface IntelligentMatchesTriggerPushCandidatesComputationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hiringProjectUrn: string; + hiringContextUrn: string; + recipientSeatUrn: string; + sourcingChannelUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/hire/IntelligentMatchesTriggerPushCandidatesMessage.pdsc + + export interface IntelligentMatchesTriggerPushCandidatesMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hiringProjectUrn: string; + hiringContextUrn: string; + recipientMemberUrn: string; + sourcingChannelUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/hire/InterviewModuleSendCalendarEvent.pdsc + + export interface InterviewModuleSendCalendarEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hiringContextUrn: string; + interviewUrn: string; + interviewModuleUrn: string; + calendarEventId: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/hire/MemberActivityPushMessage.pdsc + + export interface MemberActivityPushMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + totalVisitDays?: number; + daysDormantSinceLastVisit?: number; + daysDormantBeforeLastVisit?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/hire/MessageType.pdsc + + export type MessageType = 'MESSAGE_READ' | 'MESSAGE_READ_LINK_NOT_CLICKED' | 'LINK_CLICKED' | 'JOB_APPLIED'; + // Generated from: com/linkedin/avro2pegasus/messages/hire/OutreachFollowUpSchedulingMessage.pdsc + + export interface OutreachFollowUpSchedulingMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hiringContextUrn: string; + outreachMessageUrn: string; + messageType: MessageType; + messageTemplateUrn: string; + messageScheduledTime: number; + outreachCampaignUrn?: string; + } + } + namespace Housesecurity { + // Generated from: com/linkedin/avro2pegasus/messages/housesecurity/SyslogForwardedLogMessage.pdsc + + export interface SyslogForwardedLogMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + logForwardingHost: string; + messageTypeTags: string[]; + message: string; + } + } + namespace Hubble { + // Generated from: com/linkedin/avro2pegasus/messages/hubble/AccountTeamChangeMessage.pdsc + + export interface AccountTeamChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + id?: string; + isOpportunityTransfer: boolean; + isTaskTransfer: boolean; + addEmployeeRecords: AddEmployeeRecord[]; + removeEmployeeRecords: RemoveEmployeeRecord[]; + replaceEmployeeRecords: ReplaceEmployeeRecord[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/hubble/AddEmployeeRecord.pdsc + + export interface AddEmployeeRecord { + changeId: number; + customerUrn: string; + newEmployeeId: string; + newCorpUserUrn: string; + newTeamRole: string; + businessUnit: BusinessUnit; + } + // Generated from: com/linkedin/avro2pegasus/messages/hubble/BusinessUnit.pdsc + + export type BusinessUnit = 'LTS' | 'LLS' | 'LSS' | 'LMS' | 'CEG' | 'EL8' | 'LDC' | 'LV8' | 'OTHER' | 'TAL'; + // Generated from: com/linkedin/avro2pegasus/messages/hubble/RemoveEmployeeRecord.pdsc + + export interface RemoveEmployeeRecord { + changeId: number; + customerUrn: string; + currentEmployeeId: string; + currentCorpUserUrn: string; + currentTeamRole: string; + businessUnit: BusinessUnit; + } + // Generated from: com/linkedin/avro2pegasus/messages/hubble/ReplaceEmployeeRecord.pdsc + + export interface ReplaceEmployeeRecord { + changeId: number; + customerUrn: string; + currentEmployeeId: string; + currentCorpUserUrn: string; + currentTeamRole: string; + newEmployeeId: string; + newCorpUserUrn: string; + newTeamRole: string; + businessUnit: BusinessUnit; + } + // Generated from: com/linkedin/avro2pegasus/messages/hubble/RepRegionChangeMessage.pdsc + + export interface RepRegionChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + employeeId: string; + corpUserUrn: string; + currentRepRegion?: RepRegionRecord; + newRepRegion: RepRegionRecord; + } + // Generated from: com/linkedin/avro2pegasus/messages/hubble/RepRegionRecord.pdsc + + export interface RepRegionRecord { + legacyRepRegion?: string; + } + } + namespace Identity { + // Generated from: com/linkedin/avro2pegasus/messages/identity/InferredCertificationMessage.pdsc + + export interface InferredCertificationMessage { + certificationName: string; + authorityUrn: string; + memberUrn: string; + certificationUrl?: string; + licenseNumber?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/identity/ProfileOsmosisMessage.pdsc + + export interface ProfileOsmosisMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + oldProfile: string; + profilePatch: string; + shouldPublish: boolean; + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/identity/ProfileUpdateMessage.pdsc + + export interface ProfileUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + oldProfile: string; + profilePatch: string; + shouldPublish: boolean; + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/identity/TreasuryMigrationSyncMessage.pdsc + + export interface TreasuryMigrationSyncMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + } + } + namespace Impersonation { + // Generated from: com/linkedin/avro2pegasus/messages/impersonation/CelebrityImpersonationMessage.pdsc + + export interface CelebrityImpersonationMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + vectorUrn: string; + } + } + namespace Incidentdashboard { + // Generated from: com/linkedin/avro2pegasus/messages/incidentdashboard/IncidentAutoRefreshEvent.pdsc + + export interface IncidentAutoRefreshEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + incidentId: number; + modificationType: Com.Linkedin.Avro2pegasus.Events.Common.Pie.IncidentModificationType; + triggerSource: Com.Linkedin.Avro2pegasus.Events.Common.Pie.IncidentUpdateSource; + } + } + namespace Invitations { + // Generated from: com/linkedin/avro2pegasus/messages/invitations/EncryptedCustomMessage.pdsc + + export interface EncryptedCustomMessage { + encryptedBody: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/invitations/GenericInvitationToDeliverMessage.pdsc + + export interface GenericInvitationToDeliverMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inviterUrn: string; + inviteeUrn: string; + invitationType: GenericInvitationType; + inviterActorUrn?: string; + invitationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/messages/invitations/GenericInvitationType.pdsc + + export type GenericInvitationType = 'CONNECTION' | 'EVENT' | 'ORGANIZATION' | 'CONTENT_SERIES'; + // Generated from: com/linkedin/avro2pegasus/messages/invitations/InvitationBatchCreateEvent.pdsc + + export interface InvitationBatchCreateEvent { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inviterUrn: string; + inviteeUrns: string[]; + createdAt: number; + invitationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + inviterActorMemberUrn?: string; + invitationType: GenericInvitationType; + } + // Generated from: com/linkedin/avro2pegasus/messages/invitations/InvitationChangeByEdgeCreationRequestMessage.pdsc + + export interface InvitationChangeByEdgeCreationRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + firstUrn: string; + secondUrn: string; + invitationTypes: GenericInvitationType[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/invitations/InvitationCreateEvent.pdsc + + export interface InvitationCreateEvent { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inviterUrn: string; + inviteeUrn: string; + createdAt: number; + invitationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + inviterActorMemberUrn?: string; + invitationType?: GenericInvitationType; + } + // Generated from: com/linkedin/avro2pegasus/messages/invitations/InvitationCreateReplayEvent.pdsc + + export interface InvitationCreateReplayEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + inviterUrn: string; + inviteeUrn: string; + invitationUrn?: string; + messageOrTemplateId?: EncryptedCustomMessage | InvitationTemplateId; + state: InvitationState; + createdTime?: number; + closedTime?: number; + changeTime?: number; + sentTime?: number; + validationToken?: string; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + invitationUseCase?: UseCase; + source?: InvitationSourceType; + inviterActorMemberUrn?: string; + invitationType?: GenericInvitationType; + } + // Generated from: com/linkedin/avro2pegasus/messages/invitations/InvitationSourceType.pdsc + + export type InvitationSourceType = + | 'ABI' + | 'PYMK' + | 'PROFILE' + | 'OTHER' + | 'MICROSOFT_PEOPLE_CARD' + | 'PROXIMITY' + | 'COLLEAGUES' + | 'SALES_NAVIGATOR' + | 'BUSINESS_CARD'; + // Generated from: com/linkedin/avro2pegasus/messages/invitations/InvitationState.pdsc + + export type InvitationState = + | 'UNSENT' + | 'ABORTED' + | 'PENDING' + | 'ACCEPTED' + | 'REJECTED' + | 'IGNORED' + | 'WITHDRAWN' + | 'EXPIRED' + | 'BOUNCED' + | 'BLOCKED'; + // Generated from: com/linkedin/avro2pegasus/messages/invitations/InvitationTemplateId.pdsc + + export interface InvitationTemplateId { + id: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/invitations/InvitationToDeliverMessage.pdsc + + export interface InvitationToDeliverMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + invitationUrn: string; + inviterMemberUrn: string; + inviteeMemberUrn: string; + inviteeHandleUrn?: string; + invitationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/messages/invitations/UseCase.pdsc + + export type UseCase = 'CLIENT_TO_SEND'; + } + namespace Jobs { + // Generated from: com/linkedin/avro2pegasus/messages/jobs/AlertFrequency.pdsc + + export type AlertFrequency = 'DAILY' | 'WEEKLY' | 'MONTHLY'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ApplicantProfileViewedByTalentProfessional.pdsc + + export interface ApplicantProfileViewedByTalentProfessional { + jobApplicationUrns: string[]; + applicantProfileViewScenario: ApplicantProfileViewScenario; + viewerMemberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ApplicantProfileViewScenario.pdsc + + export type ApplicantProfileViewScenario = + | 'APPLICATION_VIEWED_IN_A_RECRUITER_TOOL' + | 'APPLICATION_VIEWED_BY_EMAIL_CLICK' + | 'PROFILE_VIEWED_BY_A_TALENT_PROFESSIONAL_AS_A_REGULAR_USER'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/BidTypeEnum.pdsc + + export type BidTypeEnum = 'COST_PER_CLICK' | 'COST_PER_APPLY'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/BoostYourApplication.pdsc + + export interface BoostYourApplication { + jobPostingUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/BulkBackfillJobPostingBingGeoMessage.pdsc + + export interface BulkBackfillJobPostingBingGeoMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPostingUrns: string[]; + contractUrn?: string; + processingFabric: Com.Linkedin.Avro2pegasus.Messages.Fabric; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/BulkBackfillJobPostingEntitlementGrantMessage.pdsc + + export interface BulkBackfillJobPostingEntitlementGrantMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPostingUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/CampaignTypeInformation.pdsc + + export interface CampaignTypeInformation { + jobsYouMayBeInterestedIn?: JobsYouMayBeInterestedIn; + expiringSavedJob?: ExpiringSavedJob; + viewedJobReminder?: ViewedJobReminder; + jobApplicationViewedByPosterMessage?: JobApplicationViewedByPosterMessage; + applicantProfileViewedByTalentProfessional?: ApplicantProfileViewedByTalentProfessional; + newJobSeeker?: NewJobSeeker; + boostYourApplication?: BoostYourApplication; + openCandidateInMailsIgnored?: OpenCandidateInMailsIgnored; + openCandidateInteractionsSummary?: OpenCandidateInteractionsSummary; + openCandidateNewPosition?: OpenCandidateNewPosition; + dreamCompanyJobAlert?: DreamCompanyJobAlert; + jymbiiBackfill?: JymbiiBackfill; + savedSearchJobAlert?: SavedSearchJobAlert; + referralsEmployeeReminder?: ReferralsEmployeeReminder; + jobClosedAlert?: JobClosedAlert; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/CareersCommunicationRequestMessage.pdsc + + export interface CareersCommunicationRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + recipient: string; + requests: RequestItem[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/Channel.pdsc + + export type Channel = 'EMAIL' | 'PUSH' | 'ONSITE_NOTIFICATIONS'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/CompanyBasis.pdsc + + export interface CompanyBasis { + companyUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/CompanySize.pdsc + + export type CompanySize = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/CountedIdInt.pdsc + + export interface CountedIdInt { + id: number; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/CountedNGram.pdsc + + export interface CountedNGram { + nGram: string; + count: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/DataPoint.pdsc + + export interface DataPoint { + timeRange: Com.Linkedin.Avro2pegasus.Events.Common.TimeRange; + value: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/DeleteClosedBasicJobPostingMessage.pdsc + + export interface DeleteClosedBasicJobPostingMessage { + jobPostingUrns: string[]; + processingColo: ProcessingColoType; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/DreamCompanyJobAlert.pdsc + + export interface DreamCompanyJobAlert { + locations: Com.Linkedin.Avro2pegasus.Events.Common.Location[]; + titleUrns: string[]; + companyUrns: string[]; + alertFrequency: AlertFrequency; + geoLocationUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/EmployeeSchedule.pdsc + + export type EmployeeSchedule = 'FULL_TIME' | 'PART_TIME'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/EmployeeType.pdsc + + export type EmployeeType = 'EMPLOYEE' | 'CONTRACT' | 'TEMPORARY' | 'INTERNSHIP' | 'VOLUNTEER'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/EmploymentStatus.pdsc + + export type EmploymentStatus = + | 'FULL_TIME' + | 'PART_TIME' + | 'CONTRACT' + | 'TEMPORARY' + | 'TEST' + | 'OTHER' + | 'VOLUNTEER' + | 'INTERNSHIP'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ExperienceLevel.pdsc + + export type ExperienceLevel = + | 'NOT_APPLICABLE' + | 'INTERNSHIP' + | 'ENTRY_LEVEL' + | 'ASSOCIATE' + | 'MID_SENIOR_LEVEL' + | 'DIRECTOR' + | 'EXECUTIVE'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ExpiringSavedJob.pdsc + + export interface ExpiringSavedJob { + jobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/FieldProcessorPipelineType.pdsc + + export type FieldProcessorPipelineType = 'ATS_MIDDLEWARE' | 'DEFAULT' | 'FORAGER_LEGACY'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ForecastMetricTypeEnum.pdsc + + export type ForecastMetricTypeEnum = 'IMPRESSION' | 'VIEW' | 'APPLY' | 'UNIQUE_APPLY'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/IndicationReason.pdsc + + export type IndicationReason = 'EXPIRED' | 'UNRESPONSIVE' | 'LOW_PROFILE_QUALITY'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/IndicationType.pdsc + + export type IndicationType = + | 'ACTIVATE' + | 'REACTIVATE' + | 'DEACTIVATE' + | 'OFFLINE_DEACTIVATE' + | 'OFFLINE_ACTIVATE'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobActionChannel.pdsc + + export type JobActionChannel = + | 'JOB_DETAILS_PAGE' + | 'JYMBII' + | 'BROWSER_MAP' + | 'JOB_SEARCH' + | 'JOB_DISTRIBUTION_OFFLINE'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobActionMessage.pdsc + + export interface JobActionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + pageInstance?: Com.Linkedin.Avro2pegasus.Events.Common.PageInstance; + actionTime: number; + jobServedTime: number; + jobPostingUrn: string; + memberUrn?: string; + actionType: MemberActionType; + isSponsored: boolean; + price: string; + priceInUSD: string; + currencyCode: string; + cost: string; + costInUSD: string; + channel?: JobActionChannel; + appName: string; + browserId?: string; + referenceId?: string; + isFraud: boolean; + isDuplicate: boolean; + isChargeable?: boolean; + bidAdjustmentMultiplier?: number; + mooRequestId?: string; + jobPricingParametersVersionNumber?: versionNumberEnum; + originalPrice?: string; + originalPriceInUSD?: string; + jobBudgetGroup?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobBudgetGroup; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobActivityType.pdsc + + export type JobActivityType = 'VIEW' | 'APPLICATION'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobAlertsSmsMessage.pdsc + + export interface JobAlertsSmsMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobAnalyticsEvent.pdsc + + export interface JobAnalyticsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + daysSinceEpoch: number; + hoursSinceEpoch: number; + memberId: number; + jobPostingId: number; + accountId: number; + contractId: number; + actionType: MemberActionType; + seniorityId: number; + connectionsAtCompany: number; + skillIds?: number[]; + degreeId: number; + fieldOfStudyId: number; + companyId: number; + isOffsiteApplication: boolean; + countryCode: string; + regionCode: string; + memberGeoId?: number; + isSponsored: boolean; + jobPostingCountryCode?: string; + jobPostingRegionCode?: number; + jobPostingGeoId?: number; + jobPosterId?: number; + jobFunctions?: JobFunction[]; + memberFunctions?: JobFunction[]; + memberIndustries?: number[]; + memberTitles?: number[]; + memberSchools?: number[]; + sourcingChannelId?: number; + jobReportingListingType?: JobReportingListingType; + gender?: Com.Linkedin.Avro2pegasus.Messages.Standardization.InferredGender; + jobCompanyIndustryId?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobAnalyticsMetricsMessage.pdsc + + export interface JobAnalyticsMetricsMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + sourceEventTimestamp: number; + jobSeekerId?: number; + browserId?: string; + jobPostingId: number; + actionType: MemberActionType; + capAccountId?: number; + contractId?: number; + enterpriseAccountId?: number; + enterpriseApplicationInstanceId?: number; + isOffsiteApplicationJob?: boolean; + jobPosterId?: number; + jobPostingCompanyId?: number; + jobPostingCompanyIndustryId?: number; + jobPostingFunctions?: JobFunction[]; + jobPostingGeoId?: number; + jobPostingGrantId?: number; + jobPostingSourcingChannelId?: number; + jobSeekerGender?: Com.Linkedin.Avro2pegasus.Messages.Standardization.InferredGender; + jobSeekerGeoId?: number; + jobSeekerCompanyId?: number; + jobSeekerIndustryId?: number; + jobSeekerSeniorityId?: number; + jobSeekerTitleId?: number; + jobSeekerFunctionNames?: JobFunction[]; + jobSeekerDegreeId?: number; + jobSeekerSchoolId?: number; + jobSeekerFieldOfStudyId?: number; + jobSeekerSkillIds?: number[]; + connectionCountAtCompany?: number; + memberOnsiteViewCount: number; + memberOffsiteViewCount: number; + guestOnsiteViewCount: number; + guestOffsiteViewCount: number; + uniqueMemberJobViewCount: number; + uniqueGuestJobViewCount: number; + memberOnsiteApplyClickCount: number; + memberOffsiteApplyClickCount: number; + guestOnsiteApplyClickCount: number; + guestOffsiteApplyClickCount: number; + uniqueMemberJobApplyClickCount: number; + uniqueGuestJobApplyClickCount: number; + memberJobApplicationCount: number; + guestJobApplicationCount?: number; + hiringProjectId?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobApplicantProfileViewedMessage.pdsc + + export interface JobApplicantProfileViewedMessage { + jobApplicantUrn: string; + companyUrn: string; + jobPostingUrns: string[]; + profileViewTimestamp: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobApplicationFailureMessage.pdsc + + export interface JobApplicationFailureMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobApplicantUrn: string; + jobPostingUrn: string; + failureType: JobApplicationFailureType; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobApplicationFailureType.pdsc + + export type JobApplicationFailureType = + | 'RESUME_FILE_SIZE_TOO_LARGE' + | 'INVALID_RESUME_FILE_TYPE' + | 'MISSING_PHONE_NUMBER' + | 'EXPIRED_JOB_POSTING' + | 'UNKNOWN_FAILURE'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobApplicationQuestionDetails.pdsc + + export interface JobApplicationQuestionDetails { + normalizedQuestionSets: NormalizedQuestionSet[]; + isNormalizedQuestionSetsEnabled: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobApplicationViewedByPosterMessage.pdsc + + export interface JobApplicationViewedByPosterMessage { + jobApplicationUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobApplyStarterEmailMessage.pdsc + + export interface JobApplyStarterEmailMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPosterUrn: string; + topJobPostingUrn: string; + topJobApplicantCount: number; + topJobTopApplicants: string[]; + otherTopJobs: JobPostingInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobClosedAlert.pdsc + + export interface JobClosedAlert { + jobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobCreationEntityType.pdsc + + export type JobCreationEntityType = 'REFERRAL_JOB'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobEntityCreationRequestMessage.pdsc + + export interface JobEntityCreationRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityType: JobCreationEntityType; + simpleJobPostingTaskUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobForecast.pdsc + + export interface JobForecast { + dataVersion: number; + TargetingFacets?: JobsTargetingFacets; + timeSeries: DataPoint[]; + forecastMetricType: ForecastMetricTypeEnum; + jobPostingInfo?: JobPostingInfoForForecasting; + startTime?: number; + endTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobForecastMessage.pdsc + + export interface JobForecastMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobForecasts: JobForecast[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobFunction.pdsc + + export type JobFunction = + | 'ACCT' + | 'ADM' + | 'ADVR' + | 'ANLS' + | 'ART' + | 'BD' + | 'CNSL' + | 'CUST' + | 'DIST' + | 'DSGN' + | 'EDU' + | 'ENG' + | 'FIN' + | 'GENB' + | 'HR' + | 'IT' + | 'LGL' + | 'MGMT' + | 'MNFC' + | 'MRKT' + | 'OTHR' + | 'PR' + | 'PRCH' + | 'PRDM' + | 'PRJM' + | 'PROD' + | 'QA' + | 'RSCH' + | 'SALE' + | 'SCI' + | 'STRA' + | 'SUPL' + | 'TRNG' + | 'WRT' + | 'HCPR'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionDerivedFields.pdsc + + export interface JobIngestionDerivedFields { + companyUrn?: string; + formattedDescription: string; + employmentStatus?: EmploymentStatus; + detectedLanguage?: string; + experienceLevel: ExperienceLevel; + functions: JobFunction[]; + industries: number[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionExtractedData.pdsc + + export interface JobIngestionExtractedData { + data: string; + isAutoExtracted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionJobPostingCloseMessage.pdsc + + export interface JobIngestionJobPostingCloseMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + rawJobUrn: string; + jobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionMessageType.pdsc + + export type JobIngestionMessageType = 'START_MESSAGE' | 'END_MESSAGE' | 'JOB_MESSAGE' | 'RAW_MESSAGE'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionNormalizedQuestionSetsMessage.pdsc + + export interface JobIngestionNormalizedQuestionSetsMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + rawJobId: number; + jobPostingId: number; + normalizedQuestionSets: NormalizedQuestionSet[]; + isNormalizedQuestionSetsEnabled: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionOutputMessage.pdsc + + export interface JobIngestionOutputMessage { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rawJobMessage: JobIngestionRawMessage; + derivedJobFields: JobIngestionDerivedFields; + jobQualityScore?: number; + spamClassification?: Com.Linkedin.Avro2pegasus.Events.Contentspam.ContentSpamOutcome; + shouldUpdateJobApplicationQuestions?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionRawMessage.pdsc + + export interface JobIngestionRawMessage { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + partnerJobCode: string; + partnerUrn: string; + jobPostingUrn?: string; + companyJobCode: string; + title: string; + description: string; + companyName: string; + companyUrn?: string; + countryCode: string; + postalCode?: string; + city?: string; + state?: string; + language?: string; + sourceUrl?: string; + responsibilities?: string; + baseSalary?: string; + companyApplyUrl?: string; + benefits?: string; + specialCommitments?: string; + jobCategory?: string; + teamName?: string; + duration?: string; + workhours?: string; + skills?: string; + industry?: string; + requirements?: string; + companyDescription?: string; + education?: string; + sourceDomain?: string; + dedupePriority?: number; + experimental: boolean; + locationDescription?: string; + trackingPixelUrl?: string; + listTime?: number; + experienceLevel?: ExperienceLevel; + jobTag?: JobPostingInternalTag; + expireTimeSeconds?: number; + simpleJobPostingTaskUrn?: string; + employmentStatus?: EmploymentStatus; + industryCodes?: number[]; + geoLocation?: Com.Linkedin.Avro2pegasus.Events.GeoLocation; + sourceUrn?: string; + limitVisibilityOrganizationUrns?: string[]; + functions?: JobFunction[]; + showPoster: boolean; + contractUrn?: string; + posterUrn?: string; + jobPostingOperationType?: JobPostingOperationType; + isPublishable: boolean; + isClosed: boolean; + listingType: ListingType; + employeeSchedules?: EmployeeSchedule[]; + employeeTypes?: EmployeeType[]; + jobApplicationQuestionDetails?: JobApplicationQuestionDetails; + geoUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionSourceEndMessage.pdsc + + export interface JobIngestionSourceEndMessage { + crawlerId: string; + endTime: number; + success: boolean; + failureReason?: MiningTaskFailureReason; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionSourceJobMessageV2.pdsc + + export interface JobIngestionSourceJobMessageV2 { + jobSourceUrn: string; + jobPostingPartnerUrn: string; + partnerJobCode?: string; + jobMiningTaskUrn?: string; + referenceNumber?: string; + title?: string; + description?: string; + url?: string; + applyUrl?: string; + companyName?: string; + companyUrn?: string; + companyDescription?: string; + postalCode?: string; + city?: string; + state?: string; + country?: string; + location?: string; + postedDate?: string; + expirationDate?: string; + education?: string; + responsibilities?: string; + baseSalary?: string; + qualifications?: string; + benefits?: string; + specialCommitments?: string; + category?: string; + employmentType?: string; + organizationName?: string; + duration?: string; + workHours?: string; + skills?: string; + requirements?: string; + language?: string; + isPublishable: boolean; + isClosed: boolean; + trackingPixelUrl?: string; + logoUrls?: JobIngestionExtractedData[]; + companyWebsites?: JobIngestionExtractedData[]; + emails?: JobIngestionExtractedData[]; + industries?: string[]; + industryUrns?: string[]; + functions?: string[]; + functionUrns?: string[]; + functionCodes?: JobFunction[]; + experienceLevel?: string; + experienceLevelCode?: ExperienceLevel; + simpleJobPostingTaskUrn?: string; + employeeSchedules?: EmployeeSchedule[]; + employeeTypes?: EmployeeType[]; + originalJobCode?: string; + normalizedQuestionSets?: NormalizedQuestionSet[]; + isStaffingRole?: boolean; + exactAddress?: string; + supportedBenefits?: Com.Linkedin.Avro2pegasus.Messages.Common.JobBenefit[]; + isRemote?: boolean; + certifications?: string[]; + listedSkills?: string[]; + yearsOfExperience?: string; + isNormalizedQuestionSetsEnabled?: boolean; + jobCompensation?: Com.Linkedin.Avro2pegasus.Messages.Jobs.Common.JobCompensation[]; + applicationEmail?: string; + listedBenefits?: string[]; + inferableFields?: Com.Linkedin.Avro2pegasus.Messages.Jobs.Common.InferableField[]; + yearsOfExperienceMax?: string; + listedDegrees?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionSourceMessageV2.pdsc + + export interface JobIngestionSourceMessageV2 { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + messageType: JobIngestionMessageType; + startMessage?: JobIngestionSourceStartMessage; + endMessage?: JobIngestionSourceEndMessage; + jobMessage?: JobIngestionSourceJobMessageV2; + rawMessage?: JobIngestionRawMessage; + spiderUrn?: string; + sourceUrn?: string; + miningTaskUrn?: string; + crawlerId?: string; + fieldProcessorPipeline: FieldProcessorPipelineType; + destinationFabric?: Com.Linkedin.Avro2pegasus.Messages.Fabric; + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobIngestionSourceStartMessage.pdsc + + export interface JobIngestionSourceStartMessage { + crawlerId: string; + siteHash?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobListingPostProcessingCompleteMessage.pdsc + + export interface JobListingPostProcessingCompleteMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPacingModelV2Params.pdsc + + export interface JobPacingModelV2Params { + maxPacingScore: number; + fastFinishCutoff: number; + initialPacingScore: number; + predictedBudgetUtilizationRate: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPosterReactivationMessage.pdsc + + export interface JobPosterReactivationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPosterUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingAbandonerMessage.pdsc + + export interface JobPostingAbandonerMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPostingUrn?: string; + jobPosterUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingChangeMessage.pdsc + + export interface JobPostingChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + changeType: Com.Linkedin.Avro2pegasus.Events.ChangeType; + jobId: number; + isActive: boolean; + isDeleted: boolean; + isSponsored: boolean; + postingType: JobPostingType; + jobData: JobStandardizedData; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingCreationFeedbackMessage.pdsc + + export interface JobPostingCreationFeedbackMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + simpleJobPostingTaskUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingCurveKey.pdsc + + export interface JobPostingCurveKey { + country: string; + state: string; + dayOfWeek: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingDeduplicationHashReadyMessage.pdsc + + export interface JobPostingDeduplicationHashReadyMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPostingUrn: string; + jobPostingDuplicationType: JobPostingDuplicationType; + isHashReady?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingDuplicationType.pdsc + + export type JobPostingDuplicationType = 'TITLE_COMPANY_LOCATION_DUPLICATION'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingInfo.pdsc + + export interface JobPostingInfo { + jobPostingUrn: string; + applicantsCount: number; + applicantsCountRank: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingInfoForForecasting.pdsc + + export interface JobPostingInfoForForecasting { + companyUrn: string; + countryCode: string; + experienceLevel?: ExperienceLevel; + creatorUrn?: string; + title: string; + titleUrn?: string; + functions?: JobFunction[]; + industryUrns?: string[]; + descriptionContent?: string; + listingType: ListingType; + standardizedSkillUrns?: string[]; + dailyBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + bid?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + bidType: BidTypeEnum; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingInternalTag.pdsc + + export type JobPostingInternalTag = 'UBIQUITY2' | 'UBIQUITY3' | 'UBIQUITY4'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingLifeCycleMessage.pdsc + + export interface JobPostingLifeCycleMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPostingUrn: string; + stateTransitionType: Com.Linkedin.Avro2pegasus.Events.Jobs.JobPostingStateTransitionType; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingOperationType.pdsc + + export type JobPostingOperationType = 'CLOSE' | 'CREATE' | 'RENEW' | 'UPDATE'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingPacingMessage.pdsc + + export interface JobPostingPacingMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPostingUrn: string; + jobPostingType?: PacingJobPostingType; + currentPacingScore: number; + currentPacingTime: number; + previousIntervalPacingScore?: number; + previousIntervalEndTime?: number; + pacingIntervalSizeMillis: number; + modelId: number; + pacingParameters?: JobPostingPacingParameters; + bid?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + dailyBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + bidUSD?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + dailyBudgetUSD?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + usedBudget?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + expectedBudgetCurveId?: JobPostingCurveKey; + expectedBudgetUsage?: number; + modelV2Params?: JobPacingModelV2Params; + mooRequestId?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingPacingParameters.pdsc + + export interface JobPostingPacingParameters { + throttlingFactor: number; + boostingFactor: number; + defaultInitialPacingScore: number; + isBoostingFactorEnabled: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingQualityAttributeType.pdsc + + export type JobPostingQualityAttributeType = + | 'TITLE_V5' + | 'SKILL_V5' + | 'COMPANY_V1' + | 'INDUSTRY_V1' + | 'GEO_V1' + | 'SENIORITY_V5' + | 'EMPLOYMENT_STATUS_V5' + | 'COMPANY_LOGO' + | 'RESPONSIVE_POSTER' + | 'SMOOTH_APPLY_EXPERIENCE'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingQualityMessage.pdsc + + export interface JobPostingQualityMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPostingUrn: string; + version: JobPostingQualityVersion; + tier: number; + missingAttributesToNextTier: JobPostingQualityAttributeType[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingQualityVersion.pdsc + + export type JobPostingQualityVersion = 'V1'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPostingType.pdsc + + export type JobPostingType = 'BASIC' | 'PREMIUM'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobPushNotificationMessage.pdsc + + export interface JobPushNotificationMessage { + recipientUrn: string; + notificationType: NotificationType; + jobUrn?: string; + savedSearchUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobReportingListingType.pdsc + + export type JobReportingListingType = 'PREMIUM' | 'FREEMIUM' | 'BASIC'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobsCompensationGenerationMessage.pdsc + + export interface JobsCompensationGenerationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPostingId: number; + companyId?: number; + companyName?: string; + countryCode?: string; + regionCode?: number; + titleName?: string; + titleId?: number; + jobPosterId?: number; + ownerId?: number; + ownerType?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobSearchFeatureMessage.pdsc + + export interface JobSearchFeatureMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobId: number; + featureName: string; + featureValue: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobSearchTermMessage.pdsc + + export interface JobSearchTermMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + id: number; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + companyName?: string; + companyUrn?: string; + keyword?: string; + keywordType?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobKeywordType; + city?: string; + state?: string; + countryCode: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobStandardizedData.pdsc + + export interface JobStandardizedData { + companyId?: number; + companyDescriptionCountedNGrams?: CountedNGram[]; + companySize?: CompanySize; + descriptionCountedNGrams?: CountedNGram[]; + functionsCounted?: CountedIdInt[]; + functionsCountedI18n?: CountedIdInt[]; + geoCountry?: string; + geoRegion?: string; + industriesCounted?: CountedIdInt[]; + industryCategories?: string[]; + jobSenioritiesCounted?: CountedIdInt[]; + jobSenioritiesCountedI18n?: CountedIdInt[]; + jobTitles?: number[]; + jobTitlesI18n?: number[]; + locationFieldValues?: string[]; + locationDescriptionCountedNGrams?: CountedNGram[]; + locations?: string[]; + minJobSeniority?: number; + minJobSeniorityI18n?: number; + normalizedTitleSeniorityYears?: number; + skillsCountedNGrams?: CountedNGram[]; + skillsScored?: ScoredIdInt[]; + skillStringsScored?: ScoredStandardString[]; + superTitlesCounted?: CountedIdInt[]; + superTitlesCountedI18n?: CountedIdInt[]; + titleCountedNGrams?: CountedNGram[]; + functionsCountedV3?: CountedIdInt[]; + jobSenioritiesCountedV3?: CountedIdInt[]; + jobTitlesV3?: number[]; + jobTitlesScoresV3?: ScoredIdInt[]; + minJobSeniorityV3?: number; + superTitlesCountedV3?: CountedIdInt[]; + campaignId?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobsTargetingFacets.pdsc + + export interface JobsTargetingFacets { + companyUrns?: string[]; + titleUrns?: string[]; + skillUrns?: string[]; + degreeUrns?: string[]; + functionUrns?: string[]; + industryUrns?: string[]; + yearsOfExperienceRange?: Com.Linkedin.Avro2pegasus.Events.Common.ClosedIntRange; + profileLocations?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JobsYouMayBeInterestedIn.pdsc + + export interface JobsYouMayBeInterestedIn { + jobPostingUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/JymbiiBackfill.pdsc + + export interface JymbiiBackfill { + jobPostingUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ListingType.pdsc + + export type ListingType = 'BASIC' | 'PREMIUM'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/LocationBasis.pdsc + + export interface LocationBasis { + countryCode: string; + regionCode: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/MemberActionType.pdsc + + export type MemberActionType = 'VIEW' | 'APPLY' | 'APPLY_CLICK'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/MemberIndicatesSharingPreference.pdsc + + export interface MemberIndicatesSharingPreference { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + indicationType?: IndicationType; + indicationReason?: IndicationReason; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/MigrateJobApplicationResumeMediaMessage.pdsc + + export interface MigrateJobApplicationResumeMediaMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + fromResumeMediaUrn: string; + toResumeMediaUrn: string; + jobApplicationUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/MiningTaskFailureReason.pdsc + + export type MiningTaskFailureReason = 'SCRAPER_STALE' | 'MANUAL_CANCELLATION'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/NewJobSeeker.pdsc + + export interface NewJobSeeker { + confirmedHiresCount: number; + featuredCompanyUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/NormalizedQuestionSet.pdsc + + export type NormalizedQuestionSet = + | 'EDUCATION_HISTORY' + | 'WORK_HISTORY' + | 'REFERENCES' + | 'HOME_ADDRESS' + | 'WORK_AUTH_US'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/NotificationType.pdsc + + export type NotificationType = + | 'JOB_EXPIRING' + | 'NEW_JOBS_IN_SAVED_SEARCH' + | 'JOB_APPLICATION_VIEWED' + | 'PROFILE_VIEWED'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/OpenCandidateInMailsIgnored.pdsc + + export interface OpenCandidateInMailsIgnored { + inMailsIgnored: number; + daysIgnored: number; + campaignReceivedCount: number; + campaignReceivedLookbackPeriod: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/OpenCandidateInteractionsSummary.pdsc + + export interface OpenCandidateInteractionsSummary { + recruiterSearches: number; + recruiterProfileViews: number; + recruiterMessages: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/OpenCandidateNewPosition.pdsc + + export interface OpenCandidateNewPosition {} + // Generated from: com/linkedin/avro2pegasus/messages/jobs/OpenCandidatesOptOutMessage.pdsc + + export interface OpenCandidatesOptOutMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + optOutReason: OptOutReason; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/OptOutReason.pdsc + + export type OptOutReason = 'INMAILS_IGNORED'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/PacingJobPostingType.pdsc + + export type PacingJobPostingType = 'PPC' | 'PRE_PAID' | 'BASIC'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/PayForPerformanceJobBillingMessage.pdsc + + export interface PayForPerformanceJobBillingMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobUrn: string; + day: number; + currency?: string; + activityType: JobActivityType; + charge: number; + chargeInUSD?: number; + cost: number; + costInUSD?: number; + numActivities: number; + lastUpdateTime: number; + dailyBudget?: PostpaidDailyBudget; + effectiveDailyBudget?: PostpaidDailyBudget; + lifetimeBillingStats?: PostpaidBillingStats; + lifetimeBudget?: PostpaidLifetimeBudget; + effectiveLifetimeBudget?: PostpaidLifetimeBudget; + contractUrn?: string; + billingComputationTrigger?: PostpaidBillingComputationTrigger; + billingType?: Com.Linkedin.Avro2pegasus.Events.Jobs.JobBillingType; + budgetGroupDeliveryStats?: Com.Linkedin.Avro2pegasus.Events.Common.Jobs.JobBudgetGroupDeliveryStats[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/PostpaidBillingComputationTrigger.pdsc + + export type PostpaidBillingComputationTrigger = 'REGULAR_USAGE' | 'BUDGET_UPDATE' | 'INT_OPERATION'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/PostpaidBillingStats.pdsc + + export interface PostpaidBillingStats { + charge: number; + chargeInUSD: number; + effectiveCost: number; + effectiveCostInUSD: number; + cost: number; + costInUSD: number; + numActivities: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/PostpaidDailyBudget.pdsc + + export interface PostpaidDailyBudget { + spendLimit: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + chargeCapFactor: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/PostpaidLifetimeBudget.pdsc + + export interface PostpaidLifetimeBudget { + spendLimit: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ProcessingColoType.pdsc + + export type ProcessingColoType = + | 'EI_LCA1' + | 'EI_LTX1' + | 'PROD_LSG1' + | 'PROD_LVA1' + | 'PROD_LTX1' + | 'PROD_LOR1'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/PurgeInactiveJobAlertMessage.pdsc + + export interface PurgeInactiveJobAlertMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + recipientUrn: string; + savedSearchUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ReferralsEmployeeReminder.pdsc + + export interface ReferralsEmployeeReminder { + jobPostingUrn: string; + companyUrn: string; + candidateUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/RequestItem.pdsc + + export interface RequestItem { + campaignTypeInformation: CampaignTypeInformation; + communicationChannel: Channel; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/SavedSearchJobAlert.pdsc + + export interface SavedSearchJobAlert { + searchAlertUrns: string[]; + savedSearchJobAlertOrigin?: SavedSearchJobAlertOrigin; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/SavedSearchJobAlertOrigin.pdsc + + export type SavedSearchJobAlertOrigin = 'CAREERS_INTERESTS'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ScoredIdInt.pdsc + + export interface ScoredIdInt { + id: number; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ScoredStandardString.pdsc + + export interface ScoredStandardString { + string: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/StudentJobForSuperTitleMessage.pdsc + + export interface StudentJobForSuperTitleMessage { + memberUrn: string; + superTitleUrn: string; + jobPostingUrn: string; + selectionBasis: CompanyBasis | LocationBasis; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/versionNumberEnum.pdsc + + export type versionNumberEnum = 'V1'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ViewedJobItem.pdsc + + export interface ViewedJobItem { + jobPostingUrn: string; + lastViewedAt: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/ViewedJobReminder.pdsc + + export interface ViewedJobReminder { + viewedJobs: ViewedJobItem[]; + } + namespace Common { + // Generated from: com/linkedin/avro2pegasus/messages/jobs/common/CompensationPeriod.pdsc + + export type CompensationPeriod = + | 'YEARLY' + | 'MONTHLY' + | 'SEMIMONTHLY' + | 'BIWEEKLY' + | 'WEEKLY' + | 'DAILY' + | 'HOURLY' + | 'ONCE'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/common/CompensationType.pdsc + + export type CompensationType = 'BASE_SALARY' | 'TOTAL_ADDITIONAL'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/common/InferableField.pdsc + + export type InferableField = 'DESIRED_EDUCATION' | 'SKILLS' | 'YEARS_OF_EXPERIENCE'; + // Generated from: com/linkedin/avro2pegasus/messages/jobs/common/JobCompensation.pdsc + + export interface JobCompensation { + lowEnd?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + highEnd?: Com.Linkedin.Avro2pegasus.Events.Common.MoneyAmount; + compensationType?: CompensationType; + compensationPeriod?: CompensationPeriod; + } + } + namespace Matching { + // Generated from: com/linkedin/avro2pegasus/messages/jobs/matching/JobAlertVeniceV3RecordKey.pdsc + + export interface JobAlertVeniceV3RecordKey { + jobPostingAttributes: { [id: string]: number }; + jobPostingAttributeDerivedType: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/matching/JobPostingToAlertPotentialMatchMessage.pdsc + + export interface JobPostingToAlertPotentialMatchMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobPostingUrn: string; + memberUrn?: string; + savedSearchUrn: string; + referenceId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + experimentationModels?: string[]; + jobAlertVeniceLookUpKey?: JobAlertVeniceV3RecordKey; + } + // Generated from: com/linkedin/avro2pegasus/messages/jobs/matching/JobSearchPercolationPrototypeLoadQueryMessage.pdsc + + export interface JobSearchPercolationPrototypeLoadQueryMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + savedSearchUrn: string; + serializedRequest: string; + } + } + } + namespace Kairos { + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ActionTypeEnum.pdsc + + export type ActionTypeEnum = 'IMPORT' | 'DELETE' | 'REIMPORT'; + // Generated from: com/linkedin/avro2pegasus/messages/kairos/AdContentWaitEditReplicationMessage.pdsc + + export interface AdContentWaitEditReplicationMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + creativeUrn: string; + contentUrn: string; + contentVersion: string; + creatorUrn?: string; + retryCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/AdContentWaitPublishReplicationMessage.pdsc + + export interface AdContentWaitPublishReplicationMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + creativeUrn: string; + contentUrn: string; + contentVersion: string; + contentHash: string; + reviewStatus: ReviewStatus; + reviewerInfo?: Com.Linkedin.Avro2pegasus.Messages.Ads.ReviewerInfo; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/AssetManagerDeletionMessage.pdsc + + export interface AssetManagerDeletionMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + assetUrn: string; + artifactUrns: string[]; + deletionRequestor?: DeletionRequestor; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/AzkabanProfilePictureQueryResult.pdsc + + export interface AzkabanProfilePictureQueryResult { + memberUrn: string; + pictureMasterImageAmbryUrn?: string; + pictureCroppedImageAmbryUrn?: string; + backgroundImageAmbryUrn?: string; + backgroundCroppedImageAmbryUrn?: string; + croppingCoordinateOnYAxis?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/CalendarEvent.pdsc + + export interface CalendarEvent { + eventUrn: string; + attendees: ScoredAttendee[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ConflictDetectionScheduleMessage.pdsc + + export interface ConflictDetectionScheduleMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ContactsRequestMessage.pdsc + + export interface ContactsRequestMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + targetUrn: string; + workflowId: string; + taskJsonData: string; + integrationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ContactsScheduleMessage.pdsc + + export interface ContactsScheduleMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + targetUrn: string; + workflowId: string; + taskJsonData: string; + integrationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ContentAlertScheduleMessage.pdsc + + export interface ContentAlertScheduleMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader: KairosHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/CrmServiceJobTriggerMessage.pdsc + + export interface CrmServiceJobTriggerMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + jobName: string; + lastSuccessfulRunTimestamp?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/CrtTaskMessage.pdsc + + export interface CrtTaskMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + task: string; + parameters: { [id: string]: string }; + origin: CrtTaskOrigin; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/CrtTaskOrigin.pdsc + + export type CrtTaskOrigin = 'CRT_BACKEND'; + // Generated from: com/linkedin/avro2pegasus/messages/kairos/CustomerReconciliationScheduleMessage.pdsc + + export interface CustomerReconciliationScheduleMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + customerUrn: string; + reconciliationTaskIds: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/DataContent.pdsc + + export interface DataContent { + type: DataContentType; + content: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/DataContentType.pdsc + + export type DataContentType = 'DATA_REF' | 'DATA_VALUE_JSON'; + // Generated from: com/linkedin/avro2pegasus/messages/kairos/DefaultKairosMessage.pdsc + + export interface DefaultKairosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/DeletionRequestor.pdsc + + export type DeletionRequestor = 'CLIENT' | 'VECTOR'; + // Generated from: com/linkedin/avro2pegasus/messages/kairos/EnterpriseSamlMetadataFetchMessage.pdsc + + export interface EnterpriseSamlMetadataFetchMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + metadataUrl: string; + applicationInstanceUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/EventDailyDigestTriggerMessage.pdsc + + export interface EventDailyDigestTriggerMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + eventUrn: string; + hashtagUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/KairosHeader.pdsc + + export interface KairosHeader { + kairosTaskId: string; + kairosFiredTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/LithographSchedulePublishMessage.pdsc + + export interface LithographSchedulePublishMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + resourcePath: string; + publishAction: PublishAction; + publishedByUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/LiveEventScheduleRecycleMessage.pdsc + + export interface LiveEventScheduleRecycleMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + eventId: string; + eventEmittedAt: number; + createdAt: number; + eventMessage: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/LiveEventScheduleRecycleV2Message.pdsc + + export interface LiveEventScheduleRecycleV2Message { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + eventId: string; + eventEmittedTime: number; + createdTime: number; + eventMessage: string; + isForceEnd?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/OpportunistTaskMessage.pdsc + + export interface OpportunistTaskMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + targetUrn: string; + taskId: string; + executionTime: number; + expirationTime: number; + calendarEvents: CalendarEvent[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/OptimizationAlertScheduleMessage.pdsc + + export interface OptimizationAlertScheduleMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + targetUrn: string; + workflowId: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/PintSyncMessage.pdsc + + export interface PintSyncMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + memberUrn: string; + integrationUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ProfilePictureMigrationMessage.pdsc + + export interface ProfilePictureMigrationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + queryResult: AzkabanProfilePictureQueryResult; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/PropNotificationTaskMessage.pdsc + + export interface PropNotificationTaskMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + targetUrn: string; + taskType: PropNotificationTaskType; + executionTime: number; + expirationTime: number; + entityUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/PropNotificationTaskType.pdsc + + export type PropNotificationTaskType = + | 'CALENDAR_PREPARE_NOTIFICATION' + | 'CALENDAR_FOLLOWUP_NOTIFICATION' + | 'MEETING_PREPARE_NOTIFICATION'; + // Generated from: com/linkedin/avro2pegasus/messages/kairos/PublishAction.pdsc + + export type PublishAction = 'ACTIVATE' | 'DEACTIVATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/messages/kairos/RampScheduleMessage.pdsc + + export interface RampScheduleMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + experimentUrn: string; + segmentIndex: number; + treatmentName: string; + autoRampConfigId: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/RetryTaskMessage.pdsc + + export interface RetryTaskMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + message: Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.Processing.RetryMessage; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ReviewStatus.pdsc + + export type ReviewStatus = 'AUTO_APPROVED' | 'APPROVED' | 'PREAPPROVED' | 'AUDIT_PREAPPROVED'; + // Generated from: com/linkedin/avro2pegasus/messages/kairos/SasRChargeScheduleMessage.pdsc + + export interface SasRChargeScheduleMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + targetUrn: string; + workflowId: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ScanArtifactoryScheduleMessage.pdsc + + export interface ScanArtifactoryScheduleMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + coordinate?: string; + action: ActionTypeEnum; + durationToScan: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ScheduleTaskMessage.pdsc + + export interface ScheduleTaskMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + ambryUrn: string; + sourceQueueName: string; + retryCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ScoredAttendee.pdsc + + export interface ScoredAttendee { + memberUrn: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ServiceCrawlerTask.pdsc + + export type ServiceCrawlerTask = + | 'METADATA_CLUSTERS_LIST' + | 'D2_PROPERTIES_SERVICES_LIST' + | 'METADATA_SERVICE_SCHEMA' + | 'CRAWL_COMPLETED' + | 'MPDETAILS_SERVICES_LIST' + | 'METADATA_SERVICE_OWNERSHIP' + | 'CRAWLED_DATA_CLEAN_UP' + | 'EXTERNALIZED_SERVICES_LIST' + | 'METADATA_EXTERNALIZED_SERVICE' + | 'MAPPING_CLUSTER_TO_MULTIPRODUCT' + | 'METADATA_APPLICATION'; + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ServiceCrawlerTaskMessage.pdsc + + export interface ServiceCrawlerTaskMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + task: ServiceCrawlerTask; + ioData: TaskInputData | TaskOutputData; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ServiceMetadataCrawlerTaskInputData.pdsc + + export interface ServiceMetadataCrawlerTaskInputData { + dataSources: string[]; + parentCrawlId?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ServiceMetadataCrawlerTaskOutputData.pdsc + + export interface ServiceMetadataCrawlerTaskOutputData { + data: DataContent[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/SfdcPollingScheduleMessage.pdsc + + export interface SfdcPollingScheduleMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + bucketId?: number; + bucketCount?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/SiteCreationStatusSyncScheduleMessage.pdsc + + export interface SiteCreationStatusSyncScheduleMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + opportunityId: string; + customerSiteUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/TaskInputData.pdsc + + export interface TaskInputData { + serviceMetadataCrawlerTaskInput?: ServiceMetadataCrawlerTaskInputData; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/TaskOutputData.pdsc + + export interface TaskOutputData { + serviceMetadataCrawlerTaskOutput?: ServiceMetadataCrawlerTaskOutputData; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/ThoughtLeaderScheduleMessage.pdsc + + export interface ThoughtLeaderScheduleMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + workflowId: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/VectorAssetTimeoutMessage.pdsc + + export interface VectorAssetTimeoutMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + message: Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.AssetTimeoutMessage; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/VectorAssetTimeoutMessageV2.pdsc + + export interface VectorAssetTimeoutMessageV2 { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + message: Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.AssetTimeoutMessageV2; + } + // Generated from: com/linkedin/avro2pegasus/messages/kairos/VectorLiveResetV3Event.pdsc + + export interface VectorLiveResetV3Event { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: KairosHeader; + account: string; + eventId: string; + } + } + namespace Khronos { + // Generated from: com/linkedin/avro2pegasus/messages/khronos/AdExperimentScheduledAction.pdsc + + export type AdExperimentScheduledAction = 'START' | 'END' | 'TERMINATE' | 'CAMPAIGN_START'; + // Generated from: com/linkedin/avro2pegasus/messages/khronos/AdExperimentScheduleKhronosMessage.pdsc + + export interface AdExperimentScheduleKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + action: AdExperimentScheduledAction; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/AutomatedDependencyUpgradeKhronosMessage.pdsc + + export interface AutomatedDependencyUpgradeKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + multiProductUrn: string; + packageManager: string; + manifestsDirectoryPath: string; + scheduleFrequency: Frequency; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/CreativeProcessingSyncKhronosMessage.pdsc + + export interface CreativeProcessingSyncKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + creativeUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/CrmServiceJobTriggerMessage.pdsc + + export interface CrmServiceJobTriggerMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + jobName: string; + lastSuccessfulRunTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/EmailTriggerKhronosMessage.pdsc + + export interface EmailTriggerKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + campaignName: string; + startTime?: number; + endTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/EventsCommunicationsAudienceType.pdsc + + export type EventsCommunicationsAudienceType = + | 'HOSTS' + | 'NON_HOST_ATTENDEES' + | 'REGISTERED_USERS' + | 'EVENT_INVITEES'; + // Generated from: com/linkedin/avro2pegasus/messages/khronos/EventsCommunicationScheduleDeferKhronosMessage.pdsc + + export interface EventsCommunicationScheduleDeferKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + eventUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/EventsCommunicationTriggerKhronosMessage.pdsc + + export interface EventsCommunicationTriggerKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + eventUrn: string; + eventCommunicationType: string; + eventStartTime: number; + audienceTypes: EventsCommunicationsAudienceType[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/Frequency.pdsc + + export type Frequency = 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'IMMEDIATELY'; + // Generated from: com/linkedin/avro2pegasus/messages/khronos/LearningContentIngestionSchedulerTriggerKhronosMessage.pdsc + + export interface LearningContentIngestionSchedulerTriggerKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + providerUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/MlAgilityMetricsAggregationScheduleKhronosMessage.pdsc + + export interface MlAgilityMetricsAggregationScheduleKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + jobName: string; + startTime?: number; + endTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/SalesforceScheduleKhronosMessage.pdsc + + export interface SalesforceScheduleKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + jobName: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/SimpleKhronosMessage.pdsc + + export interface SimpleKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/ThirdPartyTrackingValidationJobAction.pdsc + + export type ThirdPartyTrackingValidationJobAction = 'PUSH' | 'PULL'; + // Generated from: com/linkedin/avro2pegasus/messages/khronos/ThirdPartyTrackingValidationJobKhronosMessage.pdsc + + export interface ThirdPartyTrackingValidationJobKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + vendor: Com.Linkedin.Avro2pegasus.Tracking.Common.Ads.ThirdPartyTrackingPlatform; + action: ThirdPartyTrackingValidationJobAction; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/UserGeneratedContentKhronosMessage.pdsc + + export interface UserGeneratedContentKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + ugcUrn: string; + actorUrn?: string; + threadUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/UserGeneratedContentOrphanedByDirectSponsoredContentKhronosMessage.pdsc + + export interface UserGeneratedContentOrphanedByDirectSponsoredContentKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + ugcUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/khronos/ViatorTranslationScheduleKhronosMessage.pdsc + + export interface ViatorTranslationScheduleKhronosMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + khronosHeader?: Com.Linkedin.Avro2pegasus.Events.Common.Khronos.KhronosHeader; + taskIdentifier: string; + translatedFileLocation: string; + contentIdentifier: string; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + } + namespace Leadgen { + // Generated from: com/linkedin/avro2pegasus/messages/leadgen/LeadMessage.pdsc + + export interface LeadMessage { + id: number; + createdTime?: number; + updatedTime?: number; + processMetadata?: { [id: string]: string }; + isSfdcSuccessful?: boolean; + sfdcResponse?: string; + isEloquaSuccessful?: boolean; + eloquaResponse?: string; + isCrmSuccessful?: boolean; + crmResponse?: string; + leadType?: LeadType; + formId: number; + sourcePageUrl?: string; + siloId?: string; + firstName?: string; + lastName?: string; + phone?: string; + email?: string; + companyName?: string; + jobTitle?: string; + locale?: string; + memberUrn?: string; + formData: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/messages/leadgen/LeadType.pdsc + + export type LeadType = 'A' | 'B' | 'RC'; + } + namespace Learning { + // Generated from: com/linkedin/avro2pegasus/messages/learning/LearningConsumerRemarketingEmailMessage.pdsc + + export interface LearningConsumerRemarketingEmailMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + recipientUrn: string; + eventSourceType: string; + contentUrns: string[]; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/LearningEnterpriseReportEventExternalPushMessage.pdsc + + export interface LearningEnterpriseReportEventExternalPushMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + enterpriseAccountId: number; + enterpriseProfileId: number; + millisecondsSinceEpoch: number; + groupIds: number[]; + objectUrn: string; + metricTypeId: number; + metricValue: number; + deviceTypeId: number; + } + namespace Content { + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/AcquisitionOrigin.pdsc + + export type AcquisitionOrigin = 'VIDEO2BRAIN' | 'INTERFACE'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ActivationStatus.pdsc + + export type ActivationStatus = 'PENDING' | 'ACTIVE' | 'RETIRED'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CaptionEntity.pdsc + + export interface CaptionEntity { + videoKey: VideoKey; + videoCaptions: CaptionGroupCaptionAssociation[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CaptionFormat.pdsc + + export type CaptionFormat = 'QTSMIL' | 'QTTEXT' | 'SCC' | 'SRT' | 'TTLXML' | 'TXT' | 'WEBVTT'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CaptionGroupCaptionAssociation.pdsc + + export interface CaptionGroupCaptionAssociation { + captionGroupKey: VideoCaptionGroupKey; + captions: VideoCaption[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/Chapter.pdsc + + export interface Chapter { + title: string; + childContents: CourseContent[]; + sourceIds: Array; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + id: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ChapterVideoAssociation.pdsc + + export interface ChapterVideoAssociation { + chapterId: string; + videos: Video[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ChapterVideoEntity.pdsc + + export interface ChapterVideoEntity { + chapterVideos: ChapterVideoAssociation[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CompleteEntity.pdsc + + export interface CompleteEntity {} + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ContentAuthorAssociation.pdsc + + export interface ContentAuthorAssociation { + primary: boolean; + visible: boolean; + legacySupport?: ContentAuthorAssociationLegacySupport; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + content: string; + author: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ContentAuthorAssociationLegacySupport.pdsc + + export interface ContentAuthorAssociationLegacySupport { + visibleToAuthorPortal: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ContentCategoryAssociation.pdsc + + export interface ContentCategoryAssociation { + primary: boolean; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + content: string; + category: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ContentExerciseFileGroupAssociation.pdsc + + export interface ContentExerciseFileGroupAssociation { + content: string; + exerciseFileGroup: string; + sortOrder: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ContentOrigin.pdsc + + export type ContentOrigin = 'CONTRACT' | 'STAFF' | 'STAFF_AND_CONTRACT'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ContentSkillAssociation.pdsc + + export interface ContentSkillAssociation { + secondary: boolean; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + content: string; + skill: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/Course.pdsc + + export interface Course { + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + slug: string; + title: string; + subTitle?: string; + description?: string; + shortDescription?: string; + closedCaptioningRequired: boolean; + practiceEnvironmentRequired: boolean; + assessmentRequired: boolean; + welcomeVideo?: string; + sourceIds: Array; + activationStatus: ActivationStatus; + practiceEnvironment?: string; + legacySupport?: CourseLegacySupport; + versionTag: Com.Linkedin.Avro2pegasus.Events.Common.VersionTag; + childContents: CourseContent[]; + contentOrigin: ContentOrigin; + acquisitionOrigin?: AcquisitionOrigin; + releasePlannedOn?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + retirementPlan?: RetirementPlan; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + key: CourseKey; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseAssociation.pdsc + + export interface CourseAssociation { + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + originalCourse: string; + associationType: CourseAssociationType; + associatedCourse: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseAssociationType.pdsc + + export type CourseAssociationType = 'TRANSLATED_FROM' | 'REPLACED_BY' | 'RELATED_TO' | 'ADAPTED_FROM'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseContent.pdsc + + export interface CourseContent { + content: string; + visible: boolean; + demo: boolean; + requiredForCertificationOfCompletion: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseEntity.pdsc + + export interface CourseEntity { + course: Course; + chapters: Chapter[]; + courseThumbnails: CourseThumbnail[]; + exerciseFileGroups: ExerciseFileGroup[]; + contentCategoryAssociations: ContentCategoryAssociation[]; + contentAuthorAssociations: ContentAuthorAssociation[]; + contentSkillAssociation: ContentSkillAssociation[]; + contentExerciseFileGroupAssociation: ContentExerciseFileGroupAssociation[]; + courseAssociations: CourseAssociation[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseHeader.pdsc + + export interface CourseHeader { + deploymentId: number; + courseUrn: string; + messageType: CourseMessageType; + serialNumber: number; + serialSize: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseKey.pdsc + + export interface CourseKey { + versionType: VersionType; + versionNumber: number; + id: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseLegacyFlags.pdsc + + export interface CourseLegacyFlags { + viewableByNonSubscribers: boolean; + dvdAvailable: boolean; + cdAvailable: boolean; + showableInLatestReleasesPod: boolean; + viewableByQa: boolean; + standalone: boolean; + includedInPmoLibrary: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseLegacySupport.pdsc + + export interface CourseLegacySupport { + lyndaUrl: string; + displaySizeId?: number; + closedCaptionStatusId?: number; + beta: boolean; + hidden: boolean; + fileLargeThumbnail?: string; + fileSmallThumbnail?: string; + topics?: string; + keywords?: string; + metaData?: string; + pageTitle?: string; + courseAvailabilityId?: number; + fileTrailerGraphics?: string; + fileHeaderGraphics?: string; + illustrationArtist?: string; + englishName?: string; + flags?: CourseLegacyFlags; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseMessageContent.pdsc + + export interface CourseMessageContent { + customizedHeader: CourseHeader; + content: CourseEntity | ChapterVideoEntity | CaptionEntity | CompleteEntity; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseMessageType.pdsc + + export type CourseMessageType = 'COURSE' | 'VIDEO' | 'CAPTION' | 'COMPLETE'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseThumbnail.pdsc + + export interface CourseThumbnail { + height: number; + width: number; + fileName: string; + backgroundColor: string; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + imageType: CourseThumbnailImageType; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/CourseThumbnailImageType.pdsc + + export type CourseThumbnailImageType = 'MASTER' | 'HD1080' | 'UHD1' | 'UHD2' | 'TRAILER_GRAPHIC'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/Dimensions.pdsc + + export interface Dimensions { + height: number; + width: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ExerciseFile.pdsc + + export interface ExerciseFile { + created: number; + lastModified: number; + deleted?: number; + id: string; + name: string; + sizeInBytes: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ExerciseFileGroup.pdsc + + export interface ExerciseFileGroup { + name: string; + availableToNonSubscribers: boolean; + visible: boolean; + exerciseFiles: ExerciseFile[]; + legacySupport?: ExerciseFileGroupLegacySupport; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + key: ExerciseFileGroupKey; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ExerciseFileGroupKey.pdsc + + export interface ExerciseFileGroupKey { + versionType: VersionType; + versionNumber: number; + id: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/ExerciseFileGroupLegacySupport.pdsc + + export interface ExerciseFileGroupLegacySupport { + platform: PlatformType; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/LearningContentRemovalMessage.pdsc + + export interface LearningContentRemovalMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentUrn: string; + removalTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/LyndaPortalId.pdsc + + export interface LyndaPortalId { + id: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/MiltonId.pdsc + + export interface MiltonId { + id: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/PlatformType.pdsc + + export type PlatformType = 'MACINTOSH' | 'WINDOWS' | 'LINUX'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/PublishCourseMessage.pdsc + + export interface PublishCourseMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + signature: string; + messageContent: CourseMessageContent; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/PublishCourseMessageTest.pdsc + + export interface PublishCourseMessageTest { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + signature: string; + messageContent: CourseMessageContent; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/PublishLearningContentMessage.pdsc + + export interface PublishLearningContentMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentUrn: string; + dependencyUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/RetirementPlan.pdsc + + export interface RetirementPlan { + retireOn: Com.Linkedin.Avro2pegasus.Events.Common.Date; + message: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/SyncVideoMessageTest.pdsc + + export interface SyncVideoMessageTest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + syncId: string; + locale?: string; + name?: string; + description?: string; + fileName?: string; + changedFields: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/VersionType.pdsc + + export type VersionType = 'LATEST' | 'SNAPSHOT'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/Video.pdsc + + export interface Video { + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + asset?: string; + title: string; + description?: string; + active: boolean; + public: boolean; + features: VideoFeature[]; + releasedAt: number; + legacySupport?: VideoLegacySupport; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + key: VideoKey; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/Video2BrainId.pdsc + + export interface Video2BrainId { + id: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/VideoCaption.pdsc + + export interface VideoCaption { + startsAtInVideo: number; + caption: string; + changeTimeStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeTimeStamps; + id: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/VideoCaptionGroupKey.pdsc + + export interface VideoCaptionGroupKey { + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + format: CaptionFormat; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/VideoExtension.pdsc + + export type VideoExtension = '_3GP' | 'F4V' | 'MOV' | 'MP4' | 'WMV'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/VideoFeature.pdsc + + export type VideoFeature = 'COMPILR_LESSON' | 'PRACTICE_ENVIRONMENT' | 'USED_FOR_CERTIFICATE_OF_COMPLETION'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/VideoFormat.pdsc + + export interface VideoFormat { + height: number; + width: number; + extension: VideoExtension; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/VideoImage.pdsc + + export interface VideoImage { + fileName?: string; + dimensions?: Dimensions; + backgroundColor?: string; + occurrenceInSeconds: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/VideoKey.pdsc + + export interface VideoKey { + versionType: VersionType; + versionNumber: number; + id: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/VideoLegacySupport.pdsc + + export interface VideoLegacySupport { + legacyFileName: string; + lyndaUrl: string; + thumbnails: VideoImage[]; + formats: VideoFormat[]; + } + namespace Publish { + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/publish/LyndaCourseVideo.pdsc + + export interface LyndaCourseVideo { + courseId: number; + videoId: number; + name: string; + chapterId?: number; + order?: number; + description: string; + fileName: string; + durationSeconds: number; + isRequiredForCertificateOfCompletion?: boolean; + isDemo?: boolean; + isWelcome?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/publish/LyndaCourseVideoUpsertGaapTaskRequest.pdsc + + export interface LyndaCourseVideoUpsertGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: LyndaCourseVideo; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/content/publish/LyndaCourseVideoUpsertGaapTaskResponse.pdsc + + export interface LyndaCourseVideoUpsertGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + taskInput?: LyndaCourseVideo; + } + } + } + namespace Contentingestion { + // Generated from: com/linkedin/avro2pegasus/messages/learning/contentingestion/LearningContentIngestionWorkflowInstanceContext.pdsc + + export interface LearningContentIngestionWorkflowInstanceContext { + providerUrn: string; + accountUrn: string; + integrationInstanceUrn: string; + integrationSyncUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/contentingestion/LearningContentSource.pdsc + + export type LearningContentSource = + | 'CREATIVE_LIVE' + | 'TREEHOUSE_ACTIVITIES' + | 'GETABSTRACT_SUMMARIES' + | 'GETABSTRACT_CHANNELS' + | 'GETABSTRACT_PRIMARY_CHANNELS' + | 'HARVARD_MANAGEMENTOR_CATALOG' + | 'HARVARD_MANAGEMENTOR_SPARK_CATALOG' + | 'HARVARD_LEADINGEDGE_CATALOG' + | 'HARVARD_MANAGEMENTOR_CLASSIFICATIONS' + | 'HARVARD_MANAGEMENTOR_SPARK_CLASSIFICATIONS' + | 'HARVARD_LEADINGEDGE_CLASSIFICATIONS' + | 'EDX_ENTERPRISE_CATALOGS' + | 'EDX_ENTERPRISE_CATALOG_COURSES'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/contentingestion/LearningProviderContentIntegrationSyncTriggerMessage.pdsc + + export interface LearningProviderContentIntegrationSyncTriggerMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + providerUrn: string; + tenantUrn?: string; + integrationInstanceUrn?: string; + integrationSyncUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/contentingestion/RawLearningEntityCollectionGaapTaskRequest.pdsc + + export interface RawLearningEntityCollectionGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: RawLearningEntityCollectionRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/contentingestion/RawLearningEntityCollectionGaapTaskResponse.pdsc + + export interface RawLearningEntityCollectionGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: RawLearningEntityCollectionResult; + taskInput?: RawLearningEntityCollectionRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/contentingestion/RawLearningEntityCollectionRequest.pdsc + + export interface RawLearningEntityCollectionRequest { + providerUrn: string; + tenantUrn?: string; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + integrationInstanceUrn?: string; + integrationSyncUrn: string; + attemptCount: number; + learningContentSource: LearningContentSource; + workflowInstanceUrn?: string; + stepInstanceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/contentingestion/RawLearningEntityCollectionResult.pdsc + + export interface RawLearningEntityCollectionResult { + providerUrn: string; + tenantUrn?: string; + pagingContext: Com.Linkedin.Avro2pegasus.Events.PagingContext; + blobId: string; + pagingTotal?: number; + learningContentSource: LearningContentSource; + rawDataFormat: Com.Linkedin.Avro2pegasus.Messages.Common.DataFormat; + integrationInstanceUrn?: string; + integrationSyncUrn: string; + attemptCount: number; + workflowInstanceUrn?: string; + stepInstanceUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/contentingestion/RawLearningEntityCollectionV2GaapTaskRequest.pdsc + + export interface RawLearningEntityCollectionV2GaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: RawLearningEntityCollectionRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/contentingestion/RawLearningEntityCollectionV2GaapTaskResponse.pdsc + + export interface RawLearningEntityCollectionV2GaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: RawLearningEntityCollectionResult; + taskInput?: RawLearningEntityCollectionRequest; + } + } + namespace Workflowmanager { + // Generated from: com/linkedin/avro2pegasus/messages/learning/workflowmanager/ErrorMessage.pdsc + + export interface ErrorMessage { + entityId?: string; + errorCodeId: number; + errorMessage: string; + errorTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/workflowmanager/WorkflowFinishedMessage.pdsc + + export interface WorkflowFinishedMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + workflowInstanceUrn: string; + workflowStatus: WorkflowStatus; + workflowInstanceContext: WorkflowInstanceContext; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/workflowmanager/WorkflowInstanceContext.pdsc + + export interface WorkflowInstanceContext { + context: Com.Linkedin.Avro2pegasus.Messages.Learning.Contentingestion.LearningContentIngestionWorkflowInstanceContext; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/workflowmanager/WorkflowStartMessage.pdsc + + export interface WorkflowStartMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + workflowInstanceUrn: string; + workflowInstanceContext: WorkflowInstanceContext; + attemptCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/workflowmanager/WorkflowStatus.pdsc + + export type WorkflowStatus = 'SUCCESS' | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/workflowmanager/WorkflowStepStartMessage.pdsc + + export interface WorkflowStepStartMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + stepInstanceUrn: string; + stepName: string; + workflowInstanceContext: WorkflowInstanceContext; + } + // Generated from: com/linkedin/avro2pegasus/messages/learning/workflowmanager/WorkflowStepStatus.pdsc + + export type WorkflowStepStatus = 'NO_CHANGE' | 'SUCCESS' | 'ERROR'; + // Generated from: com/linkedin/avro2pegasus/messages/learning/workflowmanager/WorkflowStepUpdateMessage.pdsc + + export interface WorkflowStepUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + workflowInstanceUrn: string; + stepInstanceUrn: string; + stepStatus: WorkflowStepStatus; + errors: ErrorMessage[]; + workflowInstanceContext: WorkflowInstanceContext; + attemptCount: number; + } + } + } + namespace Lego { + // Generated from: com/linkedin/avro2pegasus/messages/lego/CouchbaseLegoXdcrMessage.pdsc + + export interface CouchbaseLegoXdcrMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + replicationHeader: Com.Linkedin.Avro2pegasus.Messages.CouchbaseXdcrHeader; + key: string; + value?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/lego/CouchbaseXdcrLegoMessage.pdsc + + export interface CouchbaseXdcrLegoMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + couchbaseMessage: Com.Linkedin.Avro2pegasus.Messages.Common.Couchbase.CouchbaseXdcrGenericMessage; + } + } + namespace Lighthouse { + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/CountType.pdsc + + export type CountType = 'TOTAL_AMOUNT' | 'DISPLAYED_AMOUNT'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/InsightsEvent.pdsc + + export interface InsightsEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + origin: OriginType; + count: number; + createdDate: number; + seatId: number; + contractId: number; + insightType: InsightType; + countType: CountType; + eventKey: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/InsightsNotificationType.pdsc + + export type InsightsNotificationType = 'SAVED_LEADS' | 'WVMP' | 'DISCOVERY' | 'CAMPAIGN' | 'DAILY_BRIEF'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/InsightType.pdsc + + export type InsightType = + | 'LEAD_JOB_CHANGE' + | 'NEW_POTENTIAL_LEAD' + | 'PEOPLE_MENTION_NEWS' + | 'COMPANY_MENTION_NEWS' + | 'LEAD_CONNECTION'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/LeadInsightNotificationMessage.pdsc + + export interface LeadInsightNotificationMessage { + memberUrn: string; + seatUrn: string; + contractUrn: string; + appId: string; + type: InsightsNotificationType; + lastLoginTime?: number; + lastSentTime?: number; + notificationEventTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/LssNotificationMessage.pdsc + + export interface LssNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + notificationType: LssNotificationType; + memberUrn: string; + recipientMemberUrn: string; + recipientContractUrn: string; + entityUrn: string; + parentUrn: string; + actorUrn: string; + notificationTime: number; + version?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/LssNotificationType.pdsc + + export type LssNotificationType = + | 'LEAD_POSITION_CHANGE_NEW_COMPANY' + | 'LEAD_POSITION_CHANGE_SAME_COMPANY' + | 'LEAD_PROFILE_VIEW_SIGNAL' + | 'EMPLOYEE_AT_ACCOUNT_PROFILE_VIEW' + | 'NEW_POTENTIAL_LEAD' + | 'LEAD_ENGAGED_WITH_POST_FROM_YOUR_COMPANY' + | 'LEAD_ACCEPTED_INVITATION' + | 'LEAD_MENTIONED_IN_THE_NEWS' + | 'ACCOUNT_RAISED_MONEY' + | 'LSS_ELEVATE_BROADCAST' + | 'CUSTOM_LIST_SHARE' + | 'LEAD_SHARED_UPDATE' + | 'ACCOUNT_SHARED_UPDATE' + | 'NEW_USER_EXPLORE_COACH' + | 'NEW_USER_SAVE_RECENTLY_VIEWED_LEAD' + | 'LSS_SHARE_SEARCH' + | 'ACCOUNT_MENTIONED_IN_THE_NEWS' + | 'SN_COACH_LEVEL_UP' + | 'SALES_INSIGHTS_EXPORT_LIST' + | 'ADD_ENTITY_TO_SHARED_LIST' + | 'REMOVE_ENTITY_FROM_SHARED_LIST' + | 'ADD_COMMENT_TO_SHARED_LIST_ENTITY' + | 'ACCOUNT_SENIOR_HIRE' + | 'ACCOUNT_GROWTH_ACCELERATION' + | 'EMPLOYEE_AT_ACCOUNT_COMPANY_PAGE_VIEW' + | 'EMPLOYEE_AT_ACCOUNT_WEBSITE_VIEW' + | 'ACCOUNT_PREPARING_FOR_GROWTH' + | 'ACCOUNT_HEADCOUNT_ACCELERATED_FLOW' + | 'SALES_ASSET_BUNDLE_VIEW' + | 'SAVED_ENTITY_NOTE_SHARED_PUBLIC_IN_CONTRACT' + | 'CRM_LEAD_ASSIGNED' + | 'CRM_ACCOUNT_ASSIGNED' + | 'INJECTED_VIEW_DECISION_MAKERS' + | 'NEW_USER_VIEW_DECISION_MAKERS' + | 'EMPLOYEE_ACTIVITY_FROM_ACCOUNT'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/MemberToAccountMessage.pdsc + + export interface MemberToAccountMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + state: MemberToAccountState; + memberUrn: string; + accountUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/MemberToAccountState.pdsc + + export type MemberToAccountState = 'ACTIVE' | 'INACTIVE' | 'OPTED_OUT'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/MemberToContractMessage.pdsc + + export interface MemberToContractMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + state: MemberToContractState; + memberUrn: string; + contractUrn: string; + teamlinkExtendState?: TeamlinkExtendStatus; + seatUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/MemberToContractState.pdsc + + export type MemberToContractState = 'ACTIVE' | 'INACTIVE' | 'OPTED_OUT'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/NotificationFrequency.pdsc + + export type NotificationFrequency = 'ALWAYS' | 'DISABLED'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/OriginType.pdsc + + export type OriginType = 'EMAIL' | 'DESKTOP' | 'MOBILE'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/PointDriveAssetStatusUpdateRequest.pdsc + + export interface PointDriveAssetStatusUpdateRequest { + vectorId: string; + status: Com.Linkedin.Avro2pegasus.Messages.Digitalmedia.Update.AssetStatus; + vectorRecipe?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/PointDriveAssetUpdateGaapTaskRequest.pdsc + + export interface PointDriveAssetUpdateGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: PointDriveAssetStatusUpdateRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/PointDriveAssetUpdateGaapTaskResponse.pdsc + + export interface PointDriveAssetUpdateGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskInput?: PointDriveAssetStatusUpdateRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/SalesBundleCreateViewingSessionMessage.pdsc + + export interface SalesBundleCreateViewingSessionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + trackingConsentUrn: string; + viewingSessionUrn: string; + viewerMemberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/SalesNotificationSettingType.pdsc + + export type SalesNotificationSettingType = 'WVMP_NOTIFICATION' | 'POINTDRIVE_VIEW_NOTIFICATION'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/SalesNotificationSettingUpdateMessage.pdsc + + export interface SalesNotificationSettingUpdateMessage { + memberUrn: string; + seatUrn: string; + contractUrn: string; + type: SalesNotificationSettingType; + notificationFrequency: NotificationFrequency; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/SalesSignalRemoveMessage.pdsc + + export interface SalesSignalRemoveMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + seatUrn: string; + salesSignalUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/TeamlinkExtendStatus.pdsc + + export type TeamlinkExtendStatus = 'ACCEPTED' | 'PENDING' | 'DECLINED'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/ThirdPartyAuthorizationEvent.pdsc + + export interface ThirdPartyAuthorizationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + createdDate: number; + seatId: number; + contractId: number; + authorizationSucceeded: boolean; + provider: ThirdPartyProvider; + error?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/ThirdPartyProvider.pdsc + + export type ThirdPartyProvider = 'SALESFORCE'; + // Generated from: com/linkedin/avro2pegasus/messages/lighthouse/ThirdPartySyncFinishedEvent.pdsc + + export interface ThirdPartySyncFinishedEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + startedDate: number; + seatId: number; + contractId: number; + provider: ThirdPartyProvider; + syncSucceeded: boolean; + error?: string; + leadsImported: number; + leadsMatched: number; + leadsDiscarded: number; + leadsLinked: number; + accountsImported: number; + accountsMatched: number; + accountsDiscarded: number; + } + } + namespace Lithograph { + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/ActivationAuditStamps.pdsc + + export interface ActivationAuditStamps { + activatedAt?: Com.Linkedin.Avro2pegasus.Events.Common.AuditStamp; + deactivatedAt?: Com.Linkedin.Avro2pegasus.Events.Common.AuditStamp; + } + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/AuthoredContentChangeMessage.pdsc + + export interface AuthoredContentChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + authoredContentUrn: string; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + contentLocation: string; + localizedTitle: string; + entityChangeAuditStamps: EntityChangeAuditStamps; + body: string; + parentUrn?: string; + contentType: ContentType; + metadata?: EmailMetadata | HelpArticleMetadata | PageMetadata; + translationMetadata?: TranslationMetadata; + } + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/ContentType.pdsc + + export type ContentType = 'BLOG_ARTICLE' | 'EMAIL' | 'HELP_ARTICLE' | 'PAGE'; + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/EmailMetadata.pdsc + + export interface EmailMetadata { + subject: string; + senderDisplayName: string; + senderAddress: string; + previewText?: string; + isPreheaderDisplayedInBody: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/EntityChangeAuditStamps.pdsc + + export interface EntityChangeAuditStamps { + changeAuditStamps: Com.Linkedin.Avro2pegasus.Events.Common.ChangeAuditStamps; + activationAuditStamps?: ActivationAuditStamps; + } + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/HelpArticleMetadata.pdsc + + export interface HelpArticleMetadata { + taggedTopicUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/PageMetadata.pdsc + + export interface PageMetadata { + title: string; + description?: string; + thumbnailUrn?: string; + ogTitle?: string; + ogDescription?: string; + ogImageUrn?: string; + ogUrl?: string; + twitterTitle?: string; + twitterDescription?: string; + twitterImageUrn?: string; + twitterSite: string; + redirectUrl?: string; + redirectType?: RedirectType; + isDeletable: boolean; + isIndexable: boolean; + canonical?: string; + taggedTopicUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/RedirectType.pdsc + + export type RedirectType = 'PERMANENT' | 'TEMPORARY'; + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/TranslationAuditStamps.pdsc + + export interface TranslationAuditStamps { + lastSentAt: Com.Linkedin.Avro2pegasus.Events.Common.AuditStamp; + lastReceivedAt?: Com.Linkedin.Avro2pegasus.Events.Common.AuditStamp; + } + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/TranslationMetadata.pdsc + + export interface TranslationMetadata { + translationStatus: TranslationStatus; + translationSourceLocale: Com.Linkedin.Avro2pegasus.Events.Locale; + translationPriority: TranslationPriorityType; + translationMethod: TranslationMethod; + translationAuditStamps: TranslationAuditStamps; + } + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/TranslationMethod.pdsc + + export type TranslationMethod = 'MACHINE' | 'HUMAN'; + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/TranslationPriorityType.pdsc + + export type TranslationPriorityType = 'NORMAL' | 'URGENT' | 'INTERNAL'; + // Generated from: com/linkedin/avro2pegasus/messages/lithograph/TranslationStatus.pdsc + + export type TranslationStatus = 'PENDING' | 'REVIEW' | 'COMPLETE'; + } + namespace Lix { + // Generated from: com/linkedin/avro2pegasus/messages/lix/Attribute.pdsc + + export interface Attribute { + attributeName: string; + attributeType: AttributeType; + attributeVersion?: number; + stringAttributeValue?: string; + intAttributeValue?: number; + doubleAttributeValue?: number; + longAttributeValue?: number; + booleanAttributeValue?: boolean; + avroDateAttributeValue?: AvroDate; + intArrayAttributeValue?: number[]; + stringArrayAttributeValue?: string[]; + doubleArrayAttributeValue?: number[]; + longArrayAttributeValue?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/lix/AttributeType.pdsc + + export type AttributeType = + | 'STRING' + | 'INT' + | 'DOUBLE' + | 'LONG' + | 'BOOLEAN' + | 'AVRODATE' + | 'INT_ARRAY' + | 'LONG_ARRAY' + | 'STRING_ARRAY' + | 'DOUBLE_ARRAY'; + // Generated from: com/linkedin/avro2pegasus/messages/lix/AvroDate.pdsc + + export interface AvroDate { + time: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/lix/LixEntityAttributesUpdateMessage.pdsc + + export interface LixEntityAttributesUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + entityUrn: string; + attributeList: Attribute[]; + } + } + namespace Mcm { + // Generated from: com/linkedin/avro2pegasus/messages/mcm/CandidateHiringProjectUpdateMessage.pdsc + + export interface CandidateHiringProjectUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hiringContextUrn: string; + hiringProjectUrn: string; + hireIdentityUrn: string; + previousHiringProjectName: string; + currentHiringProjectName?: string; + previousHiringProjectState: Com.Linkedin.Avro2pegasus.Messages.Common.Mcm.HiringProjectState; + currentHiringProjectState: Com.Linkedin.Avro2pegasus.Messages.Common.Mcm.HiringProjectState; + } + // Generated from: com/linkedin/avro2pegasus/messages/mcm/CandidateInPublicProjectUpdateMessage.pdsc + + export interface CandidateInPublicProjectUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hireIdentityUrn: string; + contractUrn: string; + isInPublicProjects: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/mcm/CandidateInSharedProjectUpdateMessage.pdsc + + export interface CandidateInSharedProjectUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + hireIdentityUrn: string; + contractUrn: string; + hiringProjectUrn: string; + isInSharedProjects: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/mcm/HiringPlatformActivityMessage.pdsc + + export interface HiringPlatformActivityMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + targetUrn: string; + activityType: string; + hiringContextUrn: string; + hiringProjectUrn?: string; + activityData?: string; + performedByUrn: string; + performedTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/mcm/HiringProjectCandidateMessage.pdsc + + export interface HiringProjectCandidateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + candidateUrn: string; + hiringContextUrn: string; + hiringProjectId: number; + previousHiringStateUrn?: string; + currentHiringStateUrn?: string; + previousHireStatusType?: Com.Linkedin.Avro2pegasus.Messages.Common.Mcm.HireStatusType; + currentHireStatusType?: Com.Linkedin.Avro2pegasus.Messages.Common.Mcm.HireStatusType; + previousState?: Com.Linkedin.Avro2pegasus.Messages.Common.Mcm.HiringProjectCandidateState; + currentState?: Com.Linkedin.Avro2pegasus.Messages.Common.Mcm.HiringProjectCandidateState; + createdTime: number; + lastModifiedTime: number; + isInHiringProject: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/mcm/RecruiterProfileInEnterpriseProfileUpdatedMessage.pdsc + + export interface RecruiterProfileInEnterpriseProfileUpdatedMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + enterpriseApplicationInstanceUrn: string; + enterpriseProfileUrn?: string; + hiringProject?: Com.Linkedin.Avro2pegasus.Messages.Common.Mcm.HiringProject; + } + } + namespace Media { + // Generated from: com/linkedin/avro2pegasus/messages/media/RichMediaDeleteRequest.pdsc + + export interface RichMediaDeleteRequest { + userUrn?: string; + contentUrn: string; + time: number; + securityClassification?: RichMediaDeleteSecurityClassification; + csUserUrn?: string; + appName?: string; + signature?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/media/RichMediaDeleteSecurityClassification.pdsc + + export type RichMediaDeleteSecurityClassification = 'OBJECTIONABLE' | 'STANDARD'; + // Generated from: com/linkedin/avro2pegasus/messages/media/RichMediaRestoreGaapTaskRequest.pdsc + + export interface RichMediaRestoreGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: RichMediaRestoreInput; + } + // Generated from: com/linkedin/avro2pegasus/messages/media/RichMediaRestoreGaapTaskResponse.pdsc + + export interface RichMediaRestoreGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskInput?: RichMediaRestoreInput; + } + // Generated from: com/linkedin/avro2pegasus/messages/media/RichMediaRestoreInput.pdsc + + export interface RichMediaRestoreInput { + slideshareMediaUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/media/RichMediaRestoreRequest.pdsc + + export interface RichMediaRestoreRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + mediaUrn: string; + } + } + namespace Mediagateway { + // Generated from: com/linkedin/avro2pegasus/messages/mediagateway/ExternalAPIMediaUploadMessage.pdsc + + export interface ExternalAPIMediaUploadMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + mediaUrn: string; + applicationUrn: string; + memberUrn?: string; + useCase: MediaUseCase; + uploadTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/mediagateway/MediaUseCase.pdsc + + export type MediaUseCase = + | 'RICH_MEDIA' + | 'REFERRAL_EMPLOYEE_LIST' + | 'SPONSORED_INMAIL_IMAGE' + | 'ENTERPRISE_CSV_UPLOAD'; + } + namespace Mes { + // Generated from: com/linkedin/avro2pegasus/messages/mes/MemberEventInfoType.pdsc + + export type MemberEventInfoType = 'UNWANTED_ADVANCES' | 'COPYRIGHT_VIOLATION' | 'USER_FLAGGED_CONTENT'; + // Generated from: com/linkedin/avro2pegasus/messages/mes/MemberStateUpdateMessage.pdsc + + export interface MemberStateUpdateMessage { + eventHeader: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + eventType: MemberEventInfoType; + triggerEventTime?: number; + } + } + namespace Messaging { + // Generated from: com/linkedin/avro2pegasus/messages/messaging/ConversationDeletionTaskMessage.pdsc + + export interface ConversationDeletionTaskMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + identityUrn: string; + conversationUrns: string[]; + deletionTime: number; + domainUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/ConversationMarkReadTaskMessage.pdsc + + export interface ConversationMarkReadTaskMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + identityUrn: string; + conversationUrns: string[]; + readTime: number; + domainUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/ConversationReadCountTaskMessage.pdsc + + export interface ConversationReadCountTaskMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + identityUrn: string; + requestTime: number; + domainUrn: string; + conversationReadCountUpdates: ConversationReadCountUpdate[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/ConversationReadCountUpdate.pdsc + + export interface ConversationReadCountUpdate { + conversationUrn: string; + readCount: number; + totalCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/MessageRequestUpdateRetryTaskMessage.pdsc + + export interface MessageRequestUpdateRetryTaskMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + actorUrn: string; + threadUrn: string; + patchRequestJson: string; + updateTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/MessagingBodySyncTriggerTaskMessage.pdsc + + export interface MessagingBodySyncTriggerTaskMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + messagingBodyUrn: string; + messagingDomainUrn: string; + identityUrns: string[]; + updateTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/MessagingConversationSyncTriggerTaskMessage.pdsc + + export interface MessagingConversationSyncTriggerTaskMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + messagingConversationUrn: string; + messagingDomainUrn: string; + identityUrns: string[]; + updateTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/MessagingDeliveryRetryLabelsMessage.pdsc + + export interface MessagingDeliveryRetryLabelsMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + domainUrn: string; + conversationUrn: string; + participantsToLabels: { [id: string]: string[] }; + retryLabelAction: retryLabelAction; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/MessagingHistoryCopyTaskMessage.pdsc + + export interface MessagingHistoryCopyTaskMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + actorUrn: string; + recipientUrn: string; + conversationUrn: string; + createdBeforeTime: number; + numMessagesToCopy: number; + originalRequestTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/MessagingOlympusToCommReplicationFailedMessage.pdsc + + export interface MessagingOlympusToCommReplicationFailedMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + messagingMessageUrn?: string; + messagingThreadUrn?: string; + originalRequestTime: number; + identityUrn: string; + participantUrns: string[]; + threadExtensionContent?: Com.Linkedin.Avro2pegasus.Messages.Common.Messaging.ThreadExtensionContent; + retryAttemptCount: number; + messagingThreadTimeBoundedReplicationOperation?: MessagingThreadTimeBoundedReplicationOperationType; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/MessagingThreadTimeBoundedReplicationOperationType.pdsc + + export type MessagingThreadTimeBoundedReplicationOperationType = 'DELETE' | 'MARK_READ' | 'MARK_UNREAD'; + // Generated from: com/linkedin/avro2pegasus/messages/messaging/PushNotificationListMessage.pdsc + + export interface PushNotificationListMessage { + recipientUrn: string; + draftNotificationList: Com.Linkedin.Avro2pegasus.Notifications.Avro.DraftNotification[]; + pushNotificationMessageList: Com.Linkedin.Avro2pegasus.Events.Messaging.PushNotificationMessage[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/messaging/retryLabelAction.pdsc + + export type retryLabelAction = 'ADD_LABEL' | 'REMOVE_LABEL'; + } + namespace Mirror { + // Generated from: com/linkedin/avro2pegasus/messages/mirror/UserGeneratedContentRawGestureEvent.pdsc + + export interface UserGeneratedContentRawGestureEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + actorUrn: string; + targetUrn: string; + timestamp: number; + gestureType: Com.Linkedin.Avro2pegasus.Events.Common.Mirror.GestureType; + isUndo: boolean; + gesturePrivacySetting?: Com.Linkedin.Avro2pegasus.Events.Common.Mirror.GesturePrivacySetting; + } + } + namespace Mobile { + // Generated from: com/linkedin/avro2pegasus/messages/mobile/Guid.pdsc + + export type Guid = string; + // Generated from: com/linkedin/avro2pegasus/messages/mobile/IPAddress.pdsc + + export type IPAddress = string; + // Generated from: com/linkedin/avro2pegasus/messages/mobile/MobilePageViewPinotMessage.pdsc + + export interface MobilePageViewPinotMessage { + memberId: number; + viewerUrn?: string; + time: number; + server: string; + service: string; + environment?: string; + guid: Guid; + treeId?: Com.Linkedin.Avro2pegasus.Events.fixed_16; + requestId?: number; + impersonatorId?: string; + browserId?: string; + sessionId?: string; + ip?: string; + pageKey?: string; + path?: string; + locale?: string; + interfaceLocale?: string; + referer?: string; + userAgent?: string; + ipAsBytes?: IPAddress; + osName?: string; + osVersion?: string; + deviceModel?: string; + appVersion?: string; + pageType: PageType; + errorMessageKey?: string; + trackingCode?: string; + abTestCode?: string; + carrier?: string; + orientation?: string; + deviceCFUUID?: string; + clientTimestamp?: string; + totalTime: number; + minutesSinceEpoch: number; + viewCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/mobile/PageType.pdsc + + export type PageType = 'full' | 'ajax' | 'iframe' | 'redirect' | 'api' | 'form' | 'router' | 'error'; + } + namespace Modeldeployment { + // Generated from: com/linkedin/avro2pegasus/messages/modeldeployment/AppliedTopologyUpdateNotificationMessage.pdsc + + export interface AppliedTopologyUpdateNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + targetUrn: string; + modelGroupUrn: string; + fabricUrn: string; + productUrn: string; + productTag?: string; + updatedTime: number; + intentId: number; + } + } + namespace Monarch { + // Generated from: com/linkedin/avro2pegasus/messages/monarch/ActionTypeEnum.pdsc + + export type ActionTypeEnum = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/messages/monarch/ChangeActionType.pdsc + + export type ChangeActionType = 'CREATE' | 'UPDATE' | 'DELETE' | 'MERGE'; + // Generated from: com/linkedin/avro2pegasus/messages/monarch/ConflictDetectionNotificationMessage.pdsc + + export interface ConflictDetectionNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + customerUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/monarch/CustomerMasterBatchNotificationMessage.pdsc + + export interface CustomerMasterBatchNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + serviceName: string; + fabricUrn: string; + messages: CustomerMasterChangeMessage[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/monarch/CustomerMasterChangeMessage.pdsc + + export interface CustomerMasterChangeMessage { + changeUrn: string; + entityUrn: string; + actionType: ChangeActionType; + } + // Generated from: com/linkedin/avro2pegasus/messages/monarch/CustomerMasterNotificationMessage.pdsc + + export interface CustomerMasterNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + changeUrn: string; + createdTime: number; + serviceName: string; + fabricUrn: string; + entityUrn: string; + actionType: ActionTypeEnum; + } + // Generated from: com/linkedin/avro2pegasus/messages/monarch/DynamicsNotificationMessage.pdsc + + export interface DynamicsNotificationMessage { + recordId: string; + entityType: EntityTypeEnum; + actionType: ActionTypeEnum; + actorUrn: string; + changedFields?: string[]; + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/monarch/EntityTypeEnum.pdsc + + export type EntityTypeEnum = 'ACCOUNT' | 'CONTACT' | 'OPPORTUNITY' | 'CASE' | 'INCIDENT'; + } + namespace Moneyentityrouting { + // Generated from: com/linkedin/avro2pegasus/messages/moneyentityrouting/EntityBasedRoutingDataMessage.pdsc + + export interface EntityBasedRoutingDataMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + entityUrn: string; + toFabricUrn: string; + } + } + namespace Mynetwork { + // Generated from: com/linkedin/avro2pegasus/messages/mynetwork/NotificationChannel.pdsc + + export type NotificationChannel = 'HERO' | 'EMAIL'; + // Generated from: com/linkedin/avro2pegasus/messages/mynetwork/RecommendationTargetingMessage.pdsc + + export interface RecommendationTargetingMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + targetMemberUrn: string; + notificationChannel: NotificationChannel; + } + } + namespace Nano { + // Generated from: com/linkedin/avro2pegasus/messages/nano/AccountTeamChangeMessage.pdsc + + export interface AccountTeamChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + transactionId?: string; + teamChangeRequestAcknowledgement: AccountTeamChangeRequestAcknowledgement[]; + accountTeamMemberList: AccountTeamMemberList[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/nano/AccountTeamChangeRequestAcknowledgement.pdsc + + export interface AccountTeamChangeRequestAcknowledgement { + requestId: number; + isSuccessful: boolean; + error?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/nano/AccountTeamMember.pdsc + + export interface AccountTeamMember { + teamMemberRole: string; + employeeId: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/nano/AccountTeamMemberList.pdsc + + export interface AccountTeamMemberList { + customerUrn: string; + accountTeamMembers: AccountTeamMember[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/nano/agreementSource.pdsc + + export type agreementSource = 'ABACUS'; + // Generated from: com/linkedin/avro2pegasus/messages/nano/CrmAgreementMessage.pdsc + + export interface CrmAgreementMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + agreementId: string; + externalEntityUrn?: string; + eventType: eventType; + agreementSource: agreementSource; + } + // Generated from: com/linkedin/avro2pegasus/messages/nano/CrmTaskMessage.pdsc + + export interface CrmTaskMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + recordId?: string; + externalEntityUrn?: string; + event: Event; + eventSource: EventSource; + isSuccess: boolean; + errorMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/nano/Event.pdsc + + export type Event = 'MIGRATED'; + // Generated from: com/linkedin/avro2pegasus/messages/nano/eventDirection.pdsc + + export type eventDirection = 'INBOUND' | 'OUTBOUND'; + // Generated from: com/linkedin/avro2pegasus/messages/nano/EventSource.pdsc + + export type EventSource = 'CITADEL' | 'SALESFORCE'; + // Generated from: com/linkedin/avro2pegasus/messages/nano/eventType.pdsc + + export type eventType = 'AGREEMENT_READY_FOR_SIGNATURES'; + // Generated from: com/linkedin/avro2pegasus/messages/nano/SalesforceEvent.pdsc + + export interface SalesforceEvent { + objectName?: string; + recordId?: string; + eventType?: string; + status?: string; + sourceId?: string; + systemName?: string; + direction?: eventDirection; + isPushToServiceEnabled?: boolean; + inputParameters?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/nano/SalesforceEventNotificationMessage.pdsc + + export interface SalesforceEventNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + salesforceEvents: SalesforceEvent[]; + } + } + namespace Nlp { + // Generated from: com/linkedin/avro2pegasus/messages/nlp/DocumentsAnalysisRequest.pdsc + + export interface DocumentsAnalysisRequest { + header: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + documents: Com.Linkedin.Avro2pegasus.Events.Common.Nlp.Document[]; + } + } + namespace Notifications { + // Generated from: com/linkedin/avro2pegasus/messages/notifications/app.pdsc + + export type app = 'VOYAGER' | 'FLAGSHIP_VOYAGER' | 'COMMUNITIES'; + // Generated from: com/linkedin/avro2pegasus/messages/notifications/MobilePushNotificationMessage.pdsc + + export interface MobilePushNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + notificationV2Urn: string; + receivingApps: app[]; + recipientUrn: string; + groupByUrn: string; + notificationType: string; + triggerUrns: string[]; + urnsCount: number; + latestTriggerTime: number; + } + } + namespace Obhc { + // Generated from: com/linkedin/avro2pegasus/messages/obhc/HostCheck.pdsc + + export type HostCheck = + | 'HOST_INODES' + | 'HOST_DISKSPACE' + | 'HOST_CFENGINE_STATUS' + | 'HOST_LID_LAUNCHER' + | 'HOST_RAID' + | 'HOST_SALT' + | 'HEARTBEAT' + | 'ESPRESSO_NFS_HUNG' + | 'ESPRESSO_NFS_MOUNTED' + | 'SEARCH_LIMITS' + | 'PKI_TRUSTSTORE' + | 'PKI_HOSTCERT' + | 'HOST_USER_NAMESPACE_ENABLED' + | 'HOST_VAPP_USERS_PRESENT' + | 'ZING_LICENSE' + | 'ZING_ZST' + | 'PCX_HOST'; + // Generated from: com/linkedin/avro2pegasus/messages/obhc/HostCheckMessage.pdsc + + export interface HostCheckMessage { + hostname: string; + check: HostCheck; + result: boolean; + checkedTime: number; + errorMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/obhc/Protocol.pdsc + + export type Protocol = 'TCP' | 'UDP' | 'HTTP' | 'HTTPS'; + // Generated from: com/linkedin/avro2pegasus/messages/obhc/ServiceCheck.pdsc + + export type ServiceCheck = 'PORT' | 'CGROUP_CGROUPSPROCESSCHK' | 'CGROUP_MEMSWFAILCNT' | 'PKI_SERVICECERT'; + // Generated from: com/linkedin/avro2pegasus/messages/obhc/ServiceCheckMessage.pdsc + + export interface ServiceCheckMessage { + hostname: string; + check: ServiceCheck; + protocol?: Protocol; + port?: number; + serviceName: string; + instanceDiscriminator: string; + result: boolean; + checkedTime: number; + errorMessage?: string; + } + } + namespace Opportunitymarketplace { + // Generated from: com/linkedin/avro2pegasus/messages/opportunitymarketplace/MarketplaceInactiveMessage.pdsc + + export interface MarketplaceInactiveMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/opportunitymarketplace/MarketplaceMessageRepliedMessage.pdsc + + export interface MarketplaceMessageRepliedMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + messagingThreadUrn: string; + senderUrn: string; + } + } + namespace Orbitmigration { + // Generated from: com/linkedin/avro2pegasus/messages/orbitmigration/AccountTeamMember.pdsc + + export interface AccountTeamMember { + salesforceUserName: string; + teamMemberRole?: string; + corpUserUrn?: string; + roleType: RoleType; + } + // Generated from: com/linkedin/avro2pegasus/messages/orbitmigration/ChangelogEventType.pdsc + + export type ChangelogEventType = + | 'ACCOUNT_CREATE' + | 'ACCOUNT_UPDATE' + | 'ACCOUNT_DELETED' + | 'ACCOUNT_TEAM_UPDATE' + | 'USER_UPDATE' + | 'CASE_TRANSFER' + | 'RAMPED_OPP_ASSOCIATION' + | 'RAMPED_ACCOUNT_PLAN_ASSOCIATION' + | 'RAMPED_TASK_ASSOCIATION' + | 'MF_CAP_SEAT_CREATE' + | 'MF_ACCOUNT_TRANSFER'; + // Generated from: com/linkedin/avro2pegasus/messages/orbitmigration/ModeType.pdsc + + export type ModeType = 'OPPORTUNITIES_ONLY' | 'OPPORTUNITIES_AND_TASKS' | 'TASKS_ONLY' | 'NONE'; + // Generated from: com/linkedin/avro2pegasus/messages/orbitmigration/RoleType.pdsc + + export type RoleType = + | 'HS_Account_Executive' + | 'HS_COMP_TCoverage_In' + | 'HS_Media_Solution_Manager_APAC' + | 'HS_Media_Solution_Manager_EMEA' + | 'HS_Media_Solution_Manager_NAMER' + | 'HS_Omaha_RM_CSR' + | 'HS_Renewal_Specialist' + | 'HS_RM' + | 'LSS_Account_Executive' + | 'LSS_RM' + | 'LSS_TCoverage_In' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/messages/orbitmigration/SalesforceAccountTeamChangeNotificationMessage.pdsc + + export interface SalesforceAccountTeamChangeNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + customerUrn: string; + updatedTime: number; + accountTeamMembers: AccountTeamMember[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/orbitmigration/SalesforceChangelogProcessorQueueMessage.pdsc + + export interface SalesforceChangelogProcessorQueueMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + id: string; + recordId: string; + eventType: ChangelogEventType; + mode?: ModeType; + failureId?: string; + createdByEmail?: string; + status: StatusType; + } + // Generated from: com/linkedin/avro2pegasus/messages/orbitmigration/StatusType.pdsc + + export type StatusType = 'PENDING' | 'QUEUED' | 'IN_PROGRESS' | 'COMPLETE' | 'ERROR'; + } + namespace Orca { + // Generated from: com/linkedin/avro2pegasus/messages/orca/OrcaJobIdMessage.pdsc + + export interface OrcaJobIdMessage { + orcaJobId: string; + } + } + namespace Organization { + // Generated from: com/linkedin/avro2pegasus/messages/organization/FundingEventMentionMessage.pdsc + + export interface FundingEventMentionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + investeeUrn: string; + ingestedContentSource?: IngestedContentMentionSource; + eventDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/messages/organization/IngestedContentMentionSource.pdsc + + export interface IngestedContentMentionSource { + ingestedContentUrn: string; + url: string; + title: string; + mentionsInTitle: TextSpan[]; + contentProviderName?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/organization/TextSpan.pdsc + + export interface TextSpan { + startIndex: number; + endIndex: number; + } + } + namespace Payments { + // Generated from: com/linkedin/avro2pegasus/messages/payments/CommerceCustomerReacquireMessage.pdsc + + export interface CommerceCustomerReacquireMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + pageKey?: string; + path?: string; + locale?: string; + userAgent?: string; + impersonatorId?: string; + memberId: number; + environment?: string; + cartUrns: string[]; + visitedTime: number; + attemptedStep: Com.Linkedin.Avro2pegasus.Events.Payments.CheckoutAttemptedStep; + reacquireType: Com.Linkedin.Avro2pegasus.Events.Payments.ReacquireType; + } + // Generated from: com/linkedin/avro2pegasus/messages/payments/PaymentEntityUpdateMessage.pdsc + + export interface PaymentEntityUpdateMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + } + } + namespace Pneuma { + // Generated from: com/linkedin/avro2pegasus/messages/pneuma/PneumaReviewRequestMessage.pdsc + + export interface PneumaReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + targetUrn: string; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + reviewMetadata?: Com.Linkedin.Avro2pegasus.Messages.Common.AnyRecord; + } + } + namespace Premium { + // Generated from: com/linkedin/avro2pegasus/messages/premium/CareerExpertResumeGcoAccessMessage.pdsc + + export interface CareerExpertResumeGcoAccessMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + purchaserUrn: string; + resumeUrn: string; + interestedTitles: string; + specificQuestions: string; + resumeFeedbackToolsUsed: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/premium/PremiumSubscriptionAutomationActionType.pdsc + + export type PremiumSubscriptionAutomationActionType = 'NEW_PROVISION' | 'RENEWAL'; + // Generated from: com/linkedin/avro2pegasus/messages/premium/PremiumSubscriptionAutomationGrantMemberType.pdsc + + export type PremiumSubscriptionAutomationGrantMemberType = 'FULLTIME_EMPLOYEE' | 'ALUMNUS'; + // Generated from: com/linkedin/avro2pegasus/messages/premium/PremiumSubscriptionAutomationMessage.pdsc + + export interface PremiumSubscriptionAutomationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberId: number; + productId?: number; + memberType: PremiumSubscriptionAutomationGrantMemberType; + actionType: PremiumSubscriptionAutomationActionType; + } + } + namespace Proml { + // Generated from: com/linkedin/avro2pegasus/messages/proml/DummySchemaGenerationMessage.pdsc + + export interface DummySchemaGenerationMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + tensor: Com.Linkedin.Avro2pegasus.Events.Common.Proml.Tensor; + } + } + namespace Props { + // Generated from: com/linkedin/avro2pegasus/messages/props/OperationType.pdsc + + export type OperationType = 'CREATED' | 'DELETED' | 'UPDATED'; + // Generated from: com/linkedin/avro2pegasus/messages/props/PropChangeMessage.pdsc + + export interface PropChangeMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + viewerUrn?: string; + vieweeUrn: string; + propUrn: string; + propType: PropType; + eventTime: number; + operationType: OperationType; + } + // Generated from: com/linkedin/avro2pegasus/messages/props/PropType.pdsc + + export type PropType = 'BIRTHDAY' | 'INVITATION' | 'JOB_CHANGE' | 'MEETING' | 'WORK_ANNIVERSARY'; + } + namespace Publishing { + // Generated from: com/linkedin/avro2pegasus/messages/publishing/ArticleDeleteEvent.pdsc + + export interface ArticleDeleteEvent { + linkedInArticleUrn: string; + newsArticleUrn?: string; + articlePermlink: string; + actorUrn: string; + deleteTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/publishing/ArticlePostEvent.pdsc + + export interface ArticlePostEvent { + linkedInArticleUrn?: string; + articleTitle: string; + articlePermLink: string; + articleImageUrl?: string; + actorUrn: string; + isPreviouslyPublished?: boolean; + isDistributionSuppressed?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/publishing/EligibleArticleMediaForDeletionMessage.pdsc + + export interface EligibleArticleMediaForDeletionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + linkedinArticleUrn: string; + version?: number; + mediaUrn: string; + mediaRemovedFromArticleTime?: number; + latestSeenOnEtlVersion?: number; + mediaUsageType: MediaUsageType; + isBypassVersionCheck: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/publishing/MediaUsageType.pdsc + + export type MediaUsageType = 'EMBEDDED_IMAGE' | 'COVER_IMAGE'; + namespace B2breviews { + // Generated from: com/linkedin/avro2pegasus/messages/publishing/b2breviews/B2bReviewPublishedMessage.pdsc + + export interface B2bReviewPublishedMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + articleTitle: string; + articlePermLink: string; + articleImageUrl?: string; + actorUrn: string; + isPreviouslyPublished: boolean; + isSharedWithG2Crowd: boolean; + productUrn: string; + productRating?: number; + } + } + } + namespace Pulse { + // Generated from: com/linkedin/avro2pegasus/messages/pulse/PulsePushNotificationMessage.pdsc + + export interface PulsePushNotificationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + articleUrn?: string; + actorUrn?: string; + notificationType: string; + recipientUrns: string[]; + headline?: string; + url?: string; + locale?: Com.Linkedin.Avro2pegasus.Events.Locale; + countryUrns: string[]; + industryUrns: string[]; + companyUrns: string[]; + recipents: Recipient[]; + contentUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/pulse/Recipient.pdsc + + export interface Recipient { + memberUrn: string; + attributes?: { [id: string]: string }; + } + } + namespace Pymk { + // Generated from: com/linkedin/avro2pegasus/messages/pymk/ActivityLevel.pdsc + + export type ActivityLevel = 'Unknown' | 'Onboarding' | 'Dormant' | 'OneByOne' | 'OneByThree' | 'FourByFour'; + // Generated from: com/linkedin/avro2pegasus/messages/pymk/PymkHeroTargetsMessage.pdsc + + export interface PymkHeroTargetsMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/pymk/PymkMemberFeatureUpdateMessage.pdsc + + export interface PymkMemberFeatureUpdateMessage { + memberUrn: string; + visitProbabilityForInvite: number; + activityLevel: ActivityLevel; + connectionCount: number; + lastConnectionAcceptedAtTime: number; + pVisitBasicModelScore: number; + pVisitEqmGainModelScore: number; + pVisitMobileModelDeltaScore: number; + contribLevel: number; + invReceivedCount: number; + publicContributor: number; + privateContributor: number; + totalActiveConnections: number; + privateActiveConnections: number; + publicActiveConnections: number; + allContributionCount: number; + likeCount: number; + commentCount: number; + shareCount: number; + articleContribCount: number; + privateContribCount: number; + allFeedContribCount: number; + feedLikeCount: number; + feedCommentCount: number; + feedShareCount: number; + mfInviter: number[]; + mfInvitee: number[]; + boostFactorConsumerOptimus: number; + utilityConsumerOptimus: number; + } + } + namespace Race { + // Generated from: com/linkedin/avro2pegasus/messages/race/AutoScalingGroupMessage.pdsc + + export interface AutoScalingGroupMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + autoScalingGroupUrn: string; + messageId: number; + retryCount: number; + workflowId?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/race/MessageType.pdsc + + export type MessageType = 'TRIGGER' | 'ABORT'; + // Generated from: com/linkedin/avro2pegasus/messages/race/ScalingScheduleMessage.pdsc + + export interface ScalingScheduleMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + autoScalingGroupUrn: string; + scalingScheduleUrn: string; + messageId: number; + retryCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/race/TrafficShiftMessage.pdsc + + export interface TrafficShiftMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + trafficShiftId: string; + messageType?: MessageType; + } + } + namespace Realtime { + // Generated from: com/linkedin/avro2pegasus/messages/realtime/RealtimeOnlineEntitiesMessage.pdsc + + export interface RealtimeOnlineEntitiesMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + onlineEntityUrns: string[]; + } + } + namespace Recruiter { + // Generated from: com/linkedin/avro2pegasus/messages/recruiter/HiringPlatformMigrationOfflineValidationAndFixRequestMessage.pdsc + + export interface HiringPlatformMigrationOfflineValidationAndFixRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + entities: Com.Linkedin.Avro2pegasus.Messages.Common.Recruiter.HiringPlatformMigrationValidationAndFixCapEntity[]; + contractUrn: string; + migrationUseCase: Com.Linkedin.Avro2pegasus.Events.Common.Recruiter.HiringPlatformMigrationUseCase; + isFixRequested: boolean; + migrationDebugTrackingId: string; + } + } + namespace Referrals { + // Generated from: com/linkedin/avro2pegasus/messages/referrals/CandidateRecommendation.pdsc + + export interface CandidateRecommendation { + candidateMemberUrn: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/referrals/ReferralRecommendationsForJobMessage.pdsc + + export interface ReferralRecommendationsForJobMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + employeeMemberUrn: string; + companyUrn: string; + jobPostingUrn: string; + candidateRecommendations: CandidateRecommendation[]; + } + } + namespace Relationships { + // Generated from: com/linkedin/avro2pegasus/messages/relationships/ActionType.pdsc + + export type ActionType = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/messages/relationships/CalendarChangeNotification.pdsc + + export interface CalendarChangeNotification { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + createdEvents: CalendarEvent[]; + updatedEvents: CalendarEvent[]; + deletedEvents: CalendarEvent[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/relationships/CalendarEvent.pdsc + + export interface CalendarEvent { + eventUrn: string; + startTime: number; + attendeeCount: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/relationships/CalendarEventChangeNotification.pdsc + + export interface CalendarEventChangeNotification { + calendarEvent: string; + eventAction: ActionType; + } + // Generated from: com/linkedin/avro2pegasus/messages/relationships/ContactsBirthdaysPropsMessage.pdsc + + export interface ContactsBirthdaysPropsMessage { + viewerUrn: string; + mergedContactUrns: string[]; + month: number; + day: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/relationships/PostponeRelationshipOpportunityMessage.pdsc + + export interface PostponeRelationshipOpportunityMessage { + member: string; + relationshipOpportunityKey: string; + postponedTo: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/relationships/VieweeBirthdayPropsMessage.pdsc + + export interface VieweeBirthdayPropsMessage { + vieweeUrn: string; + connectionUrns: string[]; + month: number; + day: number; + } + } + namespace Resume { + // Generated from: com/linkedin/avro2pegasus/messages/resume/ResumeAnnotationGroupSetupTriggerMessage.pdsc + + export interface ResumeAnnotationGroupSetupTriggerMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + annotatorUrns: string[]; + mediaUrns: string[]; + } + } + namespace Reviewqueue { + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/AdCreativeReviewItemClosingInfo.pdsc + + export interface AdCreativeReviewItemClosingInfo { + rejectionReasons: Com.Linkedin.Avro2pegasus.Events.Ads.RejectionCode[]; + cardsRejectionInformation: Com.Linkedin.Avro2pegasus.Events.Ads.CardRejectionInformation[]; + messageRejectionInformation?: Com.Linkedin.Avro2pegasus.Events.Ads.MessageRejectionInformation[]; + creativeContentTimestamp?: number; + reviewSession?: Com.Linkedin.Avro2pegasus.Messages.Ads.Review.ReviewSession; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/AdReviewItemAction.pdsc + + export type AdReviewItemAction = 'UPSERT_INACTIVE' | 'UPSERT_PENDING' | 'UPDATE_PENDING' | 'UPDATE_CLOSED'; + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/AdReviewRequestMessage.pdsc + + export interface AdReviewRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentReviewInfo: ContentReviewInfo; + action: AdReviewItemAction; + campaignUrn?: string; + referenceUrn?: string; + reviewTrigger?: AdReviewTriggerAction; + reviewSession?: Com.Linkedin.Avro2pegasus.Messages.Ads.Review.ReviewSession; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/AdReviewTriggerAction.pdsc + + export type AdReviewTriggerAction = + | 'USER_REPORT' + | 'CREATIVE_CREATE' + | 'CREATIVE_UPDATE' + | 'CAMPAIGN_UPDATE' + | 'ADS_TRANSPARENCY_USER_REPORT' + | 'ASSOCIATED_FORM_UPDATE' + | 'SPAM_URL_DETECT' + | 'NON_FUNCTIONAL_URL_DETECT'; + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/badFieldEnum.pdsc + + export type badFieldEnum = 'FIRST_NAME' | 'LAST_NAME' | 'MAIDEN_NAME' | 'HEADLINE'; + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ChinaJobPosterReviewRequestMessage.pdsc + + export interface ChinaJobPosterReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPosterVerificationUrn: string; + priority: ReviewItemPriority; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ChinaJobPosterReviewRequestMessageV2.pdsc + + export interface ChinaJobPosterReviewRequestMessageV2 { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPosterVerificationUrn: string; + priority: ReviewItemPriority; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ClassificationContentData.pdsc + + export interface ClassificationContentData { + text: string; + contentUrn?: string; + authorUrn: string; + contentSource: Com.Linkedin.Avro2pegasus.Events.ContentSource; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ClassificationReviewRequestMessage.pdsc + + export interface ClassificationReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentLabel: ContentLabel; + classifierData: ClassifierData; + contentData: ClassificationContentData; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ClassifiedUserReportedData.pdsc + + export interface ClassifiedUserReportedData { + classifierLabels: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.UserReportedClassifierLabel[]; + userReportedFlagReasons: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.UserReportedFlagReason[]; + userReportedFlaggingInfo?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.UserFlaggingInfo[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ClassifierData.pdsc + + export interface ClassifierData { + classifierId: string; + classifierMode: ClassifierMode; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ClassifierInfo.pdsc + + export interface ClassifierInfo { + classifierUrn: string; + classifierVersion: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ClassifierMode.pdsc + + export type ClassifierMode = 'PASSIVE' | 'ACTIVE'; + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ClosingInfo.pdsc + + export interface ClosingInfo { + adCreativeReviewItemClosingInfo?: AdCreativeReviewItemClosingInfo; + grantReviewItemClosingInfo?: GrantReviewItemClosingInfo; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ContentLabel.pdsc + + export interface ContentLabel { + score: number; + isClassifiedLowQuality: boolean; + isClassifiedSpam: boolean; + spamConfidence?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamConfidence; + spamType: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType; + rejectedContent?: ProfileTOSRejectedContent; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ContentRecommendationReviewRequestMessage.pdsc + + export interface ContentRecommendationReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentReviewInfo: ContentReviewInfo; + contentRecommendationTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + rankingScore: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ContentReviewInfo.pdsc + + export interface ContentReviewInfo { + contentUrn: string; + authorUrn: string; + contentLastModifiedTime?: number; + priority: ContentReviewPriority; + contentSource?: Com.Linkedin.Avro2pegasus.Events.ContentSource; + inferredLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + relatedContents?: ReviewContentMetadata[]; + originLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + ucfContextUrn?: string; + contentHash?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentHash; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ContentReviewPriority.pdsc + + export type ContentReviewPriority = 'LOW' | 'MEDIUM' | 'HIGH'; + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/CrowdSourcingSpamReviewRequestMessage.pdsc + + export interface CrowdSourcingSpamReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + content: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.Content; + locale?: Com.Linkedin.Avro2pegasus.Events.Locale; + spamClassifierOutcome?: SpamClassifierOutcome; + priority: ContentReviewPriority; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + originatingSource: OriginatingSourceEnum; + classifiedUserReportedData?: ClassifiedUserReportedData; + trainingClassifierInfo?: ClassifierInfo; + isReclassificationInitiatedFlow?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/EnterpriseContentReviewRequestMessage.pdsc + + export interface EnterpriseContentReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentReviewInfo: ContentReviewInfo; + classifiedUserReportedData?: ClassifiedUserReportedData; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/FailureReason.pdsc + + export type FailureReason = + | 'UNSUPPORTED_LOCATION' + | 'DUPLICATE' + | 'STAFFING_AGENCY' + | 'CONTACT_INFORMATION_INCLUDED' + | 'LOW_QUALITY' + | 'SPAM' + | 'MISSING_INFORMATION' + | 'AUTOMATION_ERROR' + | 'OTHER'; + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/GrantReviewItemClosingInfo.pdsc + + export interface GrantReviewItemClosingInfo { + reviewNotes?: string; + approvedPeriod: Com.Linkedin.Avro2pegasus.Events.Common.DateRange; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/KeywordReviewRequestMessage.pdsc + + export interface KeywordReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentReviewInfo: ContentReviewInfo; + originCountry?: Com.Linkedin.Avro2pegasus.Events.Country; + targetCountry?: Com.Linkedin.Avro2pegasus.Events.Country; + keywordIds?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ListeningReviewRequestMessage.pdsc + + export interface ListeningReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentInfo: ContentReviewInfo; + listeningCriteriaId: string; + rankScore: number; + listeningServiceTrackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/MemberReviewRequestMessage.pdsc + + export interface MemberReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + reviewReasons: ReviewReason[]; + priority: ReviewItemPriority; + modelInfo: ModelInfo; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/MemeReviewRequestMessage.pdsc + + export interface MemeReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentReviewInfo: ContentReviewInfo; + spamClassifierOutcome?: SpamClassifierOutcome; + anomalyDetectorInfo?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.AnomalyDetectorInfo; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ModelInfo.pdsc + + export interface ModelInfo { + modelName: string; + modelVersion: string; + modelScore?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/OriginatingSourceEnum.pdsc + + export type OriginatingSourceEnum = + | 'MACHINE_LEARNT' + | 'USER_FLAGGING' + | 'MODEL_DEVELOPMENT' + | 'METRICS_MEASUREMENT'; + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ProfileTOSRejectedContent.pdsc + + export interface ProfileTOSRejectedContent { + badFields: badFieldEnum[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ProfinderReviewRequestMessage.pdsc + + export interface ProfinderReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentReviewInfo: ContentReviewInfo; + serviceCategoryUrn?: string; + placeUrn: string; + initialReviewState?: ReviewState; + validationFailureReason?: FailureReason; + validationFailureDescription?: string; + geoPlaceUrn?: string; + serviceSkillUrn?: string; + marketplaceType?: Com.Linkedin.Avro2pegasus.Common.Marketplaceplatform.MarketplaceType; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ReviewContentMetadata.pdsc + + export interface ReviewContentMetadata { + contentUrn: string; + authorUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ReviewItemClosedMessage.pdsc + + export interface ReviewItemClosedMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + reviewQueueId: string; + action: string; + reviewItemId: number; + contentUrn: string; + authorUrn?: string; + contentSource?: Com.Linkedin.Avro2pegasus.Events.ContentSource; + reviewItemMetadata?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentData; + closingInfo?: ClosingInfo; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ReviewItemPriority.pdsc + + export type ReviewItemPriority = 'LOW' | 'MEDIUM' | 'HIGH'; + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ReviewReason.pdsc + + export interface ReviewReason { + tag: string; + notes?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/ReviewState.pdsc + + export type ReviewState = 'AUTO_APPROVED'; + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/SamplingMode.pdsc + + export type SamplingMode = 'GENERAL' | 'POSITIVE'; + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/SpamClassifierOutcome.pdsc + + export interface SpamClassifierOutcome { + classifierInfo?: ClassifierInfo; + spamType?: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType; + contentLabelKey?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentLabelKey; + samplingModes: SamplingMode[]; + classifierMode: ClassifierMode; + score?: number; + isSpam: boolean; + isLowQuality: boolean; + contentType?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.ContentType; + contentUrn?: string; + contentSpamOutcomeDetail?: Com.Linkedin.Avro2pegasus.Events.Contentspam.ContentSpamOutcomeDetail; + classificationTimestamp?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/reviewqueue/SpamReviewRequestMessage.pdsc + + export interface SpamReviewRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentReviewInfo: ContentReviewInfo; + spamTypes: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + contentClassificationTrackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + classifiedUserReportedData?: ClassifiedUserReportedData; + spamClassifierOutcome?: SpamClassifierOutcome; + anomalyDetectorInfo?: Com.Linkedin.Avro2pegasus.Messages.Contentfilter.AnomalyDetectorInfo; + classifierOutcomes: SpamClassifierOutcome[]; + classifiedContentUrn?: string; + userRequestHeader?: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + } + } + namespace Routing { + // Generated from: com/linkedin/avro2pegasus/messages/routing/AppDownloadRequestMessage.pdsc + + export interface AppDownloadRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + requestHeader: Com.Linkedin.Avro2pegasus.Events.UserRequestHeader; + mobileHeader?: Com.Linkedin.Avro2pegasus.Events.MobileHeader; + } + } + namespace Rtf { + // Generated from: com/linkedin/avro2pegasus/messages/rtf/DownstreamDataSummary.pdsc + + export interface DownstreamDataSummary { + abbreviatedRequest: string; + abbreviatedResponse: string; + count: number; + replayLatency: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/rtf/EventType.pdsc + + export type EventType = 'START' | 'STATS' | 'DONE'; + // Generated from: com/linkedin/avro2pegasus/messages/rtf/rawDownstreamRequestResponsePair.pdsc + + export interface rawDownstreamRequestResponsePair { + rawDownstreamRequest: string; + rawDownstreamResponse: string; + latency: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/rtf/RTFReplayStateMessage.pdsc + + export interface RTFReplayStateMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + eventType: EventType; + replayStats?: RTFReplayStats; + errorCount?: number; + errorMessage?: string; + epsilonReplayQueriesPerSecond?: number; + epsilonExecutionId?: number; + epsilonRunId?: number; + epsilonMetaData?: Com.Linkedin.Avro2pegasus.Messages.Common.Rtf.EpsilonMetaData; + } + // Generated from: com/linkedin/avro2pegasus/messages/rtf/RTFReplayStats.pdsc + + export interface RTFReplayStats { + requestNumber: number; + requestTime: number; + responseTime: number; + rawRequest: string; + rawResponse: string; + endPoint?: string; + executionId?: number; + testId?: string; + recordEventGuid?: string; + responseStatusCode?: number; + downstreamDataSummary?: DownstreamDataSummary[]; + downstreamData?: Com.Linkedin.Avro2pegasus.Messages.Common.Rtf.DownstreamOffset[]; + responseValidationResult?: boolean; + responseValidationMessage?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/rtf/RTFReqResStream.pdsc + + export interface RTFReqResStream { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + rawRequest: string; + downstreamData?: rawDownstreamRequestResponsePair[]; + endPoint?: string; + downstreamDataOffset?: Com.Linkedin.Avro2pegasus.Messages.Common.Rtf.DownstreamOffset[]; + } + } + namespace Salary { + // Generated from: com/linkedin/avro2pegasus/messages/salary/JobPostingProvidedCompensationDeleteMessage.pdsc + + export interface JobPostingProvidedCompensationDeleteMessage { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/salary/JobPostingProvidedCompensationUpsertMessage.pdsc + + export interface JobPostingProvidedCompensationUpsertMessage { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + jobPostingUrn: string; + posterProvidedCompensations: Com.Linkedin.Avro2pegasus.Events.Common.IndividualCompensation[]; + totalAdditionalCompensation?: Com.Linkedin.Avro2pegasus.Events.Common.Compensation; + } + // Generated from: com/linkedin/avro2pegasus/messages/salary/SalarySliceMessage.pdsc + + export interface SalarySliceMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + slice: string; + } + } + namespace Sales { + // Generated from: com/linkedin/avro2pegasus/messages/sales/AdSegmentCountMessage.pdsc + + export interface AdSegmentCountMessage { + adSegmentUrn: string; + count: number; + sponsoredAccountUrn?: string; + contractUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/ChangeType.pdsc + + export type ChangeType = 'LEAVE' | 'JOIN'; + // Generated from: com/linkedin/avro2pegasus/messages/sales/CompanyHeadcountGrowthSignal.pdsc + + export interface CompanyHeadcountGrowthSignal { + companyUrn: string; + department: string; + period: Com.Linkedin.Avro2pegasus.Events.Common.DateRange; + growthAmount: number; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/CompanyJobOpeningGrowthSignal.pdsc + + export interface CompanyJobOpeningGrowthSignal { + companyUrn: string; + department: string; + period: Com.Linkedin.Avro2pegasus.Events.Common.DateRange; + growthRate: number; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/CompanySeniorLeadershipChangeSignal.pdsc + + export interface CompanySeniorLeadershipChangeSignal { + companyUrn: string; + leaderUrns: string[]; + period: Com.Linkedin.Avro2pegasus.Events.Common.DateRange; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + type: ChangeType; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/LeadPositionChangeMessage.pdsc + + export interface LeadPositionChangeMessage { + seatUrn: string; + contractUrn: string; + recipientMemberUrn: string; + leadMemberUrn: string; + newPositionUrn: string; + oldPositionUrn?: string; + positionChangeTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/PointDriveContractMigrationMessage.pdsc + + export interface PointDriveContractMigrationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contractUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/PointDriveSeatTransferStatusMessage.pdsc + + export interface PointDriveSeatTransferStatusMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + pointDriveUserId: string; + fromPointDriveOrgId: string; + toPointDriveOrgId: string; + isSuccessful: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/PresentationAsset.pdsc + + export interface PresentationAsset { + assetId: string; + note?: string; + heading?: string; + type: PresentationAssetType; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/PresentationAssetType.pdsc + + export type PresentationAssetType = + | 'DOCUMENT' + | 'LINK' + | 'IMAGE' + | 'MAP' + | 'THUMBNAIL' + | 'TEXT' + | 'VIDEO' + | 'GENERIC' + | 'ORIGINAL'; + // Generated from: com/linkedin/avro2pegasus/messages/sales/SalesAssetBundleTrackingConsentRevokeMessage.pdsc + + export interface SalesAssetBundleTrackingConsentRevokeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + trackingConsentUrn: string; + isPurgeMember?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/SalesContractAccessControlChangeMessage.pdsc + + export interface SalesContractAccessControlChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contractUrn: string; + isActive: boolean; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/SalesNavigatorEnterpriseStatus.pdsc + + export type SalesNavigatorEnterpriseStatus = 'ACTIVATED' | 'DECLINED' | 'INACTIVE' | 'INVITED'; + // Generated from: com/linkedin/avro2pegasus/messages/sales/SalesNavigatorEnterpriseType.pdsc + + export type SalesNavigatorEnterpriseType = 'TIER_1' | 'TIER_2' | 'TIER_3' | 'TEAM_LINK_EXTEND' | 'ADMIN_ONLY'; + // Generated from: com/linkedin/avro2pegasus/messages/sales/SalesNavigatorSeatUpdateMessage.pdsc + + export interface SalesNavigatorSeatUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contractId: number; + seatId: number; + name: string; + invitedEmail: string; + licenseAssignmentType: SalesNavigatorEnterpriseType; + licenseAssignmentStatus: SalesNavigatorEnterpriseStatus; + enterpriseApplicationInstanceUrn: string; + enterpriseLicenseAssignmentUrn?: string; + employeeId?: string; + enterpriseProfileUrn: string; + enterpriseGroupUrns?: string[]; + lastInvitedAt?: number; + activatedAt?: number; + revokedAt?: number; + isSubAdmin: boolean; + isFullAdmin: boolean; + isTleAdmin: boolean; + isNonAdminUser: boolean; + enterpriseGroupNames?: string[]; + timestamp: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/SalesSeatAccessControlChangeMessage.pdsc + + export interface SalesSeatAccessControlChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + seatUrn: string; + contractUrn: string; + memberUrn: string; + isActive: boolean; + roles: SeatRole[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/SalesSignal.pdsc + + export interface SalesSignal { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + companyHeadcountGrowthSignal?: CompanyHeadcountGrowthSignal; + companySeniorLeadershipChangeSignal?: CompanySeniorLeadershipChangeSignal; + companyJobOpeningGrowthSignal?: CompanyJobOpeningGrowthSignal; + associatedSeatUrns: string[]; + viewPresentationSignal?: ViewPresentationSignal; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/SalesWVMPKafkaMessage.pdsc + + export interface SalesWVMPKafkaMessage { + seatUrn: string; + contractUrn: string; + organizationUrn?: string; + viewerUrn: string; + prospectUrn?: string; + viewTime: number; + vieweeUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/sales/SeatRole.pdsc + + export type SeatRole = + | 'LSS_ADMIN_SEAT' + | 'SALES_USAGE_REPORT_SEAT' + | 'SALES_TEAMLINK_EXTEND_SEAT' + | 'SALES_SEAT_TIER0' + | 'SALES_SEAT_TIER1' + | 'SALES_SEAT_TIER2' + | 'SALES_SEAT_TIER3'; + // Generated from: com/linkedin/avro2pegasus/messages/sales/ViewPresentationSignal.pdsc + + export interface ViewPresentationSignal { + viewerUrn?: string; + viewerName?: string; + viewerEmail?: string; + viewedTime: number; + presentationTitle: string; + presentationAssets?: PresentationAsset[]; + presentationPreviewUrl: string; + presentationCoverImageUrl?: string; + viewerInsightsLink: string; + isEmailNotificationEnabled: boolean; + isIntroPresentation?: boolean; + presentationId?: string; + analyticId?: string; + pointDriveViewerId?: string; + countryUrn?: string; + placeCode?: string; + geoUrn?: string; + } + } + namespace Savedsearch { + // Generated from: com/linkedin/avro2pegasus/messages/savedsearch/GenericSearchHit.pdsc + + export interface GenericSearchHit { + entityUrn: string; + score: number; + type: SearchHitType; + } + // Generated from: com/linkedin/avro2pegasus/messages/savedsearch/GenericSearchHitV2.pdsc + + export interface GenericSearchHitV2 { + entityUrn: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/savedsearch/SavedSearchClientName.pdsc + + export type SavedSearchClientName = 'NEWS'; + // Generated from: com/linkedin/avro2pegasus/messages/savedsearch/SavedSearchResultUpdateMessage.pdsc + + export interface SavedSearchResultUpdateMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + clientName: SavedSearchClientName; + ownerUrn: string; + savedSearchId: number; + quantumEventId: number; + quantumEventBucketId: number; + channel: SearchAlertChannel; + searchResults: GenericSearchHit[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/savedsearch/SavedSearchResultUpdateMessageV2.pdsc + + export interface SavedSearchResultUpdateMessageV2 { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + clientDomain: string; + ownerUrn: string; + savedSearchId: number; + quantumEventId: number; + quantumEventBucketId: number; + channels: SearchAlertChannel[]; + searchResults: GenericSearchHitV2[]; + clientUseCase?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/savedsearch/SearchAlertChannel.pdsc + + export type SearchAlertChannel = 'CORP_EMAIL' | 'EMAIL' | 'NOTIFICATION'; + // Generated from: com/linkedin/avro2pegasus/messages/savedsearch/SearchHitType.pdsc + + export type SearchHitType = 'PEOPLE' | 'JOBS' | 'CONTENT' | 'LSS_COMPANY'; + } + namespace Search { + // Generated from: com/linkedin/avro2pegasus/messages/search/SearchHistoryUpdateMessage.pdsc + + export interface SearchHistoryUpdateMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + searchHeader: Com.Linkedin.Avro2pegasus.Events.Search.GenericSearchHeader; + memberUrn: string; + keywords: string; + facetValueMap?: { [id: string]: string }; + queryFields?: { [id: string]: string }; + sortCriteria?: string; + } + } + namespace Security { + // Generated from: com/linkedin/avro2pegasus/messages/security/BrowserIdActionMessage.pdsc + + export interface BrowserIdActionMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + creationTime: number; + browserId: string; + browserIdLabel?: Com.Linkedin.Avro2pegasus.Events.Ucv.BrowserIdLabel; + actionType: Com.Linkedin.Avro2pegasus.Events.Ucv.BrowserIdActionType; + triggeringMemberUrn?: string; + sourceInfo?: BrowserIdActionSource; + modelName?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/BrowserIdActionSource.pdsc + + export type BrowserIdActionSource = + | 'BLACK_WHITE_LIST' + | 'BACKFILL' + | 'CSTOOL_REP' + | 'MEMBER' + | 'OFFLINE_MODEL' + | 'ONLINE_MODEL' + | 'FUSE_BATCH' + | 'MEDIA_SCAN' + | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/messages/security/BrowserIdBlackWhiteListMessage.pdsc + + export interface BrowserIdBlackWhiteListMessage { + timestamp: number; + version: number; + browserIdLabelList: BrowserIdLabels[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/BrowserIdLabels.pdsc + + export interface BrowserIdLabels { + browserId: string; + browserIdLabel: Com.Linkedin.Avro2pegasus.Events.Ucv.BrowserIdLabel; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/ClusterMemberBrowserIdScoringRequestMessage.pdsc + + export interface ClusterMemberBrowserIdScoringRequestMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + creationTime: number; + memberUrn: string; + browserId: string; + browserIdLabel: Com.Linkedin.Avro2pegasus.Events.Ucv.BrowserIdLabel; + triggeringMemberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/IncrementRollupCountMessage.pdsc + + export interface IncrementRollupCountMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + counterKeyPrefix: string; + counterKey: string; + incrementValue: number; + distinctKey?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/InvalidateSessionMessage.pdsc + + export interface InvalidateSessionMessage { + memberSessionUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/MaliciousBrowserActivityReviewMessage.pdsc + + export interface MaliciousBrowserActivityReviewMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + subdomain: string; + numberOfUsers: number; + priority: recordPriority; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/MemberRegistrationFeaturesMessage.pdsc + + export interface MemberRegistrationFeaturesMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + creationTime: number; + memberUrn: string; + registrationDate: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/MemberSessionFeature.pdsc + + export interface MemberSessionFeature { + memberSessionUrn: string; + lastSessionRequestTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/MemberSessionFeaturesMessage.pdsc + + export interface MemberSessionFeaturesMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberSessionFeatures: MemberSessionFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/recordPriority.pdsc + + export type recordPriority = 'HIGH' | 'MEDIUM' | 'LOW'; + // Generated from: com/linkedin/avro2pegasus/messages/security/RehabRestriction.pdsc + + export interface RehabRestriction { + rehabViolationPreset: Com.Linkedin.Avro2pegasus.Events.RehabViolationPreset; + trackingId: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/RollupCountersIncrementMessage.pdsc + + export interface RollupCountersIncrementMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + counterId: number; + time: number; + periodLengthSeconds: number; + countingKey: number; + incrementValue: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/RollupCountersPersistMessage.pdsc + + export interface RollupCountersPersistMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + counterId: number; + periodLengthSeconds: number; + periodStartTime: number; + countingKey: number; + incrementValue: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/Rule.pdsc + + export interface Rule { + name: RuleName; + version: number; + content: string; + stage: Com.Linkedin.Avro2pegasus.Events.ScorerStage; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/RuleName.pdsc + + export type RuleName = + | 'PASSWORD_RESET_SCORE_RULES' + | 'INBOX_SPAM_SCORE_RULES' + | 'REPORT_SPAM_SCORE_RULES' + | 'LOGIN_COOKIE_RENEWAL_RULES' + | 'SLIDESHARE_UGC_RULES' + | 'ANTI_AUTOMATION_RULES' + | 'PHONE_SCORE_RULES' + | 'ABOOK_UPLOAD_RULES' + | 'MEMBER_REQUEST_RULES' + | 'GUEST_REQUEST_RULES' + | 'LOGIN_SCORING_RULES' + | 'PURCHASE_SCORING_RULES' + | 'CONTENT_CLASSIFICATION_RULES' + | 'REGISTRATION_SCORING_RULES' + | 'IDENTITY_VERIFICATION_SCORING_RULES' + | 'INVITATION_SCORING_RULES' + | 'INTEGRATION_TEST_SCORING_RULES' + | 'SCRAPING_SCORING_RULES' + | 'CONTENT_BASED_MEMBER_ACTION_SCORING_RULES' + | 'MICROSOFT_PEOPLE_CARD_SCORING_RULES' + | 'CLUSTER_SCORING_RULES' + | 'CLUSTER_ENTITY_SCORING_RULES' + | 'MEMBER_ACCOUNT_MANAGEMENT_SCORING_RULES' + | 'THIRD_PARTY_SCRAPING_SCORING_RULES'; + // Generated from: com/linkedin/avro2pegasus/messages/security/SecurityAccountAction.pdsc + + export type SecurityAccountAction = + | 'NAME_VIOLATION_RESTRICT' + | 'NAME_VIOLATION_LOGIN_RESTRICT' + | 'TAZER_LOGIN_RESTRICT' + | 'SUSPEND' + | 'LOGIN_PHONE_CHALLENGE' + | 'NONE' + | 'INVALIDATE_PASSWORD' + | 'TAZER_RESTRICT' + | 'TIERED_BOT_RESTRICT' + | 'NAME_VIOLATION_UNRESTRICT' + | 'NAME_VIOLATION_LOGIN_UNRESTRICT' + | 'TAZER_LOGIN_UNRESTRICT' + | 'TAZER_UNRESTRICT' + | 'TIERED_BOT_UNRESTRICT' + | 'REHAB_RESTRICT' + | 'REHAB_UNRESTRICT'; + // Generated from: com/linkedin/avro2pegasus/messages/security/SecurityAccountActionMessage.pdsc + + export interface SecurityAccountActionMessage { + memberUrn: string; + firstName?: string; + lastName?: string; + creationTime: number; + action: SecurityAccountAction; + note: string; + isSpamReviewRequired: boolean; + reasons: SecurityAccountActionReason[]; + modelName: string; + modelVersion: string; + signature: number; + scoredContentId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + accountLabel?: Com.Linkedin.Avro2pegasus.Events.AccountLabel; + extensions?: string[]; + rehabRestriction?: RehabRestriction; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/SecurityAccountActionReason.pdsc + + export type SecurityAccountActionReason = + | 'NAME_VIOLATION' + | 'NAME_VIOLATION_GIBBERISH' + | 'NAME_VIOLATION_COMPANY' + | 'NAME_VIOLATION_CONTACT_INFO' + | 'NAME_VIOLATION_PROFANITY' + | 'NAME_VIOLATION_FICTIONAL' + | 'NAME_VIOLATION_URL' + | 'FAKE_ACCOUNT' + | 'POSSIBLE_FAKE_ACCOUNT' + | 'SPAM' + | 'ATO' + | 'IMPERSONATION' + | 'EXTENSION' + | 'ACCEPTED_USER_AGREEMENT' + | 'AUTOMATION_UNKNOWN_METHOD' + | 'FAKE_COMPANY' + | 'FAKE_JOB' + | 'FAKE_ENGAGEMENT' + | 'HANDLE_WASHING' + | 'HARASSMENT' + | 'HUMAN_ERROR' + | 'INAPPROPRIATE_CONTENT' + | 'MODEL_FALSE_POSITIVE' + | 'PAYMENT_FRAUD' + | 'SCAM' + | 'SCRAPING_UNKNOWN' + | 'SCRAPING_PLUGIN' + | 'TERRORISM' + | 'UNAUTHORIZED_ACCESS'; + // Generated from: com/linkedin/avro2pegasus/messages/security/SecurityScoringRuleModificationMessage.pdsc + + export interface SecurityScoringRuleModificationMessage { + rule: Rule; + actingCsUserUrn: string; + modificationDescription: string; + modifiedTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/UserAccountRestrictionMessage.pdsc + + export interface UserAccountRestrictionMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + creationTime: number; + memberUrn: string; + isSpamRestricted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/security/UserRequestClusterMessage.pdsc + + export interface UserRequestClusterMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + creationTime: number; + memberUrn: string; + browserId?: string; + sessionId?: number; + ipAddress?: Com.Linkedin.Avro2pegasus.Events.IPAddress; + sourceEnvironment?: string; + path?: string; + domain?: string; + } + } + namespace Seo { + // Generated from: com/linkedin/avro2pegasus/messages/seo/BatchJobsExternalSearchIndexGaapTaskRequest.pdsc + + export interface BatchJobsExternalSearchIndexGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + taskInput: JobsExternalSearchIndexUpdates; + gaapAuthenticationHeader?: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Certification.pdsc + + export interface Certification { + name?: string; + licenseNumber?: string; + url?: string; + authority?: string; + authorityUrl?: string; + authorityPictureUrl?: string; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Education.pdsc + + export interface Education { + degree?: string; + fieldOfStudy?: string; + schoolName?: string; + schoolPicture?: string; + schoolUrl?: string; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Employer.pdsc + + export interface Employer { + universalName: string; + employerUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/ExternalSearchIndexAction.pdsc + + export type ExternalSearchIndexAction = 'ADD' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/messages/seo/ExternalSearchIndexGaapTaskRequest.pdsc + + export interface ExternalSearchIndexGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + taskInput: ExternalSearchIndexParameters; + gaapAuthenticationHeader?: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/ExternalSearchIndexGaapTaskResponse.pdsc + + export interface ExternalSearchIndexGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskInput?: JobsExternalSearchIndexUpdates; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/ExternalSearchIndexParameters.pdsc + + export interface ExternalSearchIndexParameters { + url: string; + modifiedTime: number; + externalSearchIndexAction: ExternalSearchIndexAction; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Industry.pdsc + + export interface Industry { + industryName: string; + industryUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/JobExternalSearchIndexMessage.pdsc + + export interface JobExternalSearchIndexMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + jobExternalSearchIndexParameters: ExternalSearchIndexParameters; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/JobFunction.pdsc + + export interface JobFunction { + jobFunctionName: string; + jobFunctionUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/JobSearchKeywordMessage.pdsc + + export interface JobSearchKeywordMessage { + header: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + countryCode: string; + keyword?: string; + locationName?: string; + locationUrn?: string; + searchId: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/JobsExternalSearchIndexUpdates.pdsc + + export interface JobsExternalSearchIndexUpdates { + updates: ExternalSearchIndexParameters[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/KeywordClass.pdsc + + export type KeywordClass = 'SKILL' | 'INDUSTRY' | 'OCCUPATION' | 'JOB_FUNCTION' | 'LOCATION' | 'EMPLOYER'; + // Generated from: com/linkedin/avro2pegasus/messages/seo/KeywordData.pdsc + + export interface KeywordData { + skill?: Skill; + industry?: Industry; + occupation?: Occupation; + jobFunction?: JobFunction; + location?: Location; + employer?: Employer; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/KeywordMessage.pdsc + + export interface KeywordMessage { + type: KeywordType; + classes?: KeywordClass[]; + name: string; + rawName: string; + evaluatorIdentifier?: string; + discoveryWorkflowIdentifier?: string; + data?: KeywordData; + score?: number; + publishedTime?: number; + scoredTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/KeywordType.pdsc + + export type KeywordType = 'BASIC' | 'AGGREGATE'; + // Generated from: com/linkedin/avro2pegasus/messages/seo/Location.pdsc + + export interface Location { + city?: string; + state?: string; + country: string; + postalCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Occupation.pdsc + + export interface Occupation { + occupationName: string; + occupationUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Operation.pdsc + + export type Operation = 'UPSERT' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/messages/seo/Patent.pdsc + + export interface Patent { + title?: string; + url?: string; + office?: string; + applicationNumber?: string; + patentNumber?: string; + filingDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + issueDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + contributors: Com.Linkedin.Avro2pegasus.Events.Identity.Contributor[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Person.pdsc + + export interface Person { + firstName?: string; + lastName?: string; + headline?: string; + url?: string; + pictureUrl?: string; + memberUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Position.pdsc + + export interface Position { + isCurrent: boolean; + title?: string; + company?: string; + companyUrl?: string; + companyPicture?: string; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + location?: string; + companyUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Project.pdsc + + export interface Project { + name?: string; + description?: string; + url?: string; + startDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + contributors: Com.Linkedin.Avro2pegasus.Events.Identity.Contributor[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Publication.pdsc + + export interface Publication { + name?: string; + description?: string; + url?: string; + publicationDate?: Com.Linkedin.Avro2pegasus.Events.Common.Date; + contributors: Com.Linkedin.Avro2pegasus.Events.Identity.Contributor[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/PublicProfileChangeMessage.pdsc + + export interface PublicProfileChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + publicProfileSnapshots: PublicProfileSnapshot[]; + operation: Operation; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/PublicProfileChangeTriggerMessage.pdsc + + export interface PublicProfileChangeTriggerMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/PublicProfileSnapshot.pdsc + + export interface PublicProfileSnapshot { + memberUrn: string; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + urls: string[]; + canonicalUrl: string; + firstName: string; + lastName?: string; + summary?: string; + headline?: string; + websites: Website[]; + imageUrl?: string; + skills: string[]; + industry?: string; + connectionsCount?: number; + positions: Position[]; + educations: Education[]; + projects: Project[]; + publications: Publication[]; + patents: Patent[]; + certifications: Certification[]; + peopleAlsoViewed: Person[]; + location?: string; + defaultLocale?: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/SatoriMemberSettingsChangeMessage.pdsc + + export interface SatoriMemberSettingsChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + isAllowingOutlookPublicProfile: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/SeoClarityDailySearchRanksByLogDate.pdsc + + export interface SeoClarityDailySearchRanksByLogDate { + logDate: Com.Linkedin.Avro2pegasus.Events.Common.Date; + seoClaritySearchRank: SeoClaritySearchRank; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/SeoClaritySearchRank.pdsc + + export interface SeoClaritySearchRank { + tagName: string; + tagType: SeoClarityTagType; + totalKeywords: number; + rankInPage1: number; + rankInPage2: number; + rankInPage3: number; + rankInPage4: number; + rankInPage5: number; + keywordCountAtRank1: number; + keywordCountAtRank2: number; + keywordCountAtRank3: number; + keywordCountAtRank4: number; + keywordCountAtRank5: number; + keywordCountAtRank6: number; + keywordCountAtRank7: number; + keywordCountAtRank8: number; + keywordCountAtRank9: number; + keywordCountAtRank10: number; + keywordCountRankInTop3: number; + keywordCountRankInTop10: number; + keywordCountRankInTop30: number; + keywordCountRankInTop50: number; + keywordCountRankInTop100: number; + entranceKeywordCount: number; + googleEntranceKeywordCount: number; + bingEntranceKeywordCount: number; + averageSearchVolume: number; + averageRank: number; + weightedAverageRank: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/SeoClaritySearchRankInfoGaapTaskRequest.pdsc + + export interface SeoClaritySearchRankInfoGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + taskInput: SeoClaritySearchRankInfoInput; + gaapAuthenticationHeader?: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/SeoClaritySearchRankInfoGaapTaskResponse.pdsc + + export interface SeoClaritySearchRankInfoGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskInput?: SeoClaritySearchRankInfoInput; + taskResult?: SeoClaritySearchRanksByLogDate; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/SeoClaritySearchRankInfoInput.pdsc + + export interface SeoClaritySearchRankInfoInput { + seoClarityTagId: number; + startDate: Com.Linkedin.Avro2pegasus.Events.Common.Date; + endDate: Com.Linkedin.Avro2pegasus.Events.Common.Date; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/SeoClaritySearchRanksByLogDate.pdsc + + export interface SeoClaritySearchRanksByLogDate { + seoClaritySearchRanksByLogDates: SeoClarityDailySearchRanksByLogDate[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/SeoClaritySearchRanksGaapTaskRequest.pdsc + + export interface SeoClaritySearchRanksGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: SeoClaritySearchRankInfoInput; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/SeoClarityTagType.pdsc + + export type SeoClarityTagType = 'KEYWORD_TAG'; + // Generated from: com/linkedin/avro2pegasus/messages/seo/Skill.pdsc + + export interface Skill { + skillName: string; + skillUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/Website.pdsc + + export interface Website { + url: string; + category: WebsiteCategory; + } + // Generated from: com/linkedin/avro2pegasus/messages/seo/WebsiteCategory.pdsc + + export type WebsiteCategory = 'PERSONAL' | 'COMPANY' | 'BLOG' | 'RSS' | 'PORTFOLIO' | 'OTHER'; + } + namespace Settings { + namespace History { + // Generated from: com/linkedin/avro2pegasus/messages/settings/history/Action.pdsc + + export type Action = 'CREATED' | 'UPDATED' | 'DELETED'; + // Generated from: com/linkedin/avro2pegasus/messages/settings/history/Actor.pdsc + + export type Actor = 'UNKNOWN' | 'MEMBER' | 'APPLICATION'; + // Generated from: com/linkedin/avro2pegasus/messages/settings/history/ActorContext.pdsc + + export interface ActorContext { + entityUrn?: string; + applicationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/settings/history/SettingsHistoryChangeMessage.pdsc + + export interface SettingsHistoryChangeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + actor: Actor; + actorContext?: ActorContext; + action: Action; + primaryEntityUrn: string; + settingTypeUrn: string; + secondaryEntityUrn?: string; + oldValue?: string[]; + newValue?: string[]; + time: number; + source: string; + } + } + } + namespace Shortlink { + // Generated from: com/linkedin/avro2pegasus/messages/shortlink/ShortlinkDeleteMessage.pdsc + + export interface ShortlinkDeleteMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + shortlinkUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/shortlink/ShortlinkValidationRequest.pdsc + + export interface ShortlinkValidationRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + shortlinkUrn: string; + originalUrl: string; + } + } + namespace Sis { + // Generated from: com/linkedin/avro2pegasus/messages/sis/IdAssociation.pdsc + + export interface IdAssociation { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + id1: Com.Linkedin.Avro2pegasus.Events.Sis.TypedId; + id2: Com.Linkedin.Avro2pegasus.Events.Sis.TypedId; + updateTime?: number; + confidence: number; + source: Com.Linkedin.Avro2pegasus.Events.Sis.IdAssociationSource; + } + } + namespace Slideshare { + // Generated from: com/linkedin/avro2pegasus/messages/slideshare/SlideShareDescriptionChangedMessage.pdsc + + export interface SlideShareDescriptionChangedMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/slideshare/SlideShareDescriptionCreatedMessageV2.pdsc + + export interface SlideShareDescriptionCreatedMessageV2 { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/slideshare/SlideShareMigrationCreateUGCMessage.pdsc + + export interface SlideShareMigrationCreateUGCMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + actorUrn: string; + organizationUrn?: string; + title: string; + description: string; + createdTime: number; + slideShareSlideshowUrn: string; + digitalmediaAssetUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/slideshare/SlideShareMigrationStartMessage.pdsc + + export interface SlideShareMigrationStartMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + actorUrn: string; + organizationUrn?: string; + slideShareSlideshowUrns: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/slideshare/SlideShareSpamUserLabelMessage.pdsc + + export interface SlideShareSpamUserLabelMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + userUrn: string; + isSpammer: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/slideshare/SlideShareTranscriptChangedMessage.pdsc + + export interface SlideShareTranscriptChangedMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/slideshare/SlideShareTranscriptCreatedMessage.pdsc + + export interface SlideShareTranscriptCreatedMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + contentUrn: string; + } + } + namespace Ssh { + // Generated from: com/linkedin/avro2pegasus/messages/ssh/FileTransportMessageMetadata.pdsc + + export interface FileTransportMessageMetadata { + messageMetadata: SshMessageMetadata; + fileName: string; + fileType: string; + uploadProtocol: FileTransportProtocol; + fileSize: number; + messageDigest?: string; + virtualFileUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ssh/FileTransportProtocol.pdsc + + export type FileTransportProtocol = 'SFTP'; + // Generated from: com/linkedin/avro2pegasus/messages/ssh/SshMessageMetadata.pdsc + + export interface SshMessageMetadata { + sshUserUrn: string; + time: number; + serverIp: Com.Linkedin.Avro2pegasus.Events.IPAddress; + clientIp: Com.Linkedin.Avro2pegasus.Events.IPAddress; + } + namespace Sftp { + // Generated from: com/linkedin/avro2pegasus/messages/ssh/sftp/EnterpriseSftpFileUploadMessage.pdsc + + export interface EnterpriseSftpFileUploadMessage { + fileUploadMessage: FileUploadMessage; + developerApplicationUrn: string; + hashingAlgorithm: HashingAlgorithm; + signature: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ssh/sftp/FileUploadMessage.pdsc + + export interface FileUploadMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + fileUploadMessageMetadata: Com.Linkedin.Avro2pegasus.Messages.Ssh.FileTransportMessageMetadata; + mediaUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ssh/sftp/HashingAlgorithm.pdsc + + export type HashingAlgorithm = 'MD5' | 'SHA_256'; + } + } + namespace Standardization { + // Generated from: com/linkedin/avro2pegasus/messages/standardization/CompanyStandardizationMessage.pdsc + + export interface CompanyStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + company?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/Country.pdsc + + export interface Country { + countryCode: string; + continentCode: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/Degree.pdsc + + export interface Degree { + degreeId?: number; + rollupId?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/DegreeStandardizationMessage.pdsc + + export interface DegreeStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + degree?: Degree; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/FieldOfStudy.pdsc + + export interface FieldOfStudy { + fieldOfStudyId?: number; + rollupIds?: number[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/FieldOfStudyStandardizationMessage.pdsc + + export interface FieldOfStudyStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + fieldOfStudies?: FieldOfStudy[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/FirstDegreeCompany.pdsc + + export interface FirstDegreeCompany { + firstDegreeConnectedCompanyCount: number; + memberSelectedCompanyUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/Functions.pdsc + + export interface Functions { + function?: number; + functionScore?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/FunctionStandardizationMessage.pdsc + + export interface FunctionStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + functions?: StandardizedFunction[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/Gender.pdsc + + export type Gender = 'Male' | 'Female' | 'Unknown'; + // Generated from: com/linkedin/avro2pegasus/messages/standardization/GenderStandardizationMessage.pdsc + + export interface GenderStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + gender?: Gender; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/GeoStandardizationMessage.pdsc + + export interface GeoStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + standardizedLocation?: StandardizedLocation; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/IndustryStandardizationMessage.pdsc + + export interface IndustryStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + industries?: StandardizedIndustry[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/InferredCompanyMessage.pdsc + + export interface InferredCompanyMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + inferredCompanies?: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/InferredCountryOfResidenceMessage.pdsc + + export interface InferredCountryOfResidenceMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + inferredCountryOfResidence?: Com.Linkedin.Avro2pegasus.Events.Country; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/InferredGender.pdsc + + export type InferredGender = 'FEMALE' | 'MALE' | 'UNKNOWN'; + // Generated from: com/linkedin/avro2pegasus/messages/standardization/InferredPosition.pdsc + + export interface InferredPosition { + inferredCompany: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2; + inferredTitles?: InferredTitle[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/InferredPositionsMessage.pdsc + + export interface InferredPositionsMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + inferredPositions?: InferredPosition[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/InferredSkillMessage.pdsc + + export interface InferredSkillMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + inferredSkills?: Com.Linkedin.Avro2pegasus.Events.ScoredEntityV2[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/InferredTitle.pdsc + + export interface InferredTitle { + title: string; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/IPCountry.pdsc + + export interface IPCountry { + countryCode?: string; + frequency: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/IPRegion.pdsc + + export interface IPRegion { + frequency: number; + regionCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/IsCurrentMessage.pdsc + + export interface IsCurrentMessage { + standardizationMetadataHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationMetadataHeader; + isCurrent: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/IsDeletedMessage.pdsc + + export interface IsDeletedMessage { + standardizationMetadataHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationMetadataHeader; + isDeleted: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/LatLong.pdsc + + export interface LatLong { + latitude: number; + longitude: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/MemberCompanyMetadata.pdsc + + export interface MemberCompanyMetadata { + countryCode?: string; + emailDomains?: string[]; + ipCountries?: IPCountry[]; + ipRegions?: IPRegion[]; + memberConnectionCompanies: MemberConnectionCompanies; + memberIndustryId: number; + memberSimilarCompanies: MemberSimilarCompanies; + memberUrn: string; + profilePositions: ProfilePosition[]; + regionCode?: number; + relatedCompanyUrns?: string[]; + topIps?: TopIP[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/MemberCompanyMetadataMessage.pdsc + + export interface MemberCompanyMetadataMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + memberCompanyMetadata: MemberCompanyMetadata; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/MemberConnectionCompanies.pdsc + + export interface MemberConnectionCompanies { + firstDegreeCompanies: FirstDegreeCompany[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/MemberSimilarCompanies.pdsc + + export interface MemberSimilarCompanies { + profilePositions: SimilarProfilePosition[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/MemberSkillReputationMessage.pdsc + + export interface MemberSkillReputationMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + version: number; + skills: SkillReputationData[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/OccupationStandardizationMessage.pdsc + + export interface OccupationStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + occupations?: StandardizedOccupation[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/OfflineMemberEducationGrandfatherMessage.pdsc + + export interface OfflineMemberEducationGrandfatherMessage { + educationUrn: string; + school_STABLE?: SchoolStandardizationMessage; + school_LATEST?: SchoolStandardizationMessage; + degree_STABLE?: DegreeStandardizationMessage; + degree_LATEST?: DegreeStandardizationMessage; + fieldOfStudy_STABLE?: FieldOfStudyStandardizationMessage; + fieldOfStudy_LATEST?: FieldOfStudyStandardizationMessage; + isDeleted?: IsDeletedMessage; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/OfflineMemberGrandfatherMessage.pdsc + + export interface OfflineMemberGrandfatherMessage { + memberUrn: string; + geo_STABLE?: GeoStandardizationMessage; + geo_LATEST?: GeoStandardizationMessage; + profileIndustry_STABLE?: ProfileIndustryStandardizationMessage; + profileIndustry_LATEST?: ProfileIndustryStandardizationMessage; + standardizedGender_STABLE?: GenderStandardizationMessage; + standardizedGender_LATEST?: GenderStandardizationMessage; + standardizedSkills_STABLE?: SkillStandardizationMessage; + standardizedSkills_LATEST?: SkillStandardizationMessage; + inferredCompanies_STABLE?: InferredCompanyMessage; + inferredCompanies_LATEST?: InferredCompanyMessage; + inferredPositions_STABLE?: InferredPositionsMessage; + inferredPositions_LATEST?: InferredPositionsMessage; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/OfflineMemberPositionGrandfatherMessage.pdsc + + export interface OfflineMemberPositionGrandfatherMessage { + positionUrn: string; + companyId_STABLE?: CompanyStandardizationMessage; + companyId_LATEST?: CompanyStandardizationMessage; + functions_STABLE?: FunctionStandardizationMessage; + functions_LATEST?: FunctionStandardizationMessage; + industry_STABLE?: IndustryStandardizationMessage; + industry_LATEST?: IndustryStandardizationMessage; + seniority_STABLE?: SeniorityStandardizationMessage; + seniority_LATEST?: SeniorityStandardizationMessage; + occupations_STABLE?: OccupationStandardizationMessage; + occupations_LATEST?: OccupationStandardizationMessage; + titles_STABLE?: TitleStandardizationMessage; + titles_LATEST?: TitleStandardizationMessage; + isCurrent?: IsCurrentMessage; + isDeleted?: IsDeletedMessage; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/ProfileIndustryStandardizationMessage.pdsc + + export interface ProfileIndustryStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + profileIndustries?: StandardizedProfileIndustry[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/ProfilePosition.pdsc + + export interface ProfilePosition { + companyName?: string; + companyName2?: string; + endMonthYear?: number; + industryId?: number; + memberSelectedCompanyUrn?: string; + profilePositionUrn: string; + startMonthYear?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/SchoolStandardizationMessage.pdsc + + export interface SchoolStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + school?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/SeniorityStandardizationMessage.pdsc + + export interface SeniorityStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + seniorities?: StandardizedSeniority[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/SimilarProfilePosition.pdsc + + export interface SimilarProfilePosition { + companyUrns: string[]; + profilePositionUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/SkillReputationData.pdsc + + export interface SkillReputationData { + skillUrn: string; + skillReputationScore: number; + isExplicit: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/SkillStandardizationMessage.pdsc + + export interface SkillStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + skills?: StandardizedSkill[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/StandardizedFunction.pdsc + + export interface StandardizedFunction { + function: number; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/StandardizedIndustry.pdsc + + export interface StandardizedIndustry { + industry: number; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/StandardizedLocation.pdsc + + export interface StandardizedLocation { + postalCode: string; + regionCode: number; + country: Country; + latlong?: LatLong; + gmtOffset?: number; + usesDaylightSavings?: boolean; + placeCodes?: string[]; + stateCode?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/StandardizedOccupation.pdsc + + export interface StandardizedOccupation { + occupation: number; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/StandardizedProfileIndustry.pdsc + + export interface StandardizedProfileIndustry { + industry: number; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/StandardizedSeniority.pdsc + + export interface StandardizedSeniority { + seniority: number; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/StandardizedSkill.pdsc + + export interface StandardizedSkill { + skill: number; + score: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/StandardizedTitle.pdsc + + export interface StandardizedTitle { + title: number; + score: number; + superTitle?: number; + superTitleScore?: number; + standardizedFunctions?: Functions[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/TitleStandardizationMessage.pdsc + + export interface TitleStandardizationMessage { + standardizationHeader: Com.Linkedin.Avro2pegasus.Standardization.StandardizationHeader; + titles?: StandardizedTitle[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/standardization/TopIP.pdsc + + export interface TopIP { + frequency: number; + ipAddressAsString?: string; + ipCountry?: string; + ipRegion?: string; + } + } + namespace Stork { + namespace Server { + // Generated from: com/linkedin/avro2pegasus/messages/stork/server/StorkEmail.pdsc + + export interface StorkEmail { + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + payload: number; + } + } + } + namespace Streamtokafka { + // Generated from: com/linkedin/avro2pegasus/messages/streamtokafka/StreamToKafkaPassthroughMessage.pdsc + + export interface StreamToKafkaPassthroughMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + forwardingHost: string; + messageTypeTags: string[]; + message: string; + } + } + namespace Subscription { + // Generated from: com/linkedin/avro2pegasus/messages/subscription/UpgradeSubscriptionMessage.pdsc + + export interface UpgradeSubscriptionMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + memberUrn: string; + incentiveCampaignUrn?: string; + } + } + namespace Sync { + // Generated from: com/linkedin/avro2pegasus/messages/sync/ChangeType.pdsc + + export type ChangeType = 'CREATE' | 'UPDATE' | 'DELETE'; + // Generated from: com/linkedin/avro2pegasus/messages/sync/EntityChangelogMessage.pdsc + + export interface EntityChangelogMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + entityUrn: string; + recipientUrn: string; + changeTime: number; + changeType: ChangeType; + fabricUrn: string; + payload?: Com.Linkedin.Avro2pegasus.Messages.Common.AnyRecord; + serializedServiceCallData?: string; + } + } + namespace Talent { + // Generated from: com/linkedin/avro2pegasus/messages/talent/PipelineBuilderEmailTriggerMessage.pdsc + + export interface PipelineBuilderEmailTriggerMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contractUrn: string; + leads?: PipelineBuilderLead[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/talent/PipelineBuilderLead.pdsc + + export interface PipelineBuilderLead { + leadsMemberUrn: string; + createdTime: number; + sponsoredInmailCampaignUrn: string; + sponsoredInmailCampaignName: string; + hiringProjectUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/talent/PipelineBuilderRecipientsPurgeMessage.pdsc + + export interface PipelineBuilderRecipientsPurgeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + sponsoredInmailCampaignUrn: string; + recipientMemberUrns: string[]; + } + } + namespace Talentinsights { + // Generated from: com/linkedin/avro2pegasus/messages/talentinsights/Module.pdsc + + export interface Module { + reportType: string; + tabName: string; + componentName: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/talentinsights/PdfExportEvent.pdsc + + export interface PdfExportEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchHistoryId: string; + pdfReportId: string; + exportModules: Module[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/talentinsights/ReportExportMessage.pdsc + + export interface ReportExportMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + searchHistoryId: string; + exportId: string; + reportId?: string; + reportName?: string; + reportOutputFileType: ReportOutputFileType; + exportModules: Module[]; + moduleParams?: ReportModuleParams; + memberUrn: string; + enterpriseProfileUrn: string; + enterpriseApplicationInstanceUrn: string; + organizationUrn: string; + overrideOrganizationUrn?: string; + userRole: UserRole; + isRestrictedEmployee: boolean; + isStaffingLicense: boolean; + locale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/talentinsights/ReportModuleParams.pdsc + + export interface ReportModuleParams { + industryMigrationSourceIndustry?: string; + topLocationsLocationType?: Com.Linkedin.Avro2pegasus.Messages.Common.Talentinsights.LocationType; + attritionLocationType?: Com.Linkedin.Avro2pegasus.Messages.Common.Talentinsights.LocationType; + workforceLocationType?: Com.Linkedin.Avro2pegasus.Messages.Common.Talentinsights.LocationType; + workforceEntityType?: Com.Linkedin.Avro2pegasus.Messages.Common.Talentinsights.WorkforceCategory; + locationMigrationSourceLocation?: string; + locationMigrationLocationType?: Com.Linkedin.Avro2pegasus.Messages.Common.Talentinsights.LocationType; + workforceLocationMigrationLocationType?: Com.Linkedin.Avro2pegasus.Messages.Common.Talentinsights.LocationType; + } + // Generated from: com/linkedin/avro2pegasus/messages/talentinsights/ReportOutputFileType.pdsc + + export type ReportOutputFileType = 'PDF' | 'XLS' | 'CSV'; + // Generated from: com/linkedin/avro2pegasus/messages/talentinsights/TalentInsightsAccountFetchMessage.pdsc + + export interface TalentInsightsAccountFetchMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + enterpriseAccountUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/talentinsights/UserRole.pdsc + + export type UserRole = 'USER' | 'ADMIN'; + } + namespace Traffic { + // Generated from: com/linkedin/avro2pegasus/messages/traffic/HookId.pdsc + + export type HookId = + | 'TS_HTTP_READ_REQUEST_HDR_HOOK' + | 'TS_HTTP_OS_DNS_HOOK' + | 'TS_HTTP_SEND_REQUEST_HDR_HOOK' + | 'TS_HTTP_READ_CACHE_HDR_HOOK' + | 'TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK' + | 'TS_HTTP_READ_RESPONSE_HDR_HOOK' + | 'TS_HTTP_SEND_RESPONSE_HDR_HOOK' + | 'TS_HTTP_REQUEST_TRANSFORM_HOOK' + | 'TS_HTTP_RESPONSE_TRANSFORM_HOOK' + | 'TS_HTTP_SELECT_ALT_HOOK' + | 'TS_HTTP_TXN_START_HOOK' + | 'TS_HTTP_TXN_CLOSE_HOOK' + | 'TS_HTTP_SSN_START_HOOK' + | 'TS_HTTP_SSN_CLOSE_HOOK' + | 'TS_HTTP_PRE_REMAP_HOOK' + | 'TS_HTTP_POST_REMAP_HOOK' + | 'TS_HTTP_RESPONSE_CLIENT_HOOK' + | 'TS_HTTP_LAST_HOOK' + | 'TS_VCONN_PRE_ACCEPT_HOOK' + | 'TS_SSL_CERT_HOOK'; + // Generated from: com/linkedin/avro2pegasus/messages/traffic/HttpDebugMessage.pdsc + + export interface HttpDebugMessage { + preOrPostPlugin: PreOrPostPlugin; + pluginName: string; + hookId: HookId; + clientRequest?: Request; + serverRequest?: Request; + serverResponse?: Response; + clientResponse?: Response; + messageTimeNanos?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/traffic/Method.pdsc + + export type Method = + | 'OPTIONS' + | 'GET' + | 'HEAD' + | 'POST' + | 'PUT' + | 'DELETE' + | 'TRACE' + | 'CONNECT' + | 'EXTENSION'; + // Generated from: com/linkedin/avro2pegasus/messages/traffic/PreOrPostPlugin.pdsc + + export type PreOrPostPlugin = 'PRE_PLUGIN' | 'POST_PLUGIN'; + // Generated from: com/linkedin/avro2pegasus/messages/traffic/Request.pdsc + + export interface Request { + httpVersion: string; + method: Method; + url: string; + headers?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/messages/traffic/Response.pdsc + + export interface Response { + httpVersion: string; + statusCode: number; + headers?: { [id: string]: string }; + } + // Generated from: com/linkedin/avro2pegasus/messages/traffic/TrafficServerMonitoringMessage.pdsc + + export interface TrafficServerMonitoringMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + monitoringId: string; + debugMessages: HttpDebugMessage[]; + } + } + namespace Translation { + // Generated from: com/linkedin/avro2pegasus/messages/translation/HtmlContent.pdsc + + export interface HtmlContent { + content: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/translation/StringArrayContent.pdsc + + export interface StringArrayContent { + content: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/translation/StringContent.pdsc + + export interface StringContent { + content: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/translation/TranslationCompleteMessage.pdsc + + export interface TranslationCompleteMessage { + header: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + viatorWorkflowUrn: string; + contentIdentifierUrn: string; + contents: TranslationContent[]; + toLocale: Com.Linkedin.Avro2pegasus.Events.Locale; + } + // Generated from: com/linkedin/avro2pegasus/messages/translation/TranslationContent.pdsc + + export interface TranslationContent { + contentDescriptor?: string; + HtmlContent?: HtmlContent; + StringContent?: StringContent; + StringArrayContent?: StringArrayContent; + } + } + namespace Ucv { + // Generated from: com/linkedin/avro2pegasus/messages/ucv/ClassificationReviewInfo.pdsc + + export interface ClassificationReviewInfo { + classificationTypes: Com.Linkedin.Avro2pegasus.Events.Contentspam.SpamType[]; + priority: ReviewPriority; + status: ReviewStatus; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/ClusterAndLastActiveTime.pdsc + + export interface ClusterAndLastActiveTime { + cluster: Com.Linkedin.Avro2pegasus.Events.Ucv.MemberCluster; + lastActiveTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/ClusterLabelingMessage.pdsc + + export interface ClusterLabelingMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + cluster: Com.Linkedin.Avro2pegasus.Events.Ucv.EntityCluster; + clusterLabel: Com.Linkedin.Avro2pegasus.Events.Ucv.ClusterLabel; + triggeringEntityUrn?: string; + source: Com.Linkedin.Avro2pegasus.Events.Ucv.ClusterReputationSource; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/ClusterScoringRequestMessage.pdsc + + export interface ClusterScoringRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + entityUrns: string[]; + scoringFlow: Com.Linkedin.Avro2pegasus.Events.Ucv.ScoringFlow; + cluster: Com.Linkedin.Avro2pegasus.Events.Ucv.EntityCluster; + clusterWindow?: Com.Linkedin.Avro2pegasus.Events.Ucv.ClusterWindow; + clusterLabel?: Com.Linkedin.Avro2pegasus.Events.Ucv.ClusterLabel; + triggeringEntityUrn?: string; + restrictedEntityUrns?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/ClusterWithLastActiveTime.pdsc + + export interface ClusterWithLastActiveTime { + cluster: Com.Linkedin.Avro2pegasus.Events.Ucv.EntityCluster; + lastActiveTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/ContentBasedMemberScorerRequestMessage.pdsc + + export interface ContentBasedMemberScorerRequestMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + isSpam: boolean; + isLowQuality: boolean; + system: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationSystem; + contentCreatorUrn: string; + contentSource?: Com.Linkedin.Avro2pegasus.Events.ContentSource; + contentClassificationFlow: Com.Linkedin.Avro2pegasus.Events.Ucv.ContentClassificationFlow; + spamClassifications?: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + contentRelevanceClassifications?: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + ucfContextUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/ContentClassificationResponseMessage.pdsc + + export interface ContentClassificationResponseMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + contentUrn: string; + isSpam: boolean; + isLowQuality: boolean; + contentRelevanceClassifications: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + system: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationSystem; + actorUrn?: string; + reviewInfo?: ClassificationReviewInfo; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + spamClassifications?: Com.Linkedin.Avro2pegasus.Events.Ucv.ClassificationExplanation[]; + contentDistributionAllowed?: boolean; + classificationCompletionStatus?: Com.Linkedin.Avro2pegasus.Events.Contentfilter.ClassificationCompletionStatus; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/DistributionFeature.pdsc + + export interface DistributionFeature { + feature: Com.Linkedin.Avro2pegasus.Events.Ucv.DistributionModelFeature; + isLostIfNotStoppedByDistributionModel?: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/DistributionModelRepartitionMessage.pdsc + + export interface DistributionModelRepartitionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + scorerType: Com.Linkedin.Avro2pegasus.Events.ScorerType; + requestTime: number; + filteringFeatures: Com.Linkedin.Avro2pegasus.Events.Ucv.DistributionModelFeature[]; + distributionFeatureMetaData: DistributionFeature[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/DistributionModelReplicationRepartitionMessage.pdsc + + export interface DistributionModelReplicationRepartitionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + scorerType: Com.Linkedin.Avro2pegasus.Events.ScorerType; + requestTime: number; + filteringFeatures: Com.Linkedin.Avro2pegasus.Events.Ucv.DistributionModelFeature[]; + primaryFeatures: Com.Linkedin.Avro2pegasus.Events.Ucv.DistributionModelFeature[]; + secondaryFeatures: Com.Linkedin.Avro2pegasus.Events.Ucv.DistributionModelFeature[]; + isLostIfNotStoppedByDistributionModel: boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/emailAndDisplayName.pdsc + + export interface emailAndDisplayName { + vieweeEmailAddress?: string; + vieweeDisplayName?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/EntityClusterMessage.pdsc + + export interface EntityClusterMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + entityUrn: string; + clusters: ClusterWithLastActiveTime[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/MediaScanRequest.pdsc + + export interface MediaScanRequest { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + mediaUrn: string; + fileHash: string; + createdAt: number; + scanTypes: Com.Linkedin.Avro2pegasus.Events.Ucv.ScanType[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/MemberClusterMessage.pdsc + + export interface MemberClusterMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + memberUrn: string; + clusters: ClusterAndLastActiveTime[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/PrefetchPeopleCardDisplayInConsumerOutlookMessage.pdsc + + export interface PrefetchPeopleCardDisplayInConsumerOutlookMessage { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + displayTime: number; + msftConsumerMemberId: string; + viewerPersonUrn?: string; + rawIpAddress: string; + vieweePersonUrns: string[]; + viewerRegistrationTime?: number; + userAgent?: string; + vieweesInfo: emailAndDisplayName[]; + haveInteracted?: boolean; + restrictionStatus?: RestrictionStatus; + pageInstanceId: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/PrefetchPeopleCardDisplayInEnterpriseOutlookMessage.pdsc + + export interface PrefetchPeopleCardDisplayInEnterpriseOutlookMessage { + header?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + displayTime: number; + hashedMicrosoftEnterpriseMemberId: string; + viewerPersonUrn?: string; + vieweePersonUrns: string[]; + hashedIpSubnet: string; + isMicrosoftMemberTrial?: boolean; + hashedMicrosoftEnterpriseTenantId?: string; + pageInstanceId: string; + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + vieweesInfo: emailAndDisplayName[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/ucv/RestrictionStatus.pdsc + + export type RestrictionStatus = 'PREFERRED' | 'BASIC' | 'BASIC_MINUS' | 'SUSPEND'; + // Generated from: com/linkedin/avro2pegasus/messages/ucv/ReviewPriority.pdsc + + export type ReviewPriority = 'LOW' | 'MEDIUM' | 'HIGH'; + // Generated from: com/linkedin/avro2pegasus/messages/ucv/ReviewStatus.pdsc + + export type ReviewStatus = 'REQUIRED' | 'COMPLETE'; + // Generated from: com/linkedin/avro2pegasus/messages/ucv/UrlUnwindRequest.pdsc + + export interface UrlUnwindRequest { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + url: string; + } + } + namespace Ugc { + // Generated from: com/linkedin/avro2pegasus/messages/ugc/GroupPostMigrateEvent.pdsc + + export interface GroupPostMigrateEvent { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + groupPostUrn: string; + contentCertificationRecord?: string; + articleUrn?: string; + authorUrn: string; + groupOwnerUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ugc/UserGeneratedContentBabyloniaPurgeMessage.pdsc + + export interface UserGeneratedContentBabyloniaPurgeMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + userGeneratedContentUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ugc/UserGeneratedContentProcessingRequestMessage.pdsc + + export interface UserGeneratedContentProcessingRequestMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + entityUrn: string; + processingRequestType: UserGeneratedContentProcessingRequestType; + appName?: string; + applicationUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/ugc/UserGeneratedContentProcessingRequestType.pdsc + + export type UserGeneratedContentProcessingRequestType = + | 'INGESTED_CONTENT_PURGE' + | 'DELETE' + | 'SHORTLINK_FIRST_PARTY_URLS'; + } + namespace Visualmedia { + // Generated from: com/linkedin/avro2pegasus/messages/visualmedia/ConcurrentViewerCountPublishMessage.pdsc + + export interface ConcurrentViewerCountPublishMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + viewerTrackingTopicUrn: string; + concurrentViewerCount: number; + maxProcessedEventTime: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/visualmedia/ConcurrentViewerCountServedMessage.pdsc + + export interface ConcurrentViewerCountServedMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + entityUrn: string; + memberCount: number; + connectionCount: number; + secondsSinceEpoch: number; + daysSinceEpoch: number; + } + } + namespace Watchdog { + // Generated from: com/linkedin/avro2pegasus/messages/watchdog/StructuredTSDMessage.pdsc + + export interface StructuredTSDMessage { + processedTime: number; + namespace: string; + startTime: number; + granularitySeconds: number; + dimensions: STSDDimension[]; + metrics: STSDMetric[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/watchdog/STSDDimension.pdsc + + export interface STSDDimension { + name: string; + value: string | number | number | number | number | boolean; + } + // Generated from: com/linkedin/avro2pegasus/messages/watchdog/STSDMetric.pdsc + + export interface STSDMetric { + name: string; + value: STSDMetricValue; + } + // Generated from: com/linkedin/avro2pegasus/messages/watchdog/STSDMetricValue.pdsc + + export interface STSDMetricValue { + operator: string; + operands?: Array; + } + } + namespace Websearch { + // Generated from: com/linkedin/avro2pegasus/messages/websearch/CompanyWebSearchGaapTaskRequest.pdsc + + export interface CompanyWebSearchGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: Com.Linkedin.Avro2pegasus.Common.Webcrawling.CompanyWebSearchRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/websearch/OrganizationWebSearchGaapTaskRequest.pdsc + + export interface OrganizationWebSearchGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: Com.Linkedin.Avro2pegasus.Common.Webcrawling.OrganizationWebSearchRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/websearch/OrganizationWebSearchGaapTaskResponse.pdsc + + export interface OrganizationWebSearchGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskInput?: Com.Linkedin.Avro2pegasus.Common.Webcrawling.OrganizationWebSearchRequest; + taskResult?: Com.Linkedin.Avro2pegasus.Common.Webcrawling.WebSearchResponse; + } + // Generated from: com/linkedin/avro2pegasus/messages/websearch/RawJobWebSearchGaapTaskRequest.pdsc + + export interface RawJobWebSearchGaapTaskRequest { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: Com.Linkedin.Avro2pegasus.Common.Webcrawling.RawJobWebSearchRequest; + } + // Generated from: com/linkedin/avro2pegasus/messages/websearch/RawJobWebSearchGaapTaskResponse.pdsc + + export interface RawJobWebSearchGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskInput?: Com.Linkedin.Avro2pegasus.Common.Webcrawling.RawJobWebSearchRequest; + taskResult?: Com.Linkedin.Avro2pegasus.Common.Webcrawling.WebSearchResponse; + } + // Generated from: com/linkedin/avro2pegasus/messages/websearch/WebSearchGaapTaskResponse.pdsc + + export interface WebSearchGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskInput?: Com.Linkedin.Avro2pegasus.Common.Webcrawling.WebSearchRequest; + taskResult?: Com.Linkedin.Avro2pegasus.Common.Webcrawling.WebSearchResponse; + } + } + namespace Workflow { + // Generated from: com/linkedin/avro2pegasus/messages/workflow/ActionTypeEnum.pdsc + + export type ActionTypeEnum = 'APPROVED' | 'REJECTED' | 'CANCELLED'; + // Generated from: com/linkedin/avro2pegasus/messages/workflow/ApproverData.pdsc + + export interface ApproverData { + approverUrn: string; + actionType: ActionTypeEnum; + comment?: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/workflow/DiscountApprovalWorkflowCompletionData.pdsc + + export interface DiscountApprovalWorkflowCompletionData { + workflowCompletionActionType: ActionTypeEnum; + customerUrn: string; + approversData: ApproverData[]; + salesQuoteUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/workflow/QuotingApprovalWorkflowCompletionData.pdsc + + export interface QuotingApprovalWorkflowCompletionData { + workflowCompletionActionType: ActionTypeEnum; + customerUrn: string; + salesQuoteUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/workflow/WorkflowApprovalDecisionMessage.pdsc + + export interface WorkflowApprovalDecisionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + applicationUrn: string; + workflowApprovalRequestUrn: string; + } + // Generated from: com/linkedin/avro2pegasus/messages/workflow/WorkflowCompletionMessage.pdsc + + export interface WorkflowCompletionMessage { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + businessProcessWorkflowUrn: string; + workflowCompletionData: DiscountApprovalWorkflowCompletionData | QuotingApprovalWorkflowCompletionData; + } + } + namespace Wwe { + // Generated from: com/linkedin/avro2pegasus/messages/wwe/JobsSmsMessage.pdsc + + export interface JobsSmsMessage { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + recipientUrn: string; + recipientLifeCycleType: Com.Linkedin.Avro2pegasus.Events.MemberLifeCycleType; + jobSeekerScore?: number; + } + } + namespace Zephyr { + // Generated from: com/linkedin/avro2pegasus/messages/zephyr/NewsScraperGaapTaskRequest.pdsc + + export interface NewsScraperGaapTaskRequest { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + kairosHeader?: Com.Linkedin.Avro2pegasus.Messages.Kairos.KairosHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.InputHeader; + gaapAuthenticationHeader?: Com.Linkedin.Avro2pegasus.Messages.Gaap.AuthenticationHeader; + taskInput: NewsScraperInput; + } + // Generated from: com/linkedin/avro2pegasus/messages/zephyr/NewsScraperGaapTaskResponse.pdsc + + export interface NewsScraperGaapTaskResponse { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + gaapHeader: Com.Linkedin.Avro2pegasus.Messages.Gaap.OutputHeader; + taskResult?: NewsScraperOutput; + } + // Generated from: com/linkedin/avro2pegasus/messages/zephyr/NewsScraperInput.pdsc + + export interface NewsScraperInput { + source: NewsSource; + syncTime?: number; + } + // Generated from: com/linkedin/avro2pegasus/messages/zephyr/NewsScraperOutput.pdsc + + export interface NewsScraperOutput { + newsItemUrl: string; + createdTime: number; + source: NewsSource; + channelInfo?: string; + categories: string[]; + thirdPartyTags: string[]; + } + // Generated from: com/linkedin/avro2pegasus/messages/zephyr/NewsSource.pdsc + + export type NewsSource = 'BING' | 'ZAKER' | 'BAIDU' | 'TENCENT'; + } + } + namespace Messaging { + namespace Digitalmedia { + // Generated from: com/linkedin/avro2pegasus/messaging/digitalmedia/File.pdsc + + export interface File { + index: number; + slug?: string; + mediaType: string; + size?: number; + filename?: string; + fileId?: number; + blob?: string; + hash?: string; + md5?: string; + sha256?: string; + } + } + } + namespace Messagingdelivery { + // Generated from: com/linkedin/avro2pegasus/messagingdelivery/MessageDeliveryTask.pdsc + + export interface MessageDeliveryTask { + auditHeader: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + authorUrn: string; + recipientUrns: string[]; + domainUrn: string; + conversationUrn: string; + bodyUrn: string; + mailboxItemUrn?: string; + countable: boolean; + createdTime: number; + attempts: number; + delayedDeliveryTime?: number; + encrypted?: boolean; + threadUrn?: string; + retryPersistenceForAuthor?: boolean; + retryStatusUpdateForRecipientUrns?: string[]; + retryPersistenceForRecipientUrns?: string[]; + messagingMessageUrn?: string; + messagingThreadUrn?: string; + pageTrackingObject?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingObject; + dualWrite?: boolean; + publishToATC?: boolean; + publishToRealtime?: boolean; + lastMailboxItemUrn?: string; + header?: Com.Linkedin.Avro2pegasus.Events.EventHeader; + preDeliverResponse?: Com.Linkedin.Avro2pegasus.Messages.Common.AnyRecord; + body?: Com.Linkedin.Avro2pegasus.Messages.Common.AnyRecord; + conversation?: Com.Linkedin.Avro2pegasus.Messages.Common.AnyRecord; + systemLabelUrns?: string[]; + trackingId?: Com.Linkedin.Avro2pegasus.Events.Common.TrackingId; + } + } + namespace Mnybe { + namespace Shared { + namespace Identity { + // Generated from: com/linkedin/avro2pegasus/mnybe/shared/identity/EntityType.pdsc + + export type EntityType = + | 'Member' + | 'Job' + | 'Special' + | 'Advertiser' + | 'Cap' + | 'Finance' + | 'Company' + | 'Viewee' + | 'AdCampaign' + | 'CapSeat' + | 'Browser' + | 'CapProspect' + | 'Project' + | 'Search' + | 'PremiumService' + | 'CheckInEvent' + | 'CapTag' + | 'EmailImportMedia' + | 'OfflineCompany' + | 'OfflineOperatingUnit' + | 'CsUser' + | 'Application'; + } + } + } + namespace Notifications { + namespace Avro { + // Generated from: com/linkedin/avro2pegasus/notifications/avro/AddNotificationRequest.pdsc + + export interface AddNotificationRequest { + draftNotification: DraftNotification; + } + // Generated from: com/linkedin/avro2pegasus/notifications/avro/DraftNotification.pdsc + + export interface DraftNotification { + recipientId?: string; + notificationTypeCode: string; + groupingId?: string; + isActionRequired: boolean; + localRanking: number; + triggerId: string; + version: number; + actorId?: string; + content: { [id: string]: string }; + groupUnseenOnly: boolean; + triggerTime: number; + recipientIds?: string[]; + } + // Generated from: com/linkedin/avro2pegasus/notifications/avro/MobileNotificationEvent.pdsc + + export interface MobileNotificationEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + notificationId?: string; + notification: DraftNotification; + } + // Generated from: com/linkedin/avro2pegasus/notifications/avro/NotificationPublishRequest.pdsc + + export interface NotificationPublishRequest { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + request: + | AddNotificationRequest + | RemoveNotificationRequest + | ReplaceNotificationRequest + | UpdateNotificationRequest; + redirects?: number; + } + // Generated from: com/linkedin/avro2pegasus/notifications/avro/NotificationSelector.pdsc + + export interface NotificationSelector { + recipientId: string; + notificationTypeCode: string; + isRead?: boolean; + groupingId?: string; + triggerId?: string; + notificationContent: { [id: string]: string }; + version: number; + } + // Generated from: com/linkedin/avro2pegasus/notifications/avro/RemoveNotificationRequest.pdsc + + export interface RemoveNotificationRequest { + notificationSelector: NotificationSelector; + } + // Generated from: com/linkedin/avro2pegasus/notifications/avro/ReplaceNotificationRequest.pdsc + + export interface ReplaceNotificationRequest { + draftNotification: DraftNotification; + notificationSelector: NotificationSelector; + } + // Generated from: com/linkedin/avro2pegasus/notifications/avro/UpdateNotificationRequest.pdsc + + export interface UpdateNotificationRequest { + notificationSelector: NotificationSelector; + notificationContent: { [id: string]: string }; + } + } + } + namespace Oms { + namespace Common { + // Generated from: com/linkedin/avro2pegasus/oms/common/OrderSubtype.pdsc + + export type OrderSubtype = 'FIRST_CHARGE' | 'SOFT_ERROR_RETRY' | 'HARD_ERROR_RETRY' | 'REACTIVATED_CHARGE'; + // Generated from: com/linkedin/avro2pegasus/oms/common/OrderType.pdsc + + export type OrderType = + | 'PURCHASE_ORDER' + | 'WORK_ORDER' + | 'REFUND_ORDER' + | 'CS_ORDER' + | 'INVOICE_ORDER' + | 'TRIAL_ORDER' + | 'TEMPLATE_PURCHASE_ORDER' + | 'OFFLINE_ORDER'; + namespace Slim { + // Generated from: com/linkedin/avro2pegasus/oms/common/slim/RChargeAbortReason.pdsc + + export type RChargeAbortReason = 'NO_SER' | 'NO_HER' | 'SER_LIMIT' | 'HER_LIMIT'; + // Generated from: com/linkedin/avro2pegasus/oms/common/slim/RChargeStatus.pdsc + + export type RChargeStatus = 'IN_PROCESS' | 'SUCCESS' | 'FAIL' | 'ABORT'; + } + namespace Tax { + // Generated from: com/linkedin/avro2pegasus/oms/common/tax/TaxType.pdsc + + export type TaxType = 'TAX' | 'VAT'; + } + } + namespace Dm { + namespace Pub { + // Generated from: com/linkedin/avro2pegasus/oms/dm/pub/FulfillmentStatus.pdsc + + export type FulfillmentStatus = 'NOT_FULFILLED' | 'FULFILLED' | 'CANCELED' | 'ERROR' | 'CANCELLING_ERROR'; + // Generated from: com/linkedin/avro2pegasus/oms/dm/pub/OrderState.pdsc + + export type OrderState = + | 'SUCCESS' + | 'PENDING' + | 'PAYMENTINPROGRESS' + | 'PAYMENTPROCESSINGCOMPLETED' + | 'HARDERROR' + | 'HARDERROR2' + | 'SOFTERROR1' + | 'SOFTERROR2' + | 'SOFTERROR3' + | 'SOFTERROR4' + | 'SOFTERROR5' + | 'VC_SOFTERROR1' + | 'VC_HARDERROR1' + | 'ACCTBAL_HARDERROR1' + | 'FULFILLMENT_IN_PROGRESS' + | 'FULFILLED' + | 'FULFILLMENT_ERROR' + | 'NOCCINFO' + | 'CANCEL_IN_PROGRESS' + | 'CANCELLED' + | 'CANCEL_ERROR'; + // Generated from: com/linkedin/avro2pegasus/oms/dm/pub/RefundReason.pdsc + + export type RefundReason = + | 'BILLING_ERROR' + | 'BILLING_FREQUENCY_CHANGE' + | 'COMPANY_CARD' + | 'DOWNGRADE' + | 'FRAUD' + | 'PRODUCT_UNSATISFIED' + | 'PRODUCT_TECH_ISSUE' + | 'UPGRADE' + | 'EXCHANGE' + | 'OFFLINE_REFUND' + | 'OTHER'; + namespace Report { + // Generated from: com/linkedin/avro2pegasus/oms/dm/pub/report/OrderEvent.pdsc + + export interface OrderEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datePlaced: number; + buyerType: Com.Linkedin.Avro2pegasus.Mnybe.Shared.Identity.EntityType; + orderInfoVersion: number; + orderType: Com.Linkedin.Avro2pegasus.Oms.Common.OrderType; + paymentCompletionCode?: Com.Linkedin.Avro2pegasus.Ptagent.Pub.CompletionCode; + refundReasonCode?: Com.Linkedin.Avro2pegasus.Oms.Dm.Pub.RefundReason; + currency?: string; + country?: string; + creditCardType?: Com.Linkedin.Avro2pegasus.Ptagent.Pub.CreditCardType; + paymentGatewayType?: string; + paymentGatewayResponseCode?: number; + paymentRouting?: string; + amount?: number; + taxAmount?: number; + taxCurrency?: string; + taxType?: Com.Linkedin.Avro2pegasus.Oms.Common.Tax.TaxType; + orderState?: Com.Linkedin.Avro2pegasus.Oms.Dm.Pub.OrderState; + orderSubtype?: Com.Linkedin.Avro2pegasus.Oms.Common.OrderSubtype; + transactionChannel?: Com.Linkedin.Avro2pegasus.Payments.Common.TransactionChannel; + locale?: string; + year?: number; + month?: number; + day?: number; + dayOfWeek?: number; + hour?: number; + minute?: number; + orderUrn?: string; + onlineApplicationChannel?: Com.Linkedin.Avro2pegasus.Events.Payments.OnlineApplicationChannel; + } + // Generated from: com/linkedin/avro2pegasus/oms/dm/pub/report/OrderLineEvent.pdsc + + export interface OrderLineEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + datePlaced: number; + fulfilledTime?: number; + ownerType: Com.Linkedin.Avro2pegasus.Mnybe.Shared.Identity.EntityType; + lineItemType: number; + productId?: number; + productFamily?: string; + productSubFamily?: string; + productCode?: string; + promoId?: number; + orderInfoVersion: number; + paymentCompletionCode: Com.Linkedin.Avro2pegasus.Ptagent.Pub.CompletionCode; + refundReasonCode?: Com.Linkedin.Avro2pegasus.Oms.Dm.Pub.RefundReason; + currency?: string; + country?: string; + creditCardType?: Com.Linkedin.Avro2pegasus.Ptagent.Pub.CreditCardType; + amount?: number; + taxAmount?: number; + taxCurrency?: string; + taxType?: Com.Linkedin.Avro2pegasus.Oms.Common.Tax.TaxType; + fulfillmentStatus?: Com.Linkedin.Avro2pegasus.Oms.Dm.Pub.FulfillmentStatus; + locale?: string; + year?: number; + month?: number; + day?: number; + dayOfWeek?: number; + hour?: number; + minute?: number; + priceId?: number; + recurrenceInfo?: Com.Linkedin.Avro2pegasus.Events.Oms.Dm.Pub.Report.RecurrenceInfo; + promotionName?: string; + usdAmount?: number; + exchangeRate?: number; + orderUrn?: string; + orderLineUrn?: string; + parentOrderLineUrn?: string; + } + // Generated from: com/linkedin/avro2pegasus/oms/dm/pub/report/PaymentRChargeEvent.pdsc + + export interface PaymentRChargeEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + cycleId: number; + eventId: number; + cycleStartDate?: number; + cycleEndDate?: number; + cycleAbortDate?: number; + cycleAbortReason?: Com.Linkedin.Avro2pegasus.Oms.Common.Slim.RChargeAbortReason; + stepDate?: number; + failDate?: number; + resumeDate?: number; + serviceId: number; + orderId: number; + orderLineId: number; + strategyName?: string; + attemptNumber?: number; + paymentProcessor?: string; + receiptId?: number; + paymentCompletionCode?: Com.Linkedin.Avro2pegasus.Ptagent.Pub.CompletionCode; + responseCode?: string; + liResponseCode?: string; + status: Com.Linkedin.Avro2pegasus.Oms.Common.Slim.RChargeStatus; + numAttempts?: number; + } + } + } + } + } + namespace Payments { + namespace Common { + // Generated from: com/linkedin/avro2pegasus/payments/common/TransactionChannel.pdsc + + export type TransactionChannel = 'ONLINE' | 'OFFLINE' | 'FIELD_SALES'; + } + } + namespace Ptagent { + namespace Pub { + // Generated from: com/linkedin/avro2pegasus/ptagent/pub/CompletionCode.pdsc + + export type CompletionCode = + | 'SUCCESS' + | 'SOFT_ERROR_1' + | 'SOFT_ERROR_2' + | 'SOFT_ERROR_3' + | 'SOFT_ERROR_4' + | 'SOFT_ERROR_5' + | 'HARD_ERROR_1' + | 'HARD_ERROR_2' + | 'VC_SOFTERROR1' + | 'VC_HARDERROR1' + | 'ACCTBAL_HARDERROR1' + | 'NOCCINFO' + | 'HARD_ERROR_NTWK' + | 'HARD_ERROR_GTWY'; + // Generated from: com/linkedin/avro2pegasus/ptagent/pub/CreditCardType.pdsc + + export type CreditCardType = 'AMERICAN_EXPRESS' | 'MASTERCARD' | 'VISA' | 'DISCOVER' | 'DINERS_CLUB' | 'JCB'; + namespace Report { + // Generated from: com/linkedin/avro2pegasus/ptagent/pub/report/CardAccountType.pdsc + + export type CardAccountType = 'CONSUMER' | 'CORPORATE'; + // Generated from: com/linkedin/avro2pegasus/ptagent/pub/report/IsPrepaidOrNot.pdsc + + export type IsPrepaidOrNot = 'PREPAID' | 'NOT'; + // Generated from: com/linkedin/avro2pegasus/ptagent/pub/report/PaymentCardCapability.pdsc + + export type PaymentCardCapability = 'CREDIT' | 'DEBIT'; + // Generated from: com/linkedin/avro2pegasus/ptagent/pub/report/PaymentCardInfo.pdsc + + export interface PaymentCardInfo { + countryCode?: string; + capability?: PaymentCardCapability; + cardAccountType?: CardAccountType; + isPrepaidCard?: IsPrepaidOrNot; + } + // Generated from: com/linkedin/avro2pegasus/ptagent/pub/report/PaymentTransactionEvent.pdsc + + export interface PaymentTransactionEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + transactionRequestDate?: number; + transactionResponseDate?: number; + transactionProcessTime?: number; + receiptType?: string; + productDesc?: string; + currencyCode?: string; + billingCountry?: string; + billingState?: string; + paymentMethodType?: string; + verificationStatus?: string; + paymentProcessor?: string; + transactionEntity?: string; + transactionChannel?: string; + paymentGatewayResponseCode?: string; + liPaymentGatewayResponseCode?: string; + totalAmount?: number; + transactionRequestSecondUTC?: number; + transactionRequestMinuteUTC?: number; + transactionRequestHourUTC?: number; + transactionRequestDayUTC?: number; + transactionRequestWeekUTC?: number; + transactionRequestMonthUTC?: number; + transactionRequestYearUTC?: number; + orderId?: number; + usdAmount?: number; + exchangeRate?: number; + productUrn?: string; + paymentCardInfo?: PaymentCardInfo; + paymentId?: string; + binRangeKeyHash?: string; + merchantId?: string; + parentOrderId?: string; + } + } + } + } + namespace Schema { + namespace Cloud { + // Generated from: com/linkedin/avro2pegasus/schema/cloud/CloudMetricMessage.pdsc + + export interface CloudMetricMessage { + metricName: string; + metricValue: number; + } + } + } + namespace Security { + namespace Ucv { + namespace Reputation { + // Generated from: com/linkedin/avro2pegasus/security/ucv/reputation/AdvertiserReputation.pdsc + + export interface AdvertiserReputation { + versionedScores: VersionedScore[]; + } + // Generated from: com/linkedin/avro2pegasus/security/ucv/reputation/VersionedScore.pdsc + + export interface VersionedScore { + score: number; + version: string; + } + } + } + } + namespace Soylent { + namespace Internal { + // Generated from: com/linkedin/avro2pegasus/soylent/internal/NewsExtractEvent.pdsc + + export interface NewsExtractEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + docId: string; + title: string; + text: string; + source: string; + url: string; + media: string; + publishDate?: number; + contentPublishDate?: number; + fetchDate?: number; + contentQualityScore: number; + docTopics: TopicsData[]; + } + // Generated from: com/linkedin/avro2pegasus/soylent/internal/TopicExtractEvent.pdsc + + export interface TopicExtractEvent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + docId: string; + docTopics: TopicsData[]; + } + // Generated from: com/linkedin/avro2pegasus/soylent/internal/TopicsData.pdsc + + export interface TopicsData { + topicId: string; + topicName?: string; + topicScore: number; + } + } + } + namespace Standardization { + // Generated from: com/linkedin/avro2pegasus/standardization/InferredCountryOfResidenceMessage.pdsc + + export interface InferredCountryOfResidenceMessage { + standardizationHeader: StandardizationHeader; + inferredCountryOfResidence?: Com.Linkedin.Avro2pegasus.Events.Country; + } + // Generated from: com/linkedin/avro2pegasus/standardization/StandardizationHeader.pdsc + + export interface StandardizationHeader { + id: string; + timestamp: number; + source?: string; + } + // Generated from: com/linkedin/avro2pegasus/standardization/StandardizationMetadataHeader.pdsc + + export interface StandardizationMetadataHeader { + id: string; + timestamp: number; + } + } + namespace Tracking { + namespace Common { + namespace Ads { + // Generated from: com/linkedin/avro2pegasus/tracking/common/ads/DMPDestination.pdsc + + export type DMPDestination = 'APPNEXUS' | 'LINKEDIN'; + // Generated from: com/linkedin/avro2pegasus/tracking/common/ads/ThirdPartyTrackingPlatform.pdsc + + export type ThirdPartyTrackingPlatform = 'DOUBLECLICK' | 'ATLAS' | 'MOAT'; + // Generated from: com/linkedin/avro2pegasus/tracking/common/ads/TrackingEventType.pdsc + + export type TrackingEventType = 'IMPRESSION' | 'CLICK' | 'VIDEO_ACTION'; + } + } + } + namespace Ugc { + // Generated from: com/linkedin/avro2pegasus/ugc/Origin.pdsc + + export type Origin = + | 'API' + | 'ELEVATE' + | 'FIREFOX' + | 'FLAGSHIP' + | 'IN_SHARE' + | 'DESKTOP' + | 'LSS' + | 'PULSE' + | 'SLIDESHARE' + | 'LI_BADGE' + | 'ANET' + | 'SLIDESHARE_MIGRATION' + | 'ADS' + | 'CONTAINER_FEED' + | 'DAILY_RUNDOWN' + | 'DEEPLINK' + | 'FEED' + | 'HASHTAG_FEED' + | 'JOB_PROMO' + | 'JOB_SEARCH' + | 'JOB_HOME' + | 'KEYBOARD_SHORTCUT' + | 'LEARNING' + | 'LITE' + | 'MEDIA_ENTITY_PAGE' + | 'NAVIGATION_BAR' + | 'NOTIFICATION' + | 'ORGANIZATION' + | 'ORGANIZATION_SHARE' + | 'PROFILE' + | 'PROFILE_MORE_PAGE' + | 'PUBLISHING' + | 'RESHARE' + | 'SHARE_EXTENSION' + | 'WEBVIEW' + | 'MISSING'; + } + namespace Uscp { + // Generated from: com/linkedin/avro2pegasus/uscp/USCPTranslatableContent.pdsc + + export interface USCPTranslatableContent { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + Translationkey: string; + Translationvalue: string; + Verb: string; + Comment: string; + TestName: string; + } + namespace Offline { + // Generated from: com/linkedin/avro2pegasus/uscp/offline/ActivityOfDeletedAccountUscpEvent.pdsc + + export interface ActivityOfDeletedAccountUscpEvent { + activityUrn: string; + accountUrn: string; + } + } + } + namespace Voldemort { + // Generated from: com/linkedin/avro2pegasus/voldemort/LegacyGrandfatheringEvent.pdsc + + export interface LegacyGrandfatheringEvent { + key: number; + value: number; + version?: number; + } + } + namespace Waterloo { + namespace Producer { + // Generated from: com/linkedin/avro2pegasus/waterloo/producer/StandardizationProducerMessage.pdsc + + export interface StandardizationProducerMessage { + id: string; + timestamp: number; + standardizations?: StandardizedValue[]; + source?: string; + } + // Generated from: com/linkedin/avro2pegasus/waterloo/producer/StandardizedValue.pdsc + + export interface StandardizedValue { + value: string; + score: number; + } + } + } + } + namespace Chart { + // Generated from: com/linkedin/chart/InchartsChartDataset.pdsc + + export interface InchartsChartDataset { + name: string; + description?: string; + type: 'PINOT' | 'PRESTO' | 'UMP'; + sourceTable?: string; + } + // Generated from: com/linkedin/chart/InchartsChartDataSource.pdsc + + export interface InchartsChartDataSource { + umpDatasetName: string; + umpMetrics: string[]; + } + // Generated from: com/linkedin/chart/InchartsChartDataSourceV2.pdsc + + export interface InchartsChartDataSourceV2 { + dataset: InchartsChartDataset; + metrics: InchartsChartMetric[]; + } + // Generated from: com/linkedin/chart/InchartsChartEdit.pdsc + + export interface InchartsChartEdit { + editMode?: Com.Linkedin.Common.AuditStamp; + } + // Generated from: com/linkedin/chart/InchartsChartInstanceMetadata.pdsc + + export interface InchartsChartInstanceMetadata extends Com.Linkedin.Common.ChangeAuditStamps { + title: Com.Linkedin.Common.MultiLocaleString; + description?: Com.Linkedin.Common.MultiLocaleString; + versionDescription?: Com.Linkedin.Common.MultiLocaleString; + chartQuery: InchartsChartQuery; + queryMetrics: string[]; + queryDataSources?: InchartsChartDataSource[]; + queryDataSourcesV2?: InchartsChartDataSourceV2[]; + } + // Generated from: com/linkedin/chart/InchartsChartInstances.pdsc + + export interface InchartsChartInstances { + instances: string[]; + } + // Generated from: com/linkedin/chart/InchartsChartMetric.pdsc + + export interface InchartsChartMetric { + name: string; + description?: string; + } + // Generated from: com/linkedin/chart/InchartsChartQuery.pdsc + + export interface InchartsChartQuery { + chartQuery: string; + protocol: 'RQL' | 'PRISM' | 'RSHINY' | 'VIZPACK' | 'FILTER' | 'PRESTO'; + version: string; + } + } + namespace Common { + // Generated from: com/linkedin/common/AccessGrantUrn.pdsc + + export type AccessGrantUrn = string; + // Generated from: com/linkedin/common/AclPermissionUrn.pdsc + + export type AclPermissionUrn = string; + // Generated from: com/linkedin/common/AclProductGroupUrn.pdsc + + export type AclProductGroupUrn = string; + // Generated from: com/linkedin/common/AclRoleUrn.pdsc + + export type AclRoleUrn = string; + // Generated from: com/linkedin/common/ActivityUrn.pdsc + + export type ActivityUrn = string; + // Generated from: com/linkedin/common/AdAgentUrn.pdsc + + export type AdAgentUrn = string; + // Generated from: com/linkedin/common/AdaptiveAssessmentQuizUrn.pdsc + + export type AdaptiveAssessmentQuizUrn = string; + // Generated from: com/linkedin/common/AdaptiveAssessmentStateUrn.pdsc + + export type AdaptiveAssessmentStateUrn = string; + // Generated from: com/linkedin/common/AdAudienceMatchUrn.pdsc + + export type AdAudienceMatchUrn = string; + // Generated from: com/linkedin/common/AdAutomatedRecommendationUrn.pdsc + + export type AdAutomatedRecommendationUrn = string; + // Generated from: com/linkedin/common/AdBrandSafetyProfileUrn.pdsc + + export type AdBrandSafetyProfileUrn = string; + // Generated from: com/linkedin/common/AdBulkActionUrn.pdsc + + export type AdBulkActionUrn = string; + // Generated from: com/linkedin/common/AdContextUrn.pdsc + + export type AdContextUrn = string; + // Generated from: com/linkedin/common/AdCreativePreviewUrn.pdsc + + export type AdCreativePreviewUrn = string; + // Generated from: com/linkedin/common/Address.pdsc + + export interface Address { + line1?: string; + line2?: string; + line3?: string; + line4?: string; + city?: string; + geographicAreaType?: 'PROVINCE' | 'STATE'; + geographicArea?: string; + postalCode?: string; + country?: string; + latLong?: LatLong; + } + // Generated from: com/linkedin/common/AddressType.pdsc + + export type AddressType = 'HOME' | 'WORK'; + // Generated from: com/linkedin/common/AdExperimentCellUrn.pdsc + + export type AdExperimentCellUrn = string; + // Generated from: com/linkedin/common/AdExperimentUrn.pdsc + + export type AdExperimentUrn = string; + // Generated from: com/linkedin/common/AdFormatUrn.pdsc + + export type AdFormatUrn = string; + // Generated from: com/linkedin/common/AdFormConsentUrn.pdsc + + export type AdFormConsentUrn = string; + // Generated from: com/linkedin/common/AdFormQuestionUrn.pdsc + + export type AdFormQuestionUrn = string; + // Generated from: com/linkedin/common/AdFormResponseUrn.pdsc + + export type AdFormResponseUrn = string; + // Generated from: com/linkedin/common/AdFormUrn.pdsc + + export type AdFormUrn = string; + // Generated from: com/linkedin/common/AdInMailContentUrn.pdsc + + export type AdInMailContentUrn = string; + // Generated from: com/linkedin/common/AdLiftTestSurveyUrn.pdsc + + export type AdLiftTestSurveyUrn = string; + // Generated from: com/linkedin/common/AdLiftTestUrn.pdsc + + export type AdLiftTestUrn = string; + // Generated from: com/linkedin/common/AdPageSetUrn.pdsc + + export type AdPageSetUrn = string; + // Generated from: com/linkedin/common/AdProgramTierUrn.pdsc + + export type AdProgramTierUrn = string; + // Generated from: com/linkedin/common/AdPublisherFileUrn.pdsc + + export type AdPublisherFileUrn = string; + // Generated from: com/linkedin/common/AdReviewSessionUrn.pdsc + + export type AdReviewSessionUrn = string; + // Generated from: com/linkedin/common/AdSegmentLookalikeUrn.pdsc + + export type AdSegmentLookalikeUrn = string; + // Generated from: com/linkedin/common/AdSegmentUrn.pdsc + + export type AdSegmentUrn = string; + // Generated from: com/linkedin/common/AdSlotSizeUrn.pdsc + + export type AdSlotSizeUrn = string; + // Generated from: com/linkedin/common/AdTargetId.pdsc + + export interface AdTargetId { + type: + | 'LINKEDIN' + | 'UBID' + | 'IDFA' + | 'IDFA_SHA1' + | 'IDFA_MD5' + | 'ANDROID' + | 'ANDROID_SHA1' + | 'ANDROID_MD5' + | 'BIZO' + | 'APPNEXUS' + | 'EMAIL' + | 'EMAIL_SHA1' + | 'EMAIL_SHA256' + | 'EMAIL_SHA512' + | 'EMAIL_MD5' + | 'POWERLINKS' + | 'TRIPLELIFT' + | 'GOOGLE_UID'; + idValue: string; + } + // Generated from: com/linkedin/common/AdTargetingFacetUrn.pdsc + + export type AdTargetingFacetUrn = string; + // Generated from: com/linkedin/common/AdTargetTemplateUrn.pdsc + + export type AdTargetTemplateUrn = string; + // Generated from: com/linkedin/common/AdTemplateUrn.pdsc + + export type AdTemplateUrn = string; + // Generated from: com/linkedin/common/AdvertiserUrn.pdsc + + export type AdvertiserUrn = string; + // Generated from: com/linkedin/common/AdvertisingIdUrn.pdsc + + export type AdvertisingIdUrn = string; + // Generated from: com/linkedin/common/AdZoneUrn.pdsc + + export type AdZoneUrn = string; + // Generated from: com/linkedin/common/AgeRangeUrn.pdsc + + export type AgeRangeUrn = string; + // Generated from: com/linkedin/common/AiTaskBucketUrn.pdsc + + export type AiTaskBucketUrn = string; + // Generated from: com/linkedin/common/AlertUrn.pdsc + + export type AlertUrn = string; + // Generated from: com/linkedin/common/AmbryAclUrn.pdsc + + export type AmbryAclUrn = string; + // Generated from: com/linkedin/common/AmbryBlobUrn.pdsc + + export type AmbryBlobUrn = string; + // Generated from: com/linkedin/common/AnalyticsDimensionUrn.pdsc + + export type AnalyticsDimensionUrn = string; + // Generated from: com/linkedin/common/AnalyticsMetricUrn.pdsc + + export type AnalyticsMetricUrn = string; + // Generated from: com/linkedin/common/AnnotatedIngestedContentUrn.pdsc + + export type AnnotatedIngestedContentUrn = string; + // Generated from: com/linkedin/common/AnswerUrn.pdsc + + export type AnswerUrn = string; + // Generated from: com/linkedin/common/Any.pdsc + + export interface Any {} + // Generated from: com/linkedin/common/AnyAvroRecord.pdsc + + export interface AnyAvroRecord { + type: string; + value: string; + } + // Generated from: com/linkedin/common/AnyRecord.pdsc + + export interface AnyRecord {} + // Generated from: com/linkedin/common/ApiPermissionUrn.pdsc + + export type ApiPermissionUrn = string; + // Generated from: com/linkedin/common/AppBundleUrn.pdsc + + export type AppBundleUrn = string; + // Generated from: com/linkedin/common/ApplicantTrackingSystemClientUrn.pdsc + + export type ApplicantTrackingSystemClientUrn = string; + // Generated from: com/linkedin/common/ApplicantTrackingSystemClientUserRegistrationQuestionUrn.pdsc + + export type ApplicantTrackingSystemClientUserRegistrationQuestionUrn = string; + // Generated from: com/linkedin/common/ApplicantTrackingSystemUrn.pdsc + + export type ApplicantTrackingSystemUrn = string; + // Generated from: com/linkedin/common/ApplicationInstanceChurnerUrn.pdsc + + export type ApplicationInstanceChurnerUrn = string; + // Generated from: com/linkedin/common/ApplicationInstanceUrn.pdsc + + export type ApplicationInstanceUrn = string; + // Generated from: com/linkedin/common/ApplicationLayerProtocol.pdsc + + export type ApplicationLayerProtocol = 'HTTP' | 'HTTPS'; + // Generated from: com/linkedin/common/ApplicationSliceUrn.pdsc + + export type ApplicationSliceUrn = string; + // Generated from: com/linkedin/common/ApplicationUrn.pdsc + + export type ApplicationUrn = string; + // Generated from: com/linkedin/common/AppreciationUrn.pdsc + + export type AppreciationUrn = string; + // Generated from: com/linkedin/common/ArticleUrn.pdsc + + export type ArticleUrn = string; + // Generated from: com/linkedin/common/AssessedCandidateUrn.pdsc + + export type AssessedCandidateUrn = string; + // Generated from: com/linkedin/common/AssessmentCandidateQualificationUrn.pdsc + + export type AssessmentCandidateQualificationUrn = string; + // Generated from: com/linkedin/common/AssessmentQualificationStepUrn.pdsc + + export type AssessmentQualificationStepUrn = string; + // Generated from: com/linkedin/common/AssessmentQualificationUrn.pdsc + + export type AssessmentQualificationUrn = string; + // Generated from: com/linkedin/common/AssessmentQuestionResponseUrn.pdsc + + export type AssessmentQuestionResponseUrn = string; + // Generated from: com/linkedin/common/AssessmentQuestionUrn.pdsc + + export type AssessmentQuestionUrn = string; + // Generated from: com/linkedin/common/AssessmentsAuthorizationGroupUrn.pdsc + + export type AssessmentsAuthorizationGroupUrn = string; + // Generated from: com/linkedin/common/AssessmentUrn.pdsc + + export type AssessmentUrn = string; + // Generated from: com/linkedin/common/AssetCopyActionUrn.pdsc + + export type AssetCopyActionUrn = string; + // Generated from: com/linkedin/common/AtcTestConfigUrn.pdsc + + export type AtcTestConfigUrn = string; + // Generated from: com/linkedin/common/AtsCandidateUrn.pdsc + + export type AtsCandidateUrn = string; + // Generated from: com/linkedin/common/AtsClientUrn.pdsc + + export type AtsClientUrn = string; + // Generated from: com/linkedin/common/AtsClientUserAccountUrn.pdsc + + export type AtsClientUserAccountUrn = string; + // Generated from: com/linkedin/common/AtsClientUserRegistrationAnswerUrn.pdsc + + export type AtsClientUserRegistrationAnswerUrn = string; + // Generated from: com/linkedin/common/AtsClientUserRegistrationQuestionUrn.pdsc + + export type AtsClientUserRegistrationQuestionUrn = string; + // Generated from: com/linkedin/common/AtsImportedProfileUrn.pdsc + + export type AtsImportedProfileUrn = string; + // Generated from: com/linkedin/common/AtsJobPostingUrn.pdsc + + export type AtsJobPostingUrn = string; + // Generated from: com/linkedin/common/AtsMiddlewarePullerUrn.pdsc + + export type AtsMiddlewarePullerUrn = string; + // Generated from: com/linkedin/common/AtsMiddlewareTenantUrn.pdsc + + export type AtsMiddlewareTenantUrn = string; + // Generated from: com/linkedin/common/Attribute.pdsc + + export interface Attribute extends IndexRange { + value: + | MemberAttributedEntity + | CompanyAttributedEntity + | SchoolAttributedEntity + | HyperlinkAttributedEntity + | ImportanceAttributedEntity + | SeatAttributedEntity + | HashtagAttributedEntity + | BoldAttributedEntity; + } + // Generated from: com/linkedin/common/AttributedText.pdsc + + export interface AttributedText { + text: string; + inferredLocale?: string; + attributes: Attribute[]; + } + // Generated from: com/linkedin/common/AuditLogAdFormResponseUrn.pdsc + + export type AuditLogAdFormResponseUrn = string; + // Generated from: com/linkedin/common/AuditStamp.pdsc + + export interface AuditStamp { + time: Time; + actor: string; + impersonator?: string; + } + // Generated from: com/linkedin/common/AutomatedInsightsDigestRecipientUrn.pdsc + + export type AutomatedInsightsDigestRecipientUrn = string; + // Generated from: com/linkedin/common/AutoScalingGroupUrn.pdsc + + export type AutoScalingGroupUrn = string; + // Generated from: com/linkedin/common/AzkabanFlowExecutionUrn.pdsc + + export type AzkabanFlowExecutionUrn = string; + // Generated from: com/linkedin/common/AzkabanFlowUrn.pdsc + + export type AzkabanFlowUrn = string; + // Generated from: com/linkedin/common/AzkabanJobExecutionUrn.pdsc + + export type AzkabanJobExecutionUrn = string; + // Generated from: com/linkedin/common/AzkabanJobUrn.pdsc + + export type AzkabanJobUrn = string; + // Generated from: com/linkedin/common/AzureLayoutUnitUrn.pdsc + + export type AzureLayoutUnitUrn = string; + // Generated from: com/linkedin/common/B2bProductUrn.pdsc + + export type B2bProductUrn = string; + // Generated from: com/linkedin/common/BaseDeprecation.pdsc + + export interface BaseDeprecation { + deprecated: boolean; + decommissionTime?: Time; + note: string; + } + // Generated from: com/linkedin/common/BaseUserEditableInfo.pdsc + + export interface BaseUserEditableInfo { + description?: string; + tags: string[]; + created?: AuditStamp; + } + // Generated from: com/linkedin/common/BenefitUrn.pdsc + + export type BenefitUrn = string; + // Generated from: com/linkedin/common/BigDecimal.pdsc + + export type BigDecimal = string; + // Generated from: com/linkedin/common/BodyUrn.pdsc + + export type BodyUrn = string; + // Generated from: com/linkedin/common/BoldAttributedEntity.pdsc + + export interface BoldAttributedEntity {} + // Generated from: com/linkedin/common/BookingEventUrn.pdsc + + export type BookingEventUrn = string; + // Generated from: com/linkedin/common/BookingLineItemAttributionModificationByYearUrn.pdsc + + export type BookingLineItemAttributionModificationByYearUrn = string; + // Generated from: com/linkedin/common/BookingLineItemModificationUrn.pdsc + + export type BookingLineItemModificationUrn = string; + // Generated from: com/linkedin/common/BulkMarketingCampaignCreationFileUrn.pdsc + + export type BulkMarketingCampaignCreationFileUrn = string; + // Generated from: com/linkedin/common/BureauOfLaborStatisticUrn.pdsc + + export type BureauOfLaborStatisticUrn = string; + // Generated from: com/linkedin/common/BusinessEntitiesRelationshipTypeUrn.pdsc + + export type BusinessEntitiesRelationshipTypeUrn = string; + // Generated from: com/linkedin/common/BusinessManagerAccountUrn.pdsc + + export type BusinessManagerAccountUrn = string; + // Generated from: com/linkedin/common/BusinessProcessDefinitionUrn.pdsc + + export type BusinessProcessDefinitionUrn = string; + // Generated from: com/linkedin/common/BusinessProcessDeploymentUrn.pdsc + + export type BusinessProcessDeploymentUrn = string; + // Generated from: com/linkedin/common/BusinessProcessInstanceDiagramUrn.pdsc + + export type BusinessProcessInstanceDiagramUrn = string; + // Generated from: com/linkedin/common/BusinessProcessInstanceUrn.pdsc + + export type BusinessProcessInstanceUrn = string; + // Generated from: com/linkedin/common/BusinessProcessInstanceVariableUrn.pdsc + + export type BusinessProcessInstanceVariableUrn = string; + // Generated from: com/linkedin/common/BusinessProcessTaskUrn.pdsc + + export type BusinessProcessTaskUrn = string; + // Generated from: com/linkedin/common/BusinessProcessWorkflowUrn.pdsc + + export type BusinessProcessWorkflowUrn = string; + // Generated from: com/linkedin/common/BusinessProspectUrn.pdsc + + export type BusinessProspectUrn = string; + // Generated from: com/linkedin/common/BusinessRuleUrn.pdsc + + export type BusinessRuleUrn = string; + // Generated from: com/linkedin/common/CalendarAvailabilityShareUrn.pdsc + + export type CalendarAvailabilityShareUrn = string; + // Generated from: com/linkedin/common/CandidateExternalMessageThreadUrn.pdsc + + export type CandidateExternalMessageThreadUrn = string; + // Generated from: com/linkedin/common/CandidateExternalMessageUrn.pdsc + + export type CandidateExternalMessageUrn = string; + // Generated from: com/linkedin/common/CandidateHiringNoteUrn.pdsc + + export type CandidateHiringNoteUrn = string; + // Generated from: com/linkedin/common/CandidateHiringPipelineUrn.pdsc + + export type CandidateHiringPipelineUrn = string; + // Generated from: com/linkedin/common/CandidateHiringStateUrn.pdsc + + export type CandidateHiringStateUrn = string; + // Generated from: com/linkedin/common/CandidateMessageThreadUrn.pdsc + + export type CandidateMessageThreadUrn = string; + // Generated from: com/linkedin/common/CandidateMessageUrn.pdsc + + export type CandidateMessageUrn = string; + // Generated from: com/linkedin/common/CandidateNoteUrn.pdsc + + export type CandidateNoteUrn = string; + // Generated from: com/linkedin/common/CandidateRejectionRecordUrn.pdsc + + export type CandidateRejectionRecordUrn = string; + // Generated from: com/linkedin/common/CandidateRejectionTemplateUrn.pdsc + + export type CandidateRejectionTemplateUrn = string; + // Generated from: com/linkedin/common/CandidateSourceUrn.pdsc + + export type CandidateSourceUrn = string; + // Generated from: com/linkedin/common/CapAccountUrn.pdsc + + export type CapAccountUrn = string; + // Generated from: com/linkedin/common/CapAttachmentUrn.pdsc + + export type CapAttachmentUrn = string; + // Generated from: com/linkedin/common/CapContextUrn.pdsc + + export type CapContextUrn = string; + // Generated from: com/linkedin/common/CapCustomFieldUrn.pdsc + + export type CapCustomFieldUrn = string; + // Generated from: com/linkedin/common/CapImportJobUrn.pdsc + + export type CapImportJobUrn = string; + // Generated from: com/linkedin/common/CapInmailGrantUrn.pdsc + + export type CapInmailGrantUrn = string; + // Generated from: com/linkedin/common/CapProjectUrn.pdsc + + export type CapProjectUrn = string; + // Generated from: com/linkedin/common/CapQueueEntityUrn.pdsc + + export type CapQueueEntityUrn = string; + // Generated from: com/linkedin/common/CapResumeUrn.pdsc + + export type CapResumeUrn = string; + // Generated from: com/linkedin/common/CapSavedSearchUrn.pdsc + + export type CapSavedSearchUrn = string; + // Generated from: com/linkedin/common/CapSearchHistoryUrn.pdsc + + export type CapSearchHistoryUrn = string; + // Generated from: com/linkedin/common/CapSourceUrn.pdsc + + export type CapSourceUrn = string; + // Generated from: com/linkedin/common/CapStatusUrn.pdsc + + export type CapStatusUrn = string; + // Generated from: com/linkedin/common/CapTagUrn.pdsc + + export type CapTagUrn = string; + // Generated from: com/linkedin/common/CareChatWorkflowUrn.pdsc + + export type CareChatWorkflowUrn = string; + // Generated from: com/linkedin/common/CareCommunityAnswerUrn.pdsc + + export type CareCommunityAnswerUrn = string; + // Generated from: com/linkedin/common/CareCommunityCommentUrn.pdsc + + export type CareCommunityCommentUrn = string; + // Generated from: com/linkedin/common/CareCommunityQuestionUrn.pdsc + + export type CareCommunityQuestionUrn = string; + // Generated from: com/linkedin/common/CareCommunitySpaceUrn.pdsc + + export type CareCommunitySpaceUrn = string; + // Generated from: com/linkedin/common/CarouselUrn.pdsc + + export type CarouselUrn = string; + // Generated from: com/linkedin/common/CartUrn.pdsc + + export type CartUrn = string; + // Generated from: com/linkedin/common/CelebrateAnniversaryUrn.pdsc + + export type CelebrateAnniversaryUrn = string; + // Generated from: com/linkedin/common/CelebrateAwardUrn.pdsc + + export type CelebrateAwardUrn = string; + // Generated from: com/linkedin/common/CelebrateEventUrn.pdsc + + export type CelebrateEventUrn = string; + // Generated from: com/linkedin/common/CelebrateGraduationUrn.pdsc + + export type CelebrateGraduationUrn = string; + // Generated from: com/linkedin/common/CelebrateJobChangeUrn.pdsc + + export type CelebrateJobChangeUrn = string; + // Generated from: com/linkedin/common/CelebrateKudosUrn.pdsc + + export type CelebrateKudosUrn = string; + // Generated from: com/linkedin/common/CelebrateLaunchUrn.pdsc + + export type CelebrateLaunchUrn = string; + // Generated from: com/linkedin/common/CelebrateWelcomeUrn.pdsc + + export type CelebrateWelcomeUrn = string; + // Generated from: com/linkedin/common/CelebrationTemplateUrn.pdsc + + export type CelebrationTemplateUrn = string; + // Generated from: com/linkedin/common/CertificationUrn.pdsc + + export type CertificationUrn = string; + // Generated from: com/linkedin/common/ChangeAuditStamps.pdsc + + export interface ChangeAuditStamps { + created: AuditStamp; + lastModified: AuditStamp; + deleted?: AuditStamp; + } + // Generated from: com/linkedin/common/ChangeTimeStamps.pdsc + + export interface ChangeTimeStamps { + created: Time; + lastModified: Time; + deleted?: Time; + } + // Generated from: com/linkedin/common/ChannelUrn.pdsc + + export type ChannelUrn = string; + // Generated from: com/linkedin/common/ChimeraWhitelistUrn.pdsc + + export type ChimeraWhitelistUrn = string; + // Generated from: com/linkedin/common/ChronicleActivityTypeUrn.pdsc + + export type ChronicleActivityTypeUrn = string; + // Generated from: com/linkedin/common/ChronicleActivityUrn.pdsc + + export type ChronicleActivityUrn = string; + // Generated from: com/linkedin/common/ChronicleViewUrn.pdsc + + export type ChronicleViewUrn = string; + // Generated from: com/linkedin/common/ChurnExecutionUrn.pdsc + + export type ChurnExecutionUrn = string; + // Generated from: com/linkedin/common/CincoUserUrn.pdsc + + export type CincoUserUrn = string; + // Generated from: com/linkedin/common/ClasslessInterDomainRoutingNotation.pdsc + + export type ClasslessInterDomainRoutingNotation = string; + // Generated from: com/linkedin/common/ClosedBigDecimalRange.pdsc + + export interface ClosedBigDecimalRange { + start?: BigDecimal; + end?: BigDecimal; + } + // Generated from: com/linkedin/common/ClosedDoubleRange.pdsc + + export interface ClosedDoubleRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/common/ClosedFloatRange.pdsc + + export interface ClosedFloatRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/common/ClosedIntRange.pdsc + + export interface ClosedIntRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/common/ClosedMoneyAmountRange.pdsc + + export interface ClosedMoneyAmountRange { + start?: MoneyAmount; + end?: MoneyAmount; + } + // Generated from: com/linkedin/common/ClosedTimeRange.pdsc + + export interface ClosedTimeRange { + start: Time; + end: Time; + } + // Generated from: com/linkedin/common/ClusterType.pdsc + + export type ClusterType = + | 'TRACKING' + | 'QUEUING' + | 'METRICS' + | 'LOGGING' + | 'DATA_DEPLOYMENT' + | 'KRC' + | 'AGGREGATE_METRICS' + | 'AGGREGATE_QUEUING' + | 'AGGREGATE_TRACKING' + | 'DD_LOCAL' + | 'ESPRESSO_TESTING' + | 'EXTERNAL_METRICS' + | 'EXTERNAL_TRACKING' + | 'KAC' + | 'LITRACKING' + | 'AGGREGATE_LITRACKING' + | 'VENICE' + | 'DEV_TEST' + | 'DEV' + | 'CERT' + | 'KAC_MSFT' + | 'ORACLE_REPLICATION' + | 'KAC_CERT' + | 'LIT' + | 'KAC_PERF' + | 'CHARLIE' + | 'EXTERNAL_QUEUING' + | 'FOXTROT' + | 'KAC_PRECERT' + | 'KILO' + | 'KRC_BETA' + | 'KRC_CERT' + | 'KRC_PRECERT' + | 'LOCAL_METRICS' + | 'QEI' + | 'SAMSA' + | 'SAMZA_DEV' + | 'SAMZA_TEST' + | 'TANGO' + | 'UNIFORM' + | 'VENICE_DEV' + | 'VENICE_FEED' + | 'EPSILON' + | 'KAC_LC' + | 'SAMZA_INTERNAL' + | 'BROOKLIN_CERT'; + // Generated from: com/linkedin/common/ClusterUrn.pdsc + + export type ClusterUrn = string; + // Generated from: com/linkedin/common/CoachLevelUrn.pdsc + + export type CoachLevelUrn = string; + // Generated from: com/linkedin/common/CodePushUrn.pdsc + + export type CodePushUrn = string; + // Generated from: com/linkedin/common/CodeReviewUrn.pdsc + + export type CodeReviewUrn = string; + // Generated from: com/linkedin/common/ColleagueRelationshipUrn.pdsc + + export type ColleagueRelationshipUrn = string; + // Generated from: com/linkedin/common/ColleaguesTeamUrn.pdsc + + export type ColleaguesTeamUrn = string; + // Generated from: com/linkedin/common/ColleagueSuggestionUrn.pdsc + + export type ColleagueSuggestionUrn = string; + // Generated from: com/linkedin/common/ColocatedApplicationInstanceUrn.pdsc + + export type ColocatedApplicationInstanceUrn = string; + // Generated from: com/linkedin/common/ColocatedApplicationSliceUrn.pdsc + + export type ColocatedApplicationSliceUrn = string; + // Generated from: com/linkedin/common/CommentsTopicUrn.pdsc + + export type CommentsTopicUrn = string; + // Generated from: com/linkedin/common/CommentUrn.pdsc + + export type CommentUrn = string; + // Generated from: com/linkedin/common/CommerceApprovalUrn.pdsc + + export type CommerceApprovalUrn = string; + // Generated from: com/linkedin/common/CommerceContactUrn.pdsc + + export type CommerceContactUrn = string; + // Generated from: com/linkedin/common/CommerceInvoiceUrn.pdsc + + export type CommerceInvoiceUrn = string; + // Generated from: com/linkedin/common/CommerceOfflineTaskQueueUrn.pdsc + + export type CommerceOfflineTaskQueueUrn = string; + // Generated from: com/linkedin/common/CommerceReceiptUrn.pdsc + + export type CommerceReceiptUrn = string; + // Generated from: com/linkedin/common/CommissionScheduleUrn.pdsc + + export type CommissionScheduleUrn = string; + // Generated from: com/linkedin/common/CommunicationChainUrn.pdsc + + export type CommunicationChainUrn = string; + // Generated from: com/linkedin/common/CommunicationCopyUrn.pdsc + + export type CommunicationCopyUrn = string; + // Generated from: com/linkedin/common/CommunicationFeatureModelTypeUrn.pdsc + + export type CommunicationFeatureModelTypeUrn = string; + // Generated from: com/linkedin/common/CommunicationFeatureModelUrn.pdsc + + export type CommunicationFeatureModelUrn = string; + // Generated from: com/linkedin/common/CommunicationFeatureUrn.pdsc + + export type CommunicationFeatureUrn = string; + // Generated from: com/linkedin/common/CommunicationsGatewayRoleUrn.pdsc + + export type CommunicationsGatewayRoleUrn = string; + // Generated from: com/linkedin/common/CommunicationTypeUrn.pdsc + + export type CommunicationTypeUrn = string; + // Generated from: com/linkedin/common/CommunityHighlightUrn.pdsc + + export type CommunityHighlightUrn = string; + // Generated from: com/linkedin/common/CompanyAttributedEntity.pdsc + + export interface CompanyAttributedEntity { + company: string; + } + // Generated from: com/linkedin/common/CompanyUrn.pdsc + + export type CompanyUrn = string; + // Generated from: com/linkedin/common/Compensation.pdsc + + export interface Compensation { + type: CompensationType; + amount: MoneyAmount; + period: CompensationPeriod; + } + // Generated from: com/linkedin/common/CompensationAttributionsUrn.pdsc + + export type CompensationAttributionsUrn = string; + // Generated from: com/linkedin/common/CompensationEventUrn.pdsc + + export type CompensationEventUrn = string; + // Generated from: com/linkedin/common/CompensationPeriod.pdsc + + export type CompensationPeriod = + | 'YEARLY' + | 'MONTHLY' + | 'SEMIMONTHLY' + | 'BIWEEKLY' + | 'WEEKLY' + | 'DAILY' + | 'HOURLY' + | 'ONCE'; + // Generated from: com/linkedin/common/CompensationRange.pdsc + + export interface CompensationRange { + type: CompensationType; + highEnd: MoneyAmount; + lowEnd: MoneyAmount; + period: CompensationPeriod; + } + // Generated from: com/linkedin/common/CompensationType.pdsc + + export type CompensationType = 'BASE_SALARY' | 'TIPS' | 'COMMISSION' | 'PROFIT_SHARING' | 'STOCK_OPTIONS'; + // Generated from: com/linkedin/common/ComplianceDataTypeUrn.pdsc + + export type ComplianceDataTypeUrn = string; + // Generated from: com/linkedin/common/ComplianceMetadataUrn.pdsc + + export type ComplianceMetadataUrn = string; + // Generated from: com/linkedin/common/ComplianceSuggestionUrn.pdsc + + export type ComplianceSuggestionUrn = string; + // Generated from: com/linkedin/common/ComplianceUseCaseUrn.pdsc + + export type ComplianceUseCaseUrn = string; + // Generated from: com/linkedin/common/ConcurrentViewerCountTopicUrn.pdsc + + export type ConcurrentViewerCountTopicUrn = string; + // Generated from: com/linkedin/common/ConnectifierUserUrn.pdsc + + export type ConnectifierUserUrn = string; + // Generated from: com/linkedin/common/ConsumerUrn.pdsc + + export type ConsumerUrn = string; + // Generated from: com/linkedin/common/ContactExporterTaskResultUrn.pdsc + + export type ContactExporterTaskResultUrn = string; + // Generated from: com/linkedin/common/ContactExporterTaskUrn.pdsc + + export type ContactExporterTaskUrn = string; + // Generated from: com/linkedin/common/ContactsBlobUrn.pdsc + + export type ContactsBlobUrn = string; + // Generated from: com/linkedin/common/ContactsCalendarEventUploadTaskUrn.pdsc + + export type ContactsCalendarEventUploadTaskUrn = string; + // Generated from: com/linkedin/common/ContactsCalendarEventUrn.pdsc + + export type ContactsCalendarEventUrn = string; + // Generated from: com/linkedin/common/ContactsCalendarEventV2Urn.pdsc + + export type ContactsCalendarEventV2Urn = string; + // Generated from: com/linkedin/common/ContactsCompanyUrn.pdsc + + export type ContactsCompanyUrn = string; + // Generated from: com/linkedin/common/ContactsEmailMessageUploadTaskUrn.pdsc + + export type ContactsEmailMessageUploadTaskUrn = string; + // Generated from: com/linkedin/common/ContactsIntegrationUrn.pdsc + + export type ContactsIntegrationUrn = string; + // Generated from: com/linkedin/common/ContactsIntegrationV2Urn.pdsc + + export type ContactsIntegrationV2Urn = string; + // Generated from: com/linkedin/common/ContactsIntroductionUrn.pdsc + + export type ContactsIntroductionUrn = string; + // Generated from: com/linkedin/common/ContactsManualEditUrn.pdsc + + export type ContactsManualEditUrn = string; + // Generated from: com/linkedin/common/ContactsNoteUrn.pdsc + + export type ContactsNoteUrn = string; + // Generated from: com/linkedin/common/ContactsParsedFileUrn.pdsc + + export type ContactsParsedFileUrn = string; + // Generated from: com/linkedin/common/ContactsReminderUrn.pdsc + + export type ContactsReminderUrn = string; + // Generated from: com/linkedin/common/ContactsSyncTaskUrn.pdsc + + export type ContactsSyncTaskUrn = string; + // Generated from: com/linkedin/common/ContactsTagUrn.pdsc + + export type ContactsTagUrn = string; + // Generated from: com/linkedin/common/ContactsTaskUrn.pdsc + + export type ContactsTaskUrn = string; + // Generated from: com/linkedin/common/ContactsUrn.pdsc + + export type ContactsUrn = string; + // Generated from: com/linkedin/common/ContainerisedApplicationUrn.pdsc + + export type ContainerisedApplicationUrn = string; + // Generated from: com/linkedin/common/ContainerOrchestratorUrn.pdsc + + export type ContainerOrchestratorUrn = string; + // Generated from: com/linkedin/common/ContentClassificationCategoryUrn.pdsc + + export type ContentClassificationCategoryUrn = string; + // Generated from: com/linkedin/common/ContentClassificationTypeUrn.pdsc + + export type ContentClassificationTypeUrn = string; + // Generated from: com/linkedin/common/ContentCreationPromptCampaignUrn.pdsc + + export type ContentCreationPromptCampaignUrn = string; + // Generated from: com/linkedin/common/ContentCreationPromptUrn.pdsc + + export type ContentCreationPromptUrn = string; + // Generated from: com/linkedin/common/ContentFacetUrn.pdsc + + export type ContentFacetUrn = string; + // Generated from: com/linkedin/common/ContentPrivacySettings.pdsc + + export interface ContentPrivacySettings { + authorName: VisibilityScope; + authorPosition: VisibilityScope; + content: VisibilityScope; + } + // Generated from: com/linkedin/common/ContentRating.pdsc + + export interface ContentRating { + rating: string; + ratingSystem: string; + } + // Generated from: com/linkedin/common/ContentRestrictionPolicyUrn.pdsc + + export type ContentRestrictionPolicyUrn = string; + // Generated from: com/linkedin/common/ContentSeriesUrn.pdsc + + export type ContentSeriesUrn = string; + // Generated from: com/linkedin/common/ContentSourceUrn.pdsc + + export type ContentSourceUrn = string; + // Generated from: com/linkedin/common/ContentTopicUrn.pdsc + + export type ContentTopicUrn = string; + // Generated from: com/linkedin/common/ContentUrn.pdsc + + export type ContentUrn = string; + // Generated from: com/linkedin/common/ContinentCode.pdsc + + export type ContinentCode = 'AF' | 'AQ' | 'AS' | 'EU' | 'LA' | 'ME' | 'NA' | 'OC'; + // Generated from: com/linkedin/common/ContractGroupUrn.pdsc + + export type ContractGroupUrn = string; + // Generated from: com/linkedin/common/ContractSeatUrn.pdsc + + export type ContractSeatUrn = string; + // Generated from: com/linkedin/common/ContractUrn.pdsc + + export type ContractUrn = string; + // Generated from: com/linkedin/common/ControlUrn.pdsc + + export type ControlUrn = string; + // Generated from: com/linkedin/common/ConversationCustomLabelUrn.pdsc + + export type ConversationCustomLabelUrn = string; + // Generated from: com/linkedin/common/ConversationGroupLabelUrn.pdsc + + export type ConversationGroupLabelUrn = string; + // Generated from: com/linkedin/common/ConversationsTopicUrn.pdsc + + export type ConversationsTopicUrn = string; + // Generated from: com/linkedin/common/ConversationSystemLabelUrn.pdsc + + export type ConversationSystemLabelUrn = string; + // Generated from: com/linkedin/common/ConversationUrn.pdsc + + export type ConversationUrn = string; + // Generated from: com/linkedin/common/Coordinate2D.pdsc + + export interface Coordinate2D { + x: number; + y: number; + } + // Generated from: com/linkedin/common/CorpGroupUrn.pdsc + + export type CorpGroupUrn = string; + // Generated from: com/linkedin/common/CorporateMemberUrn.pdsc + + export type CorporateMemberUrn = string; + // Generated from: com/linkedin/common/CorpuserUrn.pdsc + + export type CorpuserUrn = string; + // Generated from: com/linkedin/common/Country.pdsc + + export interface Country { + continentCode: ContinentCode; + countryCode: CountryCode; + } + // Generated from: com/linkedin/common/CountryCode.pdsc + + export type CountryCode = string; + // Generated from: com/linkedin/common/CountryGroupUrn.pdsc + + export type CountryGroupUrn = string; + // Generated from: com/linkedin/common/CountryUrn.pdsc + + export type CountryUrn = string; + // Generated from: com/linkedin/common/CourseFeedbackQuestionUrn.pdsc + + export type CourseFeedbackQuestionUrn = string; + // Generated from: com/linkedin/common/CreatorApplicationReviewUrn.pdsc + + export type CreatorApplicationReviewUrn = string; + // Generated from: com/linkedin/common/CredentialTokenUrn.pdsc + + export type CredentialTokenUrn = string; + // Generated from: com/linkedin/common/CredentialUrn.pdsc + + export type CredentialUrn = string; + // Generated from: com/linkedin/common/CreditCardUrn.pdsc + + export type CreditCardUrn = string; + // Generated from: com/linkedin/common/CreditLimitCheckUrn.pdsc + + export type CreditLimitCheckUrn = string; + // Generated from: com/linkedin/common/CrmAccountUrn.pdsc + + export type CrmAccountUrn = string; + // Generated from: com/linkedin/common/CrmAccountV2Urn.pdsc + + export type CrmAccountV2Urn = string; + // Generated from: com/linkedin/common/CrmContactUrn.pdsc + + export type CrmContactUrn = string; + // Generated from: com/linkedin/common/CrmContactV2Urn.pdsc + + export type CrmContactV2Urn = string; + // Generated from: com/linkedin/common/CrmInstanceUrn.pdsc + + export type CrmInstanceUrn = string; + // Generated from: com/linkedin/common/CrmLeadUrn.pdsc + + export type CrmLeadUrn = string; + // Generated from: com/linkedin/common/CrmLeadV2Urn.pdsc + + export type CrmLeadV2Urn = string; + // Generated from: com/linkedin/common/CrmMigrationGroupUrn.pdsc + + export type CrmMigrationGroupUrn = string; + // Generated from: com/linkedin/common/CrmMigrationStepExecutionUrn.pdsc + + export type CrmMigrationStepExecutionUrn = string; + // Generated from: com/linkedin/common/CrmMigrationUnitExecutionUrn.pdsc + + export type CrmMigrationUnitExecutionUrn = string; + // Generated from: com/linkedin/common/CrmMigrationUnitUrn.pdsc + + export type CrmMigrationUnitUrn = string; + // Generated from: com/linkedin/common/CrmOpportunityContactRoleUrn.pdsc + + export type CrmOpportunityContactRoleUrn = string; + // Generated from: com/linkedin/common/CrmOpportunityUrn.pdsc + + export type CrmOpportunityUrn = string; + // Generated from: com/linkedin/common/CrmPairingUrn.pdsc + + export type CrmPairingUrn = string; + // Generated from: com/linkedin/common/CrmUserRoleUrn.pdsc + + export type CrmUserRoleUrn = string; + // Generated from: com/linkedin/common/CrmUserUrn.pdsc + + export type CrmUserUrn = string; + // Generated from: com/linkedin/common/CroppedImage.pdsc + + export interface CroppedImage { + cropped: string; + original: string; + cropInfo: Rectangle; + } + // Generated from: com/linkedin/common/CrowdsourcingTaskUrn.pdsc + + export type CrowdsourcingTaskUrn = string; + // Generated from: com/linkedin/common/CsDepartmentUrn.pdsc + + export type CsDepartmentUrn = string; + // Generated from: com/linkedin/common/CsGrantRequestUrn.pdsc + + export type CsGrantRequestUrn = string; + // Generated from: com/linkedin/common/CsLogEventTypeUrn.pdsc + + export type CsLogEventTypeUrn = string; + // Generated from: com/linkedin/common/CsPermissionUrn.pdsc + + export type CsPermissionUrn = string; + // Generated from: com/linkedin/common/CsRoleUrn.pdsc + + export type CsRoleUrn = string; + // Generated from: com/linkedin/common/CsUserPermissionUrn.pdsc + + export type CsUserPermissionUrn = string; + // Generated from: com/linkedin/common/CsUserUrn.pdsc + + export type CsUserUrn = string; + // Generated from: com/linkedin/common/CsvImportEntityUrn.pdsc + + export type CsvImportEntityUrn = string; + // Generated from: com/linkedin/common/CsvImportTaskUrn.pdsc + + export type CsvImportTaskUrn = string; + // Generated from: com/linkedin/common/Currency.pdsc + + export type Currency = string; + // Generated from: com/linkedin/common/CustomCandidateSourceUrn.pdsc + + export type CustomCandidateSourceUrn = string; + // Generated from: com/linkedin/common/CustomerAddressUrn.pdsc + + export type CustomerAddressUrn = string; + // Generated from: com/linkedin/common/CustomerChangeUrn.pdsc + + export type CustomerChangeUrn = string; + // Generated from: com/linkedin/common/CustomerCompanyAssociationUrn.pdsc + + export type CustomerCompanyAssociationUrn = string; + // Generated from: com/linkedin/common/CustomerContactUrn.pdsc + + export type CustomerContactUrn = string; + // Generated from: com/linkedin/common/CustomerDataConflictUrn.pdsc + + export type CustomerDataConflictUrn = string; + // Generated from: com/linkedin/common/CustomerPhoneNumberUrn.pdsc + + export type CustomerPhoneNumberUrn = string; + // Generated from: com/linkedin/common/CustomerReconciliationExecutionUrn.pdsc + + export type CustomerReconciliationExecutionUrn = string; + // Generated from: com/linkedin/common/CustomerRelationshipUrn.pdsc + + export type CustomerRelationshipUrn = string; + // Generated from: com/linkedin/common/CustomerSiteUrn.pdsc + + export type CustomerSiteUrn = string; + // Generated from: com/linkedin/common/CustomerSubsystemChangeUrn.pdsc + + export type CustomerSubsystemChangeUrn = string; + // Generated from: com/linkedin/common/CustomerSubsystemMergeExecutionUrn.pdsc + + export type CustomerSubsystemMergeExecutionUrn = string; + // Generated from: com/linkedin/common/CustomerSyncErrorUrn.pdsc + + export type CustomerSyncErrorUrn = string; + // Generated from: com/linkedin/common/CustomerUrn.pdsc + + export type CustomerUrn = string; + // Generated from: com/linkedin/common/CustomTitleGroupingUrn.pdsc + + export type CustomTitleGroupingUrn = string; + // Generated from: com/linkedin/common/D2ClusterUrn.pdsc + + export type D2ClusterUrn = string; + // Generated from: com/linkedin/common/D2ServiceUrn.pdsc + + export type D2ServiceUrn = string; + // Generated from: com/linkedin/common/DailyNewsRundownPoolUrn.pdsc + + export type DailyNewsRundownPoolUrn = string; + // Generated from: com/linkedin/common/DataConceptUrn.pdsc + + export type DataConceptUrn = string; + // Generated from: com/linkedin/common/DataConstructChangeManagementUrn.pdsc + + export type DataConstructChangeManagementUrn = string; + // Generated from: com/linkedin/common/DataInsightsChartQueryTemplateVersionUrn.pdsc + + export type DataInsightsChartQueryTemplateVersionUrn = string; + // Generated from: com/linkedin/common/DataInsightsQueryTemplateVersionUrn.pdsc + + export type DataInsightsQueryTemplateVersionUrn = string; + // Generated from: com/linkedin/common/DataJobRef.pdsc + + export type DataJobRef = { azkabanJob: string }; + // Generated from: com/linkedin/common/DataPlatformUrn.pdsc + + export type DataPlatformUrn = string; + // Generated from: com/linkedin/common/DatasetAccessControlUrn.pdsc + + export type DatasetAccessControlUrn = string; + // Generated from: com/linkedin/common/DatasetAccessGroupUrn.pdsc + + export type DatasetAccessGroupUrn = string; + // Generated from: com/linkedin/common/DatasetFieldUrn.pdsc + + export type DatasetFieldUrn = string; + // Generated from: com/linkedin/common/DatasetGroupUrn.pdsc + + export type DatasetGroupUrn = string; + // Generated from: com/linkedin/common/DatasetInstanceUrn.pdsc + + export type DatasetInstanceUrn = string; + // Generated from: com/linkedin/common/DatasetOwnershipUrn.pdsc + + export type DatasetOwnershipUrn = string; + // Generated from: com/linkedin/common/DatasetPartitionUrn.pdsc + + export type DatasetPartitionUrn = string; + // Generated from: com/linkedin/common/DatasetSuggestedOwnershipUrn.pdsc + + export type DatasetSuggestedOwnershipUrn = string; + // Generated from: com/linkedin/common/DatasetUrn.pdsc + + export type DatasetUrn = string; + // Generated from: com/linkedin/common/DatasetVersionUrn.pdsc + + export type DatasetVersionUrn = string; + // Generated from: com/linkedin/common/DataVaultRuleUrn.pdsc + + export type DataVaultRuleUrn = string; + // Generated from: com/linkedin/common/Date.pdsc + + export interface Date { + day?: number; + month?: number; + year?: number; + } + // Generated from: com/linkedin/common/DateRange.pdsc + + export interface DateRange { + start?: Date; + end?: Date; + } + // Generated from: com/linkedin/common/DayOfMonth.pdsc + + export type DayOfMonth = number; + // Generated from: com/linkedin/common/DayOfWeek.pdsc + + export type DayOfWeek = 'SUN' | 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT'; + // Generated from: com/linkedin/common/DeckGenerationRequestUrn.pdsc + + export type DeckGenerationRequestUrn = string; + // Generated from: com/linkedin/common/DegreeUrn.pdsc + + export type DegreeUrn = string; + // Generated from: com/linkedin/common/DepartmentUrn.pdsc + + export type DepartmentUrn = string; + // Generated from: com/linkedin/common/DependencyExpressProductUrn.pdsc + + export type DependencyExpressProductUrn = string; + // Generated from: com/linkedin/common/DependencyExpressRequestUrn.pdsc + + export type DependencyExpressRequestUrn = string; + // Generated from: com/linkedin/common/DeploymentIntentUrn.pdsc + + export type DeploymentIntentUrn = string; + // Generated from: com/linkedin/common/DeploymentRequestUrn.pdsc + + export type DeploymentRequestUrn = string; + // Generated from: com/linkedin/common/DeploymentScheduleUrn.pdsc + + export type DeploymentScheduleUrn = string; + // Generated from: com/linkedin/common/Deprecation.pdsc + + export interface Deprecation extends BaseDeprecation { + actor: string; + } + // Generated from: com/linkedin/common/DeveloperAccountUrn.pdsc + + export type DeveloperAccountUrn = string; + // Generated from: com/linkedin/common/DeveloperActionUrn.pdsc + + export type DeveloperActionUrn = string; + // Generated from: com/linkedin/common/DeveloperApplicationTemplateUrn.pdsc + + export type DeveloperApplicationTemplateUrn = string; + // Generated from: com/linkedin/common/DeveloperApplicationUrn.pdsc + + export type DeveloperApplicationUrn = string; + // Generated from: com/linkedin/common/DeveloperPartnerProgramUrn.pdsc + + export type DeveloperPartnerProgramUrn = string; + // Generated from: com/linkedin/common/DeveloperProductTierUrn.pdsc + + export type DeveloperProductTierUrn = string; + // Generated from: com/linkedin/common/DeveloperProductUrn.pdsc + + export type DeveloperProductUrn = string; + // Generated from: com/linkedin/common/DeveloperProgramUrn.pdsc + + export type DeveloperProgramUrn = string; + // Generated from: com/linkedin/common/DeveloperSiteUrn.pdsc + + export type DeveloperSiteUrn = string; + // Generated from: com/linkedin/common/DeveloperTransactionType.pdsc + + export type DeveloperTransactionType = + | 'CODE_REVIEW' + | 'CODE_DEPLOY' + | 'CODE_PUBLISH' + | 'RESOURCE_ALLOCATION' + | 'DMRC_REVIEWER' + | 'DMRC_REVIEWEE' + | 'EXPERIMENTATION_AUTHORING' + | 'EXPERIMENTATION_REVIEWING' + | 'CODE_SEARCHING' + | 'CODE_VIEWING' + | 'ML_DEPLOYMENT' + | 'ML_MARK_SUCCESSFUL' + | 'ML_MODEL_RAMPING' + | 'ML_TRAINING' + | 'MP_CREATION' + | 'MP_CHECKOUT' + | 'MP_DEPENDENCY_UPGRADE' + | 'MP_DEPENDENCY_PUBLISH' + | 'MP_DOCUMENTATION_AUTHOR' + | 'DOC_SEARCH' + | 'LOCAL_BUILD' + | 'REMOTE_DEVELOPMENT'; + // Generated from: com/linkedin/common/DeveloperTransactionUrn.pdsc + + export type DeveloperTransactionUrn = string; + // Generated from: com/linkedin/common/DigitalmediaArtifactClassUrn.pdsc + + export type DigitalmediaArtifactClassUrn = string; + // Generated from: com/linkedin/common/DigitalmediaAssetUrn.pdsc + + export type DigitalmediaAssetUrn = string; + // Generated from: com/linkedin/common/DigitalmediaCaptionArtifactUrn.pdsc + + export type DigitalmediaCaptionArtifactUrn = string; + // Generated from: com/linkedin/common/DigitalmediaDataArtifactClassUrn.pdsc + + export type DigitalmediaDataArtifactClassUrn = string; + // Generated from: com/linkedin/common/DigitalmediaFileInstanceUrn.pdsc + + export type DigitalmediaFileInstanceUrn = string; + // Generated from: com/linkedin/common/DigitalmediaLiveEventUrn.pdsc + + export type DigitalmediaLiveEventUrn = string; + // Generated from: com/linkedin/common/DigitalmediaMediaArtifactBlobUrn.pdsc + + export type DigitalmediaMediaArtifactBlobUrn = string; + // Generated from: com/linkedin/common/DigitalmediaMediaArtifactClassUrn.pdsc + + export type DigitalmediaMediaArtifactClassUrn = string; + // Generated from: com/linkedin/common/DigitalmediaMediaArtifactUrn.pdsc + + export type DigitalmediaMediaArtifactUrn = string; + // Generated from: com/linkedin/common/DigitalmediaProcessedAssetUrn.pdsc + + export type DigitalmediaProcessedAssetUrn = string; + // Generated from: com/linkedin/common/DigitalmediaRecipeUrn.pdsc + + export type DigitalmediaRecipeUrn = string; + // Generated from: com/linkedin/common/DigitalmediaStickerArtifactUrn.pdsc + + export type DigitalmediaStickerArtifactUrn = string; + // Generated from: com/linkedin/common/DigitalmediaTenantUrn.pdsc + + export type DigitalmediaTenantUrn = string; + // Generated from: com/linkedin/common/DigitalmediaTextOverlayArtifactUrn.pdsc + + export type DigitalmediaTextOverlayArtifactUrn = string; + // Generated from: com/linkedin/common/DirectoryProfileUrn.pdsc + + export type DirectoryProfileUrn = string; + // Generated from: com/linkedin/common/DirectoryProjectUrn.pdsc + + export type DirectoryProjectUrn = string; + // Generated from: com/linkedin/common/DirectoryUrn.pdsc + + export type DirectoryUrn = string; + // Generated from: com/linkedin/common/DistanceBasedCommute.pdsc + + export interface DistanceBasedCommute { + startLocation: string; + distanceInKm: number; + } + // Generated from: com/linkedin/common/DMPCompanyMatchUrn.pdsc + + export type DMPCompanyMatchUrn = string; + // Generated from: com/linkedin/common/DMPEngagementRuleUrn.pdsc + + export type DMPEngagementRuleUrn = string; + // Generated from: com/linkedin/common/DMPEngagementSourceTypeUrn.pdsc + + export type DMPEngagementSourceTypeUrn = string; + // Generated from: com/linkedin/common/DMPEngagementTriggerUrn.pdsc + + export type DMPEngagementTriggerUrn = string; + // Generated from: com/linkedin/common/DMPListUploadUrn.pdsc + + export type DMPListUploadUrn = string; + // Generated from: com/linkedin/common/DMPLookalikeUrn.pdsc + + export type DMPLookalikeUrn = string; + // Generated from: com/linkedin/common/DMPSegmentUrn.pdsc + + export type DMPSegmentUrn = string; + // Generated from: com/linkedin/common/DnsChangesetUrn.pdsc + + export type DnsChangesetUrn = string; + // Generated from: com/linkedin/common/DnsRecordUrn.pdsc + + export type DnsRecordUrn = string; + // Generated from: com/linkedin/common/DnsZoneUrn.pdsc + + export type DnsZoneUrn = string; + // Generated from: com/linkedin/common/DomainUrn.pdsc + + export type DomainUrn = string; + // Generated from: com/linkedin/common/DoubleRange.pdsc + + export interface DoubleRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/common/DynamicConfigSchemaUrn.pdsc + + export type DynamicConfigSchemaUrn = string; + // Generated from: com/linkedin/common/DynamicConfigUrn.pdsc + + export type DynamicConfigUrn = string; + // Generated from: com/linkedin/common/DynamicConfigVersionUrn.pdsc + + export type DynamicConfigVersionUrn = string; + // Generated from: com/linkedin/common/DynamicConfigWorkspaceUrn.pdsc + + export type DynamicConfigWorkspaceUrn = string; + // Generated from: com/linkedin/common/Edge.pdsc + + export interface Edge { + from: string; + to: string; + type: string; + } + // Generated from: com/linkedin/common/EdgeIndexUrn.pdsc + + export type EdgeIndexUrn = string; + // Generated from: com/linkedin/common/EdgeSettingUrn.pdsc + + export type EdgeSettingUrn = string; + // Generated from: com/linkedin/common/EdgeWithAttributes.pdsc + + export interface EdgeWithAttributes extends Edge { + attributes?: AnyRecord; + } + // Generated from: com/linkedin/common/EditorBatchUrn.pdsc + + export type EditorBatchUrn = string; + // Generated from: com/linkedin/common/EditorNotificationUrn.pdsc + + export type EditorNotificationUrn = string; + // Generated from: com/linkedin/common/EditorPromotionUrn.pdsc + + export type EditorPromotionUrn = string; + // Generated from: com/linkedin/common/EducationUrn.pdsc + + export type EducationUrn = string; + // Generated from: com/linkedin/common/EidImpersonatorUrn.pdsc + + export type EidImpersonatorUrn = string; + // Generated from: com/linkedin/common/ElasticsearchClusterUrn.pdsc + + export type ElasticsearchClusterUrn = string; + // Generated from: com/linkedin/common/ElasticsearchIndexUrn.pdsc + + export type ElasticsearchIndexUrn = string; + // Generated from: com/linkedin/common/EmailAccountUrn.pdsc + + export type EmailAccountUrn = string; + // Generated from: com/linkedin/common/EmailAddress.pdsc + + export type EmailAddress = string; + // Generated from: com/linkedin/common/EmailAddressUrn.pdsc + + export type EmailAddressUrn = string; + // Generated from: com/linkedin/common/EmailAddressV2Urn.pdsc + + export type EmailAddressV2Urn = string; + // Generated from: com/linkedin/common/EmailDomainUrn.pdsc + + export type EmailDomainUrn = string; + // Generated from: com/linkedin/common/EmailUrn.pdsc + + export type EmailUrn = string; + // Generated from: com/linkedin/common/EmployeeBroadcastFeedUrn.pdsc + + export type EmployeeBroadcastFeedUrn = string; + // Generated from: com/linkedin/common/EmployeeProfileUrn.pdsc + + export type EmployeeProfileUrn = string; + // Generated from: com/linkedin/common/EmployeeReviewerUrn.pdsc + + export type EmployeeReviewerUrn = string; + // Generated from: com/linkedin/common/EmploymentStatusUrn.pdsc + + export type EmploymentStatusUrn = string; + // Generated from: com/linkedin/common/EmploymentType.pdsc + + export type EmploymentType = + | 'FULL_TIME' + | 'CONTRACT' + | 'PART_TIME' + | 'INTERNSHIP' + | 'VOLUNTEER' + | 'TEMPORARY' + | 'REMOTE'; + // Generated from: com/linkedin/common/EncryptionScheme.pdsc + + export type EncryptionScheme = 'AES_GCM' | 'AES_GCM_WITH_PBKDF2' | 'AES_GCM_WITH_FIXED_IV' | 'AES_CBC_128_16'; + // Generated from: com/linkedin/common/EndorsementUrn.pdsc + + export type EndorsementUrn = string; + // Generated from: com/linkedin/common/EnterpriseAccessUrn.pdsc + + export type EnterpriseAccessUrn = string; + // Generated from: com/linkedin/common/EnterpriseAccountAuthenticationModeUrn.pdsc + + export type EnterpriseAccountAuthenticationModeUrn = string; + // Generated from: com/linkedin/common/EnterpriseAccountSettingUrn.pdsc + + export type EnterpriseAccountSettingUrn = string; + // Generated from: com/linkedin/common/EnterpriseAccountUrn.pdsc + + export type EnterpriseAccountUrn = string; + // Generated from: com/linkedin/common/EnterpriseAddressUrn.pdsc + + export type EnterpriseAddressUrn = string; + // Generated from: com/linkedin/common/EnterpriseApplicationInstanceMoveJobUrn.pdsc + + export type EnterpriseApplicationInstanceMoveJobUrn = string; + // Generated from: com/linkedin/common/EnterpriseApplicationInstanceSettingUrn.pdsc + + export type EnterpriseApplicationInstanceSettingUrn = string; + // Generated from: com/linkedin/common/EnterpriseApplicationInstanceUrn.pdsc + + export type EnterpriseApplicationInstanceUrn = string; + // Generated from: com/linkedin/common/EnterpriseApplicationSettingUrn.pdsc + + export type EnterpriseApplicationSettingUrn = string; + // Generated from: com/linkedin/common/EnterpriseApplicationUrn.pdsc + + export type EnterpriseApplicationUrn = string; + // Generated from: com/linkedin/common/EnterpriseApplicationUsageUrn.pdsc + + export type EnterpriseApplicationUsageUrn = string; + // Generated from: com/linkedin/common/EnterpriseBudgetGroupUrn.pdsc + + export type EnterpriseBudgetGroupUrn = string; + // Generated from: com/linkedin/common/EnterpriseBulkActionTaskUrn.pdsc + + export type EnterpriseBulkActionTaskUrn = string; + // Generated from: com/linkedin/common/EnterpriseBulkActionTaskV2Urn.pdsc + + export type EnterpriseBulkActionTaskV2Urn = string; + // Generated from: com/linkedin/common/EnterpriseBulkDataRowUrn.pdsc + + export type EnterpriseBulkDataRowUrn = string; + // Generated from: com/linkedin/common/EnterpriseBusinessUrn.pdsc + + export type EnterpriseBusinessUrn = string; + // Generated from: com/linkedin/common/EnterpriseCannedReportRequestUrn.pdsc + + export type EnterpriseCannedReportRequestUrn = string; + // Generated from: com/linkedin/common/EnterpriseCannedReportUrn.pdsc + + export type EnterpriseCannedReportUrn = string; + // Generated from: com/linkedin/common/EnterpriseColdSignupConfigurationUrn.pdsc + + export type EnterpriseColdSignupConfigurationUrn = string; + // Generated from: com/linkedin/common/EnterpriseColdSignupSettingUrn.pdsc + + export type EnterpriseColdSignupSettingUrn = string; + // Generated from: com/linkedin/common/EnterpriseCompensationAdjustmentRequestUrn.pdsc + + export type EnterpriseCompensationAdjustmentRequestUrn = string; + // Generated from: com/linkedin/common/EnterpriseCompensationAdjustmentUrn.pdsc + + export type EnterpriseCompensationAdjustmentUrn = string; + // Generated from: com/linkedin/common/EnterpriseComplianceRequestUrn.pdsc + + export type EnterpriseComplianceRequestUrn = string; + // Generated from: com/linkedin/common/EnterpriseContractLineUrn.pdsc + + export type EnterpriseContractLineUrn = string; + // Generated from: com/linkedin/common/EnterpriseContractUrn.pdsc + + export type EnterpriseContractUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmAccountInsightsUrn.pdsc + + export type EnterpriseCrmAccountInsightsUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmAccountLineOfBusinessUrn.pdsc + + export type EnterpriseCrmAccountLineOfBusinessUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmAnnotationUrn.pdsc + + export type EnterpriseCrmAnnotationUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmCaseUrn.pdsc + + export type EnterpriseCrmCaseUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmContactLineOfBusinessAttributesUrn.pdsc + + export type EnterpriseCrmContactLineOfBusinessAttributesUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmContactUrn.pdsc + + export type EnterpriseCrmContactUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmLeadUrn.pdsc + + export type EnterpriseCrmLeadUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmMediaOnboardingTaskUrn.pdsc + + export type EnterpriseCrmMediaOnboardingTaskUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmOpportunityProductUrn.pdsc + + export type EnterpriseCrmOpportunityProductUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmOpportunityUrn.pdsc + + export type EnterpriseCrmOpportunityUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmServiceTaskUrn.pdsc + + export type EnterpriseCrmServiceTaskUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmTeamUrn.pdsc + + export type EnterpriseCrmTeamUrn = string; + // Generated from: com/linkedin/common/EnterpriseCrmUserUrn.pdsc + + export type EnterpriseCrmUserUrn = string; + // Generated from: com/linkedin/common/EnterpriseDeveloperApplicationUrn.pdsc + + export type EnterpriseDeveloperApplicationUrn = string; + // Generated from: com/linkedin/common/EnterpriseEmailAddressUrn.pdsc + + export type EnterpriseEmailAddressUrn = string; + // Generated from: com/linkedin/common/EnterpriseExchangeConversionUrn.pdsc + + export type EnterpriseExchangeConversionUrn = string; + // Generated from: com/linkedin/common/EnterpriseGroupUrn.pdsc + + export type EnterpriseGroupUrn = string; + // Generated from: com/linkedin/common/EnterpriseInvoiceUrn.pdsc + + export type EnterpriseInvoiceUrn = string; + // Generated from: com/linkedin/common/EnterpriseLabelAssignmentUrn.pdsc + + export type EnterpriseLabelAssignmentUrn = string; + // Generated from: com/linkedin/common/EnterpriseLabelNamespaceUrn.pdsc + + export type EnterpriseLabelNamespaceUrn = string; + // Generated from: com/linkedin/common/EnterpriseLabelSetUrn.pdsc + + export type EnterpriseLabelSetUrn = string; + // Generated from: com/linkedin/common/EnterpriseLabelUrn.pdsc + + export type EnterpriseLabelUrn = string; + // Generated from: com/linkedin/common/EnterpriseLegalDocumentUrn.pdsc + + export type EnterpriseLegalDocumentUrn = string; + // Generated from: com/linkedin/common/EnterpriseLicenseAllocationTransactionUrn.pdsc + + export type EnterpriseLicenseAllocationTransactionUrn = string; + // Generated from: com/linkedin/common/EnterpriseLicenseAssignmentUrn.pdsc + + export type EnterpriseLicenseAssignmentUrn = string; + // Generated from: com/linkedin/common/EnterpriseLicenseTypeUrn.pdsc + + export type EnterpriseLicenseTypeUrn = string; + // Generated from: com/linkedin/common/EnterpriseLineOfBusiness.pdsc + + export type EnterpriseLineOfBusiness = + | 'LEARNING_SOLUTIONS' + | 'MARKETING_SOLUTIONS' + | 'SALES_SOLUTIONS' + | 'TALENT_SOLUTIONS'; + // Generated from: com/linkedin/common/EnterprisePaymentUrn.pdsc + + export type EnterprisePaymentUrn = string; + // Generated from: com/linkedin/common/EnterprisePhoneNumberUrn.pdsc + + export type EnterprisePhoneNumberUrn = string; + // Generated from: com/linkedin/common/EnterpriseProfileConfigurationUrn.pdsc + + export type EnterpriseProfileConfigurationUrn = string; + // Generated from: com/linkedin/common/EnterpriseProfileExportJobUrn.pdsc + + export type EnterpriseProfileExportJobUrn = string; + // Generated from: com/linkedin/common/EnterpriseProfileMoveJobUrn.pdsc + + export type EnterpriseProfileMoveJobUrn = string; + // Generated from: com/linkedin/common/EnterpriseProfileUploadJobUrn.pdsc + + export type EnterpriseProfileUploadJobUrn = string; + // Generated from: com/linkedin/common/EnterpriseProfileUrn.pdsc + + export type EnterpriseProfileUrn = string; + // Generated from: com/linkedin/common/EnterpriseProvisionAllocationConfigurationUrn.pdsc + + export type EnterpriseProvisionAllocationConfigurationUrn = string; + // Generated from: com/linkedin/common/EnterpriseRoleUrn.pdsc + + export type EnterpriseRoleUrn = string; + // Generated from: com/linkedin/common/EnterpriseSalesAgreementUrn.pdsc + + export type EnterpriseSalesAgreementUrn = string; + // Generated from: com/linkedin/common/EnterpriseSamlMetadataDownloadJobUrn.pdsc + + export type EnterpriseSamlMetadataDownloadJobUrn = string; + // Generated from: com/linkedin/common/EnterpriseScimApplicationSettingUrn.pdsc + + export type EnterpriseScimApplicationSettingUrn = string; + // Generated from: com/linkedin/common/EnterpriseSeatUrn.pdsc + + export type EnterpriseSeatUrn = string; + // Generated from: com/linkedin/common/EnterpriseSftpEventQueueUrn.pdsc + + export type EnterpriseSftpEventQueueUrn = string; + // Generated from: com/linkedin/common/EnterpriseSftpUserSessionUrn.pdsc + + export type EnterpriseSftpUserSessionUrn = string; + // Generated from: com/linkedin/common/EnterpriseSftpUserUrn.pdsc + + export type EnterpriseSftpUserUrn = string; + // Generated from: com/linkedin/common/EnterpriseSftpVirtualFileUrn.pdsc + + export type EnterpriseSftpVirtualFileUrn = string; + // Generated from: com/linkedin/common/EnterpriseSftpVirtualPathUrn.pdsc + + export type EnterpriseSftpVirtualPathUrn = string; + // Generated from: com/linkedin/common/EnterpriseSubscriptionUrn.pdsc + + export type EnterpriseSubscriptionUrn = string; + // Generated from: com/linkedin/common/EnterpriseTeamUrn.pdsc + + export type EnterpriseTeamUrn = string; + // Generated from: com/linkedin/common/EnterpriseUserUrn.pdsc + + export type EnterpriseUserUrn = string; + // Generated from: com/linkedin/common/EntitlementDefinitionUrn.pdsc + + export type EntitlementDefinitionUrn = string; + // Generated from: com/linkedin/common/EntitlementGroupUrn.pdsc + + export type EntitlementGroupUrn = string; + // Generated from: com/linkedin/common/EntityRelevanceFeedbackUrn.pdsc + + export type EntityRelevanceFeedbackUrn = string; + // Generated from: com/linkedin/common/EntityRouteUrn.pdsc + + export type EntityRouteUrn = string; + // Generated from: com/linkedin/common/EntityTopUsage.pdsc + + export interface EntityTopUsage { + mostFrequentUsers: Array<{ + identity: { gridUser: string } | { corpUser: string }; + accessCount: number; + }>; + mostFrequentGroups: Array<{ + identity: { gridGroup: string } | { corpGroup: string }; + accessCount: number; + }>; + } + // Generated from: com/linkedin/common/EpsilonCalibrationExecutionUrn.pdsc + + export type EpsilonCalibrationExecutionUrn = string; + // Generated from: com/linkedin/common/EpsilonCleansingExecutionUrn.pdsc + + export type EpsilonCleansingExecutionUrn = string; + // Generated from: com/linkedin/common/EpsilonEkgExecutionUrn.pdsc + + export type EpsilonEkgExecutionUrn = string; + // Generated from: com/linkedin/common/EpsilonEndpointUrn.pdsc + + export type EpsilonEndpointUrn = string; + // Generated from: com/linkedin/common/EpsilonRecordRequestUrn.pdsc + + export type EpsilonRecordRequestUrn = string; + // Generated from: com/linkedin/common/EpsilonRegressionBaselineExecutionUrn.pdsc + + export type EpsilonRegressionBaselineExecutionUrn = string; + // Generated from: com/linkedin/common/EpsilonRegressionTestExecutionUrn.pdsc + + export type EpsilonRegressionTestExecutionUrn = string; + // Generated from: com/linkedin/common/EpsilonReplayBatchUrn.pdsc + + export type EpsilonReplayBatchUrn = string; + // Generated from: com/linkedin/common/EpsilonReplayRequestUrn.pdsc + + export type EpsilonReplayRequestUrn = string; + // Generated from: com/linkedin/common/EpsilonReplayRunUrn.pdsc + + export type EpsilonReplayRunUrn = string; + // Generated from: com/linkedin/common/EventAgendaItemUrn.pdsc + + export type EventAgendaItemUrn = string; + // Generated from: com/linkedin/common/EventUrn.pdsc + + export type EventUrn = string; + // Generated from: com/linkedin/common/ExperimentAlertSubscriptionUrn.pdsc + + export type ExperimentAlertSubscriptionUrn = string; + // Generated from: com/linkedin/common/ExperimentUrn.pdsc + + export type ExperimentUrn = string; + // Generated from: com/linkedin/common/ExportCandidateRequestUrn.pdsc + + export type ExportCandidateRequestUrn = string; + // Generated from: com/linkedin/common/ExternalApplicationMemberIdentifierUrn.pdsc + + export type ExternalApplicationMemberIdentifierUrn = string; + // Generated from: com/linkedin/common/ExternalApplicationUrn.pdsc + + export type ExternalApplicationUrn = string; + // Generated from: com/linkedin/common/ExternalControlUrn.pdsc + + export type ExternalControlUrn = string; + // Generated from: com/linkedin/common/ExternalGraphQLQueryAclUrn.pdsc + + export type ExternalGraphQLQueryAclUrn = string; + // Generated from: com/linkedin/common/ExternalGraphQLQueryCompatibilityUrn.pdsc + + export type ExternalGraphQLQueryCompatibilityUrn = string; + // Generated from: com/linkedin/common/ExternalGraphQLQueryUrn.pdsc + + export type ExternalGraphQLQueryUrn = string; + // Generated from: com/linkedin/common/ExternalMarketingTagUrn.pdsc + + export type ExternalMarketingTagUrn = string; + // Generated from: com/linkedin/common/ExternalPageUrn.pdsc + + export type ExternalPageUrn = string; + // Generated from: com/linkedin/common/ExternalResourceCallUrn.pdsc + + export type ExternalResourceCallUrn = string; + // Generated from: com/linkedin/common/ExternalUserUrn.pdsc + + export type ExternalUserUrn = string; + // Generated from: com/linkedin/common/FabricType.pdsc + + export type FabricType = + | 'DEV' + | 'EI' + | 'PROD' + | 'CORP' + | 'LIT' + | 'PRIME' + | 'MANDA' + | 'AZURECONTROL' + | 'AZUREPROD' + | 'AZUREEI'; + // Generated from: com/linkedin/common/FabricUrn.pdsc + + export type FabricUrn = string; + // Generated from: com/linkedin/common/FeatureCustomizationSegmentUrn.pdsc + + export type FeatureCustomizationSegmentUrn = string; + // Generated from: com/linkedin/common/FeatureUrn.pdsc + + export type FeatureUrn = string; + // Generated from: com/linkedin/common/FeedDividerUrn.pdsc + + export type FeedDividerUrn = string; + // Generated from: com/linkedin/common/FieldOfStudyUrn.pdsc + + export type FieldOfStudyUrn = string; + // Generated from: com/linkedin/common/FileReference.pdsc + + export interface FileReference { + repository: Repository; + filePath: string; + repositoryVersion?: string; + } + // Generated from: com/linkedin/common/FinanceContractLineUrn.pdsc + + export type FinanceContractLineUrn = string; + // Generated from: com/linkedin/common/FinanceContractUrn.pdsc + + export type FinanceContractUrn = string; + // Generated from: com/linkedin/common/FinanceEnterpriseDocumentUrn.pdsc + + export type FinanceEnterpriseDocumentUrn = string; + // Generated from: com/linkedin/common/FinanceTransactionUrn.pdsc + + export type FinanceTransactionUrn = string; + // Generated from: com/linkedin/common/FiredrillUrn.pdsc + + export type FiredrillUrn = string; + // Generated from: com/linkedin/common/FloatRange.pdsc + + export interface FloatRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/common/FlowInstanceUrn.pdsc + + export type FlowInstanceUrn = string; + // Generated from: com/linkedin/common/FlowStageInstanceUrn.pdsc + + export type FlowStageInstanceUrn = string; + // Generated from: com/linkedin/common/FlowStageUrn.pdsc + + export type FlowStageUrn = string; + // Generated from: com/linkedin/common/FlowUrn.pdsc + + export type FlowUrn = string; + // Generated from: com/linkedin/common/Follow.pdsc + + export interface Follow { + followers: FollowAction[]; + } + // Generated from: com/linkedin/common/FollowAction.pdsc + + export interface FollowAction { + follower: FollowerType; + lastModified?: AuditStamp; + } + // Generated from: com/linkedin/common/FollowerType.pdsc + + export type FollowerType = { corpUser: string } | { corpGroup: string }; + // Generated from: com/linkedin/common/FollowUrn.pdsc + + export type FollowUrn = string; + // Generated from: com/linkedin/common/FootprintUrn.pdsc + + export type FootprintUrn = string; + // Generated from: com/linkedin/common/FormUrn.pdsc + + export type FormUrn = string; + // Generated from: com/linkedin/common/FrontendResourceUrn.pdsc + + export type FrontendResourceUrn = string; + // Generated from: com/linkedin/common/FulfillmentAllocationUrn.pdsc + + export type FulfillmentAllocationUrn = string; + // Generated from: com/linkedin/common/FulfillmentItemLineUrn.pdsc + + export type FulfillmentItemLineUrn = string; + // Generated from: com/linkedin/common/FulfillmentItemUrn.pdsc + + export type FulfillmentItemUrn = string; + // Generated from: com/linkedin/common/FulfillmentLineUrn.pdsc + + export type FulfillmentLineUrn = string; + // Generated from: com/linkedin/common/FulfillmentUrn.pdsc + + export type FulfillmentUrn = string; + // Generated from: com/linkedin/common/FullyQualifiedDomainName.pdsc + + export type FullyQualifiedDomainName = string; + // Generated from: com/linkedin/common/FunctionUrn.pdsc + + export type FunctionUrn = string; + // Generated from: com/linkedin/common/GaapAdminCredentialUrn.pdsc + + export type GaapAdminCredentialUrn = string; + // Generated from: com/linkedin/common/GaapScriptUrn.pdsc + + export type GaapScriptUrn = string; + // Generated from: com/linkedin/common/GaapScriptV2Urn.pdsc + + export type GaapScriptV2Urn = string; + // Generated from: com/linkedin/common/GaapTaskResultUrn.pdsc + + export type GaapTaskResultUrn = string; + // Generated from: com/linkedin/common/GaapTaskUrn.pdsc + + export type GaapTaskUrn = string; + // Generated from: com/linkedin/common/GenderUrn.pdsc + + export type GenderUrn = string; + // Generated from: com/linkedin/common/GeoCoordinateArea.pdsc + + export interface GeoCoordinateArea { + latLong: LatLong; + radiusInKms: number; + } + // Generated from: com/linkedin/common/GeoUrn.pdsc + + export type GeoUrn = string; + // Generated from: com/linkedin/common/GraphQLGraphUrn.pdsc + + export type GraphQLGraphUrn = string; + // Generated from: com/linkedin/common/GraphQLGraphVersionUrn.pdsc + + export type GraphQLGraphVersionUrn = string; + // Generated from: com/linkedin/common/GraphQLQueryMetadataUrn.pdsc + + export type GraphQLQueryMetadataUrn = string; + // Generated from: com/linkedin/common/GraphQLQueryUrn.pdsc + + export type GraphQLQueryUrn = string; + // Generated from: com/linkedin/common/GraphQLQueryWebMetadataUrn.pdsc + + export type GraphQLQueryWebMetadataUrn = string; + // Generated from: com/linkedin/common/GraphQLSchemaUrn.pdsc + + export type GraphQLSchemaUrn = string; + // Generated from: com/linkedin/common/GridGroupUrn.pdsc + + export type GridGroupUrn = string; + // Generated from: com/linkedin/common/GridJobExecutionUrn.pdsc + + export type GridJobExecutionUrn = string; + // Generated from: com/linkedin/common/GridJobUrn.pdsc + + export type GridJobUrn = string; + // Generated from: com/linkedin/common/GridUserUrn.pdsc + + export type GridUserUrn = string; + // Generated from: com/linkedin/common/GridWorkflowExecutionUrn.pdsc + + export type GridWorkflowExecutionUrn = string; + // Generated from: com/linkedin/common/GridWorkflowUrn.pdsc + + export type GridWorkflowUrn = string; + // Generated from: com/linkedin/common/GroupCommentUrn.pdsc + + export type GroupCommentUrn = string; + // Generated from: com/linkedin/common/GroupContentLikeUrn.pdsc + + export type GroupContentLikeUrn = string; + // Generated from: com/linkedin/common/GroupMembershipUrn.pdsc + + export type GroupMembershipUrn = string; + // Generated from: com/linkedin/common/GroupPostUrn.pdsc + + export type GroupPostUrn = string; + // Generated from: com/linkedin/common/GroupUrn.pdsc + + export type GroupUrn = string; + // Generated from: com/linkedin/common/GuestAuthTokenUrn.pdsc + + export type GuestAuthTokenUrn = string; + // Generated from: com/linkedin/common/GuestUrn.pdsc + + export type GuestUrn = string; + // Generated from: com/linkedin/common/GuidedEditSessionUrn.pdsc + + export type GuidedEditSessionUrn = string; + // Generated from: com/linkedin/common/GuidedEditTaskUrn.pdsc + + export type GuidedEditTaskUrn = string; + // Generated from: com/linkedin/common/HadoopClusterType.pdsc + + export type HadoopClusterType = 'HOLDEM' | 'WAR' | 'FARO'; + // Generated from: com/linkedin/common/HashedIdentityUrn.pdsc + + export type HashedIdentityUrn = string; + // Generated from: com/linkedin/common/HashtagAttributedEntity.pdsc + + export interface HashtagAttributedEntity { + hashtag: string; + } + // Generated from: com/linkedin/common/HashtagUrn.pdsc + + export type HashtagUrn = string; + // Generated from: com/linkedin/common/Health.pdsc + + export interface Health { + score: number; + validations: HealthValidation[]; + created?: AuditStamp; + } + // Generated from: com/linkedin/common/HealthValidation.pdsc + + export interface HealthValidation { + tier: 'CRITICAL' | 'WARNING' | 'MINOR'; + score: number; + description: string; + weight: number; + validator: string; + } + // Generated from: com/linkedin/common/HelpCenterArticleUrn.pdsc + + export type HelpCenterArticleUrn = string; + // Generated from: com/linkedin/common/HelpCenterAttachmentUrn.pdsc + + export type HelpCenterAttachmentUrn = string; + // Generated from: com/linkedin/common/HelpCenterCaseUrn.pdsc + + export type HelpCenterCaseUrn = string; + // Generated from: com/linkedin/common/HelpCenterContactUrn.pdsc + + export type HelpCenterContactUrn = string; + // Generated from: com/linkedin/common/HelpCenterForumAnswerUrn.pdsc + + export type HelpCenterForumAnswerUrn = string; + // Generated from: com/linkedin/common/HelpCenterForumQuestionUrn.pdsc + + export type HelpCenterForumQuestionUrn = string; + // Generated from: com/linkedin/common/HelpCenterInstanceUrn.pdsc + + export type HelpCenterInstanceUrn = string; + // Generated from: com/linkedin/common/HelpCenterThreadUrn.pdsc + + export type HelpCenterThreadUrn = string; + // Generated from: com/linkedin/common/HelpCenterTopicUrn.pdsc + + export type HelpCenterTopicUrn = string; + // Generated from: com/linkedin/common/HireCostCenterUrn.pdsc + + export type HireCostCenterUrn = string; + // Generated from: com/linkedin/common/HireEmployeeProfileUrn.pdsc + + export type HireEmployeeProfileUrn = string; + // Generated from: com/linkedin/common/HireIdentityUrn.pdsc + + export type HireIdentityUrn = string; + // Generated from: com/linkedin/common/HireMailboxUrn.pdsc + + export type HireMailboxUrn = string; + // Generated from: com/linkedin/common/HireProfileUrn.pdsc + + export type HireProfileUrn = string; + // Generated from: com/linkedin/common/HireProfileV2Urn.pdsc + + export type HireProfileV2Urn = string; + // Generated from: com/linkedin/common/HireProposalUrn.pdsc + + export type HireProposalUrn = string; + // Generated from: com/linkedin/common/HireRoleAssignmentUrn.pdsc + + export type HireRoleAssignmentUrn = string; + // Generated from: com/linkedin/common/HireRoleUrn.pdsc + + export type HireRoleUrn = string; + // Generated from: com/linkedin/common/HireRoomUrn.pdsc + + export type HireRoomUrn = string; + // Generated from: com/linkedin/common/HireRuleActionTemplateUrn.pdsc + + export type HireRuleActionTemplateUrn = string; + // Generated from: com/linkedin/common/HireRuleActionUrn.pdsc + + export type HireRuleActionUrn = string; + // Generated from: com/linkedin/common/HireRuleActionV2Urn.pdsc + + export type HireRuleActionV2Urn = string; + // Generated from: com/linkedin/common/HireRuleConditionTemplateUrn.pdsc + + export type HireRuleConditionTemplateUrn = string; + // Generated from: com/linkedin/common/HireRuleConditionUrn.pdsc + + export type HireRuleConditionUrn = string; + // Generated from: com/linkedin/common/HireRuleConditionV2Urn.pdsc + + export type HireRuleConditionV2Urn = string; + // Generated from: com/linkedin/common/HireRuleConfigurationUrn.pdsc + + export type HireRuleConfigurationUrn = string; + // Generated from: com/linkedin/common/HireRuleExecutionUrn.pdsc + + export type HireRuleExecutionUrn = string; + // Generated from: com/linkedin/common/HireRuleTemplateUrn.pdsc + + export type HireRuleTemplateUrn = string; + // Generated from: com/linkedin/common/HireRuleTimeScheduleUrn.pdsc + + export type HireRuleTimeScheduleUrn = string; + // Generated from: com/linkedin/common/HireRuleTriggerUrn.pdsc + + export type HireRuleTriggerUrn = string; + // Generated from: com/linkedin/common/HireRuleUrn.pdsc + + export type HireRuleUrn = string; + // Generated from: com/linkedin/common/HireRuleV2Urn.pdsc + + export type HireRuleV2Urn = string; + // Generated from: com/linkedin/common/HireScorecardAssignmentUrn.pdsc + + export type HireScorecardAssignmentUrn = string; + // Generated from: com/linkedin/common/HireSearchActivityUrn.pdsc + + export type HireSearchActivityUrn = string; + // Generated from: com/linkedin/common/HireSearchSessionUrn.pdsc + + export type HireSearchSessionUrn = string; + // Generated from: com/linkedin/common/HireStreamUrn.pdsc + + export type HireStreamUrn = string; + // Generated from: com/linkedin/common/HireSystemRoleUrn.pdsc + + export type HireSystemRoleUrn = string; + // Generated from: com/linkedin/common/HireThirdPartyBackgroundCheckUrn.pdsc + + export type HireThirdPartyBackgroundCheckUrn = string; + // Generated from: com/linkedin/common/HireThirdPartyDocumentSignatureUrn.pdsc + + export type HireThirdPartyDocumentSignatureUrn = string; + // Generated from: com/linkedin/common/HireThirdPartyExportRequestUrn.pdsc + + export type HireThirdPartyExportRequestUrn = string; + // Generated from: com/linkedin/common/HireThirdPartyExtensionProviderUrn.pdsc + + export type HireThirdPartyExtensionProviderUrn = string; + // Generated from: com/linkedin/common/HireThirdPartyHrisExportProfileRequestUrn.pdsc + + export type HireThirdPartyHrisExportProfileRequestUrn = string; + // Generated from: com/linkedin/common/HireThirdPartyInterviewUrn.pdsc + + export type HireThirdPartyInterviewUrn = string; + // Generated from: com/linkedin/common/HiringContextCandidateUrn.pdsc + + export type HiringContextCandidateUrn = string; + // Generated from: com/linkedin/common/HiringCustomFieldEnumValueUrn.pdsc + + export type HiringCustomFieldEnumValueUrn = string; + // Generated from: com/linkedin/common/HiringCustomFieldUrn.pdsc + + export type HiringCustomFieldUrn = string; + // Generated from: com/linkedin/common/HiringCustomFieldV2Urn.pdsc + + export type HiringCustomFieldV2Urn = string; + // Generated from: com/linkedin/common/HiringCustomFieldValueUrn.pdsc + + export type HiringCustomFieldValueUrn = string; + // Generated from: com/linkedin/common/HiringDocumentUrn.pdsc + + export type HiringDocumentUrn = string; + // Generated from: com/linkedin/common/HiringDocumentVersionUrn.pdsc + + export type HiringDocumentVersionUrn = string; + // Generated from: com/linkedin/common/HiringFavoriteUrn.pdsc + + export type HiringFavoriteUrn = string; + // Generated from: com/linkedin/common/HiringManagerActivityUrn.pdsc + + export type HiringManagerActivityUrn = string; + // Generated from: com/linkedin/common/HiringPlatformSeatTransferUrn.pdsc + + export type HiringPlatformSeatTransferUrn = string; + // Generated from: com/linkedin/common/HiringProjectApprovalUrn.pdsc + + export type HiringProjectApprovalUrn = string; + // Generated from: com/linkedin/common/HiringProjectCandidateUrn.pdsc + + export type HiringProjectCandidateUrn = string; + // Generated from: com/linkedin/common/HiringProjectUrn.pdsc + + export type HiringProjectUrn = string; + // Generated from: com/linkedin/common/HiringScorecardUrn.pdsc + + export type HiringScorecardUrn = string; + // Generated from: com/linkedin/common/HiringScoreItemResponseUrn.pdsc + + export type HiringScoreItemResponseUrn = string; + // Generated from: com/linkedin/common/HiringScoreItemUrn.pdsc + + export type HiringScoreItemUrn = string; + // Generated from: com/linkedin/common/HiringTaskUrn.pdsc + + export type HiringTaskUrn = string; + // Generated from: com/linkedin/common/HostedSearchActionUrn.pdsc + + export type HostedSearchActionUrn = string; + // Generated from: com/linkedin/common/HostedSearchClusterUrn.pdsc + + export type HostedSearchClusterUrn = string; + // Generated from: com/linkedin/common/HostedSearchProcessGroupUrn.pdsc + + export type HostedSearchProcessGroupUrn = string; + // Generated from: com/linkedin/common/HostedSearchProcessUrn.pdsc + + export type HostedSearchProcessUrn = string; + // Generated from: com/linkedin/common/HostedSearchTenantIndexUrn.pdsc + + export type HostedSearchTenantIndexUrn = string; + // Generated from: com/linkedin/common/HostedSearchWorkflowUrn.pdsc + + export type HostedSearchWorkflowUrn = string; + // Generated from: com/linkedin/common/Hostname.pdsc + + export type Hostname = string; + // Generated from: com/linkedin/common/HttpMethod.pdsc + + export type HttpMethod = 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT' | 'PATCH'; + // Generated from: com/linkedin/common/HyperlinkAttributedEntity.pdsc + + export interface HyperlinkAttributedEntity { + url: Url; + } + // Generated from: com/linkedin/common/IABCategoryUrn.pdsc + + export type IABCategoryUrn = string; + // Generated from: com/linkedin/common/IM.pdsc + + export interface IM { + id: string; + provider: string; + } + // Generated from: com/linkedin/common/Image.pdsc + + export interface Image { + media: string; + width?: number; + height?: number; + size?: number; + alternateText?: MultiLocaleString; + attribution?: MultiLocaleString; + } + // Generated from: com/linkedin/common/ImageFetchInput.pdsc + + export interface ImageFetchInput { + id: string; + } + // Generated from: com/linkedin/common/ImpersonatedIdentityUrn.pdsc + + export type ImpersonatedIdentityUrn = string; + // Generated from: com/linkedin/common/ImportanceAttributedEntity.pdsc + + export interface ImportanceAttributedEntity {} + // Generated from: com/linkedin/common/InAppAlertsTopicUrn.pdsc + + export type InAppAlertsTopicUrn = string; + // Generated from: com/linkedin/common/IncentiveCampaignUrn.pdsc + + export type IncentiveCampaignUrn = string; + // Generated from: com/linkedin/common/InchartsChartInstanceUrn.pdsc + + export type InchartsChartInstanceUrn = string; + // Generated from: com/linkedin/common/InchartsChartUrn.pdsc + + export type InchartsChartUrn = string; + // Generated from: com/linkedin/common/InchartsDashboardUrn.pdsc + + export type InchartsDashboardUrn = string; + // Generated from: com/linkedin/common/InChartUrn.pdsc + + export type InChartUrn = string; + // Generated from: com/linkedin/common/IndexRange.pdsc + + export interface IndexRange { + start: number; + length: number; + } + // Generated from: com/linkedin/common/Industry.pdsc + + export type Industry = + | 'ACCOUNTING' + | 'AIRLINES_AVIATION' + | 'ALTERNATIVE_DISPUTE_RESOLUTION' + | 'ALTERNATIVE_MEDICINE' + | 'ANIMATION' + | 'APPAREL_AND_FASHION' + | 'ARCHITECTURE_AND_PLANNING' + | 'ARTS_AND_CRAFTS' + | 'AUTOMOTIVE' + | 'AVIATION_AND_AEROSPACE' + | 'BANKING' + | 'BIOTECHNOLOGY' + | 'BROADCAST_MEDIA' + | 'BUILDING_MATERIALS' + | 'BUSINESS_SUPPLIES_AND_EQUIPMENT' + | 'CAPITAL_MARKETS' + | 'CHEMICALS' + | 'CIVIC_AND_SOCIAL_ORGANIZATION' + | 'CIVIL_ENGINEERING' + | 'COMMERCIAL_REAL_ESTATE' + | 'COMPUTER_AND_NETWORK_SECURITY' + | 'COMPUTER_GAMES' + | 'COMPUTER_HARDWARE' + | 'COMPUTER_NETWORKING' + | 'COMPUTER_SOFTWARE' + | 'CONSTRUCTION' + | 'CONSUMER_ELECTRONICS' + | 'CONSUMER_GOODS' + | 'CONSUMER_SERVICES' + | 'COSMETICS' + | 'DAIRY' + | 'DEFENSE_AND_SPACE' + | 'DESIGN' + | 'EDUCATION_MANAGEMENT' + | 'ELECTRICAL_AND_ELECTRONIC_MANUFACTURING' + | 'ENTERTAINMENT' + | 'ENVIRONMENTAL_SERVICES' + | 'EVENTS_SERVICES' + | 'EXECUTIVE_OFFICE' + | 'E_LEARNING' + | 'FACILITIES_SERVICES' + | 'FARMING' + | 'FINANCIAL_SERVICES' + | 'FINE_ART' + | 'FISHERY' + | 'FOOD_AND_BEVERAGES' + | 'FOOD_PRODUCTION' + | 'FUNDRAISING' + | 'FURNITURE' + | 'GAMBLING_AND_CASINOS' + | 'GLASS_CERAMICS_AND_CONCRETE' + | 'GOVERNMENT_ADMINISTRATION' + | 'GOVERNMENT_RELATIONS' + | 'GRAPHIC_DESIGN' + | 'HEALTH_WELLNESS_AND_FITNESS' + | 'HIGHER_EDUCATION' + | 'HOSPITALITY' + | 'HOSPITAL_AND_HEALTH_CARE' + | 'HUMAN_RESOURCES' + | 'IMPORT_AND_EXPORT' + | 'INDIVIDUAL_AND_FAMILY_SERVICES' + | 'INDUSTRIAL_AUTOMATION' + | 'INFORMATION_SERVICES' + | 'INFORMATION_TECHNOLOGY_AND_SERVICES' + | 'INSURANCE' + | 'INTERNATIONAL_AFFAIRS' + | 'INTERNATIONAL_TRADE_AND_DEVELOPMENT' + | 'INTERNET' + | 'INVESTMENT_BANKING_AND_VENTURE' + | 'INVESTMENT_MANAGEMENT' + | 'JUDICIARY' + | 'LAW_ENFORCEMENT' + | 'LAW_PRACTICE' + | 'LEGAL_SERVICES' + | 'LEGISLATIVE_OFFICE' + | 'LEISURE_AND_TRAVEL' + | 'LIBRARIES' + | 'LOGISTICS_AND_SUPPLY_CHAIN' + | 'LUXURY_GOODS_AND_JEWELRY' + | 'MACHINERY' + | 'MANAGEMENT_CONSULTING' + | 'MARITIME' + | 'MARKETING_AND_ADVERTISING' + | 'MARKET_RESEARCH' + | 'MECHANICAL_OR_INDUSTRIAL_ENGINEERING' + | 'MEDIA_PRODUCTION' + | 'MEDICAL_DEVICE' + | 'MEDICAL_PRACTICE' + | 'MENTAL_HEALTH_CARE' + | 'MILITARY' + | 'MINING_AND_METALS' + | 'MOTION_PICTURES_AND_FILM' + | 'MUSEUMS_AND_INSTITUTIONS' + | 'MUSIC' + | 'NANOTECHNOLOGY' + | 'NEWSPAPERS' + | 'NON_PROFIT_ORGANIZATION_MANAGEMENT' + | 'OIL_AND_ENERGY' + | 'ONLINE_PUBLISHING' + | 'OUTSOURCING_OFFSHORING' + | 'PACKAGE_AND_FREIGHT_DELIVERY' + | 'PACKAGING_AND_CONTAINERS' + | 'PAPER_AND_FOREST_PRODUCTS' + | 'PERFORMING_ARTS' + | 'PHARMACEUTICALS' + | 'PHILANTHROPY' + | 'PHOTOGRAPHY' + | 'PLASTICS' + | 'POLITICAL_ORGANIZATION' + | 'PRIMARY_SECONDARY' + | 'PRINTING' + | 'PROFESSIONAL_TRAINING' + | 'PROGRAM_DEVELOPMENT' + | 'PUBLIC_POLICY' + | 'PUBLIC_RELATIONS' + | 'PUBLIC_SAFETY' + | 'PUBLISHING' + | 'RAILROAD_MANUFACTURE' + | 'RANCHING' + | 'REAL_ESTATE' + | 'RECREATIONAL_FACILITIES_AND_SERVICES' + | 'RELIGIOUS_INSTITUTIONS' + | 'RENEWABLES_AND_ENVIRONMENT' + | 'RESEARCH' + | 'RESTAURANTS' + | 'RETAIL' + | 'SECURITY_AND_INVESTIGATIONS' + | 'SEMICONDUCTORS' + | 'SHIPBUILDING' + | 'SPORTING_GOODS' + | 'SPORTS' + | 'STAFFING_AND_RECRUITING' + | 'SUPERMARKETS' + | 'TELECOMMUNICATIONS' + | 'TEXTILES' + | 'THINK_TANKS' + | 'TOBACCO' + | 'TRANSLATION_AND_LOCALIZATION' + | 'TRANSPORTATION_TRUCKING_AND_RAILROAD' + | 'UTILITIES' + | 'VENTURE_CAPITAL' + | 'VETERINARY' + | 'WAREHOUSING' + | 'WHOLESALE' + | 'WINE_AND_SPIRITS' + | 'WIRELESS' + | 'WRITING_AND_EDITING'; + // Generated from: com/linkedin/common/IndustryCategoryUrn.pdsc + + export type IndustryCategoryUrn = string; + // Generated from: com/linkedin/common/IndustryGroupUrn.pdsc + + export type IndustryGroupUrn = string; + // Generated from: com/linkedin/common/IndustryUrn.pdsc + + export type IndustryUrn = string; + // Generated from: com/linkedin/common/InferenceCategoryUrn.pdsc + + export type InferenceCategoryUrn = string; + // Generated from: com/linkedin/common/InferenceSourceType.pdsc + + export type InferenceSourceType = 'CM_SEGMENT' | 'FRAME' | 'OM_SEGMENT'; + // Generated from: com/linkedin/common/InferenceUrn.pdsc + + export type InferenceUrn = string; + // Generated from: com/linkedin/common/InferredProfileElementUrn.pdsc + + export type InferredProfileElementUrn = string; + // Generated from: com/linkedin/common/IngestedArticleMetadataUrn.pdsc + + export type IngestedArticleMetadataUrn = string; + // Generated from: com/linkedin/common/IngestedContentMetadataUrn.pdsc + + export type IngestedContentMetadataUrn = string; + // Generated from: com/linkedin/common/IngestedContentUrn.pdsc + + export type IngestedContentUrn = string; + // Generated from: com/linkedin/common/IngestedFeedUrn.pdsc + + export type IngestedFeedUrn = string; + // Generated from: com/linkedin/common/IngestedImageMetadataUrn.pdsc + + export type IngestedImageMetadataUrn = string; + // Generated from: com/linkedin/common/IngestedRichMediaMetadataUrn.pdsc + + export type IngestedRichMediaMetadataUrn = string; + // Generated from: com/linkedin/common/IngestedVideoMetadataUrn.pdsc + + export type IngestedVideoMetadataUrn = string; + // Generated from: com/linkedin/common/InmailGrantUrn.pdsc + + export type InmailGrantUrn = string; + // Generated from: com/linkedin/common/InMailTemplateUrn.pdsc + + export type InMailTemplateUrn = string; + // Generated from: com/linkedin/common/InProductHelpApplicationUrn.pdsc + + export type InProductHelpApplicationUrn = string; + // Generated from: com/linkedin/common/InProductHelpTopicUrn.pdsc + + export type InProductHelpTopicUrn = string; + // Generated from: com/linkedin/common/InsightTagDomainUrn.pdsc + + export type InsightTagDomainUrn = string; + // Generated from: com/linkedin/common/InsightTagUrn.pdsc + + export type InsightTagUrn = string; + // Generated from: com/linkedin/common/InstallationByAdIdUrn.pdsc + + export type InstallationByAdIdUrn = string; + // Generated from: com/linkedin/common/InstallationUrn.pdsc + + export type InstallationUrn = string; + // Generated from: com/linkedin/common/InstantPropCampaignCreativeUrn.pdsc + + export type InstantPropCampaignCreativeUrn = string; + // Generated from: com/linkedin/common/InstantPropCampaignUrn.pdsc + + export type InstantPropCampaignUrn = string; + // Generated from: com/linkedin/common/InstantPropCreativeUrn.pdsc + + export type InstantPropCreativeUrn = string; + // Generated from: com/linkedin/common/InstitutionalMemory.pdsc + + export interface InstitutionalMemory { + elements: InstitutionalMemoryMetadata[]; + } + // Generated from: com/linkedin/common/InstitutionalMemoryMetadata.pdsc + + export interface InstitutionalMemoryMetadata { + url: Url; + description: string; + createStamp: AuditStamp; + } + // Generated from: com/linkedin/common/IntegerRange.pdsc + + export interface IntegerRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/common/InterestUrn.pdsc + + export type InterestUrn = string; + // Generated from: com/linkedin/common/InternalTeamUrn.pdsc + + export type InternalTeamUrn = string; + // Generated from: com/linkedin/common/InternetAuthority.pdsc + + export interface InternetAuthority { + userName?: string; + host: FullyQualifiedDomainName | IPAddress; + portNumber?: number; + } + // Generated from: com/linkedin/common/InterviewAssignmentUrn.pdsc + + export type InterviewAssignmentUrn = string; + // Generated from: com/linkedin/common/InterviewerUrn.pdsc + + export type InterviewerUrn = string; + // Generated from: com/linkedin/common/InterviewModuleTypeUrn.pdsc + + export type InterviewModuleTypeUrn = string; + // Generated from: com/linkedin/common/InterviewModuleUrn.pdsc + + export type InterviewModuleUrn = string; + // Generated from: com/linkedin/common/InterviewPrepCategoryUrn.pdsc + + export type InterviewPrepCategoryUrn = string; + // Generated from: com/linkedin/common/InterviewPrepLearningContentUrn.pdsc + + export type InterviewPrepLearningContentUrn = string; + // Generated from: com/linkedin/common/InterviewUrn.pdsc + + export type InterviewUrn = string; + // Generated from: com/linkedin/common/IntroductionRequestUrn.pdsc + + export type IntroductionRequestUrn = string; + // Generated from: com/linkedin/common/InvitationsTopicUrn.pdsc + + export type InvitationsTopicUrn = string; + // Generated from: com/linkedin/common/InvitationUrn.pdsc + + export type InvitationUrn = string; + // Generated from: com/linkedin/common/InvoiceSetupUrn.pdsc + + export type InvoiceSetupUrn = string; + // Generated from: com/linkedin/common/IPAddress.pdsc + + export type IPAddress = number; + // Generated from: com/linkedin/common/IPV4Address.pdsc + + export type IPV4Address = string; + // Generated from: com/linkedin/common/JiraIssueUrn.pdsc + + export type JiraIssueUrn = string; + // Generated from: com/linkedin/common/JobApplicantSavedAnswerUrn.pdsc + + export type JobApplicantSavedAnswerUrn = string; + // Generated from: com/linkedin/common/JobApplicationAnswerUrn.pdsc + + export type JobApplicationAnswerUrn = string; + // Generated from: com/linkedin/common/JobApplicationUrn.pdsc + + export type JobApplicationUrn = string; + // Generated from: com/linkedin/common/JobApplicationV2Urn.pdsc + + export type JobApplicationV2Urn = string; + // Generated from: com/linkedin/common/JobAttributeUrn.pdsc + + export type JobAttributeUrn = string; + // Generated from: com/linkedin/common/JobBoardUrn.pdsc + + export type JobBoardUrn = string; + // Generated from: com/linkedin/common/JobBudgetStatusUrn.pdsc + + export type JobBudgetStatusUrn = string; + // Generated from: com/linkedin/common/JobDistributionCampaignUrn.pdsc + + export type JobDistributionCampaignUrn = string; + // Generated from: com/linkedin/common/JobDistributionFeedUrn.pdsc + + export type JobDistributionFeedUrn = string; + // Generated from: com/linkedin/common/JobDistributionPartnerUrn.pdsc + + export type JobDistributionPartnerUrn = string; + // Generated from: com/linkedin/common/JobDistributionRuleUrn.pdsc + + export type JobDistributionRuleUrn = string; + // Generated from: com/linkedin/common/JobEntitlementGrantUrn.pdsc + + export type JobEntitlementGrantUrn = string; + // Generated from: com/linkedin/common/JobEntitlementUrn.pdsc + + export type JobEntitlementUrn = string; + // Generated from: com/linkedin/common/JobExperienceLevelUrn.pdsc + + export type JobExperienceLevelUrn = string; + // Generated from: com/linkedin/common/JobIngestionEmployerUrn.pdsc + + export type JobIngestionEmployerUrn = string; + // Generated from: com/linkedin/common/JobMiningTaskUrn.pdsc + + export type JobMiningTaskUrn = string; + // Generated from: com/linkedin/common/JobPosterEmploymentVerificationUrn.pdsc + + export type JobPosterEmploymentVerificationUrn = string; + // Generated from: com/linkedin/common/JobPosterMigrationUrn.pdsc + + export type JobPosterMigrationUrn = string; + // Generated from: com/linkedin/common/JobPostingApplicationQuestionUrn.pdsc + + export type JobPostingApplicationQuestionUrn = string; + // Generated from: com/linkedin/common/JobPostingAssessableSkillUrn.pdsc + + export type JobPostingAssessableSkillUrn = string; + // Generated from: com/linkedin/common/JobPostingDuplicatedClusterUrn.pdsc + + export type JobPostingDuplicatedClusterUrn = string; + // Generated from: com/linkedin/common/JobPostingFulfillmentStatusUrn.pdsc + + export type JobPostingFulfillmentStatusUrn = string; + // Generated from: com/linkedin/common/JobPostingUrn.pdsc + + export type JobPostingUrn = string; + // Generated from: com/linkedin/common/JobProductUrn.pdsc + + export type JobProductUrn = string; + // Generated from: com/linkedin/common/JobPromotionUrn.pdsc + + export type JobPromotionUrn = string; + // Generated from: com/linkedin/common/JobRoleUrn.pdsc + + export type JobRoleUrn = string; + // Generated from: com/linkedin/common/JobSeekerUrn.pdsc + + export type JobSeekerUrn = string; + // Generated from: com/linkedin/common/JobSourceUrn.pdsc + + export type JobSourceUrn = string; + // Generated from: com/linkedin/common/JobSpecialtyUrn.pdsc + + export type JobSpecialtyUrn = string; + // Generated from: com/linkedin/common/JobSpiderUrn.pdsc + + export type JobSpiderUrn = string; + // Generated from: com/linkedin/common/JobsSourceOfHire.pdsc + + export type JobsSourceOfHire = + | { JobsSourceOfHireApproaches: JobsSourceOfHireApproaches } + | { JobsSourceOfHireJobSites: JobsSourceOfHireJobSites }; + // Generated from: com/linkedin/common/JobsSourceOfHireApproaches.pdsc + + export type JobsSourceOfHireApproaches = + | 'COMPANY_WEBSITE' + | 'REFERRAL' + | 'CONTACTED_BY_RECRUITER' + | 'OTHER' + | 'STAFFING_AGENCY'; + // Generated from: com/linkedin/common/JobsSourceOfHireJobSites.pdsc + + export type JobsSourceOfHireJobSites = 'LINKEDIN' | 'INDEED' | 'OTHER_JOB_SITES'; + // Generated from: com/linkedin/common/JobsTargetingSegmentUrn.pdsc + + export type JobsTargetingSegmentUrn = string; + // Generated from: com/linkedin/common/JobsYouMayBeInterestedInEmailDecoratedContentUrn.pdsc + + export type JobsYouMayBeInterestedInEmailDecoratedContentUrn = string; + // Generated from: com/linkedin/common/JobTitleTierUrn.pdsc + + export type JobTitleTierUrn = string; + // Generated from: com/linkedin/common/JobUrn.pdsc + + export type JobUrn = string; + // Generated from: com/linkedin/common/JobWrappingBucketUrn.pdsc + + export type JobWrappingBucketUrn = string; + // Generated from: com/linkedin/common/JobWrappingContractUrn.pdsc + + export type JobWrappingContractUrn = string; + // Generated from: com/linkedin/common/JobWrappingSeatUrn.pdsc + + export type JobWrappingSeatUrn = string; + // Generated from: com/linkedin/common/KafkaClusterTopicUrn.pdsc + + export type KafkaClusterTopicUrn = string; + // Generated from: com/linkedin/common/KafkaClusterUrn.pdsc + + export type KafkaClusterUrn = string; + // Generated from: com/linkedin/common/KairosTaskUrn.pdsc + + export type KairosTaskUrn = string; + // Generated from: com/linkedin/common/KeySchemaLanguage.pdsc + + export type KeySchemaLanguage = 'AVRO' | 'STRING' | 'OTHER'; + // Generated from: com/linkedin/common/KhronosUrn.pdsc + + export type KhronosUrn = string; + // Generated from: com/linkedin/common/KmsSecretUrn.pdsc + + export type KmsSecretUrn = string; + // Generated from: com/linkedin/common/KmsVersionedSecretUrn.pdsc + + export type KmsVersionedSecretUrn = string; + // Generated from: com/linkedin/common/L2MPromotionUrn.pdsc + + export type L2MPromotionUrn = string; + // Generated from: com/linkedin/common/LabeledLearningContentAccessGroupUrn.pdsc + + export type LabeledLearningContentAccessGroupUrn = string; + // Generated from: com/linkedin/common/LatLong.pdsc + + export interface LatLong { + latitude?: number; + longitude?: number; + } + // Generated from: com/linkedin/common/LeadGenFormConsentUrn.pdsc + + export type LeadGenFormConsentUrn = string; + // Generated from: com/linkedin/common/LeadGenFormLegalInfoUrn.pdsc + + export type LeadGenFormLegalInfoUrn = string; + // Generated from: com/linkedin/common/LeadGenFormQuestionUrn.pdsc + + export type LeadGenFormQuestionUrn = string; + // Generated from: com/linkedin/common/LeadGenFormResponseUrn.pdsc + + export type LeadGenFormResponseUrn = string; + // Generated from: com/linkedin/common/LeadGenFormUrn.pdsc + + export type LeadGenFormUrn = string; + // Generated from: com/linkedin/common/LeadNotificationUrlUrn.pdsc + + export type LeadNotificationUrlUrn = string; + // Generated from: com/linkedin/common/LeapAutoCuratedFeedUrn.pdsc + + export type LeapAutoCuratedFeedUrn = string; + // Generated from: com/linkedin/common/LeapBroadcastUrn.pdsc + + export type LeapBroadcastUrn = string; + // Generated from: com/linkedin/common/LeapCategoryUrn.pdsc + + export type LeapCategoryUrn = string; + // Generated from: com/linkedin/common/LeapContentUrn.pdsc + + export type LeapContentUrn = string; + // Generated from: com/linkedin/common/LeapContractUrn.pdsc + + export type LeapContractUrn = string; + // Generated from: com/linkedin/common/LeapFacebookTimelineUrn.pdsc + + export type LeapFacebookTimelineUrn = string; + // Generated from: com/linkedin/common/LeapFeaturedContentUrn.pdsc + + export type LeapFeaturedContentUrn = string; + // Generated from: com/linkedin/common/LeapGroupUrn.pdsc + + export type LeapGroupUrn = string; + // Generated from: com/linkedin/common/LeapMessageUrn.pdsc + + export type LeapMessageUrn = string; + // Generated from: com/linkedin/common/LeapSeatUrn.pdsc + + export type LeapSeatUrn = string; + // Generated from: com/linkedin/common/leapSeatV2Urn.pdsc + + export type leapSeatV2Urn = string; + // Generated from: com/linkedin/common/LeapShareUrn.pdsc + + export type LeapShareUrn = string; + // Generated from: com/linkedin/common/LeapSuggestionUrn.pdsc + + export type LeapSuggestionUrn = string; + // Generated from: com/linkedin/common/LeapTagUrn.pdsc + + export type LeapTagUrn = string; + // Generated from: com/linkedin/common/LeapTwitterTimelineUrn.pdsc + + export type LeapTwitterTimelineUrn = string; + // Generated from: com/linkedin/common/LearnerCertificateUrn.pdsc + + export type LearnerCertificateUrn = string; + // Generated from: com/linkedin/common/LearnerInterestUrn.pdsc + + export type LearnerInterestUrn = string; + // Generated from: com/linkedin/common/LearningAccessPolicyConditionUrn.pdsc + + export type LearningAccessPolicyConditionUrn = string; + // Generated from: com/linkedin/common/LearningAccessPolicyObligationUrn.pdsc + + export type LearningAccessPolicyObligationUrn = string; + // Generated from: com/linkedin/common/LearningAccessPolicyUrn.pdsc + + export type LearningAccessPolicyUrn = string; + // Generated from: com/linkedin/common/LearningAiccCommunicationUrn.pdsc + + export type LearningAiccCommunicationUrn = string; + // Generated from: com/linkedin/common/LearningAiccSessionUrn.pdsc + + export type LearningAiccSessionUrn = string; + // Generated from: com/linkedin/common/LearningAiccSessionV2Urn.pdsc + + export type LearningAiccSessionV2Urn = string; + // Generated from: com/linkedin/common/LearningArticleViewingStatusUrn.pdsc + + export type LearningArticleViewingStatusUrn = string; + // Generated from: com/linkedin/common/LearningAssignmentUrn.pdsc + + export type LearningAssignmentUrn = string; + // Generated from: com/linkedin/common/LearningCategoryUrn.pdsc + + export type LearningCategoryUrn = string; + // Generated from: com/linkedin/common/LearningCollectionUrn.pdsc + + export type LearningCollectionUrn = string; + // Generated from: com/linkedin/common/LearningContentAssessmentUrn.pdsc + + export type LearningContentAssessmentUrn = string; + // Generated from: com/linkedin/common/LearningContentAuthorUrn.pdsc + + export type LearningContentAuthorUrn = string; + // Generated from: com/linkedin/common/LearningContentBureauOfLaborStatisticUrn.pdsc + + export type LearningContentBureauOfLaborStatisticUrn = string; + // Generated from: com/linkedin/common/LearningContentBureauOfLaborStatisticVersionUrn.pdsc + + export type LearningContentBureauOfLaborStatisticVersionUrn = string; + // Generated from: com/linkedin/common/LearningContentCategoryTypeUrn.pdsc + + export type LearningContentCategoryTypeUrn = string; + // Generated from: com/linkedin/common/LearningContentCategoryUrn.pdsc + + export type LearningContentCategoryUrn = string; + // Generated from: com/linkedin/common/LearningContentCategoryVersionUrn.pdsc + + export type LearningContentCategoryVersionUrn = string; + // Generated from: com/linkedin/common/LearningContentChapterUrn.pdsc + + export type LearningContentChapterUrn = string; + // Generated from: com/linkedin/common/LearningContentCourseUrn.pdsc + + export type LearningContentCourseUrn = string; + // Generated from: com/linkedin/common/LearningContentCourseVersionUrn.pdsc + + export type LearningContentCourseVersionUrn = string; + // Generated from: com/linkedin/common/LearningContentCredentialingAgencyUrn.pdsc + + export type LearningContentCredentialingAgencyUrn = string; + // Generated from: com/linkedin/common/LearningContentCredentialingProgramUrn.pdsc + + export type LearningContentCredentialingProgramUrn = string; + // Generated from: com/linkedin/common/LearningContentDeploymentUrn.pdsc + + export type LearningContentDeploymentUrn = string; + // Generated from: com/linkedin/common/LearningContentExerciseFileGroupUrn.pdsc + + export type LearningContentExerciseFileGroupUrn = string; + // Generated from: com/linkedin/common/LearningContentExerciseFileGroupVersionUrn.pdsc + + export type LearningContentExerciseFileGroupVersionUrn = string; + // Generated from: com/linkedin/common/LearningContentExerciseFileUrn.pdsc + + export type LearningContentExerciseFileUrn = string; + // Generated from: com/linkedin/common/LearningContentExerciseFileVersionUrn.pdsc + + export type LearningContentExerciseFileVersionUrn = string; + // Generated from: com/linkedin/common/LearningContentFieldUrn.pdsc + + export type LearningContentFieldUrn = string; + // Generated from: com/linkedin/common/LearningContentLearningPathUrn.pdsc + + export type LearningContentLearningPathUrn = string; + // Generated from: com/linkedin/common/LearningContentLearningPathVersionUrn.pdsc + + export type LearningContentLearningPathVersionUrn = string; + // Generated from: com/linkedin/common/LearningContentPhaseTemplateUrn.pdsc + + export type LearningContentPhaseTemplateUrn = string; + // Generated from: com/linkedin/common/LearningContentPhaseTypeUrn.pdsc + + export type LearningContentPhaseTypeUrn = string; + // Generated from: com/linkedin/common/LearningContentPhaseUrn.pdsc + + export type LearningContentPhaseUrn = string; + // Generated from: com/linkedin/common/LearningContentProjectRoleUrn.pdsc + + export type LearningContentProjectRoleUrn = string; + // Generated from: com/linkedin/common/LearningContentProjectTemplateUrn.pdsc + + export type LearningContentProjectTemplateUrn = string; + // Generated from: com/linkedin/common/LearningContentProjectTypeUrn.pdsc + + export type LearningContentProjectTypeUrn = string; + // Generated from: com/linkedin/common/LearningContentProjectUrn.pdsc + + export type LearningContentProjectUrn = string; + // Generated from: com/linkedin/common/LearningContentQuestionDomainUrn.pdsc + + export type LearningContentQuestionDomainUrn = string; + // Generated from: com/linkedin/common/LearningContentQuestionUrn.pdsc + + export type LearningContentQuestionUrn = string; + // Generated from: com/linkedin/common/LearningContentReleaseConditionUrn.pdsc + + export type LearningContentReleaseConditionUrn = string; + // Generated from: com/linkedin/common/LearningContentRoyaltyPaymentUrn.pdsc + + export type LearningContentRoyaltyPaymentUrn = string; + // Generated from: com/linkedin/common/LearningContentRoyaltyPeriodUrn.pdsc + + export type LearningContentRoyaltyPeriodUrn = string; + // Generated from: com/linkedin/common/LearningContentStatusWorkflowUrn.pdsc + + export type LearningContentStatusWorkflowUrn = string; + // Generated from: com/linkedin/common/LearningContentSupplierUrn.pdsc + + export type LearningContentSupplierUrn = string; + // Generated from: com/linkedin/common/LearningContentTaskTemplateUrn.pdsc + + export type LearningContentTaskTemplateUrn = string; + // Generated from: com/linkedin/common/LearningContentTaskTypeUrn.pdsc + + export type LearningContentTaskTypeUrn = string; + // Generated from: com/linkedin/common/LearningContentTaskUrn.pdsc + + export type LearningContentTaskUrn = string; + // Generated from: com/linkedin/common/LearningContentTaxonomyUrn.pdsc + + export type LearningContentTaxonomyUrn = string; + // Generated from: com/linkedin/common/LearningContentTypeUrn.pdsc + + export type LearningContentTypeUrn = string; + // Generated from: com/linkedin/common/LearningContentVideoUrn.pdsc + + export type LearningContentVideoUrn = string; + // Generated from: com/linkedin/common/LearningContentVideoVersionUrn.pdsc + + export type LearningContentVideoVersionUrn = string; + // Generated from: com/linkedin/common/LearningContentViewTypeUrn.pdsc + + export type LearningContentViewTypeUrn = string; + // Generated from: com/linkedin/common/LearningContentViewUrn.pdsc + + export type LearningContentViewUrn = string; + // Generated from: com/linkedin/common/LearningCurationTargetUrn.pdsc + + export type LearningCurationTargetUrn = string; + // Generated from: com/linkedin/common/LearningCustomContentUrn.pdsc + + export type LearningCustomContentUrn = string; + // Generated from: com/linkedin/common/LearningDockerImageUrn.pdsc + + export type LearningDockerImageUrn = string; + // Generated from: com/linkedin/common/LearningEmailTemplateUrn.pdsc + + export type LearningEmailTemplateUrn = string; + // Generated from: com/linkedin/common/LearningEnterpriseAccountScopedPermissionUrn.pdsc + + export type LearningEnterpriseAccountScopedPermissionUrn = string; + // Generated from: com/linkedin/common/LearningEnterpriseReportDefinitionUrn.pdsc + + export type LearningEnterpriseReportDefinitionUrn = string; + // Generated from: com/linkedin/common/LearningEnterpriseReportDefinitionVersionUrn.pdsc + + export type LearningEnterpriseReportDefinitionVersionUrn = string; + // Generated from: com/linkedin/common/LearningEnterpriseReportRequestUrn.pdsc + + export type LearningEnterpriseReportRequestUrn = string; + // Generated from: com/linkedin/common/LearningExternalLinkAssetUrn.pdsc + + export type LearningExternalLinkAssetUrn = string; + // Generated from: com/linkedin/common/LearningIngestionWorkflowDefinitionUrn.pdsc + + export type LearningIngestionWorkflowDefinitionUrn = string; + // Generated from: com/linkedin/common/LearningIngestionWorkflowErrorUrn.pdsc + + export type LearningIngestionWorkflowErrorUrn = string; + // Generated from: com/linkedin/common/LearningIngestionWorkflowInstanceUrn.pdsc + + export type LearningIngestionWorkflowInstanceUrn = string; + // Generated from: com/linkedin/common/LearningIngestionWorkflowStepDefinitionUrn.pdsc + + export type LearningIngestionWorkflowStepDefinitionUrn = string; + // Generated from: com/linkedin/common/LearningIngestionWorkflowStepInstanceUrn.pdsc + + export type LearningIngestionWorkflowStepInstanceUrn = string; + // Generated from: com/linkedin/common/LearningLabelGroupUrn.pdsc + + export type LearningLabelGroupUrn = string; + // Generated from: com/linkedin/common/LearningLabelUrn.pdsc + + export type LearningLabelUrn = string; + // Generated from: com/linkedin/common/LearningMediaAssetUrn.pdsc + + export type LearningMediaAssetUrn = string; + // Generated from: com/linkedin/common/LearningOverlayUrn.pdsc + + export type LearningOverlayUrn = string; + // Generated from: com/linkedin/common/LearningPermissionUrn.pdsc + + export type LearningPermissionUrn = string; + // Generated from: com/linkedin/common/LearningPracticeEnvironmentUrn.pdsc + + export type LearningPracticeEnvironmentUrn = string; + // Generated from: com/linkedin/common/LearningProcessTrackerUrn.pdsc + + export type LearningProcessTrackerUrn = string; + // Generated from: com/linkedin/common/LearningProviderContentIntegrationInstanceUrn.pdsc + + export type LearningProviderContentIntegrationInstanceUrn = string; + // Generated from: com/linkedin/common/LearningProviderContentIntegrationSyncUrn.pdsc + + export type LearningProviderContentIntegrationSyncUrn = string; + // Generated from: com/linkedin/common/LearningPublishingTaskUrn.pdsc + + export type LearningPublishingTaskUrn = string; + // Generated from: com/linkedin/common/LearningStatusUrn.pdsc + + export type LearningStatusUrn = string; + // Generated from: com/linkedin/common/LearningStreamingAssetUrn.pdsc + + export type LearningStreamingAssetUrn = string; + // Generated from: com/linkedin/common/LearningSubStatusUrn.pdsc + + export type LearningSubStatusUrn = string; + // Generated from: com/linkedin/common/LearningUrlAssetUrn.pdsc + + export type LearningUrlAssetUrn = string; + // Generated from: com/linkedin/common/LegalOrganizationCompanyAssociationUrn.pdsc + + export type LegalOrganizationCompanyAssociationUrn = string; + // Generated from: com/linkedin/common/LegalOrganizationTaxExemptionUrn.pdsc + + export type LegalOrganizationTaxExemptionUrn = string; + // Generated from: com/linkedin/common/LegalOrganizationTaxRegistrationExemptionUrn.pdsc + + export type LegalOrganizationTaxRegistrationExemptionUrn = string; + // Generated from: com/linkedin/common/LegalOrganizationTaxRegistrationUrn.pdsc + + export type LegalOrganizationTaxRegistrationUrn = string; + // Generated from: com/linkedin/common/LegalOrganizationUrn.pdsc + + export type LegalOrganizationUrn = string; + // Generated from: com/linkedin/common/LegoWidgetUrn.pdsc + + export type LegoWidgetUrn = string; + // Generated from: com/linkedin/common/LikeAction.pdsc + + export interface LikeAction { + likedBy: string; + lastModified?: AuditStamp; + } + // Generated from: com/linkedin/common/Likes.pdsc + + export interface Likes { + actions: LikeAction[]; + } + // Generated from: com/linkedin/common/LikesTopicUrn.pdsc + + export type LikesTopicUrn = string; + // Generated from: com/linkedin/common/LikeUrn.pdsc + + export type LikeUrn = string; + // Generated from: com/linkedin/common/LinkedInAnswerClientUrn.pdsc + + export type LinkedInAnswerClientUrn = string; + // Generated from: com/linkedin/common/LinkedInArticleUrn.pdsc + + export type LinkedInArticleUrn = string; + // Generated from: com/linkedin/common/LiquidRuleUrn.pdsc + + export type LiquidRuleUrn = string; + // Generated from: com/linkedin/common/ListeningCriterionUrn.pdsc + + export type ListeningCriterionUrn = string; + // Generated from: com/linkedin/common/ListeningDashboardUrn.pdsc + + export type ListeningDashboardUrn = string; + // Generated from: com/linkedin/common/ListeningDataViewConfigurationUrn.pdsc + + export type ListeningDataViewConfigurationUrn = string; + // Generated from: com/linkedin/common/LithographAuthoredContentUrn.pdsc + + export type LithographAuthoredContentUrn = string; + // Generated from: com/linkedin/common/LithographCategoryUrn.pdsc + + export type LithographCategoryUrn = string; + // Generated from: com/linkedin/common/LithographComponentUrn.pdsc + + export type LithographComponentUrn = string; + // Generated from: com/linkedin/common/LithographRssFeedUrn.pdsc + + export type LithographRssFeedUrn = string; + // Generated from: com/linkedin/common/LithographTopicUrn.pdsc + + export type LithographTopicUrn = string; + // Generated from: com/linkedin/common/LiveVideoFeedPostTopicUrn.pdsc + + export type LiveVideoFeedPostTopicUrn = string; + // Generated from: com/linkedin/common/LiveVideoPostTopicUrn.pdsc + + export type LiveVideoPostTopicUrn = string; + // Generated from: com/linkedin/common/LiveVideoPostViewerTopicUrn.pdsc + + export type LiveVideoPostViewerTopicUrn = string; + // Generated from: com/linkedin/common/LiveVideoUrn.pdsc + + export type LiveVideoUrn = string; + // Generated from: com/linkedin/common/LixExperimentChangeUrn.pdsc + + export type LixExperimentChangeUrn = string; + // Generated from: com/linkedin/common/LixExperimentUrn.pdsc + + export type LixExperimentUrn = string; + // Generated from: com/linkedin/common/LixTestUrn.pdsc + + export type LixTestUrn = string; + // Generated from: com/linkedin/common/LlaPartnerConversionUrn.pdsc + + export type LlaPartnerConversionUrn = string; + // Generated from: com/linkedin/common/LLAPartnerUrlMatchUrn.pdsc + + export type LLAPartnerUrlMatchUrn = string; + // Generated from: com/linkedin/common/LLAPartnerUrn.pdsc + + export type LLAPartnerUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishArticleUrn.pdsc + + export type LlsPrepublishArticleUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishArticleVersionUrn.pdsc + + export type LlsPrepublishArticleVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishAssessmentUrn.pdsc + + export type LlsPrepublishAssessmentUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishAudioUrn.pdsc + + export type LlsPrepublishAudioUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishAudioVersionUrn.pdsc + + export type LlsPrepublishAudioVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishAuthorUrn.pdsc + + export type LlsPrepublishAuthorUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishAuthorVersionUrn.pdsc + + export type LlsPrepublishAuthorVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishBookUrn.pdsc + + export type LlsPrepublishBookUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishBookVersionUrn.pdsc + + export type LlsPrepublishBookVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishBrandUrn.pdsc + + export type LlsPrepublishBrandUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishBrandVersionUrn.pdsc + + export type LlsPrepublishBrandVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishCaptionUrn.pdsc + + export type LlsPrepublishCaptionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishCaptionVersionUrn.pdsc + + export type LlsPrepublishCaptionVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishClassificationTypeUrn.pdsc + + export type LlsPrepublishClassificationTypeUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishClassificationTypeVersionUrn.pdsc + + export type LlsPrepublishClassificationTypeVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishClassificationUrn.pdsc + + export type LlsPrepublishClassificationUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishClassificationVersionUrn.pdsc + + export type LlsPrepublishClassificationVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishCollectionUrn.pdsc + + export type LlsPrepublishCollectionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishCollectionVersionUrn.pdsc + + export type LlsPrepublishCollectionVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishContentAccessSettingsUrn.pdsc + + export type LlsPrepublishContentAccessSettingsUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishCourseUrn.pdsc + + export type LlsPrepublishCourseUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishCourseVersionUrn.pdsc + + export type LlsPrepublishCourseVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishDocumentUrn.pdsc + + export type LlsPrepublishDocumentUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishDocumentVersionUrn.pdsc + + export type LlsPrepublishDocumentVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishEventUrn.pdsc + + export type LlsPrepublishEventUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishEventVersionUrn.pdsc + + export type LlsPrepublishEventVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishExternalIdentityUrn.pdsc + + export type LlsPrepublishExternalIdentityUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishExternalIdentityVersionUrn.pdsc + + export type LlsPrepublishExternalIdentityVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishPathUrn.pdsc + + export type LlsPrepublishPathUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishPathVersionUrn.pdsc + + export type LlsPrepublishPathVersionUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishVideoUrn.pdsc + + export type LlsPrepublishVideoUrn = string; + // Generated from: com/linkedin/common/LlsPrepublishVideoVersionUrn.pdsc + + export type LlsPrepublishVideoVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeArticleUrn.pdsc + + export type LlsServeArticleUrn = string; + // Generated from: com/linkedin/common/LlsServeArticleVersionUrn.pdsc + + export type LlsServeArticleVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeAssessmentUrn.pdsc + + export type LlsServeAssessmentUrn = string; + // Generated from: com/linkedin/common/LlsServeAudioUrn.pdsc + + export type LlsServeAudioUrn = string; + // Generated from: com/linkedin/common/LlsServeAudioVersionUrn.pdsc + + export type LlsServeAudioVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeAuthorUrn.pdsc + + export type LlsServeAuthorUrn = string; + // Generated from: com/linkedin/common/LlsServeAuthorVersionUrn.pdsc + + export type LlsServeAuthorVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeBookUrn.pdsc + + export type LlsServeBookUrn = string; + // Generated from: com/linkedin/common/LlsServeBookVersionUrn.pdsc + + export type LlsServeBookVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeBrandUrn.pdsc + + export type LlsServeBrandUrn = string; + // Generated from: com/linkedin/common/LlsServeBrandVersionUrn.pdsc + + export type LlsServeBrandVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeCaptionUrn.pdsc + + export type LlsServeCaptionUrn = string; + // Generated from: com/linkedin/common/LlsServeCaptionVersionUrn.pdsc + + export type LlsServeCaptionVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeClassificationTypeUrn.pdsc + + export type LlsServeClassificationTypeUrn = string; + // Generated from: com/linkedin/common/LlsServeClassificationTypeVersionUrn.pdsc + + export type LlsServeClassificationTypeVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeClassificationUrn.pdsc + + export type LlsServeClassificationUrn = string; + // Generated from: com/linkedin/common/LlsServeClassificationVersionUrn.pdsc + + export type LlsServeClassificationVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeCollectionUrn.pdsc + + export type LlsServeCollectionUrn = string; + // Generated from: com/linkedin/common/LlsServeCollectionVersionUrn.pdsc + + export type LlsServeCollectionVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeCourseUrn.pdsc + + export type LlsServeCourseUrn = string; + // Generated from: com/linkedin/common/LlsServeCourseVersionUrn.pdsc + + export type LlsServeCourseVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeDocumentUrn.pdsc + + export type LlsServeDocumentUrn = string; + // Generated from: com/linkedin/common/LlsServeDocumentVersionUrn.pdsc + + export type LlsServeDocumentVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeEventUrn.pdsc + + export type LlsServeEventUrn = string; + // Generated from: com/linkedin/common/LlsServeEventVersionUrn.pdsc + + export type LlsServeEventVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeExternalIdentityUrn.pdsc + + export type LlsServeExternalIdentityUrn = string; + // Generated from: com/linkedin/common/LlsServeExternalIdentityVersionUrn.pdsc + + export type LlsServeExternalIdentityVersionUrn = string; + // Generated from: com/linkedin/common/LlsServePathUrn.pdsc + + export type LlsServePathUrn = string; + // Generated from: com/linkedin/common/LlsServePathVersionUrn.pdsc + + export type LlsServePathVersionUrn = string; + // Generated from: com/linkedin/common/LlsServeVideoUrn.pdsc + + export type LlsServeVideoUrn = string; + // Generated from: com/linkedin/common/LlsServeVideoVersionUrn.pdsc + + export type LlsServeVideoVersionUrn = string; + // Generated from: com/linkedin/common/Locale.pdsc + + export interface Locale { + language: string; + country?: string; + variant?: string; + script?: string; + extensions?: LocaleExtensions; + } + // Generated from: com/linkedin/common/LocaleExtensions.pdsc + + export interface LocaleExtensions { + t?: string; + u?: string; + x?: string; + } + // Generated from: com/linkedin/common/LocaleString.pdsc + + export interface LocaleString { + value: string; + locale: Locale; + } + // Generated from: com/linkedin/common/LocaleUrn.pdsc + + export type LocaleUrn = string; + // Generated from: com/linkedin/common/LoginSessionUrn.pdsc + + export type LoginSessionUrn = string; + // Generated from: com/linkedin/common/LongRange.pdsc + + export interface LongRange { + start?: number; + end?: number; + } + // Generated from: com/linkedin/common/LpsPolicyUrn.pdsc + + export type LpsPolicyUrn = string; + // Generated from: com/linkedin/common/LyndaAssessmentUrn.pdsc + + export type LyndaAssessmentUrn = string; + // Generated from: com/linkedin/common/LyndaAuthorUrn.pdsc + + export type LyndaAuthorUrn = string; + // Generated from: com/linkedin/common/LyndaCategoryUrn.pdsc + + export type LyndaCategoryUrn = string; + // Generated from: com/linkedin/common/LyndaChapterUrn.pdsc + + export type LyndaChapterUrn = string; + // Generated from: com/linkedin/common/LyndaCourseUrn.pdsc + + export type LyndaCourseUrn = string; + // Generated from: com/linkedin/common/LyndaCredentialingAgencyUrn.pdsc + + export type LyndaCredentialingAgencyUrn = string; + // Generated from: com/linkedin/common/LyndaCredentialingProgramUrn.pdsc + + export type LyndaCredentialingProgramUrn = string; + // Generated from: com/linkedin/common/LyndaEnterpriseLegacyReportUrn.pdsc + + export type LyndaEnterpriseLegacyReportUrn = string; + // Generated from: com/linkedin/common/LyndaGroupUrn.pdsc + + export type LyndaGroupUrn = string; + // Generated from: com/linkedin/common/LyndaLearningCollectionUrn.pdsc + + export type LyndaLearningCollectionUrn = string; + // Generated from: com/linkedin/common/LyndaLearningPathUrn.pdsc + + export type LyndaLearningPathUrn = string; + // Generated from: com/linkedin/common/LyndaMasterAdminUrn.pdsc + + export type LyndaMasterAdminUrn = string; + // Generated from: com/linkedin/common/LyndaPracticeEnvironmentUrn.pdsc + + export type LyndaPracticeEnvironmentUrn = string; + // Generated from: com/linkedin/common/LyndaQuestionUrn.pdsc + + export type LyndaQuestionUrn = string; + // Generated from: com/linkedin/common/LyndaUserUrn.pdsc + + export type LyndaUserUrn = string; + // Generated from: com/linkedin/common/LyndaVideoUrn.pdsc + + export type LyndaVideoUrn = string; + // Generated from: com/linkedin/common/MailboxThreadUrn.pdsc + + export type MailboxThreadUrn = string; + // Generated from: com/linkedin/common/MailUrn.pdsc + + export type MailUrn = string; + // Generated from: com/linkedin/common/MarketingAutomationSegmentUrn.pdsc + + export type MarketingAutomationSegmentUrn = string; + // Generated from: com/linkedin/common/MarketingCampaignBulkJobUrn.pdsc + + export type MarketingCampaignBulkJobUrn = string; + // Generated from: com/linkedin/common/MarketingCampaignResponseBulkImportUrn.pdsc + + export type MarketingCampaignResponseBulkImportUrn = string; + // Generated from: com/linkedin/common/MarketingCampaignResponseUrn.pdsc + + export type MarketingCampaignResponseUrn = string; + // Generated from: com/linkedin/common/MarketingCampaignSearchCriteriaUrn.pdsc + + export type MarketingCampaignSearchCriteriaUrn = string; + // Generated from: com/linkedin/common/MarketingCampaignUrn.pdsc + + export type MarketingCampaignUrn = string; + // Generated from: com/linkedin/common/MarketingContentSnapshotSourceType.pdsc + + export type MarketingContentSnapshotSourceType = 'UGC_POST' | 'SHARE'; + // Generated from: com/linkedin/common/MarketingContentSnapshotUrn.pdsc + + export type MarketingContentSnapshotUrn = string; + // Generated from: com/linkedin/common/MarketplaceOpportunityUrn.pdsc + + export type MarketplaceOpportunityUrn = string; + // Generated from: com/linkedin/common/MarketplacePlatformEngagementUrn.pdsc + + export type MarketplacePlatformEngagementUrn = string; + // Generated from: com/linkedin/common/MarketplacePlatformOpportunityUrn.pdsc + + export type MarketplacePlatformOpportunityUrn = string; + // Generated from: com/linkedin/common/MarketplacePlatformProviderUrn.pdsc + + export type MarketplacePlatformProviderUrn = string; + // Generated from: com/linkedin/common/MarketplaceQuestionnaireUrn.pdsc + + export type MarketplaceQuestionnaireUrn = string; + // Generated from: com/linkedin/common/MarketplaceQuestionnaireV2Urn.pdsc + + export type MarketplaceQuestionnaireV2Urn = string; + // Generated from: com/linkedin/common/MarketplaceQuestionUrn.pdsc + + export type MarketplaceQuestionUrn = string; + // Generated from: com/linkedin/common/MasterPricebookUrn.pdsc + + export type MasterPricebookUrn = string; + // Generated from: com/linkedin/common/MasterPriceUrn.pdsc + + export type MasterPriceUrn = string; + // Generated from: com/linkedin/common/MasterProductUrn.pdsc + + export type MasterProductUrn = string; + // Generated from: com/linkedin/common/MD5.pdsc + + export type MD5 = string; + // Generated from: com/linkedin/common/MdmSalesforceCaseUrn.pdsc + + export type MdmSalesforceCaseUrn = string; + // Generated from: com/linkedin/common/MediaOverlayUrn.pdsc + + export type MediaOverlayUrn = string; + // Generated from: com/linkedin/common/MediaType.pdsc + + export type MediaType = string; + // Generated from: com/linkedin/common/MediaUrn.pdsc + + export type MediaUrn = string; + // Generated from: com/linkedin/common/MegaphoneUrn.pdsc + + export type MegaphoneUrn = string; + // Generated from: com/linkedin/common/MemberAdAccountUrn.pdsc + + export type MemberAdAccountUrn = string; + // Generated from: com/linkedin/common/MemberAttributedEntity.pdsc + + export interface MemberAttributedEntity { + member: string; + } + // Generated from: com/linkedin/common/MemberBehaviorUrn.pdsc + + export type MemberBehaviorUrn = string; + // Generated from: com/linkedin/common/MemberConsentActivityUrn.pdsc + + export type MemberConsentActivityUrn = string; + // Generated from: com/linkedin/common/MemberContractUrn.pdsc + + export type MemberContractUrn = string; + // Generated from: com/linkedin/common/MemberFollowUrn.pdsc + + export type MemberFollowUrn = string; + // Generated from: com/linkedin/common/MemberPreferencesUrn.pdsc + + export type MemberPreferencesUrn = string; + // Generated from: com/linkedin/common/MemberPrivacySettingsUrn.pdsc + + export type MemberPrivacySettingsUrn = string; + // Generated from: com/linkedin/common/MemberProfileViewUrn.pdsc + + export type MemberProfileViewUrn = string; + // Generated from: com/linkedin/common/MemberResumeCertificationUrn.pdsc + + export type MemberResumeCertificationUrn = string; + // Generated from: com/linkedin/common/MemberResumeEducationUrn.pdsc + + export type MemberResumeEducationUrn = string; + // Generated from: com/linkedin/common/MemberResumeHonorUrn.pdsc + + export type MemberResumeHonorUrn = string; + // Generated from: com/linkedin/common/MemberResumePositionUrn.pdsc + + export type MemberResumePositionUrn = string; + // Generated from: com/linkedin/common/MemberResumeUrn.pdsc + + export type MemberResumeUrn = string; + // Generated from: com/linkedin/common/MemberRichContentUrn.pdsc + + export type MemberRichContentUrn = string; + // Generated from: com/linkedin/common/MemberSessionUrn.pdsc + + export type MemberSessionUrn = string; + // Generated from: com/linkedin/common/MemberThirdPartySharingSettingsUrn.pdsc + + export type MemberThirdPartySharingSettingsUrn = string; + // Generated from: com/linkedin/common/MemberUrn.pdsc + + export type MemberUrn = string; + // Generated from: com/linkedin/common/MentorshipUrn.pdsc + + export type MentorshipUrn = string; + // Generated from: com/linkedin/common/MergedContactToCompanyUrn.pdsc + + export type MergedContactToCompanyUrn = string; + // Generated from: com/linkedin/common/MergedContactToNoteUrn.pdsc + + export type MergedContactToNoteUrn = string; + // Generated from: com/linkedin/common/MergedContactToTagUrn.pdsc + + export type MergedContactToTagUrn = string; + // Generated from: com/linkedin/common/MergedContactUrn.pdsc + + export type MergedContactUrn = string; + // Generated from: com/linkedin/common/MergedContactViewUrn.pdsc + + export type MergedContactViewUrn = string; + // Generated from: com/linkedin/common/MerlinAccountHeaderMetricUrn.pdsc + + export type MerlinAccountHeaderMetricUrn = string; + // Generated from: com/linkedin/common/MerlinAccountMetricUrn.pdsc + + export type MerlinAccountMetricUrn = string; + // Generated from: com/linkedin/common/MerlinAccountNoteUrn.pdsc + + export type MerlinAccountNoteUrn = string; + // Generated from: com/linkedin/common/MerlinAccountRecommendationUrn.pdsc + + export type MerlinAccountRecommendationUrn = string; + // Generated from: com/linkedin/common/MerlinAccountUrn.pdsc + + export type MerlinAccountUrn = string; + // Generated from: com/linkedin/common/MerlinAggregatedAlertUrn.pdsc + + export type MerlinAggregatedAlertUrn = string; + // Generated from: com/linkedin/common/MerlinAlertTypeUrn.pdsc + + export type MerlinAlertTypeUrn = string; + // Generated from: com/linkedin/common/MerlinAlertUrn.pdsc + + export type MerlinAlertUrn = string; + // Generated from: com/linkedin/common/MerlinDataPointMetadataUrn.pdsc + + export type MerlinDataPointMetadataUrn = string; + // Generated from: com/linkedin/common/MerlinInsightTagUrn.pdsc + + export type MerlinInsightTagUrn = string; + // Generated from: com/linkedin/common/MerlinInsightUrn.pdsc + + export type MerlinInsightUrn = string; + // Generated from: com/linkedin/common/MerlinLegacyAlertUrn.pdsc + + export type MerlinLegacyAlertUrn = string; + // Generated from: com/linkedin/common/MerlinLegacyDeckGenerationRequestUrn.pdsc + + export type MerlinLegacyDeckGenerationRequestUrn = string; + // Generated from: com/linkedin/common/MerlinLegacyInsightUrn.pdsc + + export type MerlinLegacyInsightUrn = string; + // Generated from: com/linkedin/common/MerlinPrioritizationStrategyUrn.pdsc + + export type MerlinPrioritizationStrategyUrn = string; + // Generated from: com/linkedin/common/MerlinUserUrn.pdsc + + export type MerlinUserUrn = string; + // Generated from: com/linkedin/common/MessageReactionSummariesTopicUrn.pdsc + + export type MessageReactionSummariesTopicUrn = string; + // Generated from: com/linkedin/common/MessageSeenReceiptsTopicUrn.pdsc + + export type MessageSeenReceiptsTopicUrn = string; + // Generated from: com/linkedin/common/MessagesTopicUrn.pdsc + + export type MessagesTopicUrn = string; + // Generated from: com/linkedin/common/MessagingDomainUrn.pdsc + + export type MessagingDomainUrn = string; + // Generated from: com/linkedin/common/MessagingLabelUrn.pdsc + + export type MessagingLabelUrn = string; + // Generated from: com/linkedin/common/MessagingMessageUrn.pdsc + + export type MessagingMessageUrn = string; + // Generated from: com/linkedin/common/MessagingThreadAccessCodeUrn.pdsc + + export type MessagingThreadAccessCodeUrn = string; + // Generated from: com/linkedin/common/MessagingThreadUrn.pdsc + + export type MessagingThreadUrn = string; + // Generated from: com/linkedin/common/MetricUrn.pdsc + + export type MetricUrn = string; + // Generated from: com/linkedin/common/MicrosoftDeviceUrn.pdsc + + export type MicrosoftDeviceUrn = string; + // Generated from: com/linkedin/common/MirrorTabStoryUrn.pdsc + + export type MirrorTabStoryUrn = string; + // Generated from: com/linkedin/common/MlArtifactUrn.pdsc + + export type MlArtifactUrn = string; + // Generated from: com/linkedin/common/MlDataAnalysisResultUrn.pdsc + + export type MlDataAnalysisResultUrn = string; + // Generated from: com/linkedin/common/MlExperimentUrn.pdsc + + export type MlExperimentUrn = string; + // Generated from: com/linkedin/common/MlExportedFeaturizedDatasetUrn.pdsc + + export type MlExportedFeaturizedDatasetUrn = string; + // Generated from: com/linkedin/common/MlFeatureAnchorUrn.pdsc + + export type MlFeatureAnchorUrn = string; + // Generated from: com/linkedin/common/MlFeatureCreationResultUrn.pdsc + + export type MlFeatureCreationResultUrn = string; + // Generated from: com/linkedin/common/MlFeatureUrn.pdsc + + export type MlFeatureUrn = string; + // Generated from: com/linkedin/common/MlFeatureVersionUrn.pdsc + + export type MlFeatureVersionUrn = string; + // Generated from: com/linkedin/common/MlFeaturizedDatasetUrn.pdsc + + export type MlFeaturizedDatasetUrn = string; + // Generated from: com/linkedin/common/MlModelAnalysisResultUrn.pdsc + + export type MlModelAnalysisResultUrn = string; + // Generated from: com/linkedin/common/MlModelDeploymentTargetUrn.pdsc + + export type MlModelDeploymentTargetUrn = string; + // Generated from: com/linkedin/common/MlModelGroupUrn.pdsc + + export type MlModelGroupUrn = string; + // Generated from: com/linkedin/common/MlModelPublishAttemptUrn.pdsc + + export type MlModelPublishAttemptUrn = string; + // Generated from: com/linkedin/common/MlModelTrainingRunUrn.pdsc + + export type MlModelTrainingRunUrn = string; + // Generated from: com/linkedin/common/MlModelTrainingSummaryUrn.pdsc + + export type MlModelTrainingSummaryUrn = string; + // Generated from: com/linkedin/common/MlModelValidationResultUrn.pdsc + + export type MlModelValidationResultUrn = string; + // Generated from: com/linkedin/common/MlPipelineRunUrn.pdsc + + export type MlPipelineRunUrn = string; + // Generated from: com/linkedin/common/MlPipelineStepRunOutputUrn.pdsc + + export type MlPipelineStepRunOutputUrn = string; + // Generated from: com/linkedin/common/MlPipelineStepRunUrn.pdsc + + export type MlPipelineStepRunUrn = string; + // Generated from: com/linkedin/common/MlPipelineStepUrn.pdsc + + export type MlPipelineStepUrn = string; + // Generated from: com/linkedin/common/MlPipelineUrn.pdsc + + export type MlPipelineUrn = string; + // Generated from: com/linkedin/common/MlPipelineVersionUrn.pdsc + + export type MlPipelineVersionUrn = string; + // Generated from: com/linkedin/common/MlProblemStatementUrn.pdsc + + export type MlProblemStatementUrn = string; + // Generated from: com/linkedin/common/MlProjectGroupUrn.pdsc + + export type MlProjectGroupUrn = string; + // Generated from: com/linkedin/common/MlProjectUrn.pdsc + + export type MlProjectUrn = string; + // Generated from: com/linkedin/common/MlPublishedModelUrn.pdsc + + export type MlPublishedModelUrn = string; + // Generated from: com/linkedin/common/MlPublishedModelVersionUrn.pdsc + + export type MlPublishedModelVersionUrn = string; + // Generated from: com/linkedin/common/MlTaskExecutionLogUrn.pdsc + + export type MlTaskExecutionLogUrn = string; + // Generated from: com/linkedin/common/MlTrainedModelUrn.pdsc + + export type MlTrainedModelUrn = string; + // Generated from: com/linkedin/common/MlVerticalUrn.pdsc + + export type MlVerticalUrn = string; + // Generated from: com/linkedin/common/ModelBundleResourceUrn.pdsc + + export type ModelBundleResourceUrn = string; + // Generated from: com/linkedin/common/ModelResourceType.pdsc + + export type ModelResourceType = 'INTERNAL_MODEL_RESOURCE' | 'EXTERNAL_MODEL_RESOURCE'; + // Generated from: com/linkedin/common/MoneyAmount.pdsc + + export interface MoneyAmount { + currencyCode: Currency; + amount: BigDecimal; + } + // Generated from: com/linkedin/common/MultiLocaleLyndaVideo.pdsc + + export interface MultiLocaleLyndaVideo { + localized: { [id: string]: string }; + preferredLocale?: Locale; + } + // Generated from: com/linkedin/common/MultiLocaleRichText.pdsc + + export interface MultiLocaleRichText { + localized: { [id: string]: RichText }; + preferredLocale?: Locale; + } + // Generated from: com/linkedin/common/MultiLocaleString.pdsc + + export interface MultiLocaleString { + localized: { [id: string]: string }; + preferredLocale?: Locale; + } + // Generated from: com/linkedin/common/MultiLocaleUri.pdsc + + export interface MultiLocaleUri { + localized: { [id: string]: Uri }; + preferredLocale?: Locale; + } + // Generated from: com/linkedin/common/MultiLocaleUrl.pdsc + + export interface MultiLocaleUrl { + localized: { [id: string]: Url }; + preferredLocale?: Locale; + } + // Generated from: com/linkedin/common/MultiPhotoUrn.pdsc + + export type MultiPhotoUrn = string; + // Generated from: com/linkedin/common/MultipleReactionsTopicUrn.pdsc + + export type MultipleReactionsTopicUrn = string; + // Generated from: com/linkedin/common/MultiProductUrn.pdsc + + export type MultiProductUrn = string; + // Generated from: com/linkedin/common/MultiProductVersion.pdsc + + export interface MultiProductVersion { + major: number; + minor: number; + patch: number; + } + // Generated from: com/linkedin/common/NebulaCounterGroupUrn.pdsc + + export type NebulaCounterGroupUrn = string; + // Generated from: com/linkedin/common/NetworkAclSecurityZonePolicyUrn.pdsc + + export type NetworkAclSecurityZonePolicyUrn = string; + // Generated from: com/linkedin/common/NetworkAddressGroupUrn.pdsc + + export type NetworkAddressGroupUrn = string; + // Generated from: com/linkedin/common/NetworkSwitchUrn.pdsc + + export type NetworkSwitchUrn = string; + // Generated from: com/linkedin/common/NetworkYouMayKnowType.pdsc + + export type NetworkYouMayKnowType = + | 'SAME_SCHOOL' + | 'SAME_COMPANY' + | 'SAME_SUPERTITLE_REGION' + | 'SAME_INDUSTRY_SECTOR_REGION' + | 'SAME_TITLE_REGION'; + // Generated from: com/linkedin/common/NetworkYouMayKnowUrn.pdsc + + export type NetworkYouMayKnowUrn = string; + // Generated from: com/linkedin/common/NewsfeedUrn.pdsc + + export type NewsfeedUrn = string; + // Generated from: com/linkedin/common/NewssourceUrn.pdsc + + export type NewssourceUrn = string; + // Generated from: com/linkedin/common/NewstopicUrn.pdsc + + export type NewstopicUrn = string; + // Generated from: com/linkedin/common/NimbusUrn.pdsc + + export type NimbusUrn = string; + // Generated from: com/linkedin/common/NormalizedQuestionMappingUrn.pdsc + + export type NormalizedQuestionMappingUrn = string; + // Generated from: com/linkedin/common/NormalizedQuestionUrn.pdsc + + export type NormalizedQuestionUrn = string; + // Generated from: com/linkedin/common/NotificationTypeUrn.pdsc + + export type NotificationTypeUrn = string; + // Generated from: com/linkedin/common/NotificationUrn.pdsc + + export type NotificationUrn = string; + // Generated from: com/linkedin/common/NotificationV2Urn.pdsc + + export type NotificationV2Urn = string; + // Generated from: com/linkedin/common/NuageAmbryClusterUrn.pdsc + + export type NuageAmbryClusterUrn = string; + // Generated from: com/linkedin/common/NuageAmbryInstanceUrn.pdsc + + export type NuageAmbryInstanceUrn = string; + // Generated from: com/linkedin/common/NuageApprovalWorkflowUrn.pdsc + + export type NuageApprovalWorkflowUrn = string; + // Generated from: com/linkedin/common/NuageAuditLogUrn.pdsc + + export type NuageAuditLogUrn = string; + // Generated from: com/linkedin/common/NuageCapacityActionUrn.pdsc + + export type NuageCapacityActionUrn = string; + // Generated from: com/linkedin/common/NuageCouchbaseBucketUrn.pdsc + + export type NuageCouchbaseBucketUrn = string; + // Generated from: com/linkedin/common/NuageCouchbaseClusterUrn.pdsc + + export type NuageCouchbaseClusterUrn = string; + // Generated from: com/linkedin/common/NuageDashboardTemplateUrn.pdsc + + export type NuageDashboardTemplateUrn = string; + // Generated from: com/linkedin/common/NuageDatastreamClusterUrn.pdsc + + export type NuageDatastreamClusterUrn = string; + // Generated from: com/linkedin/common/NuageDatastreamUrn.pdsc + + export type NuageDatastreamUrn = string; + // Generated from: com/linkedin/common/NuageEntitlementStoreUrn.pdsc + + export type NuageEntitlementStoreUrn = string; + // Generated from: com/linkedin/common/NuageEspressoClusterUrn.pdsc + + export type NuageEspressoClusterUrn = string; + // Generated from: com/linkedin/common/NuageEspressoDatabaseJobUrn.pdsc + + export type NuageEspressoDatabaseJobUrn = string; + // Generated from: com/linkedin/common/NuageEspressoDatabaseUrn.pdsc + + export type NuageEspressoDatabaseUrn = string; + // Generated from: com/linkedin/common/NuageFuseRuleUrn.pdsc + + export type NuageFuseRuleUrn = string; + // Generated from: com/linkedin/common/NuageGaapDomainWhitelistUrn.pdsc + + export type NuageGaapDomainWhitelistUrn = string; + // Generated from: com/linkedin/common/NuageGraphQLQueryUrn.pdsc + + export type NuageGraphQLQueryUrn = string; + // Generated from: com/linkedin/common/NuageHostedSearchTenantIndexUrn.pdsc + + export type NuageHostedSearchTenantIndexUrn = string; + // Generated from: com/linkedin/common/NuageIndexingRequestUrn.pdsc + + export type NuageIndexingRequestUrn = string; + // Generated from: com/linkedin/common/NuageJobUrn.pdsc + + export type NuageJobUrn = string; + // Generated from: com/linkedin/common/NuageKafkaClusterUrn.pdsc + + export type NuageKafkaClusterUrn = string; + // Generated from: com/linkedin/common/NuageKafkaTopicUrn.pdsc + + export type NuageKafkaTopicUrn = string; + // Generated from: com/linkedin/common/NuageKmsSecretUrn.pdsc + + export type NuageKmsSecretUrn = string; + // Generated from: com/linkedin/common/NuageMetaCentralEntryUrn.pdsc + + export type NuageMetaCentralEntryUrn = string; + // Generated from: com/linkedin/common/NuageMysqlClusterUrn.pdsc + + export type NuageMysqlClusterUrn = string; + // Generated from: com/linkedin/common/NuageMysqlServiceUrn.pdsc + + export type NuageMysqlServiceUrn = string; + // Generated from: com/linkedin/common/NuageOracleDatabaseUrn.pdsc + + export type NuageOracleDatabaseUrn = string; + // Generated from: com/linkedin/common/NuagePinotTableUrn.pdsc + + export type NuagePinotTableUrn = string; + // Generated from: com/linkedin/common/NuagePinotTenantUrn.pdsc + + export type NuagePinotTenantUrn = string; + // Generated from: com/linkedin/common/NuageQuotaUrn.pdsc + + export type NuageQuotaUrn = string; + // Generated from: com/linkedin/common/NuageResourceAclUrn.pdsc + + export type NuageResourceAclUrn = string; + // Generated from: com/linkedin/common/NuageResourceUrn.pdsc + + export type NuageResourceUrn = string; + // Generated from: com/linkedin/common/NuageSamzaJobUrn.pdsc + + export type NuageSamzaJobUrn = string; + // Generated from: com/linkedin/common/NuageSeasClusterUrn.pdsc + + export type NuageSeasClusterUrn = string; + // Generated from: com/linkedin/common/NuageSeasIndexingRequestUrn.pdsc + + export type NuageSeasIndexingRequestUrn = string; + // Generated from: com/linkedin/common/NuageSeasTenuringJobUrn.pdsc + + export type NuageSeasTenuringJobUrn = string; + // Generated from: com/linkedin/common/NuageSeasVerticalUrn.pdsc + + export type NuageSeasVerticalUrn = string; + // Generated from: com/linkedin/common/NuageVeniceClusterUrn.pdsc + + export type NuageVeniceClusterUrn = string; + // Generated from: com/linkedin/common/NuageVeniceStoreUrn.pdsc + + export type NuageVeniceStoreUrn = string; + // Generated from: com/linkedin/common/NuageWorkflowRuleUrn.pdsc + + export type NuageWorkflowRuleUrn = string; + // Generated from: com/linkedin/common/NuageZiplineStoreUrn.pdsc + + export type NuageZiplineStoreUrn = string; + // Generated from: com/linkedin/common/NullKey.pdsc + + export type NullKey = 'NONE'; + // Generated from: com/linkedin/common/NullValue.pdsc + + export interface NullValue {} + // Generated from: com/linkedin/common/OAuthCredentials.pdsc + + export interface OAuthCredentials { + clientKey: string; + clientSecret: string; + } + // Generated from: com/linkedin/common/OfflineOperatingUnitUrn.pdsc + + export type OfflineOperatingUnitUrn = string; + // Generated from: com/linkedin/common/OrderLineUrn.pdsc + + export type OrderLineUrn = string; + // Generated from: com/linkedin/common/OrderUrn.pdsc + + export type OrderUrn = string; + // Generated from: com/linkedin/common/OrganizationBrandUrn.pdsc + + export type OrganizationBrandUrn = string; + // Generated from: com/linkedin/common/OrganizationContentRevisionUrn.pdsc + + export type OrganizationContentRevisionUrn = string; + // Generated from: com/linkedin/common/OrganizationGeoUrn.pdsc + + export type OrganizationGeoUrn = string; + // Generated from: com/linkedin/common/OrganizationLandingPageUrn.pdsc + + export type OrganizationLandingPageUrn = string; + // Generated from: com/linkedin/common/OrganizationLocationSuggestionUrn.pdsc + + export type OrganizationLocationSuggestionUrn = string; + // Generated from: com/linkedin/common/OrganizationPhotoUrn.pdsc + + export type OrganizationPhotoUrn = string; + // Generated from: com/linkedin/common/OrganizationPostEngagementUrn.pdsc + + export type OrganizationPostEngagementUrn = string; + // Generated from: com/linkedin/common/OrganizationProductUrn.pdsc + + export type OrganizationProductUrn = string; + // Generated from: com/linkedin/common/OrganizationRankingListUrn.pdsc + + export type OrganizationRankingListUrn = string; + // Generated from: com/linkedin/common/OrganizationRatingQuestionUrn.pdsc + + export type OrganizationRatingQuestionUrn = string; + // Generated from: com/linkedin/common/OrganizationSubgroupUrn.pdsc + + export type OrganizationSubgroupUrn = string; + // Generated from: com/linkedin/common/OrganizationSuggestionUrn.pdsc + + export type OrganizationSuggestionUrn = string; + // Generated from: com/linkedin/common/OrganizationTargetedContentUrn.pdsc + + export type OrganizationTargetedContentUrn = string; + // Generated from: com/linkedin/common/OrganizationUrn.pdsc + + export type OrganizationUrn = string; + // Generated from: com/linkedin/common/OrgchartRelationshipUrn.pdsc + + export type OrgchartRelationshipUrn = string; + // Generated from: com/linkedin/common/OriginalContentCreatorUrn.pdsc + + export type OriginalContentCreatorUrn = string; + // Generated from: com/linkedin/common/OriginalContentUrn.pdsc + + export type OriginalContentUrn = string; + // Generated from: com/linkedin/common/OriginalContentVersionUrn.pdsc + + export type OriginalContentVersionUrn = string; + // Generated from: com/linkedin/common/OutgoingDatabaseConnectionUrn.pdsc + + export type OutgoingDatabaseConnectionUrn = string; + // Generated from: com/linkedin/common/OutreachCampaignUrn.pdsc + + export type OutreachCampaignUrn = string; + // Generated from: com/linkedin/common/OutreachMessageUrn.pdsc + + export type OutreachMessageUrn = string; + // Generated from: com/linkedin/common/Owner.pdsc + + export interface Owner { + owner: string; + type: OwnershipType; + source?: OwnershipSource; + } + // Generated from: com/linkedin/common/Ownership.pdsc + + export interface Ownership { + owners: Owner[]; + lastModified?: AuditStamp; + } + // Generated from: com/linkedin/common/OwnershipSource.pdsc + + export interface OwnershipSource { + type: + | 'AUDIT' + | 'DATABASE' + | 'FILE_SYSTEM' + | 'ISSUE_TRACKING_SYSTEM' + | 'MANUAL' + | 'SERVICE' + | 'SOURCE_CONTROL' + | 'OTHER'; + url?: string; + } + // Generated from: com/linkedin/common/OwnershipSuggestion.pdsc + + export interface OwnershipSuggestion { + owners: Owner[]; + } + // Generated from: com/linkedin/common/OwnershipType.pdsc + + export type OwnershipType = + | 'DEVELOPER' + | 'SUBJECT_MATTER_EXPERT' + | 'DELEGATE' + | 'PRODUCER' + | 'CONSUMER' + | 'STAKEHOLDER'; + // Generated from: com/linkedin/common/PageFeedbackCampaignUrn.pdsc + + export type PageFeedbackCampaignUrn = string; + // Generated from: com/linkedin/common/PageFeedbackOptionUrn.pdsc + + export type PageFeedbackOptionUrn = string; + // Generated from: com/linkedin/common/PageUrn.pdsc + + export type PageUrn = string; + // Generated from: com/linkedin/common/ParsedResumeProfileUrn.pdsc + + export type ParsedResumeProfileUrn = string; + // Generated from: com/linkedin/common/PartnerProgramTierUrn.pdsc + + export type PartnerProgramTierUrn = string; + // Generated from: com/linkedin/common/PartnerUrn.pdsc + + export type PartnerUrn = string; + // Generated from: com/linkedin/common/PatentUrn.pdsc + + export type PatentUrn = string; + // Generated from: com/linkedin/common/PaymentAccountUrn.pdsc + + export type PaymentAccountUrn = string; + // Generated from: com/linkedin/common/PaymentApplicationUrn.pdsc + + export type PaymentApplicationUrn = string; + // Generated from: com/linkedin/common/PaymentIntentRequestUrn.pdsc + + export type PaymentIntentRequestUrn = string; + // Generated from: com/linkedin/common/PaymentIntentUrn.pdsc + + export type PaymentIntentUrn = string; + // Generated from: com/linkedin/common/PaymentMethodUrn.pdsc + + export type PaymentMethodUrn = string; + // Generated from: com/linkedin/common/PaymentReceiptUrn.pdsc + + export type PaymentReceiptUrn = string; + // Generated from: com/linkedin/common/PaymentsCustomerUrn.pdsc + + export type PaymentsCustomerUrn = string; + // Generated from: com/linkedin/common/PermissionGroupUrn.pdsc + + export type PermissionGroupUrn = string; + // Generated from: com/linkedin/common/PersonalTopicUrn.pdsc + + export type PersonalTopicUrn = string; + // Generated from: com/linkedin/common/PersonUrn.pdsc + + export type PersonUrn = string; + // Generated from: com/linkedin/common/PhoneAccountUrn.pdsc + + export type PhoneAccountUrn = string; + // Generated from: com/linkedin/common/PhoneNumber.pdsc + + export interface PhoneNumber { + number: string; + extension?: string; + } + // Generated from: com/linkedin/common/PhoneNumberType.pdsc + + export type PhoneNumberType = 'FAX' | 'HOME' | 'MOBILE' | 'WORK'; + // Generated from: com/linkedin/common/PhoneNumberUrn.pdsc + + export type PhoneNumberUrn = string; + // Generated from: com/linkedin/common/PhoneNumberV2Urn.pdsc + + export type PhoneNumberV2Urn = string; + // Generated from: com/linkedin/common/PicassoAlertEventUrn.pdsc + + export type PicassoAlertEventUrn = string; + // Generated from: com/linkedin/common/PicassoAlertUrn.pdsc + + export type PicassoAlertUrn = string; + // Generated from: com/linkedin/common/PintUrn.pdsc + + export type PintUrn = string; + // Generated from: com/linkedin/common/PlaceUrn.pdsc + + export type PlaceUrn = string; + // Generated from: com/linkedin/common/PneumaProcessDefinitionUrn.pdsc + + export type PneumaProcessDefinitionUrn = string; + // Generated from: com/linkedin/common/PneumaProcessUrn.pdsc + + export type PneumaProcessUrn = string; + // Generated from: com/linkedin/common/PneumaTaskMetaTypeUrn.pdsc + + export type PneumaTaskMetaTypeUrn = string; + // Generated from: com/linkedin/common/PneumaTaskTypeUrn.pdsc + + export type PneumaTaskTypeUrn = string; + // Generated from: com/linkedin/common/PneumaTaskUrn.pdsc + + export type PneumaTaskUrn = string; + // Generated from: com/linkedin/common/PneumaUseCaseUrn.pdsc + + export type PneumaUseCaseUrn = string; + // Generated from: com/linkedin/common/PointDriveAnalyticUrn.pdsc + + export type PointDriveAnalyticUrn = string; + // Generated from: com/linkedin/common/PointDriveViewerBuilderUrn.pdsc + + export type PointDriveViewerBuilderUrn = string; + // Generated from: com/linkedin/common/PollOptionUrn.pdsc + + export type PollOptionUrn = string; + // Generated from: com/linkedin/common/PollUrn.pdsc + + export type PollUrn = string; + // Generated from: com/linkedin/common/PositionChangeUrn.pdsc + + export type PositionChangeUrn = string; + // Generated from: com/linkedin/common/PositionClientUrn.pdsc + + export type PositionClientUrn = string; + // Generated from: com/linkedin/common/PositionSeniorityGroupUrn.pdsc + + export type PositionSeniorityGroupUrn = string; + // Generated from: com/linkedin/common/PositionSeniorityLevelUrn.pdsc + + export type PositionSeniorityLevelUrn = string; + // Generated from: com/linkedin/common/PositionUrn.pdsc + + export type PositionUrn = string; + // Generated from: com/linkedin/common/PostalCode.pdsc + + export type PostalCode = string; + // Generated from: com/linkedin/common/PremiumInsightUrn.pdsc + + export type PremiumInsightUrn = string; + // Generated from: com/linkedin/common/PremiumProductBundleItemUrn.pdsc + + export type PremiumProductBundleItemUrn = string; + // Generated from: com/linkedin/common/PremiumProductCodeUrn.pdsc + + export type PremiumProductCodeUrn = string; + // Generated from: com/linkedin/common/PremiumProductPromotionDataUrn.pdsc + + export type PremiumProductPromotionDataUrn = string; + // Generated from: com/linkedin/common/PremiumProductPromotionUrn.pdsc + + export type PremiumProductPromotionUrn = string; + // Generated from: com/linkedin/common/PremiumProductUrn.pdsc + + export type PremiumProductUrn = string; + // Generated from: com/linkedin/common/PremiumServiceEventUrn.pdsc + + export type PremiumServiceEventUrn = string; + // Generated from: com/linkedin/common/PremiumServiceUrn.pdsc + + export type PremiumServiceUrn = string; + // Generated from: com/linkedin/common/PresenceStatusTopicUrn.pdsc + + export type PresenceStatusTopicUrn = string; + // Generated from: com/linkedin/common/PresentationTemplateUrn.pdsc + + export type PresentationTemplateUrn = string; + // Generated from: com/linkedin/common/PresetCandidateSourceUrn.pdsc + + export type PresetCandidateSourceUrn = string; + // Generated from: com/linkedin/common/PriceUrn.pdsc + + export type PriceUrn = string; + // Generated from: com/linkedin/common/PrivacyCompliancePolicyUrn.pdsc + + export type PrivacyCompliancePolicyUrn = string; + // Generated from: com/linkedin/common/ProductMasterChangeRequestUrn.pdsc + + export type ProductMasterChangeRequestUrn = string; + // Generated from: com/linkedin/common/ProductMasterChangeUrn.pdsc + + export type ProductMasterChangeUrn = string; + // Generated from: com/linkedin/common/ProductMasterNPIRequestUrn.pdsc + + export type ProductMasterNPIRequestUrn = string; + // Generated from: com/linkedin/common/ProductProvisioningItemUrn.pdsc + + export type ProductProvisioningItemUrn = string; + // Generated from: com/linkedin/common/ProductProvisioningUrn.pdsc + + export type ProductProvisioningUrn = string; + // Generated from: com/linkedin/common/ProductScheduleAmendmentUrn.pdsc + + export type ProductScheduleAmendmentUrn = string; + // Generated from: com/linkedin/common/ProductScheduleHeaderUrn.pdsc + + export type ProductScheduleHeaderUrn = string; + // Generated from: com/linkedin/common/ProductScheduleUrn.pdsc + + export type ProductScheduleUrn = string; + // Generated from: com/linkedin/common/ProductUrn.pdsc + + export type ProductUrn = string; + // Generated from: com/linkedin/common/ProfileEditUrn.pdsc + + export type ProfileEditUrn = string; + // Generated from: com/linkedin/common/ProfileExperienceSnippetUrn.pdsc + + export type ProfileExperienceSnippetUrn = string; + // Generated from: com/linkedin/common/ProfilePictureUrn.pdsc + + export type ProfilePictureUrn = string; + // Generated from: com/linkedin/common/ProfileSkillUrn.pdsc + + export type ProfileSkillUrn = string; + // Generated from: com/linkedin/common/ProfilesTopicUrn.pdsc + + export type ProfilesTopicUrn = string; + // Generated from: com/linkedin/common/ProfileSummaryUrn.pdsc + + export type ProfileSummaryUrn = string; + // Generated from: com/linkedin/common/ProfinderConsumerUrn.pdsc + + export type ProfinderConsumerUrn = string; + // Generated from: com/linkedin/common/ProfinderServiceProviderUrn.pdsc + + export type ProfinderServiceProviderUrn = string; + // Generated from: com/linkedin/common/ProjectUrn.pdsc + + export type ProjectUrn = string; + // Generated from: com/linkedin/common/PromotionUrn.pdsc + + export type PromotionUrn = string; + // Generated from: com/linkedin/common/PropUrn.pdsc + + export type PropUrn = string; + // Generated from: com/linkedin/common/ProspectCommHistoryUrn.pdsc + + export type ProspectCommHistoryUrn = string; + // Generated from: com/linkedin/common/ProspectNoteUrn.pdsc + + export type ProspectNoteUrn = string; + // Generated from: com/linkedin/common/ProspectUrn.pdsc + + export type ProspectUrn = string; + // Generated from: com/linkedin/common/ProtectedMessagingBodyUrn.pdsc + + export type ProtectedMessagingBodyUrn = string; + // Generated from: com/linkedin/common/ProtectedMessagingConversationUrn.pdsc + + export type ProtectedMessagingConversationUrn = string; + // Generated from: com/linkedin/common/ProtectedMessagingParticipantUrn.pdsc + + export type ProtectedMessagingParticipantUrn = string; + // Generated from: com/linkedin/common/ProtectedMessagingStatusUrn.pdsc + + export type ProtectedMessagingStatusUrn = string; + // Generated from: com/linkedin/common/ProvisionRequestItemUrn.pdsc + + export type ProvisionRequestItemUrn = string; + // Generated from: com/linkedin/common/ProvisionRequestUrn.pdsc + + export type ProvisionRequestUrn = string; + // Generated from: com/linkedin/common/PublicationUrn.pdsc + + export type PublicationUrn = string; + // Generated from: com/linkedin/common/PurchasedItemUrn.pdsc + + export type PurchasedItemUrn = string; + // Generated from: com/linkedin/common/PurgeDomainUrn.pdsc + + export type PurgeDomainUrn = string; + // Generated from: com/linkedin/common/PymkUrn.pdsc + + export type PymkUrn = string; + // Generated from: com/linkedin/common/QuestionTagUrn.pdsc + + export type QuestionTagUrn = string; + // Generated from: com/linkedin/common/QuestionUrn.pdsc + + export type QuestionUrn = string; + // Generated from: com/linkedin/common/QuickReplyUrn.pdsc + + export type QuickReplyUrn = string; + // Generated from: com/linkedin/common/QuoteLineUrn.pdsc + + export type QuoteLineUrn = string; + // Generated from: com/linkedin/common/QuotingBatchProcessUrn.pdsc + + export type QuotingBatchProcessUrn = string; + // Generated from: com/linkedin/common/RainInstanceModelDeploymentAddressUrn.pdsc + + export type RainInstanceModelDeploymentAddressUrn = string; + // Generated from: com/linkedin/common/RaptorUrn.pdsc + + export type RaptorUrn = string; + // Generated from: com/linkedin/common/RawIngestedArticleMetadataUrn.pdsc + + export type RawIngestedArticleMetadataUrn = string; + // Generated from: com/linkedin/common/RawIngestedContentMetadataUrn.pdsc + + export type RawIngestedContentMetadataUrn = string; + // Generated from: com/linkedin/common/RawIngestedRichMediaMetadataUrn.pdsc + + export type RawIngestedRichMediaMetadataUrn = string; + // Generated from: com/linkedin/common/RawJobUrn.pdsc + + export type RawJobUrn = string; + // Generated from: com/linkedin/common/RawProfileElementUrn.pdsc + + export type RawProfileElementUrn = string; + // Generated from: com/linkedin/common/ReactionsOnCommentsTopicUrn.pdsc + + export type ReactionsOnCommentsTopicUrn = string; + // Generated from: com/linkedin/common/ReactionsTopicUrn.pdsc + + export type ReactionsTopicUrn = string; + // Generated from: com/linkedin/common/ReactionUrn.pdsc + + export type ReactionUrn = string; + // Generated from: com/linkedin/common/RecommendationMessageUrn.pdsc + + export type RecommendationMessageUrn = string; + // Generated from: com/linkedin/common/RecommendationRequestMessageUrn.pdsc + + export type RecommendationRequestMessageUrn = string; + // Generated from: com/linkedin/common/RecommendationRequestUrn.pdsc + + export type RecommendationRequestUrn = string; + // Generated from: com/linkedin/common/RecommendationUrn.pdsc + + export type RecommendationUrn = string; + // Generated from: com/linkedin/common/RecruiterUrn.pdsc + + export type RecruiterUrn = string; + // Generated from: com/linkedin/common/RecruitingTeamUrn.pdsc + + export type RecruitingTeamUrn = string; + // Generated from: com/linkedin/common/Rectangle.pdsc + + export interface Rectangle { + x: number; + y: number; + width: number; + height: number; + } + // Generated from: com/linkedin/common/RedPacketUrn.pdsc + + export type RedPacketUrn = string; + // Generated from: com/linkedin/common/ReferenceRequestUrn.pdsc + + export type ReferenceRequestUrn = string; + // Generated from: com/linkedin/common/ReferenceUrn.pdsc + + export type ReferenceUrn = string; + // Generated from: com/linkedin/common/ReferralApplicationUrn.pdsc + + export type ReferralApplicationUrn = string; + // Generated from: com/linkedin/common/ReferralCandidateFeedbackUrn.pdsc + + export type ReferralCandidateFeedbackUrn = string; + // Generated from: com/linkedin/common/ReferralCandidateUrn.pdsc + + export type ReferralCandidateUrn = string; + // Generated from: com/linkedin/common/ReferralInvitationUrn.pdsc + + export type ReferralInvitationUrn = string; + // Generated from: com/linkedin/common/ReferralJobUrn.pdsc + + export type ReferralJobUrn = string; + // Generated from: com/linkedin/common/ReferralRewardRuleUrn.pdsc + + export type ReferralRewardRuleUrn = string; + // Generated from: com/linkedin/common/ReferralsCompanyDepartmentUrn.pdsc + + export type ReferralsCompanyDepartmentUrn = string; + // Generated from: com/linkedin/common/ReferralsCompanyEmployeeUrn.pdsc + + export type ReferralsCompanyEmployeeUrn = string; + // Generated from: com/linkedin/common/ReferralsCompanyIntegrationUrn.pdsc + + export type ReferralsCompanyIntegrationUrn = string; + // Generated from: com/linkedin/common/RegexGroupUrn.pdsc + + export type RegexGroupUrn = string; + // Generated from: com/linkedin/common/RegexUrn.pdsc + + export type RegexUrn = string; + // Generated from: com/linkedin/common/RegionUrn.pdsc + + export type RegionUrn = string; + // Generated from: com/linkedin/common/RegisteredQueryUrn.pdsc + + export type RegisteredQueryUrn = string; + // Generated from: com/linkedin/common/RegisteredSchemaType.pdsc + + export type RegisteredSchemaType = + | 'KAFKA' + | 'ESPRESSO_DOCUMENT' + | 'ESPRESSO_KEY' + | 'DATA_DERIVED' + | 'PEGASUS' + | 'GRAPHQL' + | 'HDFS'; + // Generated from: com/linkedin/common/RegisteredSchemaUrn.pdsc + + export type RegisteredSchemaUrn = string; + // Generated from: com/linkedin/common/RelationshipOpportunityUrn.pdsc + + export type RelationshipOpportunityUrn = string; + // Generated from: com/linkedin/common/RememberMeDeviceUrn.pdsc + + export type RememberMeDeviceUrn = string; + // Generated from: com/linkedin/common/RepHandoffPoolUrn.pdsc + + export type RepHandoffPoolUrn = string; + // Generated from: com/linkedin/common/ReplySuggestionTopicUrn.pdsc + + export type ReplySuggestionTopicUrn = string; + // Generated from: com/linkedin/common/ReplySuggestionTopicV2Urn.pdsc + + export type ReplySuggestionTopicV2Urn = string; + // Generated from: com/linkedin/common/Repository.pdsc + + export type Repository = string; + // Generated from: com/linkedin/common/RequestForProposalsUrn.pdsc + + export type RequestForProposalsUrn = string; + // Generated from: com/linkedin/common/RequestForProposalsV2Urn.pdsc + + export type RequestForProposalsV2Urn = string; + // Generated from: com/linkedin/common/ResolvedEntityUrn.pdsc + + export type ResolvedEntityUrn = string; + // Generated from: com/linkedin/common/ResolvedOwner.pdsc + + export interface ResolvedOwner extends Owner { + name?: string; + email?: string; + active?: boolean; + } + // Generated from: com/linkedin/common/ResolvedOwnership.pdsc + + export interface ResolvedOwnership { + entity: string; + lastModified: AuditStamp; + owners: ResolvedOwner[]; + } + // Generated from: com/linkedin/common/ResourceCallConfigurationSetUrn.pdsc + + export type ResourceCallConfigurationSetUrn = string; + // Generated from: com/linkedin/common/ResourceCallConfigurationUrn.pdsc + + export type ResourceCallConfigurationUrn = string; + // Generated from: com/linkedin/common/RestLiResourceFabricInstanceUrn.pdsc + + export type RestLiResourceFabricInstanceUrn = string; + // Generated from: com/linkedin/common/RestliResourceMethod.pdsc + + export type RestliResourceMethod = + | 'GET' + | 'BATCH_GET' + | 'FINDER' + | 'BATCH_FINDER' + | 'CREATE' + | 'BATCH_CREATE' + | 'PARTIAL_UPDATE' + | 'UPDATE' + | 'BATCH_UPDATE' + | 'DELETE' + | 'ACTION' + | 'BATCH_PARTIAL_UPDATE' + | 'BATCH_DELETE' + | 'GET_ALL' + | 'OPTIONS'; + // Generated from: com/linkedin/common/RestLiResourceUrn.pdsc + + export type RestLiResourceUrn = string; + // Generated from: com/linkedin/common/ResumeAnnotationGroupUrn.pdsc + + export type ResumeAnnotationGroupUrn = string; + // Generated from: com/linkedin/common/ResumeDataUrn.pdsc + + export type ResumeDataUrn = string; + // Generated from: com/linkedin/common/ResumeOptimizationInsightUrn.pdsc + + export type ResumeOptimizationInsightUrn = string; + // Generated from: com/linkedin/common/RetentionPolicyUrn.pdsc + + export type RetentionPolicyUrn = string; + // Generated from: com/linkedin/common/ReviewItemUrn.pdsc + + export type ReviewItemUrn = string; + // Generated from: com/linkedin/common/ReviewQueueSkillUrn.pdsc + + export type ReviewQueueSkillUrn = string; + // Generated from: com/linkedin/common/ReviewQueueTaskTypeUrn.pdsc + + export type ReviewQueueTaskTypeUrn = string; + // Generated from: com/linkedin/common/ReviewRequestUrn.pdsc + + export type ReviewRequestUrn = string; + // Generated from: com/linkedin/common/ReviewUrn.pdsc + + export type ReviewUrn = string; + // Generated from: com/linkedin/common/ReviewV2Urn.pdsc + + export type ReviewV2Urn = string; + // Generated from: com/linkedin/common/RichMediaSummaryUrn.pdsc + + export type RichMediaSummaryUrn = string; + // Generated from: com/linkedin/common/RichMediaUrn.pdsc + + export type RichMediaUrn = string; + // Generated from: com/linkedin/common/RichText.pdsc + + export interface RichText { + rawText?: string; + rtData?: RTData[]; + } + // Generated from: com/linkedin/common/RootDomainUrn.pdsc + + export type RootDomainUrn = string; + // Generated from: com/linkedin/common/RouteIdentityUrn.pdsc + + export type RouteIdentityUrn = string; + // Generated from: com/linkedin/common/RTAttribute.pdsc + + export interface RTAttribute { + name: string; + value: string; + } + // Generated from: com/linkedin/common/RTData.pdsc + + export interface RTData { + type: string; + startIdx: number; + endIdx: number; + attribute?: RTAttribute[]; + } + // Generated from: com/linkedin/common/RuleActionCandidateUrn.pdsc + + export type RuleActionCandidateUrn = string; + // Generated from: com/linkedin/common/SalaryInsightKeyMappingUrn.pdsc + + export type SalaryInsightKeyMappingUrn = string; + // Generated from: com/linkedin/common/SalesAccountUrn.pdsc + + export type SalesAccountUrn = string; + // Generated from: com/linkedin/common/SalesAssetBundleAssetUrn.pdsc + + export type SalesAssetBundleAssetUrn = string; + // Generated from: com/linkedin/common/SalesAssetBundleTrackingConsentUrn.pdsc + + export type SalesAssetBundleTrackingConsentUrn = string; + // Generated from: com/linkedin/common/SalesAssetBundleUrn.pdsc + + export type SalesAssetBundleUrn = string; + // Generated from: com/linkedin/common/SalesAssetBundleViewingSessionUrn.pdsc + + export type SalesAssetBundleViewingSessionUrn = string; + // Generated from: com/linkedin/common/SalesBookingPayableAdjustmentRequestUrn.pdsc + + export type SalesBookingPayableAdjustmentRequestUrn = string; + // Generated from: com/linkedin/common/SalesFiscalTermUrn.pdsc + + export type SalesFiscalTermUrn = string; + // Generated from: com/linkedin/common/SalesforceAccountUrn.pdsc + + export type SalesforceAccountUrn = string; + // Generated from: com/linkedin/common/SalesforceContractLineItemUrn.pdsc + + export type SalesforceContractLineItemUrn = string; + // Generated from: com/linkedin/common/SalesforceLeadUrn.pdsc + + export type SalesforceLeadUrn = string; + // Generated from: com/linkedin/common/SalesforceOpportunityLineItemUrn.pdsc + + export type SalesforceOpportunityLineItemUrn = string; + // Generated from: com/linkedin/common/SalesforceOpportunityUrn.pdsc + + export type SalesforceOpportunityUrn = string; + // Generated from: com/linkedin/common/SalesforceProductCodeUrn.pdsc + + export type SalesforceProductCodeUrn = string; + // Generated from: com/linkedin/common/SalesforceUserUrn.pdsc + + export type SalesforceUserUrn = string; + // Generated from: com/linkedin/common/SalesIdentityUrn.pdsc + + export type SalesIdentityUrn = string; + // Generated from: com/linkedin/common/SalesInsightsAsyncMetricsExportTaskUrn.pdsc + + export type SalesInsightsAsyncMetricsExportTaskUrn = string; + // Generated from: com/linkedin/common/SalesInsightsAutoCrmExportSummaryUrn.pdsc + + export type SalesInsightsAutoCrmExportSummaryUrn = string; + // Generated from: com/linkedin/common/SalesInsightsExportLedgerUrn.pdsc + + export type SalesInsightsExportLedgerUrn = string; + // Generated from: com/linkedin/common/SalesInsightsFilterSetUrn.pdsc + + export type SalesInsightsFilterSetUrn = string; + // Generated from: com/linkedin/common/SalesInsightsMetricsExportTaskUrn.pdsc + + export type SalesInsightsMetricsExportTaskUrn = string; + // Generated from: com/linkedin/common/SalesInsightsMetricsReportUrn.pdsc + + export type SalesInsightsMetricsReportUrn = string; + // Generated from: com/linkedin/common/SalesLeadUrn.pdsc + + export type SalesLeadUrn = string; + // Generated from: com/linkedin/common/SalesListUrn.pdsc + + export type SalesListUrn = string; + // Generated from: com/linkedin/common/SalesNoteUrn.pdsc + + export type SalesNoteUrn = string; + // Generated from: com/linkedin/common/SalesPositionUrn.pdsc + + export type SalesPositionUrn = string; + // Generated from: com/linkedin/common/SalesPotentialBuyerNotificationUrn.pdsc + + export type SalesPotentialBuyerNotificationUrn = string; + // Generated from: com/linkedin/common/SalesProposalUrn.pdsc + + export type SalesProposalUrn = string; + // Generated from: com/linkedin/common/SalesQuoteUrn.pdsc + + export type SalesQuoteUrn = string; + // Generated from: com/linkedin/common/SalesSharedSearchUrn.pdsc + + export type SalesSharedSearchUrn = string; + // Generated from: com/linkedin/common/SalesSignalUrn.pdsc + + export type SalesSignalUrn = string; + // Generated from: com/linkedin/common/SalesSolutionsUrn.pdsc + + export type SalesSolutionsUrn = string; + // Generated from: com/linkedin/common/SalesSubscriberUrn.pdsc + + export type SalesSubscriberUrn = string; + // Generated from: com/linkedin/common/SalesTeamMembershipUrn.pdsc + + export type SalesTeamMembershipUrn = string; + // Generated from: com/linkedin/common/SalesTeamUrn.pdsc + + export type SalesTeamUrn = string; + // Generated from: com/linkedin/common/SalesUrn.pdsc + + export type SalesUrn = string; + // Generated from: com/linkedin/common/SamzaInstanceModelDeploymentAddressUrn.pdsc + + export type SamzaInstanceModelDeploymentAddressUrn = string; + // Generated from: com/linkedin/common/SamzaJobInstanceUrn.pdsc + + export type SamzaJobInstanceUrn = string; + // Generated from: com/linkedin/common/SavedSearchAlertUrn.pdsc + + export type SavedSearchAlertUrn = string; + // Generated from: com/linkedin/common/SavedSearchClientDomainUrn.pdsc + + export type SavedSearchClientDomainUrn = string; + // Generated from: com/linkedin/common/SavedSearchUrn.pdsc + + export type SavedSearchUrn = string; + // Generated from: com/linkedin/common/ScalingPlanUrn.pdsc + + export type ScalingPlanUrn = string; + // Generated from: com/linkedin/common/ScheduleAssignmentSuggestionUrn.pdsc + + export type ScheduleAssignmentSuggestionUrn = string; + // Generated from: com/linkedin/common/SchemaMetadataUrn.pdsc + + export type SchemaMetadataUrn = string; + // Generated from: com/linkedin/common/SchoolAttributedEntity.pdsc + + export interface SchoolAttributedEntity { + school: string; + } + // Generated from: com/linkedin/common/SchoolProgramUrn.pdsc + + export type SchoolProgramUrn = string; + // Generated from: com/linkedin/common/SchoolUrn.pdsc + + export type SchoolUrn = string; + // Generated from: com/linkedin/common/ScoredEntity.pdsc + + export interface ScoredEntity { + entity: string; + score: number; + recommendationTrackingId?: TrackingId; + } + // Generated from: com/linkedin/common/SeatAttributedEntity.pdsc + + export interface SeatAttributedEntity { + seat: string; + } + // Generated from: com/linkedin/common/SeatTransferRequestUrn.pdsc + + export type SeatTransferRequestUrn = string; + // Generated from: com/linkedin/common/SeatUrn.pdsc + + export type SeatUrn = string; + // Generated from: com/linkedin/common/SecurityDomainUrn.pdsc + + export type SecurityDomainUrn = string; + // Generated from: com/linkedin/common/SecurityMetadataUrn.pdsc + + export type SecurityMetadataUrn = string; + // Generated from: com/linkedin/common/SecurityZoneUrn.pdsc + + export type SecurityZoneUrn = string; + // Generated from: com/linkedin/common/SelfHealingAnomalyUrn.pdsc + + export type SelfHealingAnomalyUrn = string; + // Generated from: com/linkedin/common/SelfHealingEntityUrn.pdsc + + export type SelfHealingEntityUrn = string; + // Generated from: com/linkedin/common/SelfHealingKafkaStepUrn.pdsc + + export type SelfHealingKafkaStepUrn = string; + // Generated from: com/linkedin/common/SelfHealingRemedyUrn.pdsc + + export type SelfHealingRemedyUrn = string; + // Generated from: com/linkedin/common/SelfHealingRepairUrn.pdsc + + export type SelfHealingRepairUrn = string; + // Generated from: com/linkedin/common/SelfHealingRestliStepUrn.pdsc + + export type SelfHealingRestliStepUrn = string; + // Generated from: com/linkedin/common/SelfHealingWorkflowUrn.pdsc + + export type SelfHealingWorkflowUrn = string; + // Generated from: com/linkedin/common/SellingEntity.pdsc + + export type SellingEntity = 'US' | 'IE' | 'SWLI' | 'NORW' | 'CN' | 'SG'; + // Generated from: com/linkedin/common/SeniorityUrn.pdsc + + export type SeniorityUrn = string; + // Generated from: com/linkedin/common/SensorUrn.pdsc + + export type SensorUrn = string; + // Generated from: com/linkedin/common/ServiceAreaUrn.pdsc + + export type ServiceAreaUrn = string; + // Generated from: com/linkedin/common/ServiceCategoryUrn.pdsc + + export type ServiceCategoryUrn = string; + // Generated from: com/linkedin/common/ServiceDetailUrn.pdsc + + export type ServiceDetailUrn = string; + // Generated from: com/linkedin/common/ServiceProposalUrn.pdsc + + export type ServiceProposalUrn = string; + // Generated from: com/linkedin/common/SettingCategoryUrn.pdsc + + export type SettingCategoryUrn = string; + // Generated from: com/linkedin/common/SettingCategoryVersionUrn.pdsc + + export type SettingCategoryVersionUrn = string; + // Generated from: com/linkedin/common/SettingsHistoryUrn.pdsc + + export type SettingsHistoryUrn = string; + // Generated from: com/linkedin/common/SettingsMetadataHistoryUrn.pdsc + + export type SettingsMetadataHistoryUrn = string; + // Generated from: com/linkedin/common/SettingTypeUrn.pdsc + + export type SettingTypeUrn = string; + // Generated from: com/linkedin/common/SettingTypeVersionUrn.pdsc + + export type SettingTypeVersionUrn = string; + // Generated from: com/linkedin/common/SHA256.pdsc + + export type SHA256 = string; + // Generated from: com/linkedin/common/ShareUrn.pdsc + + export type ShareUrn = string; + // Generated from: com/linkedin/common/ShepherdConditionUrn.pdsc + + export type ShepherdConditionUrn = string; + // Generated from: com/linkedin/common/ShepherdProjectUrn.pdsc + + export type ShepherdProjectUrn = string; + // Generated from: com/linkedin/common/ShepherdViolationUrn.pdsc + + export type ShepherdViolationUrn = string; + // Generated from: com/linkedin/common/ShiftScheduleType.pdsc + + export type ShiftScheduleType = 'MORNING' | 'AFTERNOON' | 'EVENING' | 'NIGHT' | 'WEEKEND' | 'HOLIDAY'; + // Generated from: com/linkedin/common/ShortlinkUrn.pdsc + + export type ShortlinkUrn = string; + // Generated from: com/linkedin/common/ShowcaseUrn.pdsc + + export type ShowcaseUrn = string; + // Generated from: com/linkedin/common/SimpleJobPostingTaskUrn.pdsc + + export type SimpleJobPostingTaskUrn = string; + // Generated from: com/linkedin/common/SimpleSettingUrn.pdsc + + export type SimpleSettingUrn = string; + // Generated from: com/linkedin/common/SkillClusterUrn.pdsc + + export type SkillClusterUrn = string; + // Generated from: com/linkedin/common/SkillTypeUrn.pdsc + + export type SkillTypeUrn = string; + // Generated from: com/linkedin/common/SkillUrn.pdsc + + export type SkillUrn = string; + // Generated from: com/linkedin/common/SlideShareClipboardUrn.pdsc + + export type SlideShareClipboardUrn = string; + // Generated from: com/linkedin/common/SlideShareClipUrn.pdsc + + export type SlideShareClipUrn = string; + // Generated from: com/linkedin/common/SlideShareGuestUrn.pdsc + + export type SlideShareGuestUrn = string; + // Generated from: com/linkedin/common/SlideShareImageUrn.pdsc + + export type SlideShareImageUrn = string; + // Generated from: com/linkedin/common/SlideShareKnowledgeHubUrn.pdsc + + export type SlideShareKnowledgeHubUrn = string; + // Generated from: com/linkedin/common/SlideShareSlideshowUrn.pdsc + + export type SlideShareSlideshowUrn = string; + // Generated from: com/linkedin/common/SlideShareUserUrn.pdsc + + export type SlideShareUserUrn = string; + // Generated from: com/linkedin/common/SmartNoteUrn.pdsc + + export type SmartNoteUrn = string; + // Generated from: com/linkedin/common/SocialAction.pdsc + + export type SocialAction = + | 'LIKE' + | 'COMMENT' + | 'UNLIKE' + | 'SHARE' + | 'FOLLOW' + | 'UNFOLLOW' + | 'EDIT' + | 'DELETE' + | 'CONGRATULATE' + | 'THANK' + | 'CLOSE' + | 'VOTE' + | 'CONNECT' + | 'MESSAGE' + | 'RECOMMEND'; + // Generated from: com/linkedin/common/SocialGamePositionUrn.pdsc + + export type SocialGamePositionUrn = string; + // Generated from: com/linkedin/common/SocialGameSkillUrn.pdsc + + export type SocialGameSkillUrn = string; + // Generated from: com/linkedin/common/SocialProofUrn.pdsc + + export type SocialProofUrn = string; + // Generated from: com/linkedin/common/SortOrder.pdsc + + export type SortOrder = 'ASCENDING' | 'DESCENDING'; + // Generated from: com/linkedin/common/SourceContactUploadTaskUrn.pdsc + + export type SourceContactUploadTaskUrn = string; + // Generated from: com/linkedin/common/SourceContactUrn.pdsc + + export type SourceContactUrn = string; + // Generated from: com/linkedin/common/SourcingChannelUrn.pdsc + + export type SourcingChannelUrn = string; + // Generated from: com/linkedin/common/SpeakeasyForumUrn.pdsc + + export type SpeakeasyForumUrn = string; + // Generated from: com/linkedin/common/SpeakeasyMentionUrn.pdsc + + export type SpeakeasyMentionUrn = string; + // Generated from: com/linkedin/common/SpeakeasyPostUrn.pdsc + + export type SpeakeasyPostUrn = string; + // Generated from: com/linkedin/common/SpecialEditionUrn.pdsc + + export type SpecialEditionUrn = string; + // Generated from: com/linkedin/common/SponsoredAccountUrn.pdsc + + export type SponsoredAccountUrn = string; + // Generated from: com/linkedin/common/SponsoredCampaignGroupUrn.pdsc + + export type SponsoredCampaignGroupUrn = string; + // Generated from: com/linkedin/common/SponsoredCampaignInsightUrn.pdsc + + export type SponsoredCampaignInsightUrn = string; + // Generated from: com/linkedin/common/SponsoredCampaignRecommendationUrn.pdsc + + export type SponsoredCampaignRecommendationUrn = string; + // Generated from: com/linkedin/common/SponsoredCampaignSliceUrn.pdsc + + export type SponsoredCampaignSliceUrn = string; + // Generated from: com/linkedin/common/SponsoredCampaignUrn.pdsc + + export type SponsoredCampaignUrn = string; + // Generated from: com/linkedin/common/SponsoredContentPreviewUrn.pdsc + + export type SponsoredContentPreviewUrn = string; + // Generated from: com/linkedin/common/SponsoredContentV2Urn.pdsc + + export type SponsoredContentV2Urn = string; + // Generated from: com/linkedin/common/SponsoredConversationTemplateUrn.pdsc + + export type SponsoredConversationTemplateUrn = string; + // Generated from: com/linkedin/common/SponsoredConversationUrn.pdsc + + export type SponsoredConversationUrn = string; + // Generated from: com/linkedin/common/SponsoredCreativeUrn.pdsc + + export type SponsoredCreativeUrn = string; + // Generated from: com/linkedin/common/SponsoredCreativeVersionUrn.pdsc + + export type SponsoredCreativeVersionUrn = string; + // Generated from: com/linkedin/common/SponsoredInmailCampaignRecipientUrn.pdsc + + export type SponsoredInmailCampaignRecipientUrn = string; + // Generated from: com/linkedin/common/SponsoredInmailCampaignUrn.pdsc + + export type SponsoredInmailCampaignUrn = string; + // Generated from: com/linkedin/common/SponsoredJobRulesUrn.pdsc + + export type SponsoredJobRulesUrn = string; + // Generated from: com/linkedin/common/SponsoredMessageContentUrn.pdsc + + export type SponsoredMessageContentUrn = string; + // Generated from: com/linkedin/common/StaffCountRange.pdsc + + export type StaffCountRange = + | 'SIZE_1' + | 'SIZE_2_TO_10' + | 'SIZE_11_TO_50' + | 'SIZE_51_TO_200' + | 'SIZE_201_TO_500' + | 'SIZE_501_TO_1000' + | 'SIZE_1001_TO_5000' + | 'SIZE_5001_TO_10000' + | 'SIZE_10001_OR_MORE'; + // Generated from: com/linkedin/common/StaffCountRangeUrn.pdsc + + export type StaffCountRangeUrn = string; + // Generated from: com/linkedin/common/StandardizedActivityUrn.pdsc + + export type StandardizedActivityUrn = string; + // Generated from: com/linkedin/common/StandardizedArtifactUrn.pdsc + + export type StandardizedArtifactUrn = string; + // Generated from: com/linkedin/common/StandardizedAtsJobUrn.pdsc + + export type StandardizedAtsJobUrn = string; + // Generated from: com/linkedin/common/StandardizedLocation.pdsc + + export interface StandardizedLocation { + postalCode: string; + regionCode: number; + country: Country; + latLong?: LatLong; + gmtOffset?: number; + usesDaylightSavings?: boolean; + placeCodes?: string[]; + stateCode?: StateCode; + } + // Generated from: com/linkedin/common/StandardizedLocationKeyUrn.pdsc + + export type StandardizedLocationKeyUrn = string; + // Generated from: com/linkedin/common/StandardizedProductCategoryUrn.pdsc + + export type StandardizedProductCategoryUrn = string; + // Generated from: com/linkedin/common/StandardizedProductUrn.pdsc + + export type StandardizedProductUrn = string; + // Generated from: com/linkedin/common/StateCode.pdsc + + export type StateCode = string; + // Generated from: com/linkedin/common/StateUrn.pdsc + + export type StateUrn = string; + // Generated from: com/linkedin/common/StaticApplicationInstanceUrn.pdsc + + export type StaticApplicationInstanceUrn = string; + // Generated from: com/linkedin/common/StaticApplicationSliceUrn.pdsc + + export type StaticApplicationSliceUrn = string; + // Generated from: com/linkedin/common/Status.pdsc + + export interface Status { + removed: boolean; + } + // Generated from: com/linkedin/common/StatusUrn.pdsc + + export type StatusUrn = string; + // Generated from: com/linkedin/common/StorkCampaignGitDirectoryUrn.pdsc + + export type StorkCampaignGitDirectoryUrn = string; + // Generated from: com/linkedin/common/StorkCampaignRevisionUrn.pdsc + + export type StorkCampaignRevisionUrn = string; + // Generated from: com/linkedin/common/StorkCampaignUrn.pdsc + + export type StorkCampaignUrn = string; + // Generated from: com/linkedin/common/StoryItemUrn.pdsc + + export type StoryItemUrn = string; + // Generated from: com/linkedin/common/StoryPlaylistUrn.pdsc + + export type StoryPlaylistUrn = string; + // Generated from: com/linkedin/common/StoryUrn.pdsc + + export type StoryUrn = string; + // Generated from: com/linkedin/common/StructuredTitleModifierUrn.pdsc + + export type StructuredTitleModifierUrn = string; + // Generated from: com/linkedin/common/SuperTitleUrn.pdsc + + export type SuperTitleUrn = string; + // Generated from: com/linkedin/common/SurveyResponseUrn.pdsc + + export type SurveyResponseUrn = string; + // Generated from: com/linkedin/common/SurveyUrn.pdsc + + export type SurveyUrn = string; + // Generated from: com/linkedin/common/TabBadgeUpdateTopicUrn.pdsc + + export type TabBadgeUpdateTopicUrn = string; + // Generated from: com/linkedin/common/TableauViewUrn.pdsc + + export type TableauViewUrn = string; + // Generated from: com/linkedin/common/TableauWorkbookUrn.pdsc + + export type TableauWorkbookUrn = string; + // Generated from: com/linkedin/common/TagManagementSystemProfileUrn.pdsc + + export type TagManagementSystemProfileUrn = string; + // Generated from: com/linkedin/common/TakeoutCategoryUrn.pdsc + + export type TakeoutCategoryUrn = string; + // Generated from: com/linkedin/common/TakeoutDomainUrn.pdsc + + export type TakeoutDomainUrn = string; + // Generated from: com/linkedin/common/TalentAssessmentsSettingUrn.pdsc + + export type TalentAssessmentsSettingUrn = string; + // Generated from: com/linkedin/common/TalentintelCompanyPeerListUrn.pdsc + + export type TalentintelCompanyPeerListUrn = string; + // Generated from: com/linkedin/common/TalentintelEngagementEmailUrn.pdsc + + export type TalentintelEngagementEmailUrn = string; + // Generated from: com/linkedin/common/TalentintelFolderReportUrn.pdsc + + export type TalentintelFolderReportUrn = string; + // Generated from: com/linkedin/common/TalentintelFolderUrn.pdsc + + export type TalentintelFolderUrn = string; + // Generated from: com/linkedin/common/TalentintelRecommendationReasonUrn.pdsc + + export type TalentintelRecommendationReasonUrn = string; + // Generated from: com/linkedin/common/TalentintelSearchHistoryUrn.pdsc + + export type TalentintelSearchHistoryUrn = string; + // Generated from: com/linkedin/common/TalentintelSearchHistoryV2Urn.pdsc + + export type TalentintelSearchHistoryV2Urn = string; + // Generated from: com/linkedin/common/TalentintelSearchUpdatesEmailUrn.pdsc + + export type TalentintelSearchUpdatesEmailUrn = string; + // Generated from: com/linkedin/common/TalentPackageUrn.pdsc + + export type TalentPackageUrn = string; + // Generated from: com/linkedin/common/TalentQuestionRecommendationUrn.pdsc + + export type TalentQuestionRecommendationUrn = string; + // Generated from: com/linkedin/common/TalentQuestionResponseUrn.pdsc + + export type TalentQuestionResponseUrn = string; + // Generated from: com/linkedin/common/TalentQuestionSectionUrn.pdsc + + export type TalentQuestionSectionUrn = string; + // Generated from: com/linkedin/common/TalentQuestionSubsectionUrn.pdsc + + export type TalentQuestionSubsectionUrn = string; + // Generated from: com/linkedin/common/TalentQuestionTemplateUrn.pdsc + + export type TalentQuestionTemplateUrn = string; + // Generated from: com/linkedin/common/TalentQuestionUrn.pdsc + + export type TalentQuestionUrn = string; + // Generated from: com/linkedin/common/TalentSingleStringParameterQuestionUrn.pdsc + + export type TalentSingleStringParameterQuestionUrn = string; + // Generated from: com/linkedin/common/TalentSingleUrnParameterQuestionUrn.pdsc + + export type TalentSingleUrnParameterQuestionUrn = string; + // Generated from: com/linkedin/common/TalentVideoAssessmentUrn.pdsc + + export type TalentVideoAssessmentUrn = string; + // Generated from: com/linkedin/common/TalentVideoQuestionResponseUrn.pdsc + + export type TalentVideoQuestionResponseUrn = string; + // Generated from: com/linkedin/common/TalentVideoQuestionTemplateUrn.pdsc + + export type TalentVideoQuestionTemplateUrn = string; + // Generated from: com/linkedin/common/TalentVideoQuestionUrn.pdsc + + export type TalentVideoQuestionUrn = string; + // Generated from: com/linkedin/common/Target.pdsc + + export interface Target { + industries: string[]; + jobFunctions: string[]; + seniorities: string[]; + locations: string[]; + geoLocations: string[]; + staffCountRanges: StaffCountRange[]; + interfaceLocales: Locale[]; + degrees: string[]; + fieldsOfStudy: string[]; + schools: string[]; + companies: string[]; + } + // Generated from: com/linkedin/common/TaxonomyTaskUrn.pdsc + + export type TaxonomyTaskUrn = string; + // Generated from: com/linkedin/common/TeamUrn.pdsc + + export type TeamUrn = string; + // Generated from: com/linkedin/common/ThirdPartyAtsContextUrn.pdsc + + export type ThirdPartyAtsContextUrn = string; + // Generated from: com/linkedin/common/ThirdPartyAtsEntityUrn.pdsc + + export type ThirdPartyAtsEntityUrn = string; + // Generated from: com/linkedin/common/ThirdPartyAuthInfoUrn.pdsc + + export type ThirdPartyAuthInfoUrn = string; + // Generated from: com/linkedin/common/ThirdPartyCredentialUrn.pdsc + + export type ThirdPartyCredentialUrn = string; + // Generated from: com/linkedin/common/ThirdPartyTrackingTagUrn.pdsc + + export type ThirdPartyTrackingTagUrn = string; + // Generated from: com/linkedin/common/ThoughtLeaderBadgeUrn.pdsc + + export type ThoughtLeaderBadgeUrn = string; + // Generated from: com/linkedin/common/ThoughtLeaderPoolUrn.pdsc + + export type ThoughtLeaderPoolUrn = string; + // Generated from: com/linkedin/common/ThreadUrn.pdsc + + export type ThreadUrn = string; + // Generated from: com/linkedin/common/Time.pdsc + + export type Time = number; + // Generated from: com/linkedin/common/TimeOfDay.pdsc + + export interface TimeOfDay { + hour: number; + minute: number; + second: number; + } + // Generated from: com/linkedin/common/TimeRange.pdsc + + export interface TimeRange { + start?: Time; + end?: Time; + } + // Generated from: com/linkedin/common/TimeSpan.pdsc + + export interface TimeSpan { + duration: number; + unit: TimeUnit; + } + // Generated from: com/linkedin/common/TimeSpanRange.pdsc + + export interface TimeSpanRange { + minDuration: TimeSpan; + maxDuration: TimeSpan; + } + // Generated from: com/linkedin/common/TimeUnit.pdsc + + export type TimeUnit = 'MILLISECOND' | 'SECOND' | 'MINUTE' | 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'; + // Generated from: com/linkedin/common/TimeZone.pdsc + + export type TimeZone = string; + // Generated from: com/linkedin/common/Title_companyUrn.pdsc + + export type Title_companyUrn = string; + // Generated from: com/linkedin/common/TitleUrn.pdsc + + export type TitleUrn = string; + // Generated from: com/linkedin/common/TopMediaPlaylistUrn.pdsc + + export type TopMediaPlaylistUrn = string; + // Generated from: com/linkedin/common/TrackingId.pdsc + + export type TrackingId = string; + // Generated from: com/linkedin/common/TrafficShiftScalingEventUrn.pdsc + + export type TrafficShiftScalingEventUrn = string; + // Generated from: com/linkedin/common/TypingIndicatorsTopicUrn.pdsc + + export type TypingIndicatorsTopicUrn = string; + // Generated from: com/linkedin/common/UcfApplicabilityRuleUrn.pdsc + + export type UcfApplicabilityRuleUrn = string; + // Generated from: com/linkedin/common/UcfClassificationServiceUrn.pdsc + + export type UcfClassificationServiceUrn = string; + // Generated from: com/linkedin/common/UcfContentExtractionFieldUrn.pdsc + + export type UcfContentExtractionFieldUrn = string; + // Generated from: com/linkedin/common/UcfContextUrn.pdsc + + export type UcfContextUrn = string; + // Generated from: com/linkedin/common/UcfProcessorAggregationStrategyUrn.pdsc + + export type UcfProcessorAggregationStrategyUrn = string; + // Generated from: com/linkedin/common/UcfProcessorTypeUrn.pdsc + + export type UcfProcessorTypeUrn = string; + // Generated from: com/linkedin/common/UIComponentCustomizationUrn.pdsc + + export type UIComponentCustomizationUrn = string; + // Generated from: com/linkedin/common/UmpOfflineFlowExecutionUrn.pdsc + + export type UmpOfflineFlowExecutionUrn = string; + // Generated from: com/linkedin/common/UmpOfflineFlowUrn.pdsc + + export type UmpOfflineFlowUrn = string; + // Generated from: com/linkedin/common/UmpOfflineJobExecutionUrn.pdsc + + export type UmpOfflineJobExecutionUrn = string; + // Generated from: com/linkedin/common/UmpOfflineJobUrn.pdsc + + export type UmpOfflineJobUrn = string; + // Generated from: com/linkedin/common/UnifiedCountingContextUrn.pdsc + + export type UnifiedCountingContextUrn = string; + // Generated from: com/linkedin/common/Uri.pdsc + + export type Uri = string; + // Generated from: com/linkedin/common/Url.pdsc + + export type Url = string; + // Generated from: com/linkedin/common/Urn.pdsc + + export type Urn = string; + // Generated from: com/linkedin/common/UserGeneratedContentPostUrn.pdsc + + export type UserGeneratedContentPostUrn = string; + // Generated from: com/linkedin/common/UserGeneratedContentReviewUrn.pdsc + + export type UserGeneratedContentReviewUrn = string; + // Generated from: com/linkedin/common/UserReportUrn.pdsc + + export type UserReportUrn = string; + // Generated from: com/linkedin/common/USSAzureDeploymentScaleSetUrn.pdsc + + export type USSAzureDeploymentScaleSetUrn = string; + // Generated from: com/linkedin/common/USSAzureDeploymentUrn.pdsc + + export type USSAzureDeploymentUrn = string; + // Generated from: com/linkedin/common/UUID.pdsc + + export type UUID = string; + // Generated from: com/linkedin/common/UuidString.pdsc + + export type UuidString = string; + // Generated from: com/linkedin/common/ValueSchemaLanguage.pdsc + + export type ValueSchemaLanguage = + | 'AVRO' + | 'MYSQL_DDL' + | 'ORACLE_DDL' + | 'ORC' + | 'PARQUET' + | 'PDL' + | 'PDSC' + | 'SCHEMALESS' + | 'BINARY_JSON' + | 'OTHER'; + // Generated from: com/linkedin/common/VectorArtifact.pdsc + + export interface VectorArtifact { + fileIdentifyingUrlPathSegment: string; + height: number; + width: number; + expiresAt?: Time; + } + // Generated from: com/linkedin/common/VectorImage.pdsc + + export interface VectorImage { + rootUrl?: string; + artifacts: VectorArtifact[]; + attribution?: string; + digitalmediaAsset?: string; + } + // Generated from: com/linkedin/common/VersionedAssessmentQuestionUrn.pdsc + + export type VersionedAssessmentQuestionUrn = string; + // Generated from: com/linkedin/common/VersionedAssessmentUrn.pdsc + + export type VersionedAssessmentUrn = string; + // Generated from: com/linkedin/common/VersionedDatasetUrn.pdsc + + export type VersionedDatasetUrn = string; + // Generated from: com/linkedin/common/VersionedLeadGenFormUrn.pdsc + + export type VersionedLeadGenFormUrn = string; + // Generated from: com/linkedin/common/VersionedMultiProduct.pdsc + + export interface VersionedMultiProduct { + multiProductUrn: string; + multiProductVersion: MultiProductVersion; + } + // Generated from: com/linkedin/common/VersionedMultiProductModule.pdsc + + export interface VersionedMultiProductModule { + versionedMultiProduct: VersionedMultiProduct; + moduleName: string; + } + // Generated from: com/linkedin/common/VersionTag.pdsc + + export interface VersionTag { + versionTag?: string; + } + // Generated from: com/linkedin/common/ViatorWorkflowUrn.pdsc + + export type ViatorWorkflowUrn = string; + // Generated from: com/linkedin/common/Video2BrainCourseUrn.pdsc + + export type Video2BrainCourseUrn = string; + // Generated from: com/linkedin/common/VideoMetadataUrn.pdsc + + export type VideoMetadataUrn = string; + // Generated from: com/linkedin/common/ViewerTrackingTopicUrn.pdsc + + export type ViewerTrackingTopicUrn = string; + // Generated from: com/linkedin/common/VirtualCurrencyGrantUrn.pdsc + + export type VirtualCurrencyGrantUrn = string; + // Generated from: com/linkedin/common/VisibilityScope.pdsc + + export type VisibilityScope = 'PUBLIC' | 'CONNECTIONS' | 'LOGGED_IN' | 'CONTAINER' | 'AUTHOR'; + // Generated from: com/linkedin/common/VisualMedia.pdsc + + export interface VisualMedia extends VisualMediaMetadata { + mediaType?: MediaType; + alternateText?: MultiLocaleString; + } + // Generated from: com/linkedin/common/VisualMediaMetadata.pdsc + + export interface VisualMediaMetadata { + width?: number; + height?: number; + size?: number; + } + // Generated from: com/linkedin/common/VolunteerExperienceUrn.pdsc + + export type VolunteerExperienceUrn = string; + // Generated from: com/linkedin/common/WidgetCrossPromoAssetUrn.pdsc + + export type WidgetCrossPromoAssetUrn = string; + // Generated from: com/linkedin/common/WorkflowApprovalRequestReviewerActionUrn.pdsc + + export type WorkflowApprovalRequestReviewerActionUrn = string; + // Generated from: com/linkedin/common/WorkflowApprovalRequestUrn.pdsc + + export type WorkflowApprovalRequestUrn = string; + // Generated from: com/linkedin/common/WorkflowEndStateUrn.pdsc + + export type WorkflowEndStateUrn = string; + // Generated from: com/linkedin/common/WorkflowSignalUrn.pdsc + + export type WorkflowSignalUrn = string; + // Generated from: com/linkedin/common/WorkflowStepUrn.pdsc + + export type WorkflowStepUrn = string; + // Generated from: com/linkedin/common/WorkflowUrn.pdsc + + export type WorkflowUrn = string; + // Generated from: com/linkedin/common/WormholeNamespaceUrn.pdsc + + export type WormholeNamespaceUrn = string; + // Generated from: com/linkedin/common/YearUrn.pdsc + + export type YearUrn = string; + // Generated from: com/linkedin/common/ZephyrAnswerUrn.pdsc + + export type ZephyrAnswerUrn = string; + // Generated from: com/linkedin/common/ZephyrCareerInsightUrn.pdsc + + export type ZephyrCareerInsightUrn = string; + // Generated from: com/linkedin/common/ZephyrQuestionUrn.pdsc + + export type ZephyrQuestionUrn = string; + // Generated from: com/linkedin/common/ZuoraAccountUrn.pdsc + + export type ZuoraAccountUrn = string; + namespace Businesscard { + // Generated from: com/linkedin/common/businesscard/BusinessCardScanRequest.pdsc + + export interface BusinessCardScanRequest { + businessCardImage: string; + } + // Generated from: com/linkedin/common/businesscard/BusinessCardScanResult.pdsc + + export interface BusinessCardScanResult { + croppedBusinessCardImage: string; + fullName?: string; + firstName?: string; + lastName?: string; + company?: string; + emails: Array<{ + emailAddress: Com.Linkedin.Common.EmailAddress; + type?: string; + primary: boolean; + }>; + phoneNumbers: Array<{ + type?: string; + primary: boolean; + }>; + addresses: Array<{ + type?: string; + rawAddress?: string; + address1?: string; + address2?: string; + city?: string; + state?: string; + postalCode?: string; + country?: string; + primary: boolean; + }>; + } + } + namespace Error { + // Generated from: com/linkedin/common/error/BadRequest.pdsc + + export interface BadRequest { + inputErrors: InputError[]; + conditionalInputErrors: ConditionalInputError[]; + } + // Generated from: com/linkedin/common/error/ConditionalInputError.pdsc + + export interface ConditionalInputError extends InputError { + relatedInputs: Input[]; + } + // Generated from: com/linkedin/common/error/Input.pdsc + + export interface Input { + inputPath: string | string; + value?: { decimalValue: Com.Linkedin.Common.BigDecimal } | string | boolean; + } + // Generated from: com/linkedin/common/error/InputError.pdsc + + export interface InputError { + code: string; + input: Input; + key?: string; + allowedType?: string; + description?: string; + minLength?: number; + maxLength?: number; + encoding?: string; + minValue?: Com.Linkedin.Common.BigDecimal; + maxValue?: Com.Linkedin.Common.BigDecimal; + regex?: string; + } + // Generated from: com/linkedin/common/error/QuotaDetails.pdsc + + export interface QuotaDetails { + subject: string; + limit: number; + period: Com.Linkedin.Common.TimeSpan; + description?: string; + } + } + namespace Internal { + // Generated from: com/linkedin/common/internal/ForceComplexInstantiations.pdsc + + export interface ForceComplexInstantiations { + urnArray: string[]; + urnMap: { [id: string]: string }; + uriArray: Com.Linkedin.Common.Uri[]; + uriMap: { [id: string]: Com.Linkedin.Common.Uri }; + bigDecimalArray: Com.Linkedin.Common.BigDecimal[]; + bigDecimalMap: { [id: string]: Com.Linkedin.Common.BigDecimal }; + } + } + namespace Monarch { + // Generated from: com/linkedin/common/monarch/CustomerMergeEligibilityResult.pdsc + + export interface CustomerMergeEligibilityResult { + mergeEligible: boolean; + debugMessage?: string; + } + } + namespace Proposed { + // Generated from: com/linkedin/common/proposed/Email.pdsc + + export interface Email { + address: string; + type?: string; + } + // Generated from: com/linkedin/common/proposed/GeoLocation.pdsc + + export interface GeoLocation { + location: Location; + regionCode?: number; + latLong?: Com.Linkedin.Common.LatLong; + geoPostalCode?: string; + gmtOffset?: number; + usesDaylightSavings?: boolean; + geoPlaceCodes?: string[]; + } + // Generated from: com/linkedin/common/proposed/GeoRegion.pdsc + + export interface GeoRegion { + countryCode: string; + regionCode?: number; + } + // Generated from: com/linkedin/common/proposed/IM.pdsc + + export interface IM { + id: string; + provider: string; + type?: string; + } + // Generated from: com/linkedin/common/proposed/Link.pdsc + + export interface Link { + href: string; + body?: string; + rel?: string; + title?: string; + } + // Generated from: com/linkedin/common/proposed/Locale.pdsc + + export interface Locale { + language: string; + country?: string; + variant?: string; + } + // Generated from: com/linkedin/common/proposed/Location.pdsc + + export interface Location { + countryCode: string; + postalCode?: string; + } + // Generated from: com/linkedin/common/proposed/MultiLocaleString.pdsc + + export interface MultiLocaleString { + localized: { [id: string]: string }; + preferredLocale?: string; + } + // Generated from: com/linkedin/common/proposed/PhoneNumber.pdsc + + export interface PhoneNumber { + number: string; + extension?: string; + type?: string; + } + // Generated from: com/linkedin/common/proposed/RichText.pdsc + + export interface RichText { + rawText?: string; + rtData?: RTData[]; + } + // Generated from: com/linkedin/common/proposed/RTAttribute.pdsc + + export interface RTAttribute { + name: string; + value: string; + } + // Generated from: com/linkedin/common/proposed/RTData.pdsc + + export interface RTData { + type: string; + startIdx: number; + endIdx: number; + attribute?: RTAttribute[]; + } + } + namespace Tracking { + // Generated from: com/linkedin/common/tracking/MobileAppInfo.pdsc + + export interface MobileAppInfo { + appName: string; + appVersion?: string; + clientType: 'NATIVE' | 'WEB'; + } + // Generated from: com/linkedin/common/tracking/MobileDeviceAppInfo.pdsc + + export interface MobileDeviceAppInfo { + deviceInfo?: MobileDeviceInfo; + appInfo: MobileAppInfo; + } + // Generated from: com/linkedin/common/tracking/MobileDeviceInfo.pdsc + + export interface MobileDeviceInfo { + osName: string; + osVersion: string; + deviceModel: string; + } + // Generated from: com/linkedin/common/tracking/OriginationInfo.pdsc + + export interface OriginationInfo { + source: string; + createdAt: Com.Linkedin.Common.Time; + host: string; + service: string; + fabric: string; + guid: string; + treeId: string; + requestId: number; + impersonator?: string; + } + // Generated from: com/linkedin/common/tracking/RequestInfo.pdsc + + export interface RequestInfo { + browserId: string; + session?: string; + ip: Com.Linkedin.Common.IPAddress; + pageKey?: string; + path: string; + locale: Com.Linkedin.Common.Locale; + referrer?: Com.Linkedin.Common.Url; + userAgent: string; + } + } + } + namespace D2 { + // Generated from: com/linkedin/d2/BackupRequestsConfiguration.pdsc + + export interface BackupRequestsConfiguration { + operation: string; + strategy: BoundedCostBackupRequests; + } + // Generated from: com/linkedin/d2/BoundedCostBackupRequests.pdsc + + export interface BoundedCostBackupRequests { + cost: number; + historyLength: number; + requiredHistoryLength: number; + maxBurst: number; + minBackupDelayMs: number; + } + // Generated from: com/linkedin/d2/D2ChangeTimeStamps.pdsc + + export interface D2ChangeTimeStamps { + created: number; + lastModified: number; + deleted?: number; + } + // Generated from: com/linkedin/d2/D2Cluster.pdsc + + export interface D2Cluster extends D2ChangeTimeStamps { + name: string; + services: string[]; + uris: D2Uri[]; + bannedUris: string[]; + partitionConfiguration?: D2ClusterPartitionConfiguration; + sslSessionValidationStrings: string[]; + darkClusters: { [id: string]: DarkClusterConfig }; + } + // Generated from: com/linkedin/d2/D2ClusterPartitionConfiguration.pdsc + + export interface D2ClusterPartitionConfiguration { + type: 'HASH' | 'RANGE' | 'CUSTOM' | 'NONE'; + partitionKeyRegex?: string; + partitionCount?: number; + partitionTypeSpecificData?: + | { + partitionSize: number; + keyRangeStart: number; + } + | 'MODULO' + | 'MD5' + | 'XXHASH' + | { + classNames: string[]; + }; + } + // Generated from: com/linkedin/d2/D2DegraderProperties.pdsc + + export interface D2DegraderProperties { + name?: string; + logEnabled: boolean; + maxDropRate?: number; + upStep?: number; + downStep?: number; + minCallCount?: number; + highLatency?: number; + lowLatency?: number; + highErrorRate?: number; + lowErrorRate?: number; + highOutstanding?: number; + lowOutstanding?: number; + minOutstandingCount?: number; + maxDropDuration?: number; + latencyToUse?: 'AVERAGE' | 'PCT50' | 'PCT90' | 'PCT95' | 'PCT99'; + initialDropRate?: number; + slowStartThreshold?: number; + logThreshold?: number; + preemptiveRequestTimeoutRate?: number; + } + // Generated from: com/linkedin/d2/D2LoadBalancerStrategyProperties.pdsc + + export interface D2LoadBalancerStrategyProperties { + globalStepDown?: number; + globalStepUp?: number; + initialRecoveryLevel?: number; + ringRampFactor?: number; + highWaterMark?: number; + lowWaterMark?: number; + pointsPerWeight?: number; + updateIntervalMs?: number; + minCallCountHighWaterMark?: number; + minCallCountLowWaterMark?: number; + hashMethod?: 'RANDOM' | 'URI_REGEX'; + hashConfig?: { + uriRegexes?: string[]; + failOnNoMatch: boolean; + warnOnNoMatch: boolean; + }; + updateOnlyAtInterval: boolean; + hashRingPointCleanupRate?: number; + consistentHashAlgorithm?: 'POINT_BASED' | 'MULTI_PROBE' | 'DISTRIBUTION_BASED'; + numberOfProbes?: number; + numberOfPointsPerHost?: number; + boundedLoadBalancingFactor: number; + quarantineCfg?: { + quarantineMaxPercent: number; + quarantineMethod?: string; + quarantineLatency?: number; + }; + errorStatusRegex?: string; + lowEmittingInterval?: number; + highEmittingInterval?: number; + } + // Generated from: com/linkedin/d2/D2QuarantineProperties.pdsc + + export interface D2QuarantineProperties { + quarantineMaxPercent?: number; + healthCheckMethod?: 'OPTIONS' | 'GET'; + healthCheckPath?: string; + } + // Generated from: com/linkedin/d2/D2RelativeStrategyProperties.pdsc + + export interface D2RelativeStrategyProperties { + upStep?: number; + downStep?: number; + relativeLatencyHighThresholdFactor?: number; + relativeLatencyLowThresholdFactor?: number; + highErrorRate?: number; + lowErrorRate?: number; + minCallCount?: number; + updateIntervalMs?: number; + initialHealthScore?: number; + slowStartThreshold?: number; + errorStatusFilter?: HttpStatusCodeRange[]; + emittingIntervalMs?: number; + enableFastRecovery?: boolean; + quarantineProperties?: D2QuarantineProperties; + ringProperties?: D2RingProperties; + } + // Generated from: com/linkedin/d2/D2RingProperties.pdsc + + export interface D2RingProperties { + pointsPerWeight?: number; + hashMethod?: 'URI_REGEX' | 'RANDOM'; + hashConfig?: { + uriRegexes?: string[]; + failOnNoMatch: boolean; + warnOnNoMatch: boolean; + }; + hashRingPointCleanupRate?: number; + consistentHashAlgorithm?: 'POINT_BASED' | 'MULTI_PROBE' | 'DISTRIBUTION_BASED'; + numberOfProbes?: number; + numberOfPointsPerHost?: number; + boundedLoadBalancingFactor?: number; + } + // Generated from: com/linkedin/d2/D2Service.pdsc + + export interface D2Service extends D2ChangeTimeStamps { + name: string; + path: string; + loadBalancerStrategyList: Array<'RELATIVE' | 'DEGRADER' | 'RANDOM'>; + prioritizedSchemes: Array<'HTTP' | 'HTTPS'>; + bannedUris: string[]; + serviceMetadataProperties: { [id: string]: string }; + cluster: string; + loadBalancerStrategyProperties?: D2LoadBalancerStrategyProperties; + degraderProperties?: D2DegraderProperties; + relativeStrategyProperties?: D2RelativeStrategyProperties; + transportClientProperties: D2TransportClientProperties; + backupRequests?: BackupRequestsConfiguration[]; + } + // Generated from: com/linkedin/d2/D2TransportClientProperties.pdsc + + export interface D2TransportClientProperties { + queryPostThreshold?: number; + requestTimeout?: number; + streamingTimeout?: number; + maxResponseSize?: number; + maxHeaderSize?: number; + maxChunkSize?: number; + poolSize?: number; + poolWaiterSize?: number; + poolStatsNamePrefix?: string; + tcpNoDelay: boolean; + poolStrategy?: 'MRU' | 'LRU'; + minPoolSize?: number; + maxConcurrentConnections?: number; + idleTimeout?: number; + sslIdleTimeout?: number; + shutdownTimeout?: number; + gracefulShutdownTimeout: number; + responseCompressionOperations?: string[]; + responseContentEncodings?: string[]; + requestContentEncodings?: string[]; + useResponseCompression: boolean; + allowedClientOverrideKeys: string[]; + protocolVersion?: 'HTTP_1_1' | 'HTTP_2'; + } + // Generated from: com/linkedin/d2/D2Uri.pdsc + + export interface D2Uri { + URI: string; + clusterName: string; + partitionDescription: { [id: string]: number }; + } + // Generated from: com/linkedin/d2/DarkClusterConfig.pdsc + + export interface DarkClusterConfig { + multiplier: number; + dispatcherOutboundTargetRate: number; + dispatcherOutboundMaxRate: number; + DarkClusterStrategyPrioritizedList: DarkClusterStrategyName[]; + transportClientProperties?: D2TransportClientProperties; + } + // Generated from: com/linkedin/d2/DarkClusterStrategyName.pdsc + + export type DarkClusterStrategyName = 'RELATIVE_TRAFFIC' | 'CONSTANT_QPS'; + // Generated from: com/linkedin/d2/HttpStatusCodeRange.pdsc + + export interface HttpStatusCodeRange { + lowerBound: number; + upperBound: number; + } + } + namespace Dashboard { + // Generated from: com/linkedin/dashboard/InchartsDashboardChart.pdsc + + export interface InchartsDashboardChart extends InchartsDashboardItemCommon { + summary: boolean; + chart: string; + } + // Generated from: com/linkedin/dashboard/InchartsDashboardCharts.pdsc + + export interface InchartsDashboardCharts { + charts: string[]; + } + // Generated from: com/linkedin/dashboard/InchartsDashboardEdit.pdsc + + export interface InchartsDashboardEdit { + editMode?: Com.Linkedin.Common.AuditStamp; + } + // Generated from: com/linkedin/dashboard/InchartsDashboardGroup.pdsc + + export interface InchartsDashboardGroup extends InchartsDashboardItemCommon { + layout: 'TAB' | 'GRID'; + items: InchartsDashboardItem[]; + links: InchartsDashboardItemLink[]; + } + // Generated from: com/linkedin/dashboard/InchartsDashboardItem.pdsc + + export interface InchartsDashboardItem { + guid?: number; + type: InchartsDashboardItemType; + controls?: InchartsDashboardItemControls; + metadata?: string; + } + // Generated from: com/linkedin/dashboard/InchartsDashboardItemCommon.pdsc + + export interface InchartsDashboardItemCommon { + title?: Com.Linkedin.Common.MultiLocaleString; + description?: Com.Linkedin.Common.MultiLocaleString; + position: InchartsDashboardItemPosition; + } + // Generated from: com/linkedin/dashboard/InchartsDashboardItemControls.pdsc + + export interface InchartsDashboardItemControls { + filters: InchartsDashboardItemFilter[]; + } + // Generated from: com/linkedin/dashboard/InchartsDashboardItemFilter.pdsc + + export interface InchartsDashboardItemFilter { + datasetId?: number; + dimension: string; + operator?: + | 'EQUAL' + | 'NOT_EQUAL' + | 'LESS_THAN' + | 'GREATER_THAN' + | 'LESS_THAN_OR_EQUAL' + | 'GREATER_THAN_OR_EQUAL' + | 'IN' + | 'NOT_IN' + | 'BETWEEN'; + values?: Array; + } + // Generated from: com/linkedin/dashboard/InchartsDashboardItemLink.pdsc + + export interface InchartsDashboardItemLink { + source: string; + destination: string; + } + // Generated from: com/linkedin/dashboard/InchartsDashboardItemPosition.pdsc + + export interface InchartsDashboardItemPosition { + width: string; + height: string; + top?: string; + right?: string; + bottom?: string; + left?: string; + zIndex: number; + position: 'ABSOLUTE' | 'RELATIVE' | 'STICKY'; + } + // Generated from: com/linkedin/dashboard/InchartsDashboardItemType.pdsc + + export type InchartsDashboardItemType = InchartsDashboardGroup | InchartsDashboardChart; + // Generated from: com/linkedin/dashboard/InchartsDashboardMetadata.pdsc + + export interface InchartsDashboardMetadata { + title?: Com.Linkedin.Common.MultiLocaleString; + description?: Com.Linkedin.Common.MultiLocaleString; + hierarchy: string[]; + accessType: 'CERTIFIED' | 'PUBLIC' | 'PRIVATE'; + certified: boolean; + changeAuditStamps?: Com.Linkedin.Common.ChangeAuditStamps; + } + } + namespace DataConcept { + // Generated from: com/linkedin/dataConcept/DataConcept.pdsc + + export interface DataConcept { + conceptId: number; + institutionalMemory?: Com.Linkedin.Common.InstitutionalMemory; + ownership?: Com.Linkedin.Common.Ownership; + dataConceptProperties?: DataConceptProperties; + relatedEntities?: RelatedEntities; + } + // Generated from: com/linkedin/dataConcept/DataConceptKey.pdsc + + export interface DataConceptKey { + conceptId: number; + } + // Generated from: com/linkedin/dataConcept/DataConceptProperties.pdsc + + export interface DataConceptProperties { + name: string; + tags: string[]; + lastUpdatedTimeStamp: Com.Linkedin.Common.AuditStamp; + description: string; + } + // Generated from: com/linkedin/dataConcept/RelatedDatasetEntity.pdsc + + export interface RelatedDatasetEntity { + datasetUrn: string; + description: string; + } + // Generated from: com/linkedin/dataConcept/RelatedEntities.pdsc + + export interface RelatedEntities { + createStamp: Com.Linkedin.Common.AuditStamp; + relatedDatasets: RelatedDatasetEntity[]; + relatedMetrics: RelatedMetricEntity[]; + relatedFeatures: RelatedFeatureEntity[]; + relatedInchartsDashboards: RelatedInchartsDashboardEntity[]; + } + // Generated from: com/linkedin/dataConcept/RelatedFeatureEntity.pdsc + + export interface RelatedFeatureEntity { + featureUrn: string; + description: string; + } + // Generated from: com/linkedin/dataConcept/RelatedInchartsDashboardEntity.pdsc + + export interface RelatedInchartsDashboardEntity { + inchartsDashboardUrn: string; + description: string; + } + // Generated from: com/linkedin/dataConcept/RelatedMetricEntity.pdsc + + export interface RelatedMetricEntity { + metricUrn: string; + description: string; + } + } + namespace DataConstructChangeManagement { + // Generated from: com/linkedin/dataConstructChangeManagement/Category.pdsc + + export type Category = + | 'BUSINESS_LOGIC' + | 'DEPRECATION' + | 'LINEAGE' + | 'REMOVAL' + | 'SCHEDULING' + | 'SCHEMA_UPDATE' + | 'OTHER'; + // Generated from: com/linkedin/dataConstructChangeManagement/DataConstructChangeManagement.pdsc + + export interface DataConstructChangeManagement extends DataConstructChangeManagementContent { + id: number; + } + // Generated from: com/linkedin/dataConstructChangeManagement/DataConstructChangeManagementContent.pdsc + + export interface DataConstructChangeManagementContent { + owningEntity: OwningEntity; + category: Category; + state?: State; + message: Message; + notification?: Notification; + lastModified: Com.Linkedin.Common.AuditStamp; + } + // Generated from: com/linkedin/dataConstructChangeManagement/Message.pdsc + + export interface Message { + subject: string; + messageText: string; + documentationLink?: Com.Linkedin.Common.Url; + } + // Generated from: com/linkedin/dataConstructChangeManagement/Notification.pdsc + + export interface Notification { + recipients: NotificationRecipient[]; + notificationTypes: NotificationTypes; + publishTimeAt?: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/dataConstructChangeManagement/NotificationRecipient.pdsc + + export type NotificationRecipient = { groupUrn: string } | { userUrn: string }; + // Generated from: com/linkedin/dataConstructChangeManagement/NotificationTypes.pdsc + + export interface NotificationTypes { + jira: boolean; + email: boolean; + banner: boolean; + } + // Generated from: com/linkedin/dataConstructChangeManagement/OwningEntity.pdsc + + export type OwningEntity = { dataset: string } | { feature: string } | { metric: string }; + // Generated from: com/linkedin/dataConstructChangeManagement/OwningEntityType.pdsc + + export type OwningEntityType = 'DATASET' | 'METRIC' | 'FEATURE'; + // Generated from: com/linkedin/dataConstructChangeManagement/State.pdsc + + export type State = 'DEPLOYED' | 'DRAFT' | 'IMPLEMENTING' | 'PROPOSED' | 'WITHDRAWN'; + } + namespace DataJob { + // Generated from: com/linkedin/dataJob/DataJobInput.pdsc + + export interface DataJobInput { + inputDatasets: string[]; + } + // Generated from: com/linkedin/dataJob/DataJobOutput.pdsc + + export interface DataJobOutput { + outputDatasets: string[]; + } + namespace Azkaban { + // Generated from: com/linkedin/dataJob/azkaban/AzkabanClusterInfo.pdsc + + export interface AzkabanClusterInfo { + clusterName: string; + hadoopCluster: Com.Linkedin.Common.HadoopClusterType; + } + // Generated from: com/linkedin/dataJob/azkaban/AzkabanFlowInfo.pdsc + + export interface AzkabanFlowInfo { + project: AzkabanProjectInfo; + flowName: string; + } + // Generated from: com/linkedin/dataJob/azkaban/AzkabanFlowJobsInfo.pdsc + + export interface AzkabanFlowJobsInfo { + jobs: string[]; + } + // Generated from: com/linkedin/dataJob/azkaban/AzkabanJobInfo.pdsc + + export interface AzkabanJobInfo extends AzkabanFlowInfo { + jobName: string; + } + // Generated from: com/linkedin/dataJob/azkaban/AzkabanJobInput.pdsc + + export interface AzkabanJobInput extends Com.Linkedin.DataJob.DataJobInput {} + // Generated from: com/linkedin/dataJob/azkaban/AzkabanJobOutput.pdsc + + export interface AzkabanJobOutput extends Com.Linkedin.DataJob.DataJobOutput {} + // Generated from: com/linkedin/dataJob/azkaban/AzkabanProjectInfo.pdsc + + export interface AzkabanProjectInfo { + projectName: string; + projectVersion: string; + clusterInfo: AzkabanClusterInfo; + } + } + namespace Etl { + // Generated from: com/linkedin/dataJob/etl/ETLDatasetInstancePair.pdsc + + export interface ETLDatasetInstancePair { + sourceInstance: string; + targetInstance: string; + } + // Generated from: com/linkedin/dataJob/etl/ETLDatasetInstancePairs.pdsc + + export interface ETLDatasetInstancePairs { + pairs: ETLDatasetInstancePair[]; + } + // Generated from: com/linkedin/dataJob/etl/ETLPipelineSchedule.pdsc + + export interface ETLPipelineSchedule { + cronPattern: string; + } + } + namespace Samza { + // Generated from: com/linkedin/dataJob/samza/ApiType.pdsc + + export type ApiType = 'BEAM' | 'HIGH_LEVEL' | 'LOW_LEVEL' | 'SQL'; + // Generated from: com/linkedin/dataJob/samza/DeploymentMode.pdsc + + export type DeploymentMode = 'STANDALONE' | 'YARN'; + // Generated from: com/linkedin/dataJob/samza/Input.pdsc + + export interface Input extends Com.Linkedin.DataJob.DataJobInput {} + // Generated from: com/linkedin/dataJob/samza/JobInstanceInfo.pdsc + + export interface JobInstanceInfo { + multiproductName: string; + name: string; + fabric: string; + instanceId: string; + apiType: ApiType; + deploymentMode: DeploymentMode; + stateful: boolean; + } + // Generated from: com/linkedin/dataJob/samza/JobInstanceStatus.pdsc + + export interface JobInstanceStatus { + status: JobInstanceStatusType; + } + // Generated from: com/linkedin/dataJob/samza/JobInstanceStatusType.pdsc + + export type JobInstanceStatusType = 'RUNNING' | 'STOPPED'; + // Generated from: com/linkedin/dataJob/samza/Output.pdsc + + export interface Output extends Com.Linkedin.DataJob.DataJobOutput {} + } + } + namespace Dataplatform { + // Generated from: com/linkedin/dataplatform/DataPlatformInfo.pdsc + + export interface DataPlatformInfo { + name: string; + type: + | 'FILE_SYSTEM' + | 'KEY_VALUE_STORE' + | 'MESSAGE_BROKER' + | 'OBJECT_STORE' + | 'OLAP_DATASTORE' + | 'OTHERS' + | 'QUERY_ENGINE' + | 'RELATIONAL_DB' + | 'SEARCH_ENGINE'; + supportedPurgePolicies: Com.Linkedin.Dataset.CompliancePurgeType[]; + datasetNameDelimiter: string; + } + } + namespace Dataset { + // Generated from: com/linkedin/dataset/ArrayType.pdsc + + export interface ArrayType { + nestedType?: string[]; + } + // Generated from: com/linkedin/dataset/BinaryJsonSchema.pdsc + + export interface BinaryJsonSchema { + jsonSchema: string; + } + // Generated from: com/linkedin/dataset/BooleanType.pdsc + + export interface BooleanType {} + // Generated from: com/linkedin/dataset/BytesType.pdsc + + export interface BytesType {} + // Generated from: com/linkedin/dataset/Compliance.pdsc + + export interface Compliance extends ComplianceKey, Com.Linkedin.Common.ChangeAuditStamps { + compliancePurgeType?: CompliancePurgeType; + compliancePurgeNote?: string; + originUrns?: string[]; + complianceFields: FieldCompliance[]; + datasetClassification?: DatasetClassification; + datasetConfidentiality?: SecurityClassification; + containingPersonalData?: boolean; + } + // Generated from: com/linkedin/dataset/ComplianceDataType.pdsc + + export type ComplianceDataType = + | 'ADDRESS' + | 'ADVERTISER_ID' + | 'ARTICLE_ID' + | 'AUTHENTICATION_TOKEN' + | 'CITY_STATE_REGION' + | 'COMPANY_ID' + | 'CONTENT_TOPIC_ID' + | 'CONTRACT_ID' + | 'COOKIE_BEACON_BROWSER_ID' + | 'CUSTOM_ID' + | 'DATE_OF_BIRTH' + | 'DEVICE_ID_ADVERTISING_ID' + | 'ELEVATE_CONTRACT_ID' + | 'ELEVATE_SEAT_ID' + | 'EMAIL' + | 'ENTERPRISE_ACCOUNT_ID' + | 'ENTERPRISE_PROFILE_ID' + | 'EVENT_TIME' + | 'FINANCIAL_NUMBER' + | 'FREEFORMED_UGC' + | 'GROUP_ID' + | 'HANDLES' + | 'HIRE_STREAM_ID' + | 'INGESTED_CONTENT_ID' + | 'INTEREST_ID' + | 'IP_ADDRESS' + | 'JOB_ID' + | 'LATITUDE_LONGITUDE' + | 'LOGS_PII' + | 'LYNDA_MASTER_ADMIN_ID' + | 'LYNDA_USER_ID' + | 'MEMBER_ID' + | 'MEMBER_PHOTO' + | 'MESSAGE' + | 'MIXED_ID' + | 'NAME' + | 'NATIONAL_ID' + | 'NONE' + | 'OTHER_PII' + | 'PASSWORD_CREDENTIAL' + | 'PAYMENT_INFO' + | 'PHONE' + | 'PROFILE_URL' + | 'SALARY' + | 'SEAT_ID' + | 'SLIDESHARE_USER_ID' + | 'SOCIAL_NETWORK_ID' + | 'TRANSACTION_TIME' + | 'UGC_ID' + | 'UNSTRUCTURED_PII' + | 'ZUORA_ACCOUNT_ID' + | 'HIRE_MAILBOX_ID' + | 'SALES_IDENTITY_ID'; + // Generated from: com/linkedin/dataset/ComplianceDataTypeInfo.pdsc + + export interface ComplianceDataTypeInfo { + id: string; + title: string; + description: string; + idType: boolean; + pii: boolean; + supportedFieldFormats: FieldFormat[]; + defaultSecurityClassification: SecurityClassification; + defaultUrnClass?: string; + } + // Generated from: com/linkedin/dataset/ComplianceDataTypeKey.pdsc + + export interface ComplianceDataTypeKey { + dataType: string; + } + // Generated from: com/linkedin/dataset/ComplianceDataTypeWrapper.pdsc + + export interface ComplianceDataTypeWrapper { + type: ComplianceDataType; + } + // Generated from: com/linkedin/dataset/ComplianceInfo.pdsc + + export interface ComplianceInfo { + originUrns?: string[]; + complianceFields: FieldCompliance[]; + datasetClassification?: DatasetClassification; + datasetConfidentiality?: SecurityClassification; + containingPersonalData?: boolean; + lastModified?: Com.Linkedin.Common.AuditStamp; + } + // Generated from: com/linkedin/dataset/ComplianceInfoSuggestion.pdsc + + export interface ComplianceInfoSuggestion { + suggestedContainingPersonalData?: boolean; + suggestedFieldClassifications: Array<{ + suggestion: FieldCompliance; + confidenceLevel: number; + uid?: string; + }>; + } + // Generated from: com/linkedin/dataset/ComplianceKey.pdsc + + export interface ComplianceKey { + dataset: string; + version: number; + } + // Generated from: com/linkedin/dataset/ComplianceProposal.pdsc + + export interface ComplianceProposal { + proposedFieldCompliance: ProposedFieldCompliance[]; + } + // Generated from: com/linkedin/dataset/CompliancePurgeType.pdsc + + export type CompliancePurgeType = + | 'AUTO_PURGE' + | 'MANUAL_PURGE' + | 'LIMITED_RETENTION' + | 'LIMITED_RETENTION_WITH_LOCKING' + | 'MANUAL_LIMITED_RETENTION' + | 'PURGE_NOT_APPLICABLE' + | 'PURGE_EXEMPTED'; + // Generated from: com/linkedin/dataset/CompliancePurgeTypeWrapper.pdsc + + export interface CompliancePurgeTypeWrapper { + type: CompliancePurgeType; + } + // Generated from: com/linkedin/dataset/ComplianceStructure.pdsc + + export interface ComplianceStructure { + dataType: ComplianceDataType; + format?: FieldFormat; + valuePattern?: string; + isPurgeKey?: boolean; + } + // Generated from: com/linkedin/dataset/ComplianceSuggestion.pdsc + + export interface ComplianceSuggestion + extends ComplianceSuggestionKey, + ComplianceInfoSuggestion, + Com.Linkedin.Common.ChangeAuditStamps {} + // Generated from: com/linkedin/dataset/ComplianceSuggestionKey.pdsc + + export interface ComplianceSuggestionKey { + dataset: string; + version: number; + } + // Generated from: com/linkedin/dataset/DataPrivacyReview.pdsc + + export interface DataPrivacyReview { + lastModified: Com.Linkedin.Common.AuditStamp; + status: + | 'PENDING_REVIEW' + | 'WHITELISTED' + | 'VIOLATION_SUSPECTED' + | 'BLACKLISTED' + | 'WHITELISTED_WITH_VIOLATION_SUPPRESSED'; + notes?: string; + } + // Generated from: com/linkedin/dataset/DataPrivacyReviewV2.pdsc + + export interface DataPrivacyReviewV2 { + lastModified: Com.Linkedin.Common.AuditStamp; + status: + | 'PENDING_REVIEW' + | 'UNRESTRICTED' + | 'VIOLATION_SUSPECTED' + | 'RESTRICTED' + | 'SPECIAL_RESTRICTIONS' + | 'REMEDIATION_REQUIRED' + | 'UNRESTRICTED_WITH_VIOLATION_SUPPRESSED'; + firstReviewer: string; + secondReviewer: string; + jiraTicketId?: string; + notes?: string; + } + // Generated from: com/linkedin/dataset/Dataset.pdsc + + export interface Dataset + extends DatasetKey, + Com.Linkedin.Common.ChangeAuditStamps, + Com.Linkedin.Common.VersionTag { + id: number; + deploymentInfos: DeploymentInfo[]; + description: string; + removed: boolean; + deprecation?: DatasetDeprecation; + refresh?: DatasetRefresh; + complianceInfo?: ComplianceInfo; + complianceInfoSuggestion?: ComplianceInfoSuggestion; + complianceProposal?: ComplianceProposal; + dataPrivacyReviewV2?: DataPrivacyReviewV2; + entityTopUsage?: Com.Linkedin.Common.EntityTopUsage; + exportPolicy?: ExportPolicy; + follow?: Com.Linkedin.Common.Follow; + health?: Com.Linkedin.Common.Health; + institutionalMemory?: Com.Linkedin.Common.InstitutionalMemory; + likes?: Com.Linkedin.Common.Likes; + ownership?: Com.Linkedin.Common.Ownership; + ownershipSuggestion?: Com.Linkedin.Common.OwnershipSuggestion; + replicationConfig?: ReplicationConfig; + retentionPolicy?: RetentionPolicy; + umpDatasetProperties?: Com.Linkedin.Dataset.Ump.UMPDatasetProperties; + upstreamLineage?: UpstreamLineage; + userEditableDatasetProperties?: UserEditableDatasetProperties; + userEditableSchemaInfo?: UserEditableSchemaInfo; + wormholeDatasetMetadata?: Com.Linkedin.Dataset.Wormhole.WormholeDatasetMetadata; + wormholeDatasetOperationalMetadata?: Com.Linkedin.Dataset.Wormhole.WormholeDatasetOperationalMetadata; + status?: Com.Linkedin.Common.Status; + platformNativeType?: 'TABLE' | 'VIEW' | 'DIRECTORY' | 'STREAM' | 'BUCKET'; + uri?: Com.Linkedin.Common.Uri; + tags: string[]; + properties?: { [id: string]: string }; + } + // Generated from: com/linkedin/dataset/DatasetClassification.pdsc + + export interface DatasetClassification { + connectionsOrFollowersOrFollowing?: boolean; + profile?: boolean; + messaging?: boolean; + thirdPartyIntegrationsInUse?: boolean; + activity?: boolean; + settings?: boolean; + jobApplicationFlow?: boolean; + enterpriseProduct?: boolean; + accountStatus?: boolean; + addressBookImports?: boolean; + microsoftData?: boolean; + subsidiaryData?: boolean; + otherThirdPartyIntegrations?: boolean; + device?: boolean; + searchHistory?: boolean; + courseViewingHistory?: boolean; + whoViewedMyProfile?: boolean; + profileViewsByMe?: boolean; + advertising?: boolean; + usageOrErrorOrConnectivity?: boolean; + otherClickstreamOrBrowsingData?: boolean; + employeeData?: boolean; + } + // Generated from: com/linkedin/dataset/DatasetDataOrigin.pdsc + + export interface DatasetDataOrigin { + dataOrigins: Array<{ + origin: Com.Linkedin.Common.FabricType; + displayTitle: string; + }>; + } + // Generated from: com/linkedin/dataset/DatasetDeprecation.pdsc + + export interface DatasetDeprecation { + deprecated: boolean; + decommissionTime?: number; + note: string; + actor?: string; + } + // Generated from: com/linkedin/dataset/DatasetFieldForeignKey.pdsc + + export interface DatasetFieldForeignKey { + parentDataset: string; + currentFieldPaths: SchemaFieldPath[]; + parentField: SchemaFieldPath; + } + // Generated from: com/linkedin/dataset/DatasetGroupRelation.pdsc + + export interface DatasetGroupRelation { + dataset: string; + group: string; + } + // Generated from: com/linkedin/dataset/DatasetKey.pdsc + + export interface DatasetKey { + platform: string; + name: string; + origin: Com.Linkedin.Common.FabricType; + } + // Generated from: com/linkedin/dataset/DatasetLineage.pdsc + + export interface DatasetLineage { + dataset: Dataset; + type: LineageType; + actor: string; + } + // Generated from: com/linkedin/dataset/DatasetLineageType.pdsc + + export type DatasetLineageType = 'COPY' | 'TRANSFORMED' | 'VIEW' | 'MANAGE'; + // Generated from: com/linkedin/dataset/DatasetMetadataHealth.pdsc + + export interface DatasetMetadataHealth { + score: number; + validations: Validation[]; + } + // Generated from: com/linkedin/dataset/DatasetProperties.pdsc + + export interface DatasetProperties { + description?: string; + uri?: Com.Linkedin.Common.Uri; + tags: string[]; + customProperties: { [id: string]: string }; + } + // Generated from: com/linkedin/dataset/DatasetRefresh.pdsc + + export interface DatasetRefresh { + lastRefresh: number; + } + // Generated from: com/linkedin/dataset/DeploymentInfo.pdsc + + export interface DeploymentInfo { + dataLocation: { + fabricGroup: Com.Linkedin.Common.FabricType; + fabric?: string; + cluster: string; + region?: string; + }; + additionalDeploymentInfo?: { [id: string]: string }; + } + // Generated from: com/linkedin/dataset/EnumType.pdsc + + export interface EnumType {} + // Generated from: com/linkedin/dataset/EspressoSchema.pdsc + + export interface EspressoSchema { + documentSchema: string; + tableSchema: string; + } + // Generated from: com/linkedin/dataset/ExportPolicy.pdsc + + export interface ExportPolicy { + containsUserGeneratedContent: boolean; + containsUserActionGeneratedContent: boolean; + containsUserDerivedContent: boolean; + dataset?: string; + version?: number; + created?: Com.Linkedin.Common.AuditStamp; + lastModified?: Com.Linkedin.Common.AuditStamp; + deleted?: Com.Linkedin.Common.AuditStamp; + } + // Generated from: com/linkedin/dataset/ExportPolicyKey.pdsc + + export interface ExportPolicyKey { + dataset: string; + version: number; + } + // Generated from: com/linkedin/dataset/FieldCompliance.pdsc + + export interface FieldCompliance extends SchemaFieldPaths { + dataType: ComplianceDataType; + fieldFormat?: FieldFormat; + valuePattern?: string; + nonOwner?: boolean; + purgeKey?: boolean; + securityClassification?: SecurityClassification; + providedByUser?: boolean; + containingPersonalData?: boolean; + readonly?: boolean; + } + // Generated from: com/linkedin/dataset/FieldFormat.pdsc + + export type FieldFormat = + | 'NUMERIC' + | 'URN' + | 'REVERSED_URN' + | 'COMPOSITE_URN' + | 'RAW' + | 'CUSTOM' + | 'ENCODED' + | 'HASHED'; + // Generated from: com/linkedin/dataset/FieldFormatWrapper.pdsc + + export interface FieldFormatWrapper { + type: FieldFormat; + } + // Generated from: com/linkedin/dataset/FixedType.pdsc + + export interface FixedType {} + // Generated from: com/linkedin/dataset/ForeignKeySpec.pdsc + + export interface ForeignKeySpec { + foreignKey: DatasetFieldForeignKey | UrnForeignKey; + } + // Generated from: com/linkedin/dataset/ForeignKeySpecName.pdsc + + export type ForeignKeySpecName = string; + // Generated from: com/linkedin/dataset/KafkaSchema.pdsc + + export interface KafkaSchema { + documentSchema: string; + } + // Generated from: com/linkedin/dataset/KeyValueSchema.pdsc + + export interface KeyValueSchema { + keySchema: string; + valueSchema: string; + } + // Generated from: com/linkedin/dataset/Lineage.pdsc + + export interface Lineage extends Com.Linkedin.Common.ChangeAuditStamps { + type: LineageType; + sourceDatasets: string[]; + destinationDatasets: string[]; + } + // Generated from: com/linkedin/dataset/LineageStreamType.pdsc + + export type LineageStreamType = 'UPSTREAM' | 'DOWNSTREAM'; + // Generated from: com/linkedin/dataset/LineageTree.pdsc + + export interface LineageTree { + urn: string; + subtrees: LineageTree[]; + } + // Generated from: com/linkedin/dataset/LineageType.pdsc + + export type LineageType = 'DIRECT_COPY' | 'TRANSFORMED' | 'VIEW' | 'MANAGE'; + // Generated from: com/linkedin/dataset/MapType.pdsc + + export interface MapType { + keyType?: string; + valueType?: string; + } + // Generated from: com/linkedin/dataset/MySqlDDL.pdsc + + export interface MySqlDDL { + tableSchema: string; + } + // Generated from: com/linkedin/dataset/NullType.pdsc + + export interface NullType {} + // Generated from: com/linkedin/dataset/NumberType.pdsc + + export interface NumberType {} + // Generated from: com/linkedin/dataset/OracleDDL.pdsc + + export interface OracleDDL { + tableSchema: string; + } + // Generated from: com/linkedin/dataset/OrcSchema.pdsc + + export interface OrcSchema { + orcSchema: string; + } + // Generated from: com/linkedin/dataset/OtherSchema.pdsc + + export interface OtherSchema { + rawSchema: string; + } + // Generated from: com/linkedin/dataset/Owner.pdsc + + export interface Owner { + owner: string; + ownerCategory: OwnerCategory; + ownershipProvider: OwnershipProvider; + sourceUrl?: string; + } + // Generated from: com/linkedin/dataset/OwnerCategory.pdsc + + export type OwnerCategory = 'DATA_OWNER' | 'PRODUCER' | 'DELEGATE' | 'STAKEHOLDER' | 'CONSUMER'; + // Generated from: com/linkedin/dataset/Ownership.pdsc + + export interface Ownership extends OwnershipKey, Com.Linkedin.Common.ChangeAuditStamps { + owners: Owner[]; + } + // Generated from: com/linkedin/dataset/OwnershipKey.pdsc + + export interface OwnershipKey { + dataset: string; + version: number; + } + // Generated from: com/linkedin/dataset/OwnershipProvider.pdsc + + export type OwnershipProvider = + | 'AUDIT' + | 'DATA_VAULT' + | 'DATABASE' + | 'FILE_SYSTEM' + | 'JIRA' + | 'NUAGE' + | 'OTHER' + | 'REVIEW_BOARD' + | 'SOS' + | 'SOURCE_CONTROL' + | 'USER_INTERFACE'; + // Generated from: com/linkedin/dataset/PrestoDDL.pdsc + + export interface PrestoDDL { + rawSchema: string; + } + // Generated from: com/linkedin/dataset/ProposedFieldCompliance.pdsc + + export interface ProposedFieldCompliance { + fieldPath: string; + proposedFieldCompliance: Array<{ + proposal: FieldCompliance; + previousProposal?: FieldCompliance; + created: Com.Linkedin.Common.AuditStamp; + previousDataType?: ComplianceDataType; + removal: boolean; + }>; + } + // Generated from: com/linkedin/dataset/RecordType.pdsc + + export interface RecordType {} + // Generated from: com/linkedin/dataset/ReplicationConfig.pdsc + + export interface ReplicationConfig { + gobblinConfig?: string; + } + // Generated from: com/linkedin/dataset/ResolvedOwner.pdsc + + export interface ResolvedOwner extends Owner { + name?: string; + email?: string; + active?: boolean; + } + // Generated from: com/linkedin/dataset/ResolvedOwnership.pdsc + + export interface ResolvedOwnership { + dataset: string; + lastModified: Com.Linkedin.Common.AuditStamp; + owners: ResolvedOwner[]; + } + // Generated from: com/linkedin/dataset/Retention.pdsc + + export interface Retention extends RetentionKey, Com.Linkedin.Common.ChangeAuditStamps { + purgeType: CompliancePurgeType; + purgeNote?: string; + } + // Generated from: com/linkedin/dataset/RetentionKey.pdsc + + export interface RetentionKey { + dataset: string; + version: number; + } + // Generated from: com/linkedin/dataset/RetentionPolicy.pdsc + + export interface RetentionPolicy { + purgeType: CompliancePurgeType; + purgeNote?: string; + lastModified?: Com.Linkedin.Common.AuditStamp; + } + // Generated from: com/linkedin/dataset/SchemaField.pdsc + + export interface SchemaField { + fieldPath: SchemaFieldPath; + jsonPath?: string; + nullable: boolean; + description?: string; + type: SchemaFieldDataType; + nativeDataType: string; + recursive: boolean; + } + // Generated from: com/linkedin/dataset/SchemaFieldDataType.pdsc + + export interface SchemaFieldDataType { + type: + | BooleanType + | FixedType + | StringType + | BytesType + | NumberType + | EnumType + | NullType + | MapType + | ArrayType + | UnionType + | RecordType; + } + // Generated from: com/linkedin/dataset/SchemaFieldPath.pdsc + + export type SchemaFieldPath = string; + // Generated from: com/linkedin/dataset/SchemaFieldPaths.pdsc + + export interface SchemaFieldPaths { + fieldPath: SchemaFieldPath; + pegasusFieldPath: SchemaFieldPath; + } + // Generated from: com/linkedin/dataset/Schemaless.pdsc + + export interface Schemaless {} + // Generated from: com/linkedin/dataset/SchemaMetadata.pdsc + + export interface SchemaMetadata extends SchemaMetadataKey, Com.Linkedin.Common.ChangeAuditStamps { + dataset?: string; + cluster?: string; + hash: string; + platformSchema: + | EspressoSchema + | OracleDDL + | MySqlDDL + | PrestoDDL + | KafkaSchema + | BinaryJsonSchema + | OrcSchema + | Schemaless + | KeyValueSchema + | OtherSchema; + fields: SchemaField[]; + primaryKeys?: SchemaFieldPath[]; + foreignKeysSpecs?: { [id: string]: ForeignKeySpec }; + } + // Generated from: com/linkedin/dataset/SchemaMetadataKey.pdsc + + export interface SchemaMetadataKey { + schemaName: string; + platform: string; + version: number; + } + // Generated from: com/linkedin/dataset/SearchRelevanceSignals.pdsc + + export interface SearchRelevanceSignals { + accessCount?: number; + } + // Generated from: com/linkedin/dataset/SecurityClassification.pdsc + + export type SecurityClassification = + | 'HIGHLY_CONFIDENTIAL' + | 'CONFIDENTIAL' + | 'LIMITED_DISTRIBUTION' + | 'GENERAL' + | 'PUBLIC'; + // Generated from: com/linkedin/dataset/StringType.pdsc + + export interface StringType {} + // Generated from: com/linkedin/dataset/SuggestedOwnership.pdsc + + export interface SuggestedOwnership extends SuggestedOwnershipKey, Com.Linkedin.Common.ChangeAuditStamps { + owners: Owner[]; + } + // Generated from: com/linkedin/dataset/SuggestedOwnershipKey.pdsc + + export interface SuggestedOwnershipKey { + dataset: string; + version: number; + } + // Generated from: com/linkedin/dataset/UnionType.pdsc + + export interface UnionType { + nestedTypes?: string[]; + } + // Generated from: com/linkedin/dataset/Upstream.pdsc + + export interface Upstream { + auditStamp: Com.Linkedin.Common.AuditStamp; + dataset: string; + type: DatasetLineageType; + dataJob?: Com.Linkedin.Common.DataJobRef; + } + // Generated from: com/linkedin/dataset/UpstreamLineage.pdsc + + export interface UpstreamLineage { + upstreams: Upstream[]; + } + // Generated from: com/linkedin/dataset/UpstreamLineageDelta.pdsc + + export interface UpstreamLineageDelta { + upstreamsToUpdate: Upstream[]; + } + // Generated from: com/linkedin/dataset/UrnForeignKey.pdsc + + export interface UrnForeignKey { + currentFieldPath: SchemaFieldPath; + } + // Generated from: com/linkedin/dataset/UserEditableDatasetProperties.pdsc + + export interface UserEditableDatasetProperties extends Com.Linkedin.Common.BaseUserEditableInfo {} + // Generated from: com/linkedin/dataset/UserEditableSchemaFieldInfo.pdsc + + export interface UserEditableSchemaFieldInfo extends SchemaFieldPaths { + description?: string; + } + // Generated from: com/linkedin/dataset/UserEditableSchemaInfo.pdsc + + export interface UserEditableSchemaInfo { + schemaFields: UserEditableSchemaFieldInfo[]; + created?: Com.Linkedin.Common.AuditStamp; + } + // Generated from: com/linkedin/dataset/Validation.pdsc + + export interface Validation { + tier: 'CRITICAL' | 'WARNING' | 'MINOR'; + score: number; + description?: string; + weight: number; + validator?: string; + } + namespace Datafidelity { + // Generated from: com/linkedin/dataset/datafidelity/DataFidelityAlertDetails.pdsc + + export interface DataFidelityAlertDetails { + alertInstanceId: number; + alertConfigurationId: number; + alertType: 'MISSING_PARTITION' | 'SLA_VIOLATION' | 'THRESHOLD_VIOLATION'; + alertMessage: string; + severity: 'LOW' | 'MEDIUM' | 'HIGH'; + created: Com.Linkedin.Common.AuditStamp; + ownedPerson: string; + } + // Generated from: com/linkedin/dataset/datafidelity/DataFidelityUsageStats.pdsc + + export interface DataFidelityUsageStats { + startAt: Com.Linkedin.Common.Time; + endAt: Com.Linkedin.Common.Time; + timeGranularity: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; + totalQueries: number; + totalUniqueUsers: number; + } + // Generated from: com/linkedin/dataset/datafidelity/DatasetInstanceAlert.pdsc + + export interface DatasetInstanceAlert { + alerts: DataFidelityAlertDetails[]; + latestAlerts: DataFidelityAlertDetails[]; + } + // Generated from: com/linkedin/dataset/datafidelity/DatasetInstanceStats.pdsc + + export interface DatasetInstanceStats { + numRows: number; + numFiles: number; + numBytes: number; + dailyUsageStats: DataFidelityUsageStats[]; + weeklyUsageStats: DataFidelityUsageStats[]; + createdAt: Com.Linkedin.Common.Time; + currentHighWatermark?: number; + highWatermarkColumn?: string; + } + // Generated from: com/linkedin/dataset/datafidelity/DatasetPartitionAlert.pdsc + + export interface DatasetPartitionAlert { + alerts: DataFidelityAlertDetails[]; + } + // Generated from: com/linkedin/dataset/datafidelity/DatasetPartitionStats.pdsc + + export interface DatasetPartitionStats { + numRows: number; + numFiles: number; + numBytes: number; + firstAvailableAt: Com.Linkedin.Common.Time; + lastAvailableAt: Com.Linkedin.Common.Time; + createdAt: Com.Linkedin.Common.Time; + } + } + namespace Datasentinel { + // Generated from: com/linkedin/dataset/datasentinel/CollectionEvaluationType.pdsc + + export type CollectionEvaluationType = 'ALL_TRUE' | 'ALL_FALSE' | 'ANY_TRUE' | 'ANY_FALSE'; + // Generated from: com/linkedin/dataset/datasentinel/ColumnDefinition.pdsc + + export interface ColumnDefinition { + definitionName: string; + columnPath: string; + udfPath: string; + sqlExpr: string; + computeQuantiles: boolean; + computeFrequentValues: boolean; + minFrequency: number; + explode: boolean; + pii: boolean; + groupByInfo: GroupByDefinition[]; + constraints: DataAssertion[]; + } + // Generated from: com/linkedin/dataset/datasentinel/DataAssertion.pdsc + + export interface DataAssertion { + dataAssertionName: string; + dataAssertionDescription: string; + consumerAssertion: boolean; + dataAssertionTags: string; + dataAssertionType: DataAssertionType; + dataAssertionParameters: DataAssertionParameter[]; + } + // Generated from: com/linkedin/dataset/datasentinel/DataAssertionParameter.pdsc + + export interface DataAssertionParameter { + dataAssertionParameterType: DataAssertionParameterType; + dataAssertionParameterValues: string[]; + groupByInfo: GroupByInfoDefinitionNameValuePair[]; + definitionMetricInfoValues: DefinitionMetricInfo[]; + elementInfo?: ElementInfo; + } + // Generated from: com/linkedin/dataset/datasentinel/DataAssertionParameterType.pdsc + + export type DataAssertionParameterType = + | 'DEFINITION_NAME' + | 'DEFINITION_METRIC' + | 'DEFINITION_METRIC_INFO' + | 'DEFINITION_VALUES' + | 'REGEX' + | 'IGNORE_CASE' + | 'NO_TRIM_SPACE' + | 'SIGNIFICANCE_LEVEL' + | 'LOWER_BOUND_FRACTION' + | 'UPPER_BOUND_FRACTION' + | 'LOWER_BOUND_OF_RANGE' + | 'UPPER_BOUND_OF_RANGE' + | 'DURATION_DAYS' + | 'DURATION_HOURS' + | 'IGNORE_DOCSTRINGS' + | 'NEGATE_ASSERTION' + | 'DISABLE_ASSERTION' + | 'DISABLE_ASSERTION_ON_VERSION_CHANGE' + | 'MAX_FAILURE_COUNT' + | 'MAX_FAILURE_FRACTION' + | 'ABORT_ON_FAILURE' + | 'ALERT_ON_FAILURE' + | 'SAMPLE_ON_FAILURE' + | 'TOP_MATCHES' + | 'INSPECT_ELEMENTS' + | 'ELEMENT_INFO' + | 'DISTRIBUTION_TEST' + | 'FAIL_ON_DEPRECATED_VALUES' + | 'IGNORE_NEW_VALUES' + | 'VALUE_COUNT_CHANGE_THRESHOLD' + | 'VALUE_COUNT_INCREASE_THRESHOLD' + | 'CHURN_THRESHOLD'; + // Generated from: com/linkedin/dataset/datasentinel/DataAssertionType.pdsc + + export type DataAssertionType = + | 'DEFINITION_ALL_TRUE' + | 'DEFINITION_NOT_ALL_TRUE' + | 'DEFINITION_ALL_FALSE' + | 'DEFINITION_NOT_ALL_FALSE' + | 'DEFINITION_ALL_NULLS' + | 'DEFINITION_NOT_ALL_NULLS' + | 'DEFINITION_EXCLUDE_NULLS' + | 'DEFINITION_VALUES_ARE_NUMERIC' + | 'DEFINITION_NOT_ALL_ZEROS' + | 'DEFINITION_NOT_ALL_POSITIVES' + | 'DEFINITION_NOT_ALL_NEGATIVES' + | 'DEFINITION_VALUES_IN_RANGE' + | 'DEFINITION_METRIC_IN_RANGE' + | 'DEFINITION_METRICS_RATIO_BOUNDED' + | 'DEFINITION_VALUES_ARE_DISTINCT' + | 'DEFINITION_VALUES_NOT_IDENTICAL' + | 'DEFINITION_MATCHES_REGEX' + | 'DEFINITION_DOES_NOT_MATCH_REGEX' + | 'DEFINITION_NOT_EMPTY' + | 'DEFINITION_NOT_ALL_EMPTY' + | 'DEFINITION_EXCLUDE_VALUES' + | 'DEFINITION_INCLUDE_VALUES' + | 'DEFINITION_ENUMERATE_VALUES' + | 'CHECK_DATASET_TIMESTAMP' + | 'COMPARE_SCHEMAS' + | 'COMPARE_RECORD_COUNTS' + | 'COMPARE_DATA_VOLUMES' + | 'COMPARE_DEFINITION_METRICS' + | 'COMPARE_DISTRIBUTIONS' + | 'COMPARE_FREQUENT_VALUES'; + // Generated from: com/linkedin/dataset/datasentinel/DataValidationConfig.pdsc + + export interface DataValidationConfig { + configName: string; + configVersion: string; + columnDefinitions: ColumnDefinition[]; + dataAssertions: DataAssertion[]; + sliceDefinitions: SliceDefinition[]; + } + // Generated from: com/linkedin/dataset/datasentinel/DefinitionMetricInfo.pdsc + + export interface DefinitionMetricInfo { + definitionName: string; + groupByInfo: GroupByInfoDefinitionNameValuePair[]; + definitionMetric: DefinitionMetricType; + } + // Generated from: com/linkedin/dataset/datasentinel/DefinitionMetricType.pdsc + + export type DefinitionMetricType = + | 'COUNT_DISTINCT' + | 'COUNT_EMPTY' + | 'COUNT_FALSE' + | 'COUNT_NEGATIVE' + | 'COUNT_NOTNULL' + | 'COUNT_NULL' + | 'COUNT_NUMERIC' + | 'COUNT_POSITIVE' + | 'COUNT_TOTAL' + | 'COUNT_TRUE' + | 'COUNT_ZERO' + | 'MIN' + | 'MAX' + | 'MEAN' + | 'STD_DEV' + | 'SKEWNESS' + | 'KURTOSIS' + | 'SUM' + | 'MEDIAN' + | 'PERCENTILE_99_5' + | 'PERCENTILE_99' + | 'PERCENTILE_95' + | 'PERCENTILE_90' + | 'PERCENTILE_75' + | 'PERCENTILE_25' + | 'IQR' + | 'MAD'; + // Generated from: com/linkedin/dataset/datasentinel/ElementInfo.pdsc + + export interface ElementInfo { + collectionEvaluation: CollectionEvaluationType; + elementColumnPath: string; + } + // Generated from: com/linkedin/dataset/datasentinel/GroupByDefinition.pdsc + + export interface GroupByDefinition { + definitionName: string; + definitionValues: string[]; + } + // Generated from: com/linkedin/dataset/datasentinel/GroupByInfoDefinitionNameValuePair.pdsc + + export interface GroupByInfoDefinitionNameValuePair { + definitionName: string; + definitionValue: string; + } + // Generated from: com/linkedin/dataset/datasentinel/SliceDefinition.pdsc + + export interface SliceDefinition { + sliceName: string; + udfPath: string; + sqlExpr: string; + } + } + namespace Ump { + // Generated from: com/linkedin/dataset/ump/ArtifactACL.pdsc + + export interface ArtifactACL { + preApproved: string[]; + prod: string[]; + } + // Generated from: com/linkedin/dataset/ump/Attribute.pdsc + + export interface Attribute extends Com.Linkedin.Metric.Ump.MetricColumnInfo { + category: string; + } + // Generated from: com/linkedin/dataset/ump/DimensionProperties.pdsc + + export interface DimensionProperties extends Com.Linkedin.Metric.Ump.MetricColumnInfo { + freq: Com.Linkedin.Metric.MetricFrequencyType; + } + // Generated from: com/linkedin/dataset/ump/DownstreamAppData.pdsc + + export interface DownstreamAppData { + downstreamAppName: Com.Linkedin.Metric.Ump.MetricDownstreamAppType; + downstreamContext: UMPDatasetDownstreamAppInfo; + } + // Generated from: com/linkedin/dataset/ump/LocationProperties.pdsc + + export interface LocationProperties { + platform: string; + dataset: string; + datasetUrn: string; + cluster?: Com.Linkedin.Common.HadoopClusterType; + fabric?: Com.Linkedin.Common.FabricType; + retention: string; + frequency: Com.Linkedin.Metric.MetricFrequencyType; + } + // Generated from: com/linkedin/dataset/ump/ScheduleProperties.pdsc + + export interface ScheduleProperties { + value: string; + cluster: Com.Linkedin.Common.HadoopClusterType; + } + // Generated from: com/linkedin/dataset/ump/SourceInfo.pdsc + + export interface SourceInfo { + name: string; + path: string; + platform: string; + datasetUrn: string; + frequency: Com.Linkedin.Metric.MetricFrequencyType; + cluster?: Com.Linkedin.Common.HadoopClusterType; + fabric?: Com.Linkedin.Common.FabricType; + range: number; + metaHiveTable?: string; + window: number; + } + // Generated from: com/linkedin/dataset/ump/UMPDataInput.pdsc + + export interface UMPDataInput { + sources: SourceInfo[]; + } + // Generated from: com/linkedin/dataset/ump/UMPDatasetAzkabanFlowInfo.pdsc + + export interface UMPDatasetAzkabanFlowInfo { + workflowUrl: string; + projectName: string; + } + // Generated from: com/linkedin/dataset/ump/UMPDatasetAzkabanFlowType.pdsc + + export type UMPDatasetAzkabanFlowType = 'PRODUCTION' | 'BACKFILL'; + // Generated from: com/linkedin/dataset/ump/UMPDatasetDownstreamAppInfo.pdsc + + export interface UMPDatasetDownstreamAppInfo { + params?: { [id: string]: string | number }; + attributes?: string[]; + topKDimensions?: { [id: string]: UMPTopKMetric[] }; + topKThresholdMetrics?: UMPTopKMetric[]; + disabledMetrics?: string[]; + dimensionValues?: { [id: string]: string[] }; + thirdEye?: boolean; + groupingSets?: Array; + rollUps?: Array; + voldemortBNPJobs?: UMPDatasetVoldemortBNPJob[]; + nonAdditiveCubeFilters?: { [id: string]: string }; + } + // Generated from: com/linkedin/dataset/ump/UMPDatasetExecutionFlowData.pdsc + + export interface UMPDatasetExecutionFlowData { + flowType: UMPDatasetAzkabanFlowType; + flowURLs: UMPDatasetAzkabanFlowInfo[]; + } + // Generated from: com/linkedin/dataset/ump/UMPDatasetProperties.pdsc + + export interface UMPDatasetProperties { + name: string; + description: string; + bucket: string; + domain: string; + tags: string[]; + datasetClassifications: string[]; + timeSeries: boolean; + schedules: ScheduleProperties[]; + downstreamApps: DownstreamAppData[]; + metrics: string[]; + frequency: Com.Linkedin.Metric.MetricFrequencyType[]; + highPriority: boolean; + dataLocations: LocationProperties[]; + dataInput?: UMPDataInput; + dimensions: DimensionProperties[]; + code: Com.Linkedin.Metric.Ump.UMPMetricCode; + executionFlows: UMPDatasetExecutionFlowData[]; + enabled: boolean; + artifactACL?: ArtifactACL; + outputTimezone?: string; + attributes?: Attribute[]; + timestampColumn?: string; + } + // Generated from: com/linkedin/dataset/ump/UMPDatasetVoldemortBNPJob.pdsc + + export interface UMPDatasetVoldemortBNPJob { + name: string; + dataFile: string; + avroKeyField: string; + avroValueField: string; + pushCluster: string; + pushStoreName: string; + pushStoreDesc: string; + pushStoreOwners: string; + } + // Generated from: com/linkedin/dataset/ump/UMPTopKMetric.pdsc + + export interface UMPTopKMetric { + metric: string; + value: string; + } + } + namespace Wormhole { + // Generated from: com/linkedin/dataset/wormhole/WormholeDataBundleInstance.pdsc + + export interface WormholeDataBundleInstance { + location: WormholePhysicalLocation; + storageIdentifiers: WormholeStoredFileIdentifier[]; + createdAt: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/dataset/wormhole/WormholeDataBundleInstances.pdsc + + export type WormholeDataBundleInstances = WormholeDataBundleInstance[]; + // Generated from: com/linkedin/dataset/wormhole/WormholeDatasetMetadata.pdsc + + export interface WormholeDatasetMetadata { + storageBackend: WormholeStorageBackend; + sourceOfTruth: WormholeLocation; + retentionTime: number; + retentionCount: number; + versionScheme: WormholeVersionScheme; + targetLocations: WormholeLocation[]; + tags: { [id: string]: string }; + } + // Generated from: com/linkedin/dataset/wormhole/WormholeDatasetOperationalMetadata.pdsc + + export interface WormholeDatasetOperationalMetadata { + activeVersionInformation: { + [id: string]: WormholeDataBundleInstances; + }; + } + // Generated from: com/linkedin/dataset/wormhole/WormholeLocation.pdsc + + export type WormholeLocation = + | 'LVA1_PROD' + | 'LSG1_PROD' + | 'LTX1_PROD' + | 'LOR1_PROD' + | 'OFFLINE_PROD' + | 'ONLINE_PROD_ALL' + | 'ALL_PROD' + | 'HOLDEM' + | 'OFFLINE_EI' + | 'ONLINE_EI_ALL' + | 'ALL_EI' + | 'OFFLINE_CORP' + | 'ONLINE_CORP_ALL' + | 'ALL_CORP'; + // Generated from: com/linkedin/dataset/wormhole/WormholeNamespaceMetadata.pdsc + + export interface WormholeNamespaceMetadata { + defaultDatasetMetadata: WormholeDatasetMetadata; + datasets: string[]; + } + // Generated from: com/linkedin/dataset/wormhole/WormholePhysicalLocation.pdsc + + export type WormholePhysicalLocation = + | 'LVA1_WAR_PROD' + | 'LVA1_SNAP_PROD' + | 'LSG1_TWIST_PROD' + | 'LTX1_LASSO_PROD' + | 'LOR1_LOOP_PROD' + | 'LTX1_FARO_EI' + | 'LTX1_HOLDEM' + | 'LVA1_AMBRY_PROD' + | 'LTX1_AMBRY_PROD' + | 'LSG1_AMBRY_PROD' + | 'LOR1_AMBRY_PROD' + | 'LTX1_AMBRY_CORP' + | 'LTX1_AMBRY_EI'; + // Generated from: com/linkedin/dataset/wormhole/WormholeStorageBackend.pdsc + + export type WormholeStorageBackend = 'HDFS' | 'AMBRY'; + // Generated from: com/linkedin/dataset/wormhole/WormholeStoredFileIdentifier.pdsc + + export interface WormholeStoredFileIdentifier { + relativeFilePath: string; + storageIdentifier: Com.Linkedin.Common.Uri; + } + // Generated from: com/linkedin/dataset/wormhole/WormholeVersionScheme.pdsc + + export type WormholeVersionScheme = 'TIMESTAMP' | 'MONOTONIC'; + } + } + namespace DatasetAccessGroup { + // Generated from: com/linkedin/datasetAccessGroup/ActionMetadata.pdsc + + export interface ActionMetadata { + requestors: string[]; + approvers: string[]; + jiraTicketId?: string; + } + // Generated from: com/linkedin/datasetAccessGroup/CorpGroupMap.pdsc + + export interface CorpGroupMap { + addCorpGroupActions: MapCorpGroupAction[]; + removeCorpGroupActions: MapCorpGroupAction[]; + } + // Generated from: com/linkedin/datasetAccessGroup/CorpGroupMapDelta.pdsc + + export interface CorpGroupMapDelta extends ActionMetadata { + corpGroupsToAdd: string[]; + corpGroupsToRemove: string[]; + } + // Generated from: com/linkedin/datasetAccessGroup/DatasetAccessGroup.pdsc + + export interface DatasetAccessGroup { + id: number; + datasetAccessGroupInfo: DatasetAccessGroupInfo; + datasetAccessGroupMembership: DatasetAccessGroupMembership; + corpGroupMap: CorpGroupMap; + } + // Generated from: com/linkedin/datasetAccessGroup/DatasetAccessGroupInfo.pdsc + + export interface DatasetAccessGroupInfo { + name: string; + purpose: string; + admins: string[]; + dataType: 'MEMBER' | 'EMPLOYEE' | 'FINANCIAL' | 'CUSTOMER' | 'LINKEDIN' | 'OTHER'; + dataClassification: Com.Linkedin.Dataset.SecurityClassification; + notes?: string; + } + // Generated from: com/linkedin/datasetAccessGroup/DatasetAccessGroupKey.pdsc + + export interface DatasetAccessGroupKey { + datasetAccessGroupId: number; + } + // Generated from: com/linkedin/datasetAccessGroup/DatasetAccessGroupMembership.pdsc + + export interface DatasetAccessGroupMembership { + addDatasetActions: MapDatasetAction[]; + removeDatasetActions: MapDatasetAction[]; + } + // Generated from: com/linkedin/datasetAccessGroup/DatasetAccessGroupMembershipDelta.pdsc + + export interface DatasetAccessGroupMembershipDelta extends ActionMetadata { + datasetsToAdd: string[]; + datasetsToRemove: string[]; + } + // Generated from: com/linkedin/datasetAccessGroup/MapCorpGroupAction.pdsc + + export interface MapCorpGroupAction extends ActionMetadata { + corpGroup: string; + } + // Generated from: com/linkedin/datasetAccessGroup/MapDatasetAction.pdsc + + export interface MapDatasetAction extends ActionMetadata { + dataset: string; + } + } + namespace DatasetGroup { + // Generated from: com/linkedin/datasetGroup/DatasetGroup.pdsc + + export interface DatasetGroup { + namespace: string; + name: string; + info?: DatasetGroupInfo; + membership?: DatasetGroupMembership; + } + // Generated from: com/linkedin/datasetGroup/DatasetGroupInfo.pdsc + + export interface DatasetGroupInfo { + purpose: string; + contact: string; + } + // Generated from: com/linkedin/datasetGroup/DatasetGroupKey.pdsc + + export interface DatasetGroupKey { + namespace: string; + name: string; + } + // Generated from: com/linkedin/datasetGroup/DatasetGroupMembership.pdsc + + export interface DatasetGroupMembership { + datasets: string[]; + } + // Generated from: com/linkedin/datasetGroup/MembershipDelta.pdsc + + export interface MembershipDelta { + membersToAdd: string[]; + membersToRemove: string[]; + } + } + namespace DatasetInstance { + // Generated from: com/linkedin/datasetInstance/DatasetInstance.pdsc + + export interface DatasetInstance { + dataset: string; + name: string; + status?: Com.Linkedin.Common.Status; + observedSchemaDefinition?: Com.Linkedin.Schema.ObservedSchemaDefinition; + } + // Generated from: com/linkedin/datasetInstance/DatasetInstanceKey.pdsc + + export interface DatasetInstanceKey { + name: string; + } + namespace Etl { + // Generated from: com/linkedin/datasetInstance/etl/ETLDatasetInstanceConfig.pdsc + + export interface ETLDatasetInstanceConfig { + integrityConstraints?: IntegrityConstraints; + retentionPeriod?: RetentionPeriod; + } + // Generated from: com/linkedin/datasetInstance/etl/ETLPipelines.pdsc + + export interface ETLPipelines { + association: string; + source: boolean; + pipelines: Com.Linkedin.Common.DataJobRef[]; + } + // Generated from: com/linkedin/datasetInstance/etl/ETLPipelineScopedConfig.pdsc + + export interface ETLPipelineScopedConfig { + pipeline: Com.Linkedin.Common.DataJobRef; + configuration: ETLDatasetInstanceConfig; + } + // Generated from: com/linkedin/datasetInstance/etl/ETLPipelineScopedConfigs.pdsc + + export interface ETLPipelineScopedConfigs { + scopedConfigs: ETLPipelineScopedConfig[]; + } + // Generated from: com/linkedin/datasetInstance/etl/ETLPipelineScopedDatasetInstanceConfig.pdsc + + export interface ETLPipelineScopedDatasetInstanceConfig { + configuration: { [id: string]: ETLDatasetInstanceConfig }; + } + // Generated from: com/linkedin/datasetInstance/etl/IngressETLPipelines.pdsc + + export interface IngressETLPipelines { + sourceDatasetInstance: string; + pipelines: Com.Linkedin.Common.DataJobRef[]; + } + // Generated from: com/linkedin/datasetInstance/etl/IntegrityConstraints.pdsc + + export interface IntegrityConstraints { + pkColumnNames: string[]; + deltaColumnName: string; + } + // Generated from: com/linkedin/datasetInstance/etl/RetentionPeriod.pdsc + + export interface RetentionPeriod { + years: number; + months: number; + days: number; + hours: number; + } + } + namespace Wimd { + // Generated from: com/linkedin/datasetInstance/wimd/DatasetPartitionReport.pdsc + + export interface DatasetPartitionReport { + datasetPartition: string; + wimdURL: Com.Linkedin.Common.Url; + createdAt: Com.Linkedin.Common.Time; + version: number; + availabilityStatus: PartitionAvailabilityStatus; + publisher: Com.Linkedin.Avro2pegasus.Events.Common.Datamonitor.PlatformName; + } + // Generated from: com/linkedin/datasetInstance/wimd/PartitionAvailabilityStatus.pdsc + + export type PartitionAvailabilityStatus = 'NOT_PUBLISHED' | 'PUBLISHED' | 'REMOVED'; + // Generated from: com/linkedin/datasetInstance/wimd/WIMDMetric.pdsc + + export interface WIMDMetric { + freshness?: number; + lastPublishedAt: Com.Linkedin.Common.Time; + partitionReports: DatasetPartitionReport[]; + wimdURL: Com.Linkedin.Common.Url; + } + // Generated from: com/linkedin/datasetInstance/wimd/WIMDReport.pdsc + + export interface WIMDReport { + hourlyMetric?: WIMDMetric; + dailyMetric?: WIMDMetric; + weeklyMetric?: WIMDMetric; + biWeeklyMetric?: WIMDMetric; + monthlyMetric?: WIMDMetric; + } + } + } + namespace DatasetPartition { + // Generated from: com/linkedin/datasetPartition/DatasetPartition.pdsc + + export interface DatasetPartition { + instance: string; + name: string; + } + // Generated from: com/linkedin/datasetPartition/DatasetPartitionDetails.pdsc + + export interface DatasetPartitionDetails { + fullPath: string; + matchedPattern?: string; + datasetPartitionType: DatasetPartitionType; + datasetPartitionTypeExplaination?: string; + startTime?: string; + endTime?: string; + startTimeFormat?: string; + endTimeFormat?: string; + } + // Generated from: com/linkedin/datasetPartition/DatasetPartitionKey.pdsc + + export interface DatasetPartitionKey { + name: string; + } + // Generated from: com/linkedin/datasetPartition/DatasetPartitionType.pdsc + + export type DatasetPartitionType = + | 'SNAPSHOT' + | 'MONTHLY' + | 'WEEKLY' + | 'DAILY' + | 'HOURLY' + | 'HOURLY_DEDUPED' + | 'MINUTELY' + | 'OTHER'; + namespace Datasentinel { + // Generated from: com/linkedin/datasetPartition/datasentinel/AssertionValue.pdsc + + export type AssertionValue = 'FAIL' | 'PASS' | 'UNKNOWN'; + // Generated from: com/linkedin/datasetPartition/datasentinel/DataAssertionEvaluationDetails.pdsc + + export interface DataAssertionEvaluationDetails { + assertionSummary: string; + outcomeSummary: string; + baseValue: string; + baseDescription: string; + failureValue: string; + failureDescription: string; + actualValue: string; + actualDescription: string; + percentageChange: string; + percentageChangeDescription: string; + thresholdValue: string; + thresholdDescription: string; + deprecatedValues: LMSValueInfo[]; + newValues: LMSValueInfo[]; + decreasedValues: LMSValueInfo[]; + increasedValues: LMSValueInfo[]; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/DataAssertionResult.pdsc + + export interface DataAssertionResult { + dataAssertion: Com.Linkedin.Dataset.Datasentinel.DataAssertion; + outcome: AssertionValue; + evaluationDetails: DataAssertionEvaluationDetails; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/DataAssertionResultsSummary.pdsc + + export interface DataAssertionResultsSummary { + numberAssertionsPassed: number; + numberAssertionsFailed: number; + numberAssertionsFailedWithSampleOnFailure: number; + numberAssertionsFailedWithAbortOnFailure: number; + numberAssertionsFailedWithAlertOnFailure: number; + numberAssertionsUnknown: number; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/DataFormat.pdsc + + export type DataFormat = 'AVRO' | 'ORC' | 'DALI'; + // Generated from: com/linkedin/datasetPartition/datasentinel/DatasetMetric.pdsc + + export interface DatasetMetric { + metricType: DatasetMetricType; + metricValue: string; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/DatasetMetricType.pdsc + + export type DatasetMetricType = 'RECORD_COUNT' | 'DATA_VOLUME'; + // Generated from: com/linkedin/datasetPartition/datasentinel/DatasetProfile.pdsc + + export interface DatasetProfile { + dataSentinelVersion: string; + dataSentinelProfileVersion: string; + datasetVersion: string; + profilePath: string; + datasetPathOriginal: string; + datasetPath: string; + workflowDetails: WorkflowDetails; + dataSpecificationConfig: DataSpecificationConfig; + datasetTimestamp: number; + schemaString: string; + dataValidationConfig: Com.Linkedin.Dataset.Datasentinel.DataValidationConfig; + sliceName: string; + groupBySummary: GroupBySummary[]; + datasetMetrics: DatasetMetric[]; + definitionMetrics: DefinitionMetric[]; + definitionValuesMetrics: DefinitionValuesMetric[]; + numericFeatureMetrics: FeatureMetric[]; + specifiedCategoricalFeatureMetrics: FeatureMetric[]; + lowCardinalityCategoricalFeatureMetrics: FeatureMetric[]; + highCardinalityCategoricalFeatureMetrics: FeatureMetric[]; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/DataSpecificationConfig.pdsc + + export interface DataSpecificationConfig { + dataFormat: DataFormat; + timePeriod: TimePeriod; + dateTimeStart: string; + dateTimeEnd: string; + daliFilterExp: string; + daliDatepartitionColumn: string; + daliDatepartitionFormat: string; + samplePercent: number; + sampleSeed: number; + newDataFlexibleFormat: { [id: string]: string }; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/DataValidationReport.pdsc + + export interface DataValidationReport { + dataSentinelVersion: string; + dataSentinelReportVersion: string; + datasetVersion: string; + reportSummary: DataAssertionResultsSummary; + dataValidationConfig: Com.Linkedin.Dataset.Datasentinel.DataValidationConfig; + sliceName: string; + groupBySummary: GroupBySummary[]; + priorProfilePath: string; + newDataPathOriginal: string; + newDataPath: string; + workflowDetails: WorkflowDetails; + dataSpecificationConfig: DataSpecificationConfig; + dataAssertionResults: DataAssertionResult[]; + failureSamplesPath: string; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/DataValidationReports.pdsc + + export interface DataValidationReports { + dataValidationReports: DataValidationReport[]; + dssExecutionURL?: string; + dssDatasetURL?: string; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/DefinitionMetric.pdsc + + export interface DefinitionMetric { + definitionName: string; + groupByInfo: Com.Linkedin.Dataset.Datasentinel.GroupByInfoDefinitionNameValuePair[]; + metricType: Com.Linkedin.Dataset.Datasentinel.DefinitionMetricType; + metricValue: string; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/DefinitionMetricParameterType.pdsc + + export type DefinitionMetricParameterType = 'TOP_VALUES_COUNT' | 'QUANTILES_COUNT'; + // Generated from: com/linkedin/datasetPartition/datasentinel/DefinitionMultiValuedMetric.pdsc + + export interface DefinitionMultiValuedMetric { + value: string; + count: string; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/DefinitionMultiValuedMetricType.pdsc + + export type DefinitionMultiValuedMetricType = 'TOP_VALUES_BY_COUNT' | 'QUANTILES'; + // Generated from: com/linkedin/datasetPartition/datasentinel/DefinitionValuesMetric.pdsc + + export interface DefinitionValuesMetric { + definitionName: string; + metricType: DefinitionMultiValuedMetricType; + metricParameterType: DefinitionMetricParameterType; + metricParameterValues: string[]; + metricValues: DefinitionMultiValuedMetric[]; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/FeatureMetric.pdsc + + export interface FeatureMetric { + featureName: string; + term: string; + metricType: FeatureMetricType; + metricValue: string; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/FeatureMetricType.pdsc + + export type FeatureMetricType = + | 'COUNT_DISTINCT_TERM' + | 'COUNT_FEATURE' + | 'COUNT_RATIO_TERM' + | 'COUNT_RATIO_TOP_K_TERM' + | 'COUNT_TERM' + | 'COUNT_TOP_K_TERM' + | 'MAX' + | 'MEAN' + | 'MIN' + | 'PERCENTILE_25' + | 'PERCENTILE_50' + | 'PERCENTILE_75' + | 'PERCENTILE_90' + | 'PERCENTILE_95' + | 'PERCENTILE_99' + | 'STD_DEV'; + // Generated from: com/linkedin/datasetPartition/datasentinel/GroupBySummary.pdsc + + export interface GroupBySummary { + definitionName: string; + groupByInfo: Com.Linkedin.Dataset.Datasentinel.GroupByDefinition[]; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/LMSValueInfo.pdsc + + export interface LMSValueInfo { + value: string; + priorCount: string; + newCount: string; + percentThreshold: string; + } + // Generated from: com/linkedin/datasetPartition/datasentinel/TimePeriod.pdsc + + export type TimePeriod = 'DAILY' | 'HOURLY'; + // Generated from: com/linkedin/datasetPartition/datasentinel/WorkflowDetails.pdsc + + export interface WorkflowDetails { + dataCenter: string; + cluster: string; + gateway: string; + projectName: string; + parentWorkflowName: string; + dataSentinelWorkflowName: string; + jobExecutionUrl: string; + } + } + } + namespace Experiments { + // Generated from: com/linkedin/experiments/ExperimentAlertSubscription.pdsc + + export interface ExperimentAlertSubscription { + lastModified: Com.Linkedin.Common.AuditStamp; + subscriber: { corpGroupUrn: string } | { corpUserUrn: string }; + alertType: string; + alertFrequency: 'ASAP' | 'HOURLY' | 'DAILY' | 'WEEKLY' | 'QUARTERLY'; + active?: boolean; + expiresAt?: Com.Linkedin.Common.Time; + lixTestUrn?: string; + metricSubscription?: { + dataset: string; + metric: string; + trexMetricDimension?: { + name: string; + value: string; + }; + thresholds?: { + maxPValue?: number; + minAbsoluteLift?: number; + minAbsoluteSitewideImpact?: number; + minAbsoluteRealizedImpact?: number; + minRampAllocation?: number; + minActiveDays?: number; + minModelScore?: number; + }; + }; + } + } + namespace Feature { + // Generated from: com/linkedin/feature/FeatureKey.pdsc + + export interface FeatureKey { + namespace: string; + name: string; + } + // Generated from: com/linkedin/feature/FeatureKeys.pdsc + + export type FeatureKeys = FeatureKey[]; + // Generated from: com/linkedin/feature/FeatureKeySnapshotMap.pdsc + + export type FeatureKeySnapshotMap = { + [id: string]: Com.Linkedin.Metadata.Snapshot.FeatureSnapshot; + }; + // Generated from: com/linkedin/feature/FrameFeatureInferences.pdsc + + export type FrameFeatureInferences = Com.Linkedin.Feature.Frame.FrameFeatureInferenceInfo[]; + namespace Frame { + // Generated from: com/linkedin/feature/frame/AvailabilityEnvironmentType.pdsc + + export type AvailabilityEnvironmentType = 'ONLINE' | 'OFFLINE' | 'NEARLINE'; + // Generated from: com/linkedin/feature/frame/AvailabilityInfo.pdsc + + export interface AvailabilityInfo { + environment: AvailabilityEnvironmentType; + fabric: Com.Linkedin.Common.FabricType; + } + // Generated from: com/linkedin/feature/frame/EspressoSourceProperties.pdsc + + export interface EspressoSourceProperties { + database: string; + table: string; + d2Uri: string; + } + // Generated from: com/linkedin/feature/frame/FeatureAggregationType.pdsc + + export type FeatureAggregationType = 'AVG' | 'COUNT' | 'LATEST' | 'MAX' | 'SUM' | 'TIMESINCE'; + // Generated from: com/linkedin/feature/frame/FeatureInferType.pdsc + + export type FeatureInferType = 'FACT' | 'INFERRED'; + // Generated from: com/linkedin/feature/frame/FeatureMultiproductInfo.pdsc + + export interface FeatureMultiproductInfo { + multiproduct: string; + name: string; + version: string; + offlineModuleName?: string; + onlineModuleName?: string; + } + // Generated from: com/linkedin/feature/frame/FeatureStatusType.pdsc + + export type FeatureStatusType = 'PUBLISHED' | 'UNPUBLISHED' | 'DELETED' | 'HIDDEN' | 'INCOMPLETE'; + // Generated from: com/linkedin/feature/frame/FeatureTierType.pdsc + + export type FeatureTierType = 'DEPRECATED' | 'PRIVATE' | 'PUBLIC' | 'PUBLIC_PRODUCTION'; + // Generated from: com/linkedin/feature/frame/FrameAnchorConfig.pdsc + + export interface FrameAnchorConfig { + name: string; + source: FrameSourceConfig; + key?: string | string[]; + extractor?: string; + availability: AvailabilityInfo; + } + // Generated from: com/linkedin/feature/frame/FrameDerivedFeatureConfig.pdsc + + export interface FrameDerivedFeatureConfig extends FrameFeatureCommonConfig { + key?: string | string[]; + inputs?: Array<{ + name: string; + key: string | string[]; + feature: string; + }>; + baseFeatures: string[]; + } + // Generated from: com/linkedin/feature/frame/FrameFeatureAvailabilityConfig.pdsc + + export interface FrameFeatureAvailabilityConfig { + availability: AvailabilityInfo[]; + } + // Generated from: com/linkedin/feature/frame/FrameFeatureBaseEntity.pdsc + + export type FrameFeatureBaseEntity = string; + // Generated from: com/linkedin/feature/frame/FrameFeatureCategory.pdsc + + export type FrameFeatureCategory = string; + // Generated from: com/linkedin/feature/frame/FrameFeatureClassification.pdsc + + export type FrameFeatureClassification = string; + // Generated from: com/linkedin/feature/frame/FrameFeatureCommonConfig.pdsc + + export interface FrameFeatureCommonConfig { + namespace: string; + name: string; + expression?: string; + type?: FrameFeatureType; + multiproductInfo?: FeatureMultiproductInfo; + globalProperties: FrameGlobalProperties; + } + // Generated from: com/linkedin/feature/frame/FrameFeatureConfig.pdsc + + export interface FrameFeatureConfig extends FrameFeatureCommonConfig { + udf?: string; + anchors: FrameAnchorConfig[]; + defaultValue?: string | number | number | number | number | string[] | { [id: string]: string }; + slidingWindowAggregationInfo?: FrameSlidingWindowAggregationInfo; + } + // Generated from: com/linkedin/feature/frame/FrameFeatureEditableConfig.pdsc + + export interface FrameFeatureEditableConfig { + description?: string; + documentationLink?: string; + category?: FrameFeatureCategory; + baseEntity?: FrameFeatureBaseEntity; + classification?: FrameFeatureClassification; + inferType?: FeatureInferType; + } + // Generated from: com/linkedin/feature/frame/FrameFeatureInferenceInfo.pdsc + + export interface FrameFeatureInferenceInfo { + name: string; + multiproduct: string; + inferenceName: string; + inferenceDescription: string; + exportModes: Array<'EATIN' | 'TAKEOUT' | 'TIER3'>; + valueExportable: boolean; + } + // Generated from: com/linkedin/feature/frame/FrameFeatureStatusConfig.pdsc + + export interface FrameFeatureStatusConfig { + status: FeatureStatusType; + } + // Generated from: com/linkedin/feature/frame/FrameFeatureTierConfig.pdsc + + export interface FrameFeatureTierConfig { + tier: FeatureTierType; + } + // Generated from: com/linkedin/feature/frame/FrameFeatureType.pdsc + + export type FrameFeatureType = 'CATEGORICAL' | 'CATEGORICAL_SET' | 'TERM_VECTOR' | 'NUMERIC' | 'DENSE_VECTOR'; + // Generated from: com/linkedin/feature/frame/FrameFeatureUsageInfo.pdsc + + export interface FrameFeatureUsageInfo { + mpUsageCount: number; + usageMPnames: string[]; + timestamp: Com.Linkedin.Common.AuditStamp; + } + // Generated from: com/linkedin/feature/frame/FrameGlobalProperties.pdsc + + export interface FrameGlobalProperties { + strictMode: boolean; + } + // Generated from: com/linkedin/feature/frame/FrameSlidingWindowAggregationInfo.pdsc + + export interface FrameSlidingWindowAggregationInfo { + aggregation: FeatureAggregationType; + window: string; + filter?: string; + groupBy?: string; + limit?: number; + } + // Generated from: com/linkedin/feature/frame/FrameSourceConfig.pdsc + + export interface FrameSourceConfig { + name: string; + type: FrameSourceType; + datasetUrn?: string; + properties: FrameSourceProperties; + } + // Generated from: com/linkedin/feature/frame/FrameSourceProperties.pdsc + + export type FrameSourceProperties = + | HDFSSourceProperties + | EspressoSourceProperties + | VoldemortSourceProperties + | RestliSourceProperties + | VeniceSourceProperties + | PassthroughSourceProperties; + // Generated from: com/linkedin/feature/frame/FrameSourceType.pdsc + + export type FrameSourceType = 'HDFS' | 'ESPRESSO' | 'VOLDEMORT' | 'RESTLI' | 'VENICE' | 'PASSTHROUGH'; + // Generated from: com/linkedin/feature/frame/HDFSSourceProperties.pdsc + + export interface HDFSSourceProperties { + path: string; + extraParameters?: { [id: string]: string | string[] }; + timeseries: boolean; + timestamp?: string; + timestampFormat?: string; + hasTimeSnapshot: boolean; + } + // Generated from: com/linkedin/feature/frame/PassthroughSourceProperties.pdsc + + export interface PassthroughSourceProperties { + dataModel?: string; + } + // Generated from: com/linkedin/feature/frame/RestliSourceProperties.pdsc + + export interface RestliSourceProperties { + restResourceName: string; + keyExpression: string; + pathSpec: string; + restRequestParams: { + [id: string]: string | string[] | { [id: string]: string }; + }; + } + // Generated from: com/linkedin/feature/frame/VeniceSourceProperties.pdsc + + export interface VeniceSourceProperties { + storeName: string; + keyExpression: string; + } + // Generated from: com/linkedin/feature/frame/VoldemortSourceProperties.pdsc + + export interface VoldemortSourceProperties { + storeName: string; + keyExpression: string; + bootstrapUrl: string; + } + } + } + namespace Grid { + // Generated from: com/linkedin/grid/BaseContainerisedExecutionInfo.pdsc + + export interface BaseContainerisedExecutionInfo { + cluster: string; + executionType: string; + queue: string; + containerOrchestrator: string; + } + // Generated from: com/linkedin/grid/JobExecutionInfo.pdsc + + export interface JobExecutionInfo extends WorkflowExecutionInfo { + jobId: string; + jobType: string; + } + // Generated from: com/linkedin/grid/SchedulerType.pdsc + + export type SchedulerType = 'AZKABAN' | 'UNKNOWN'; + // Generated from: com/linkedin/grid/SubmissionInfo.pdsc + + export interface SubmissionInfo { + submitteeUrn: Com.Linkedin.Grid.Execution.ExecutableEntityUrnV2; + submitterUrn: string; + } + // Generated from: com/linkedin/grid/WorkflowExecutionInfo.pdsc + + export interface WorkflowExecutionInfo extends WorkflowInfo { + workflowExecutionId: string; + } + // Generated from: com/linkedin/grid/WorkflowInfo.pdsc + + export interface WorkflowInfo { + schedulerType: SchedulerType; + schedulerId: string; + workflowNamespace: string; + workflowName: string; + tags?: string[]; + } + namespace Execution { + // Generated from: com/linkedin/grid/execution/ErrorContext.pdsc + + export interface ErrorContext { + executableEntityUrn: string; + entityUrn: ExecutableEntityUrnV2; + context: string; + } + // Generated from: com/linkedin/grid/execution/ExecutableEntityUrn.pdsc + + export type ExecutableEntityUrn = string; + // Generated from: com/linkedin/grid/execution/ExecutableEntityUrnV2.pdsc + + export type ExecutableEntityUrnV2 = + | { gridWorkflowExecutionUrn: string } + | { gridJobExecutionUrn: string } + | { containerisedApplicationUrn: string }; + // Generated from: com/linkedin/grid/execution/ExecutionConfigInfo.pdsc + + export interface ExecutionConfigInfo { + properties: { [id: string]: string }; + } + // Generated from: com/linkedin/grid/execution/ExecutionDriverType.pdsc + + export type ExecutionDriverType = 'AZKABAN_FLOW_EXECUTOR' | 'AZKABAN_JOB_EXECUTOR' | 'YARN_APP_MASTER'; + // Generated from: com/linkedin/grid/execution/ExecutionErrorContextInfo.pdsc + + export interface ExecutionErrorContextInfo { + errorContexts: ErrorContext[]; + } + // Generated from: com/linkedin/grid/execution/ExecutionInfo.pdsc + + export interface ExecutionInfo { + submitTime: number; + startTime: number; + finishTime?: number; + executionId?: string; + executionStatus: ExecutionStatus; + driverHost?: string; + driverType: ExecutionDriverType; + } + // Generated from: com/linkedin/grid/execution/ExecutionStatus.pdsc + + export type ExecutionStatus = 'EXECUTING' | 'FAILED' | 'SUCCEEDED' | 'UNKNOWN'; + } + } + namespace Identity { + // Generated from: com/linkedin/identity/BaseRecommendation.pdsc + + export interface BaseRecommendation { + confidence: number; + reason: string; + } + // Generated from: com/linkedin/identity/CorpGroupInfo.pdsc + + export interface CorpGroupInfo { + email: Com.Linkedin.Common.EmailAddress; + admins: string[]; + members: string[]; + groups: string[]; + } + // Generated from: com/linkedin/identity/CorpUserEditableInfo.pdsc + + export interface CorpUserEditableInfo { + aboutMe?: string; + teams: string[]; + skills: string[]; + } + // Generated from: com/linkedin/identity/CorpUserInfo.pdsc + + export interface CorpUserInfo { + active: boolean; + displayName?: string; + email: Com.Linkedin.Common.EmailAddress; + title?: string; + managerUrn?: string; + departmentId?: number; + departmentName?: string; + firstName?: string; + lastName?: string; + fullName?: string; + countryCode?: string; + } + // Generated from: com/linkedin/identity/DatasetRecommendation.pdsc + + export interface DatasetRecommendation extends BaseRecommendation { + datasetUrn: string; + } + // Generated from: com/linkedin/identity/DatasetRecommendationsInfo.pdsc + + export interface DatasetRecommendationsInfo { + userActivityRecommendations: DatasetRecommendation[]; + peerActivityRecommendations: DatasetRecommendation[]; + } + // Generated from: com/linkedin/identity/GridGroupInfo.pdsc + + export interface GridGroupInfo { + admins: string[]; + memberUsers: string[]; + memberGroups: string[]; + } + // Generated from: com/linkedin/identity/GridUserInfo.pdsc + + export interface GridUserInfo { + corpUser: string; + } + } + namespace Incharts { + // Generated from: com/linkedin/incharts/AutocompleteSuggestion.pdsc + + export interface AutocompleteSuggestion { + suggestion: string; + } + // Generated from: com/linkedin/incharts/CategoryXCoordinate.pdsc + + export interface CategoryXCoordinate { + value: string | number; + } + // Generated from: com/linkedin/incharts/ChartDocument.pdsc + + export interface ChartDocument { + chartMetadata: ChartMetadata; + instanceMetadata: ChartInstanceMetadata; + } + // Generated from: com/linkedin/incharts/ChartFilter.pdsc + + export interface ChartFilter { + dimension: string; + operator: + | 'EQUAL' + | 'NOT_EQUAL' + | 'LESS_THAN' + | 'GREATER_THAN' + | 'LESS_THAN_OR_EQUAL' + | 'GREATER_THAN_OR_EQUAL' + | 'IN' + | 'NOT_IN' + | 'BETWEEN'; + values: Array; + } + // Generated from: com/linkedin/incharts/ChartInstanceMetadata.pdsc + + export interface ChartInstanceMetadata { + chartInstanceId: number; + metadata: Com.Linkedin.Chart.InchartsChartInstanceMetadata; + } + // Generated from: com/linkedin/incharts/ChartMetadata.pdsc + + export interface ChartMetadata { + chartId: number; + owners: Com.Linkedin.Common.Ownership; + editInfo: Com.Linkedin.Chart.InchartsChartEdit; + } + // Generated from: com/linkedin/incharts/ChartPlotData.pdsc + + export interface ChartPlotData { + series: DataSeries[]; + export: string; + statusCode: 'SUCCESS' | 'PARTIAL_SUCCESS' | 'FAILURE'; + errorMessage?: string; + } + // Generated from: com/linkedin/incharts/DashboardDocument.pdsc + + export interface DashboardDocument { + metadata: DashboardMetadata; + item: Com.Linkedin.Dashboard.InchartsDashboardItem; + } + // Generated from: com/linkedin/incharts/DashboardMetadata.pdsc + + export interface DashboardMetadata extends Com.Linkedin.Dashboard.InchartsDashboardMetadata { + dashboardId: number; + owners: Com.Linkedin.Common.Ownership; + editInfo: Com.Linkedin.Dashboard.InchartsDashboardEdit; + } + // Generated from: com/linkedin/incharts/DashboardSummary.pdsc + + export interface DashboardSummary extends DashboardMetadata, Com.Linkedin.Dashboard.InchartsDashboardCharts {} + // Generated from: com/linkedin/incharts/DataPoint.pdsc + + export interface DataPoint { + xCoordinate: XCoordinate; + yCoordinate: YCoordinate; + availabilityStatus?: + | 'NO_ERROR' + | 'FUTURE_DATA_UNAVAILABLE' + | 'PARTIAL_DATA_MISSING' + | 'DATA_UNAVAILABLE' + | 'BAD_DATA'; + } + // Generated from: com/linkedin/incharts/DataSeries.pdsc + + export interface DataSeries { + xCoordinateName: string; + expression: string; + overlays: string[]; + breakdownValues: string[]; + meta?: string; + data: DataPoint[]; + } + // Generated from: com/linkedin/incharts/DimensionValue.pdsc + + export interface DimensionValue { + value: string; + type: 'LONG' | 'DOUBLE' | 'STRING' | 'BOOLEAN'; + } + // Generated from: com/linkedin/incharts/DimensionValues.pdsc + + export interface DimensionValues { + datasetId: number; + name: string; + filters: ChartFilter[]; + values: DimensionValue[]; + } + // Generated from: com/linkedin/incharts/FilterChart.pdsc + + export interface FilterChart { + id: number; + datasets: FilterDataset[]; + } + // Generated from: com/linkedin/incharts/FilterDataset.pdsc + + export interface FilterDataset { + id: number; + name: string; + dimensions: FilterDimension[]; + } + // Generated from: com/linkedin/incharts/FilterDimension.pdsc + + export interface FilterDimension { + name: string; + label?: string; + } + // Generated from: com/linkedin/incharts/FiltersForChart.pdsc + + export interface FiltersForChart { + chartUrn: string; + filters: ChartFilter[]; + } + // Generated from: com/linkedin/incharts/InchartsBookmark.pdsc + + export interface InchartsBookmark { + inchartsBookmarkId: number; + creator: string; + inchartsEntity: InchartsEntityIdentifier; + inchartsEntityType: 'CHART' | 'DASHBOARD'; + } + // Generated from: com/linkedin/incharts/InchartsEntityIdentifier.pdsc + + export type InchartsEntityIdentifier = { chart: string } | { dashboard: string }; + // Generated from: com/linkedin/incharts/RetinaGlobalMessage.pdsc + + export interface RetinaGlobalMessage extends Com.Linkedin.Common.ChangeAuditStamps { + id: number; + message: string; + url?: Com.Linkedin.Common.Url; + dismissable: boolean; + enabled: boolean; + type?: 'NOTICE' | 'WARNING' | 'ERROR'; + } + // Generated from: com/linkedin/incharts/SearchHit.pdsc + + export interface SearchHit { + entity: string; + type: 'CHART' | 'DASHBOARD' | 'DATASET'; + } + // Generated from: com/linkedin/incharts/SnapshotReport.pdsc + + export interface SnapshotReport { + snapshotStatus: 'SUCCESS' | 'FAILED'; + snapshots?: string[]; + errorMessage?: string; + } + // Generated from: com/linkedin/incharts/Subscription.pdsc + + export interface Subscription { + id: number; + configuration: SubscriptionConfiguration; + entity: InchartsEntityIdentifier; + khronosTaskKey: Com.Linkedin.Khronos.KhronosTaskKey; + schedule: string; + startTime: Com.Linkedin.Common.Time; + endTime: Com.Linkedin.Common.Time; + subscribers: Array<{ user: string } | { group: string }>; + changeAuditStamps: Com.Linkedin.Common.ChangeAuditStamps; + } + // Generated from: com/linkedin/incharts/SubscriptionConfiguration.pdsc + + export interface SubscriptionConfiguration { + emailTitle?: string; + frequency: 'NORMAL' | 'BIWEEKLY'; + } + // Generated from: com/linkedin/incharts/TimestampXCoordinate.pdsc + + export interface TimestampXCoordinate { + value: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/incharts/XCoordinate.pdsc + + export interface XCoordinate { + type: TimestampXCoordinate | CategoryXCoordinate; + } + // Generated from: com/linkedin/incharts/YCoordinate.pdsc + + export interface YCoordinate { + value?: number; + } + } + namespace Inference { + // Generated from: com/linkedin/inference/DatasetAccessInfo.pdsc + + export interface DatasetAccessInfo { + dataset: string; + inferenceColumnName: string; + memberColumnName: string; + memberColumnType: 'ID' | 'URN'; + } + // Generated from: com/linkedin/inference/ExportModes.pdsc + + export interface ExportModes { + eatIn: boolean; + takeout: boolean; + tier3: boolean; + } + // Generated from: com/linkedin/inference/FrameFeatureAccessInfo.pdsc + + export interface FrameFeatureAccessInfo { + mlFeature: string; + } + // Generated from: com/linkedin/inference/Inference.pdsc + + export interface Inference { + sourceType: Com.Linkedin.Common.InferenceSourceType; + name: string; + ownership?: Com.Linkedin.Common.Ownership; + accessInfo?: InferenceAccessInfo; + exportModes?: ExportModes; + categoryInfo?: InferenceCategoryInfo; + presentationFunctionMappingInfo?: PresentationFunctionMappingInfo; + presentationInlineMappingInfo?: PresentationInlineMappingInfo; + presentationTableMappingInfo?: PresentationTableMappingInfo; + productDefinedInfo?: InferenceProductDefinedInfo; + sourceDefinedInfo?: InferenceSourceDefinedInfo; + statusInfo?: InferenceStatus; + } + // Generated from: com/linkedin/inference/InferenceAccessInfo.pdsc + + export interface InferenceAccessInfo { + platform: 'DALI' | 'FRAME'; + accessInfo: { datasetAccessInfo: DatasetAccessInfo } | { frameFeatureAccessInfo: FrameFeatureAccessInfo }; + } + // Generated from: com/linkedin/inference/InferenceCategoryInfo.pdsc + + export interface InferenceCategoryInfo { + name: string; + memberFacingDescription: string; + } + // Generated from: com/linkedin/inference/InferenceKey.pdsc + + export interface InferenceKey { + sourceType: Com.Linkedin.Common.InferenceSourceType; + name: string; + } + // Generated from: com/linkedin/inference/InferenceProductDefinedInfo.pdsc + + export interface InferenceProductDefinedInfo { + memberFacingName: string; + memberFacingDescription: string; + inferenceCategory?: string; + category?: 'ACTIVITY' | 'CHARACTERISTICS' | 'INTEREST' | 'JOB_SEEKING_BEHAVIOR' | 'PURCHASING_BEHAVIOR'; + memberFacingCategoryDesc?: string; + exportModes?: ExportModes; + valueExportable: boolean; + } + // Generated from: com/linkedin/inference/InferenceSourceDefinedInfo.pdsc + + export interface InferenceSourceDefinedInfo { + sourceType: Com.Linkedin.Common.InferenceSourceType; + name: string; + multiproduct?: string; + source?: { feature: string } | { dataset: string }; + } + // Generated from: com/linkedin/inference/InferenceStatus.pdsc + + export interface InferenceStatus { + status: 'APPROVED' | 'DELETED' | 'PROPOSED' | 'REJECTED'; + creation: Com.Linkedin.Common.AuditStamp; + reason?: string; + activeTimeAt: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/inference/PresentationFunction.pdsc + + export interface PresentationFunction { + funtionType: PresentationFunctionType; + params?: { [id: string]: string }; + } + // Generated from: com/linkedin/inference/PresentationFunctionMappingInfo.pdsc + + export interface PresentationFunctionMappingInfo { + functions: PresentationFunction[]; + } + // Generated from: com/linkedin/inference/PresentationFunctionType.pdsc + + export type PresentationFunctionType = 'BOOLEAN'; + // Generated from: com/linkedin/inference/PresentationInlineMappingInfo.pdsc + + export interface PresentationInlineMappingInfo { + name: string; + mapping: { [id: string]: string }; + } + // Generated from: com/linkedin/inference/PresentationTableMappingInfo.pdsc + + export interface PresentationTableMappingInfo { + dataset: string; + keyColumns: string[]; + valueColumn: string; + } + } + namespace InferenceCategory { + // Generated from: com/linkedin/inferenceCategory/InferenceCategory.pdsc + + export interface InferenceCategory { + category: string; + info?: Com.Linkedin.Inference.InferenceCategoryInfo; + } + // Generated from: com/linkedin/inferenceCategory/InferenceCategoryKey.pdsc + + export interface InferenceCategoryKey { + category: string; + } + } + namespace Jitaclservice { + // Generated from: com/linkedin/jitaclservice/AccessControlEntry.pdsc + + export interface AccessControlEntry { + principal: string; + accessTypes: AccessType[]; + expiresAt?: Com.Linkedin.Common.Time; + businessJustification: string; + datasetUrn?: string; + requestForm?: RequestForm; + } + // Generated from: com/linkedin/jitaclservice/AccessControlEntryFinderResults.pdsc + + export interface AccessControlEntryFinderResults { + results: AccessControlEntry[]; + } + // Generated from: com/linkedin/jitaclservice/AccessStatus.pdsc + + export interface AccessStatus { + datasetUrn: string; + principal: string; + dataSubsets: DataSubsetAccessStatus[]; + } + // Generated from: com/linkedin/jitaclservice/AccessStatusKey.pdsc + + export interface AccessStatusKey { + datasetUrn: string; + principal: string; + } + // Generated from: com/linkedin/jitaclservice/AccessType.pdsc + + export type AccessType = 'READ' | 'WRITE'; + // Generated from: com/linkedin/jitaclservice/Approver.pdsc + + export interface Approver { + principal: string; + } + // Generated from: com/linkedin/jitaclservice/AutoApprovedEntry.pdsc + + export interface AutoApprovedEntry { + datasetUrn: string; + principal: string; + } + // Generated from: com/linkedin/jitaclservice/DatasetAcl.pdsc + + export interface DatasetAcl { + dataset: string; + } + // Generated from: com/linkedin/jitaclservice/DataSubsetAccessStatus.pdsc + + export interface DataSubsetAccessStatus { + dataSubsetUrn: string; + status: 'NO_ACCESS' | 'PENDING' | 'ACCESS_GRANTED' | 'WORLD_READABLE'; + isManaged: boolean; + group: string; + statusDetails: + | null + | { + jiraTicket: string; + } + | { + expirationTimestamp: number; + }; + } + // Generated from: com/linkedin/jitaclservice/JiraRequestEntry.pdsc + + export interface JiraRequestEntry { + datasetUrn: string; + requesterUrn: string; + jiraIssueId: string; + } + // Generated from: com/linkedin/jitaclservice/RequestForm.pdsc + + export interface RequestForm { + businessUseCase: + | 'MEMBER_ISSUE' + | 'CUSTOMER_ISSUE' + | 'APPLICATION_ISSUE' + | 'INTERNAL_USE_ONLY' + | 'GIVE_TO_CUSTOMER' + | 'GIVE_TO_EXTERNAL_PARTY' + | 'INTERNAL_APP_ANALYSIS' + | 'MEMBER_ANALYSIS' + | 'INTERNAL_PROJECT_WORK' + | 'DATA_EXPLORATION' + | 'EMPLOYEE_TRAINING' + | 'NEW_TEAM_MEMBER_ONBOARDING' + | 'ONCALL_WORK' + | 'EXECUTIVE_STAFF_OR_LEGAL_REQUEST'; + usingPersonalData: boolean; + usingOnlyAggregatedData: boolean; + authorizationTicket?: string; + } + } + namespace Khronos { + // Generated from: com/linkedin/khronos/KhronosTask.pdsc + + export interface KhronosTask extends Com.Linkedin.Khronos.KhronosTaskKey { + subjectId: string; + payload: Com.Linkedin.Common.AnyAvroRecord; + schedule: string; + nextFireTime: Com.Linkedin.Common.Time; + status: 'ACQUIRED' | 'DELETED' | 'FAILED' | 'FIRED' | 'SCHEDULED'; + previousStatus?: TaskStatus; + previousFireTime: Com.Linkedin.Common.Time; + expirationDate: Com.Linkedin.Common.Time; + created: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/khronos/KhronosTaskKey.pdsc + + export interface KhronosTaskKey { + id: string; + entity: string; + fabric: string; + } + // Generated from: com/linkedin/khronos/Subject.pdsc + + export interface Subject { + id: string; + entityType: string; + kafkaTopicName: string; + retentionLength: Com.Linkedin.Common.TimeSpan; + scheduleAheadLength: Com.Linkedin.Common.TimeSpan; + maxPayloadLength: number; + distributionStrategy: 'ENTITY' | 'RANDOM'; + } + } + namespace Metadata { + namespace Aspect { + // Generated from: com/linkedin/metadata/aspect/AspectVersion.pdsc + + export interface AspectVersion { + aspect: string; + version: number; + } + // Generated from: com/linkedin/metadata/aspect/AzkabanFlowAspect.pdsc + + export type AzkabanFlowAspect = + | Com.Linkedin.Common.Ownership + | Com.Linkedin.DataJob.Azkaban.AzkabanFlowInfo + | Com.Linkedin.DataJob.Azkaban.AzkabanFlowJobsInfo; + // Generated from: com/linkedin/metadata/aspect/AzkabanJobAspect.pdsc + + export type AzkabanJobAspect = + | Com.Linkedin.DataJob.Azkaban.AzkabanJobInfo + | Com.Linkedin.DataJob.Azkaban.AzkabanJobInput + | Com.Linkedin.DataJob.Azkaban.AzkabanJobOutput + | Com.Linkedin.DataJob.Etl.ETLDatasetInstancePairs + | Com.Linkedin.DataJob.Etl.ETLPipelineSchedule + | Com.Linkedin.Common.Ownership; + // Generated from: com/linkedin/metadata/aspect/ComplianceDataTypeAspect.pdsc + + export type ComplianceDataTypeAspect = Com.Linkedin.Dataset.ComplianceDataTypeInfo; + // Generated from: com/linkedin/metadata/aspect/ContainerisedExecutionAspect.pdsc + + export type ContainerisedExecutionAspect = + | Com.Linkedin.Grid.BaseContainerisedExecutionInfo + | Com.Linkedin.Grid.Execution.ExecutionInfo + | Com.Linkedin.Grid.Execution.ExecutionConfigInfo + | Com.Linkedin.Grid.SubmissionInfo + | Com.Linkedin.Grid.JobExecutionInfo + | Com.Linkedin.Grid.Execution.ExecutionErrorContextInfo; + // Generated from: com/linkedin/metadata/aspect/CorpGroupAspect.pdsc + + export type CorpGroupAspect = Com.Linkedin.Identity.CorpGroupInfo; + // Generated from: com/linkedin/metadata/aspect/CorpUserAspect.pdsc + + export type CorpUserAspect = + | Com.Linkedin.Identity.CorpUserInfo + | Com.Linkedin.Identity.CorpUserEditableInfo + | Com.Linkedin.Identity.DatasetRecommendationsInfo; + // Generated from: com/linkedin/metadata/aspect/DataConceptAspect.pdsc + + export type DataConceptAspect = + | Com.Linkedin.Common.InstitutionalMemory + | Com.Linkedin.Common.Ownership + | Com.Linkedin.DataConcept.DataConceptProperties + | Com.Linkedin.DataConcept.RelatedEntities; + // Generated from: com/linkedin/metadata/aspect/DataConstructChangeManagementAspect.pdsc + + export type DataConstructChangeManagementAspect = Com.Linkedin.DataConstructChangeManagement.DataConstructChangeManagementContent; + // Generated from: com/linkedin/metadata/aspect/DataPlatformAspect.pdsc + + export type DataPlatformAspect = Com.Linkedin.Dataplatform.DataPlatformInfo; + // Generated from: com/linkedin/metadata/aspect/DatasetAccessGroupAspect.pdsc + + export type DatasetAccessGroupAspect = + | Com.Linkedin.DatasetAccessGroup.DatasetAccessGroupInfo + | Com.Linkedin.DatasetAccessGroup.DatasetAccessGroupMembership + | Com.Linkedin.DatasetAccessGroup.CorpGroupMap; + // Generated from: com/linkedin/metadata/aspect/DatasetAspect.pdsc + + export type DatasetAspect = + | Com.Linkedin.Dataset.ComplianceInfo + | Com.Linkedin.Dataset.ComplianceInfoSuggestion + | Com.Linkedin.Dataset.ComplianceProposal + | Com.Linkedin.Dataset.DataPrivacyReviewV2 + | Com.Linkedin.Dataset.DatasetProperties + | Com.Linkedin.Common.Deprecation + | Com.Linkedin.Common.EntityTopUsage + | Com.Linkedin.Dataset.ExportPolicy + | Com.Linkedin.Common.Follow + | Com.Linkedin.Common.Health + | Com.Linkedin.Common.InstitutionalMemory + | Com.Linkedin.Common.Likes + | Com.Linkedin.Common.Ownership + | Com.Linkedin.Common.OwnershipSuggestion + | Com.Linkedin.Dataset.ReplicationConfig + | Com.Linkedin.Dataset.RetentionPolicy + | Com.Linkedin.Dataset.SearchRelevanceSignals + | Com.Linkedin.Common.Status + | Com.Linkedin.Dataset.Ump.UMPDatasetProperties + | Com.Linkedin.Dataset.UpstreamLineage + | Com.Linkedin.Dataset.UserEditableDatasetProperties + | Com.Linkedin.Dataset.UserEditableSchemaInfo + | Com.Linkedin.Dataset.Wormhole.WormholeDatasetMetadata + | Com.Linkedin.Dataset.Wormhole.WormholeDatasetOperationalMetadata + | Com.Linkedin.Dataset.Datasentinel.ColumnDefinition + | Com.Linkedin.Dataset.Datasentinel.DataAssertion + | Com.Linkedin.Dataset.DataPrivacyReview + | Com.Linkedin.Dataset.Datasentinel.DataValidationConfig + | Com.Linkedin.Dataset.Datasentinel.SliceDefinition; + // Generated from: com/linkedin/metadata/aspect/DatasetGroupAspect.pdsc + + export type DatasetGroupAspect = + | Com.Linkedin.DatasetGroup.DatasetGroupInfo + | Com.Linkedin.DatasetGroup.DatasetGroupMembership; + // Generated from: com/linkedin/metadata/aspect/DatasetInstanceAspect.pdsc + + export type DatasetInstanceAspect = + | Com.Linkedin.DatasetInstance.Etl.ETLDatasetInstanceConfig + | Com.Linkedin.DatasetInstance.Etl.ETLPipelineScopedConfigs + | Com.Linkedin.DatasetInstance.Etl.IngressETLPipelines + | Com.Linkedin.Schema.ObservedSchemaDefinition + | Com.Linkedin.Common.Status + | Com.Linkedin.Dataset.Datafidelity.DatasetInstanceAlert + | Com.Linkedin.Dataset.Datafidelity.DatasetInstanceStats + | Com.Linkedin.DatasetInstance.Wimd.WIMDReport + | Com.Linkedin.DatasetInstance.Etl.ETLPipelines + | Com.Linkedin.DatasetInstance.Etl.ETLPipelineScopedDatasetInstanceConfig + | Com.Linkedin.Schema.NormalizedSchema; + // Generated from: com/linkedin/metadata/aspect/DatasetPartitionAspect.pdsc + + export type DatasetPartitionAspect = + | Com.Linkedin.DatasetPartition.Datasentinel.DataValidationReports + | Com.Linkedin.DatasetPartition.Datasentinel.DatasetProfile + | Com.Linkedin.Dataset.Datafidelity.DatasetPartitionAlert + | Com.Linkedin.Dataset.Datafidelity.DatasetPartitionStats; + // Generated from: com/linkedin/metadata/aspect/ExperimentAlertSubscriptionAspect.pdsc + + export type ExperimentAlertSubscriptionAspect = Com.Linkedin.Experiments.ExperimentAlertSubscription; + // Generated from: com/linkedin/metadata/aspect/FeatureAspect.pdsc + + export type FeatureAspect = + | Com.Linkedin.Common.Ownership + | Com.Linkedin.Common.Status + | Com.Linkedin.Feature.Frame.FrameFeatureAvailabilityConfig + | Com.Linkedin.Feature.Frame.FrameFeatureConfig + | Com.Linkedin.Feature.Frame.FrameFeatureEditableConfig + | Com.Linkedin.Feature.Frame.FrameDerivedFeatureConfig + | Com.Linkedin.Feature.Frame.FrameFeatureInferenceInfo + | Com.Linkedin.Feature.Frame.FrameFeatureStatusConfig + | Com.Linkedin.Feature.Frame.FrameFeatureTierConfig + | Com.Linkedin.Feature.Frame.FrameFeatureUsageInfo; + // Generated from: com/linkedin/metadata/aspect/GridGroupAspect.pdsc + + export type GridGroupAspect = Com.Linkedin.Identity.GridGroupInfo; + // Generated from: com/linkedin/metadata/aspect/GridJobExecutionAspect.pdsc + + export type GridJobExecutionAspect = + | Com.Linkedin.Grid.JobExecutionInfo + | Com.Linkedin.Grid.Execution.ExecutionInfo + | Com.Linkedin.Grid.Execution.ExecutionConfigInfo + | Com.Linkedin.Grid.Execution.ExecutionErrorContextInfo; + // Generated from: com/linkedin/metadata/aspect/GridUserAspect.pdsc + + export type GridUserAspect = Com.Linkedin.Identity.GridUserInfo; + // Generated from: com/linkedin/metadata/aspect/GridWorkflowAspect.pdsc + + export type GridWorkflowAspect = Com.Linkedin.Grid.WorkflowInfo; + // Generated from: com/linkedin/metadata/aspect/GridWorkflowExecutionAspect.pdsc + + export type GridWorkflowExecutionAspect = + | Com.Linkedin.Grid.WorkflowExecutionInfo + | Com.Linkedin.Grid.Execution.ExecutionInfo + | Com.Linkedin.Grid.Execution.ExecutionConfigInfo + | Com.Linkedin.Grid.Execution.ExecutionErrorContextInfo; + // Generated from: com/linkedin/metadata/aspect/InchartsChartAspect.pdsc + + export type InchartsChartAspect = + | Com.Linkedin.Chart.InchartsChartEdit + | Com.Linkedin.Chart.InchartsChartInstances + | Com.Linkedin.Common.Ownership + | Com.Linkedin.Common.Status; + // Generated from: com/linkedin/metadata/aspect/InchartsChartInstanceAspect.pdsc + + export type InchartsChartInstanceAspect = + | Com.Linkedin.Chart.InchartsChartInstanceMetadata + | Com.Linkedin.Common.Status; + // Generated from: com/linkedin/metadata/aspect/InchartsDashboardAspect.pdsc + + export type InchartsDashboardAspect = + | Com.Linkedin.Dashboard.InchartsDashboardMetadata + | Com.Linkedin.Dashboard.InchartsDashboardEdit + | Com.Linkedin.Dashboard.InchartsDashboardCharts + | Com.Linkedin.Dashboard.InchartsDashboardItem + | Com.Linkedin.Common.Ownership + | Com.Linkedin.Common.Status; + // Generated from: com/linkedin/metadata/aspect/InferenceAspect.pdsc + + export type InferenceAspect = + | Com.Linkedin.Inference.ExportModes + | Com.Linkedin.Inference.InferenceAccessInfo + | Com.Linkedin.Inference.InferenceProductDefinedInfo + | Com.Linkedin.Inference.InferenceSourceDefinedInfo + | Com.Linkedin.Inference.InferenceStatus + | Com.Linkedin.Common.Ownership + | Com.Linkedin.Inference.PresentationFunctionMappingInfo + | Com.Linkedin.Inference.PresentationInlineMappingInfo + | Com.Linkedin.Inference.PresentationTableMappingInfo; + // Generated from: com/linkedin/metadata/aspect/InferenceCategoryAspect.pdsc + + export type InferenceCategoryAspect = Com.Linkedin.Inference.InferenceCategoryInfo; + // Generated from: com/linkedin/metadata/aspect/MetricAspect.pdsc + + export type MetricAspect = + | Com.Linkedin.Common.Follow + | Com.Linkedin.Common.Health + | Com.Linkedin.Common.InstitutionalMemory + | Com.Linkedin.Common.Likes + | Com.Linkedin.Metric.MetricGovernance + | Com.Linkedin.Common.Ownership + | Com.Linkedin.Common.Status + | Com.Linkedin.Metric.UserEditableMetricProperties + | Com.Linkedin.Metric.Ump.UMPMetricProperties; + // Generated from: com/linkedin/metadata/aspect/MlArtifactAspect.pdsc + + export type MlArtifactAspect = + | Com.Linkedin.Proml.MlArtifact.Id + | Com.Linkedin.Proml.MlArtifact.ArtifactInfo + | string; + // Generated from: com/linkedin/metadata/aspect/MlDataAnalysisResultAspect.pdsc + + export type MlDataAnalysisResultAspect = + | Com.Linkedin.Proml.MlDataAnalysisResult.Id + | Com.Linkedin.Proml.MlDataAnalysisResult.DataAnalysisResultInfo + | Com.Linkedin.Proml.MlDataAnalysisResult.AnalyzedDatasets; + // Generated from: com/linkedin/metadata/aspect/MlDeploymentGroupAspect.pdsc + + export type MlDeploymentGroupAspect = + | Com.Linkedin.Proml.MlDeploymentGroup.Id + | Com.Linkedin.Proml.MlDeploymentGroup.DeploymentGroupInfo + | Com.Linkedin.Proml.MlDeploymentGroup.PublishedModels + | Com.Linkedin.Proml.MlDeploymentGroup.PublishedModelVersions; + // Generated from: com/linkedin/metadata/aspect/MlExperimentAspect.pdsc + + export type MlExperimentAspect = + | Com.Linkedin.Proml.MlExperiment.ExperimentInfo + | Com.Linkedin.Proml.MlExperiment.Id + | Com.Linkedin.Proml.MlExperiment.PipelineRuns; + // Generated from: com/linkedin/metadata/aspect/MlExportedFeaturizedDatasetAspect.pdsc + + export type MlExportedFeaturizedDatasetAspect = + | Com.Linkedin.Proml.MlExportedFeaturizedDataset.Id + | Com.Linkedin.Proml.MlExportedFeaturizedDataset.ExportedFeaturizedDatasetInfo + | Com.Linkedin.Proml.MlExportedFeaturizedDataset.VeniceExportation + | Com.Linkedin.Proml.MlExportedFeaturizedDataset.GridExportation; + // Generated from: com/linkedin/metadata/aspect/MlFeatureAnchorAspect.pdsc + + export type MlFeatureAnchorAspect = + | Com.Linkedin.Proml.MlFeatureAnchor.FeatureAnchor + | Com.Linkedin.Proml.Common.Feature.PublishInfo; + // Generated from: com/linkedin/metadata/aspect/MlFeatureCreationResultAspect.pdsc + + export type MlFeatureCreationResultAspect = + | Com.Linkedin.Proml.MlFeatureCreationResult.Id + | Com.Linkedin.Proml.MlFeatureCreationResult.FeatureCreationResultInfo; + // Generated from: com/linkedin/metadata/aspect/MlFeatureVersionAspect.pdsc + + export type MlFeatureVersionAspect = + | Com.Linkedin.Proml.MlFeatureVersion.FeatureVersion + | Com.Linkedin.Proml.Common.Feature.PublishInfo; + // Generated from: com/linkedin/metadata/aspect/MlFeaturizedDatasetAspect.pdsc + + export type MlFeaturizedDatasetAspect = + | Com.Linkedin.Proml.MlFeaturizedDataset.Id + | Com.Linkedin.Proml.MlFeaturizedDataset.FeaturizedDatasetInfo; + // Generated from: com/linkedin/metadata/aspect/MlModelAnalysisResultAspect.pdsc + + export type MlModelAnalysisResultAspect = + | Com.Linkedin.Proml.MlModelAnalysisResult.Id + | Com.Linkedin.Proml.MlModelAnalysisResult.ModelAnalysisResultInfo + | Com.Linkedin.Proml.MlModelAnalysisResult.AnalyzedModel + | Com.Linkedin.Proml.MlModelAnalysisResult.TestDataset + | Com.Linkedin.Proml.MlModelAnalysisResult.BinaryClassificationMetricsAnalyzerResult + | Com.Linkedin.Proml.MlModelAnalysisResult.ModelAgnosticFeatureImportanceAnalyzerResult + | Com.Linkedin.Proml.MlModelAnalysisResult.MulticlassMetricsAnalyzerResult + | Com.Linkedin.Proml.MlModelAnalysisResult.RankingMetricsAnalyzerResult + | Com.Linkedin.Proml.MlModelAnalysisResult.RegressionMetricsAnalyzerResult + | Com.Linkedin.Proml.MlModelAnalysisResult.ReplayMetricsAnalyzerResult; + // Generated from: com/linkedin/metadata/aspect/MlModelTrainingSummaryAspect.pdsc + + export type MlModelTrainingSummaryAspect = + | Com.Linkedin.Proml.MlModelTrainingSummary.Id + | Com.Linkedin.Proml.MlModelTrainingSummary.ModelTrainingSummaryInfo; + // Generated from: com/linkedin/metadata/aspect/MlModelValidationResultAspect.pdsc + + export type MlModelValidationResultAspect = + | Com.Linkedin.Proml.MlModelValidationResult.Id + | Com.Linkedin.Proml.MlModelValidationResult.ModelValidationResultInfo; + // Generated from: com/linkedin/metadata/aspect/MlPipelineAspect.pdsc + + export type MlPipelineAspect = + | Com.Linkedin.Proml.MlPipeline.Id + | Com.Linkedin.Proml.MlPipeline.PipelineInfo + | Com.Linkedin.Proml.MlPipeline.Versions; + // Generated from: com/linkedin/metadata/aspect/MlPipelineRunAspect.pdsc + + export type MlPipelineRunAspect = + | Com.Linkedin.Proml.MlPipelineRun.ExecutionIds + | Com.Linkedin.Proml.MlPipelineRun.Id + | Com.Linkedin.Proml.MlPipelineRun.PipelineRunEndTime + | Com.Linkedin.Proml.MlPipelineRun.PipelineRunInfo + | Com.Linkedin.Proml.MlPipelineRun.PipelineRunStartTime + | Com.Linkedin.Proml.MlPipelineRun.PipelineRunStatus + | Com.Linkedin.Proml.MlPipelineRun.PipelineStepsRuns; + // Generated from: com/linkedin/metadata/aspect/MlPipelineStepRunAspect.pdsc + + export type MlPipelineStepRunAspect = + | Com.Linkedin.Proml.MlPipelineStepRun.Id + | Com.Linkedin.Proml.MlPipelineStepRun.PipelineStepRunInfo + | Com.Linkedin.Proml.MlPipelineStepRun.StepRunStartTime + | Com.Linkedin.Proml.MlPipelineStepRun.StepRunEndTime + | Com.Linkedin.Proml.MlPipelineStepRun.StepRunOutputs + | Com.Linkedin.Proml.MlPipelineStepRun.StepRunParameters + | Com.Linkedin.Proml.MlPipelineStepRun.StepRunCustomMetrics; + // Generated from: com/linkedin/metadata/aspect/MlPipelineStepRunOutputAspect.pdsc + + export type MlPipelineStepRunOutputAspect = + | Com.Linkedin.Proml.MlPipelineStepRunOutput.Id + | Com.Linkedin.Proml.MlPipelineStepRunOutput.StepRunOutputArtifact + | Com.Linkedin.Proml.MlPipelineStepRunOutput.StepRunOutputInfo; + // Generated from: com/linkedin/metadata/aspect/MlPipelineVersionAspect.pdsc + + export type MlPipelineVersionAspect = + | Com.Linkedin.Proml.MlPipelineVersion.Id + | Com.Linkedin.Proml.MlPipelineVersion.PipelineRuns + | Com.Linkedin.Proml.MlPipelineVersion.PipelineVersionInfo; + // Generated from: com/linkedin/metadata/aspect/MlProblemStatementAspect.pdsc + + export type MlProblemStatementAspect = + | Com.Linkedin.Proml.MlProblemStatement.Id + | Com.Linkedin.Proml.MlProblemStatement.ProblemStatementInfo; + // Generated from: com/linkedin/metadata/aspect/MlProjectAspect.pdsc + + export type MlProjectAspect = + | Com.Linkedin.Proml.Common.Members + | Com.Linkedin.Proml.MlProject.Experiments + | Com.Linkedin.Proml.MlProject.Id + | Com.Linkedin.Proml.MlProject.Pipelines + | Com.Linkedin.Proml.MlProject.ProblemStatement + | Com.Linkedin.Proml.MlProject.ProjectInfo; + // Generated from: com/linkedin/metadata/aspect/MlProjectGroupAspect.pdsc + + export type MlProjectGroupAspect = + | Com.Linkedin.Proml.MlProjectGroup.Id + | Com.Linkedin.Proml.MlProjectGroup.ProjectGroupInfo + | Com.Linkedin.Proml.MlProjectGroup.Projects; + // Generated from: com/linkedin/metadata/aspect/MlPublishedModelAspect.pdsc + + export type MlPublishedModelAspect = + | Com.Linkedin.Proml.Common.MlDeprecation + | Com.Linkedin.Proml.MlPublishedModel.Id + | Com.Linkedin.Proml.MlPublishedModel.PublishedModelInfo + | Com.Linkedin.Proml.MlPublishedModel.PublishedModelVersions + | Com.Linkedin.Proml.MlPublishedModel.ReservedVersions; + // Generated from: com/linkedin/metadata/aspect/MlPublishedModelVersionAspect.pdsc + + export type MlPublishedModelVersionAspect = + | Com.Linkedin.Proml.Common.MlDeprecation + | Com.Linkedin.Proml.MlPublishedModelVersion.Id + | Com.Linkedin.Proml.MlPublishedModelVersion.PublishedModelVersionInfo; + // Generated from: com/linkedin/metadata/aspect/MlTaskExecutionLogAspect.pdsc + + export type MlTaskExecutionLogAspect = + | Com.Linkedin.Proml.MlTaskExecutionLog.Id + | Com.Linkedin.Proml.MlTaskExecutionLog.TaskExecutionLogInfo; + // Generated from: com/linkedin/metadata/aspect/MlTrainedModelAspect.pdsc + + export type MlTrainedModelAspect = + | Com.Linkedin.Proml.MlTrainedModel.ComplianceInfo + | Com.Linkedin.Proml.MlTrainedModel.Id + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.LastSuccessfulTask + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.ModelArtifactStoreLocations + | Com.Linkedin.Proml.MlTrainedModel.ModelDependencies + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.ModelMpName + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.ModelUploadStatusList + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.ModelVersion + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.ModelPublishAttempt + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.PrePublishLocation + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.PublishedModelVersion + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.PublishAttempt + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.PublishAttemptLogsList + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.PublishRequest + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.PublishStatus + | Com.Linkedin.Proml.MlTrainedModel.MlModelPublish.ReviewInfo + | Com.Linkedin.Proml.MlTrainedModel.PhotonVizInfo + | Com.Linkedin.Proml.MlTrainedModel.TrainedModelInfo; + // Generated from: com/linkedin/metadata/aspect/MlVerticalAspect.pdsc + + export type MlVerticalAspect = Com.Linkedin.Proml.MlVertical.VerticalInfo; + // Generated from: com/linkedin/metadata/aspect/RegisteredSchemaAspect.pdsc + + export type RegisteredSchemaAspect = + | Com.Linkedin.Common.FileReference + | Com.Linkedin.Dataset.ComplianceInfo + | Com.Linkedin.Schema.SchemaDefinition + | Com.Linkedin.Schema.RegisteredSchemaDeprecation; + // Generated from: com/linkedin/metadata/aspect/SamzaJobInstanceAspect.pdsc + + export type SamzaJobInstanceAspect = + | Com.Linkedin.DataJob.Samza.Input + | Com.Linkedin.DataJob.Samza.JobInstanceInfo + | Com.Linkedin.DataJob.Samza.JobInstanceStatus + | Com.Linkedin.DataJob.Samza.Output + | Com.Linkedin.Common.Ownership; + // Generated from: com/linkedin/metadata/aspect/WormholeNamespaceAspect.pdsc + + export type WormholeNamespaceAspect = Com.Linkedin.Dataset.Wormhole.WormholeNamespaceMetadata; + } + namespace Delta { + // Generated from: com/linkedin/metadata/delta/DatasetGroupDelta.pdsc + + export interface DatasetGroupDelta { + urn: string; + delta: Com.Linkedin.DatasetGroup.MembershipDelta; + } + // Generated from: com/linkedin/metadata/delta/DatasetUpstreamLineageDelta.pdsc + + export interface DatasetUpstreamLineageDelta { + urn: string; + delta: Com.Linkedin.Dataset.UpstreamLineageDelta; + } + // Generated from: com/linkedin/metadata/delta/Delta.pdsc + + export type Delta = DatasetGroupDelta | DatasetUpstreamLineageDelta | MlFeatureAnchorDelta; + // Generated from: com/linkedin/metadata/delta/MlFeatureAnchorDelta.pdsc + + export interface MlFeatureAnchorDelta { + urn: string; + delta: Com.Linkedin.Proml.MlFeatureAnchor.PublishInfoDelta; + } + } + namespace Dummy { + // Generated from: com/linkedin/metadata/dummy/DummyAspect.pdsc + + export type DummyAspect = string; + // Generated from: com/linkedin/metadata/dummy/DummySnapshot.pdsc + + export interface DummySnapshot { + urn: string; + aspects: DummyAspect[]; + } + } + namespace Entity { + // Generated from: com/linkedin/metadata/entity/AzkabanFlowBaseEntity.pdsc + + export interface AzkabanFlowBaseEntity extends BaseEntity { + clusterName?: string; + hadoopCluster?: Com.Linkedin.Common.HadoopClusterType; + flowName?: string; + projectName?: string; + } + // Generated from: com/linkedin/metadata/entity/AzkabanFlowEntity.pdsc + + export interface AzkabanFlowEntity extends AzkabanFlowBaseEntity { + urn: string; + } + // Generated from: com/linkedin/metadata/entity/AzkabanJobEntity.pdsc + + export interface AzkabanJobEntity extends AzkabanFlowBaseEntity { + urn: string; + jobName?: string; + } + // Generated from: com/linkedin/metadata/entity/BaseEntity.pdsc + + export interface BaseEntity { + removed?: boolean; + } + // Generated from: com/linkedin/metadata/entity/ContainerisedApplicationEntity.pdsc + + export interface ContainerisedApplicationEntity extends BaseEntity { + urn: string; + containerCluster?: string; + executionStatus?: Com.Linkedin.Grid.Execution.ExecutionStatus; + executionStartTime?: number; + queue?: string; + } + // Generated from: com/linkedin/metadata/entity/CorpGroupEntity.pdsc + + export interface CorpGroupEntity extends BaseEntity { + urn: string; + name?: string; + } + // Generated from: com/linkedin/metadata/entity/CorpUserEntity.pdsc + + export interface CorpUserEntity extends BaseEntity { + urn: string; + name?: string; + } + // Generated from: com/linkedin/metadata/entity/DataConceptEntity.pdsc + + export interface DataConceptEntity extends BaseEntity { + urn: string; + name?: string; + description?: string; + } + // Generated from: com/linkedin/metadata/entity/DatasetEntity.pdsc + + export interface DatasetEntity extends BaseEntity { + urn: string; + name?: string; + platform?: string; + origin?: Com.Linkedin.Common.FabricType; + } + // Generated from: com/linkedin/metadata/entity/DatasetGroupEntity.pdsc + + export interface DatasetGroupEntity extends BaseEntity { + urn: string; + namespace?: string; + name?: string; + } + // Generated from: com/linkedin/metadata/entity/DatasetInstanceEntity.pdsc + + export interface DatasetInstanceEntity extends BaseEntity { + urn: string; + instanceName?: string; + platform?: string; + datasetName?: string; + origin?: Com.Linkedin.Common.FabricType; + } + // Generated from: com/linkedin/metadata/entity/DatasetPartitionEntity.pdsc + + export interface DatasetPartitionEntity extends BaseEntity { + urn: string; + partitionName?: string; + instanceName?: string; + datasetName?: string; + platform?: string; + origin?: Com.Linkedin.Common.FabricType; + } + // Generated from: com/linkedin/metadata/entity/Entity.pdsc + + export type Entity = DatasetEntity | MetricEntity | RegisteredSchemaEntity; + // Generated from: com/linkedin/metadata/entity/FeatureEntity.pdsc + + export interface FeatureEntity extends BaseEntity { + urn: string; + namespace?: string; + name?: string; + baseEntity?: string; + classification?: string; + category?: string; + status?: Com.Linkedin.Feature.Frame.FeatureStatusType; + } + // Generated from: com/linkedin/metadata/entity/GridGroupEntity.pdsc + + export interface GridGroupEntity extends BaseEntity { + urn: string; + name?: string; + } + // Generated from: com/linkedin/metadata/entity/GridJobExecutionEntity.pdsc + + export interface GridJobExecutionEntity extends BaseEntity { + urn: string; + jobType?: string; + executionStatus?: Com.Linkedin.Grid.Execution.ExecutionStatus; + executionStartTime?: number; + } + // Generated from: com/linkedin/metadata/entity/GridUserEntity.pdsc + + export interface GridUserEntity extends BaseEntity { + urn: string; + name?: string; + } + // Generated from: com/linkedin/metadata/entity/GridWorkflowEntity.pdsc + + export interface GridWorkflowEntity extends BaseEntity { + urn: string; + schedulerType?: Com.Linkedin.Grid.SchedulerType; + schedulerId?: string; + } + // Generated from: com/linkedin/metadata/entity/GridWorkflowExecutionEntity.pdsc + + export interface GridWorkflowExecutionEntity extends BaseEntity { + urn: string; + schedulerType?: Com.Linkedin.Grid.SchedulerType; + schedulerId?: string; + executionStatus?: Com.Linkedin.Grid.Execution.ExecutionStatus; + workflowExecutionStartTime?: number; + } + // Generated from: com/linkedin/metadata/entity/InchartsChartEntity.pdsc + + export interface InchartsChartEntity extends BaseEntity { + urn: string; + } + // Generated from: com/linkedin/metadata/entity/InchartsChartInstanceEntity.pdsc + + export interface InchartsChartInstanceEntity extends BaseEntity { + urn: string; + } + // Generated from: com/linkedin/metadata/entity/MetricEntity.pdsc + + export interface MetricEntity extends BaseEntity { + urn: string; + type?: string; + name?: string; + domain?: string; + bucket?: string; + dataset?: string; + } + // Generated from: com/linkedin/metadata/entity/MlArtifactEntity.pdsc + + export interface MlArtifactEntity extends BaseEntity { + urn: string; + } + // Generated from: com/linkedin/metadata/entity/MlExperimentEntity.pdsc + + export interface MlExperimentEntity extends BaseEntity { + urn: string; + } + // Generated from: com/linkedin/metadata/entity/MlPipelineRunEntity.pdsc + + export interface MlPipelineRunEntity extends BaseEntity { + urn: string; + } + // Generated from: com/linkedin/metadata/entity/MlPipelineStepRunEntity.pdsc + + export interface MlPipelineStepRunEntity extends BaseEntity { + urn: string; + } + // Generated from: com/linkedin/metadata/entity/MlPipelineStepRunOutputEntity.pdsc + + export interface MlPipelineStepRunOutputEntity extends BaseEntity { + urn: string; + } + // Generated from: com/linkedin/metadata/entity/MlProjectEntity.pdsc + + export interface MlProjectEntity extends BaseEntity { + urn: string; + } + // Generated from: com/linkedin/metadata/entity/MlTrainedModelEntity.pdsc + + export interface MlTrainedModelEntity extends BaseEntity { + urn: string; + } + // Generated from: com/linkedin/metadata/entity/RegisteredSchemaEntity.pdsc + + export interface RegisteredSchemaEntity extends BaseEntity { + urn: string; + type?: string; + name?: string; + } + } + namespace Graph { + // Generated from: com/linkedin/metadata/graph/Attribute.pdsc + + export interface Attribute { + name: string; + type?: string; + reference?: NodeId; + value?: string; + } + // Generated from: com/linkedin/metadata/graph/Edge.pdsc + + export interface Edge { + attributes?: Attribute[]; + fromNode: NodeId; + fromAttribute?: string; + toNode: NodeId; + toAttribute?: string; + } + // Generated from: com/linkedin/metadata/graph/Graph.pdsc + + export interface Graph { + rootNode?: NodeId; + nodes: Node[]; + edges?: Edge[]; + } + // Generated from: com/linkedin/metadata/graph/Node.pdsc + + export interface Node { + id: NodeId; + entityUrn?: string; + displayName?: string; + referencedSchema?: string; + attributes?: Attribute[]; + } + // Generated from: com/linkedin/metadata/graph/NodeId.pdsc + + export type NodeId = string; + } + namespace Query { + // Generated from: com/linkedin/metadata/query/AutoCompleteResult.pdsc + + export interface AutoCompleteResult { + query: string; + suggestions: string[]; + } + // Generated from: com/linkedin/metadata/query/BrowseResult.pdsc + + export interface BrowseResult { + entities: BrowseResultEntity[]; + metadata: BrowseResultMetadata; + from: number; + pageSize: number; + numEntities: number; + } + // Generated from: com/linkedin/metadata/query/BrowseResultEntity.pdsc + + export interface BrowseResultEntity { + name?: string; + urn: string; + } + // Generated from: com/linkedin/metadata/query/BrowseResultMetadata.pdsc + + export interface BrowseResultMetadata { + path: string; + groups: Array<{ + name: string; + count: number; + }>; + totalNumEntities: number; + } + // Generated from: com/linkedin/metadata/query/Condition.pdsc + + export type Condition = + | 'CONTAIN' + | 'END_WITH' + | 'EQUAL' + | 'GREATER_THAN' + | 'GREATER_THAN_OR_EQUAL_TO' + | 'LESS_THAN' + | 'LESS_THAN_OR_EQUAL_TO' + | 'START_WITH'; + // Generated from: com/linkedin/metadata/query/Criterion.pdsc + + export interface Criterion { + field: string; + value: string; + condition: Condition; + } + // Generated from: com/linkedin/metadata/query/Filter.pdsc + + export interface Filter { + criteria: Criterion[]; + } + // Generated from: com/linkedin/metadata/query/IndexCriterion.pdsc + + export interface IndexCriterion { + aspect: string; + pathParams?: IndexPathParams; + } + // Generated from: com/linkedin/metadata/query/IndexFilter.pdsc + + export interface IndexFilter { + criteria: IndexCriterion[]; + } + // Generated from: com/linkedin/metadata/query/IndexPathParams.pdsc + + export interface IndexPathParams { + path: string; + value: IndexValue; + condition: Condition; + } + // Generated from: com/linkedin/metadata/query/IndexValue.pdsc + + export type IndexValue = boolean | number | number | number | number | string; + // Generated from: com/linkedin/metadata/query/ListResultMetadata.pdsc + + export interface ListResultMetadata { + extraInfos: Array<{ + urn: string; + version: number; + audit: Com.Linkedin.Common.AuditStamp; + }>; + } + // Generated from: com/linkedin/metadata/query/RelationshipDirection.pdsc + + export type RelationshipDirection = 'INCOMING' | 'OUTGOING' | 'UNDIRECTED'; + // Generated from: com/linkedin/metadata/query/RelationshipFilter.pdsc + + export interface RelationshipFilter extends Filter { + direction: RelationshipDirection; + } + // Generated from: com/linkedin/metadata/query/SearchResultMetadata.pdsc + + export interface SearchResultMetadata { + searchResultMetadatas: Array<{ + name: string; + aggregations: { [id: string]: number }; + }>; + urns: string[]; + } + // Generated from: com/linkedin/metadata/query/SortCriterion.pdsc + + export interface SortCriterion { + field: string; + order: SortOrder; + } + // Generated from: com/linkedin/metadata/query/SortOrder.pdsc + + export type SortOrder = 'ASCENDING' | 'DESCENDING'; + } + namespace Relationship { + // Generated from: com/linkedin/metadata/relationship/BaseRelationship.pdsc + + export interface BaseRelationship { + source: string; + destination: string; + } + // Generated from: com/linkedin/metadata/relationship/Contains.pdsc + + export interface Contains extends BaseRelationship {} + // Generated from: com/linkedin/metadata/relationship/DownstreamOf.pdsc + + export interface DownstreamOf extends BaseRelationship { + type?: Com.Linkedin.Dataset.DatasetLineageType; + } + // Generated from: com/linkedin/metadata/relationship/FollowedBy.pdsc + + export interface FollowedBy extends BaseRelationship {} + // Generated from: com/linkedin/metadata/relationship/GeneratedBy.pdsc + + export interface GeneratedBy extends BaseRelationship {} + // Generated from: com/linkedin/metadata/relationship/InstanceOf.pdsc + + export interface InstanceOf extends BaseRelationship {} + // Generated from: com/linkedin/metadata/relationship/IsPartOf.pdsc + + export interface IsPartOf extends BaseRelationship {} + // Generated from: com/linkedin/metadata/relationship/OwnedBy.pdsc + + export interface OwnedBy extends BaseRelationship { + type: Com.Linkedin.Common.OwnershipType; + } + // Generated from: com/linkedin/metadata/relationship/Relationship.pdsc + + export type Relationship = Contains | FollowedBy | GeneratedBy | InstanceOf | IsPartOf | OwnedBy | SubmittedBy; + // Generated from: com/linkedin/metadata/relationship/ReportsTo.pdsc + + export interface ReportsTo extends BaseRelationship {} + // Generated from: com/linkedin/metadata/relationship/SubmittedBy.pdsc + + export interface SubmittedBy extends BaseRelationship {} + } + namespace Search { + // Generated from: com/linkedin/metadata/search/AzkabanFlowDocument.pdsc + + export interface AzkabanFlowDocument extends BaseDocument { + urn: string; + clusterName?: string; + hadoopCluster?: Com.Linkedin.Common.HadoopClusterType; + projectName?: string; + flowName?: string; + jobs?: string[]; + } + // Generated from: com/linkedin/metadata/search/AzkabanJobDocument.pdsc + + export interface AzkabanJobDocument extends BaseDocument { + urn: string; + clusterName?: string; + hadoopCluster?: Com.Linkedin.Common.HadoopClusterType; + projectName?: string; + flowName?: string; + jobName?: string; + inputDatasetNames?: string[]; + outputDatasetNames?: string[]; + } + // Generated from: com/linkedin/metadata/search/BaseDocument.pdsc + + export interface BaseDocument { + removed?: boolean; + browsePaths?: string[]; + } + // Generated from: com/linkedin/metadata/search/CorpGroupDocument.pdsc + + export interface CorpGroupDocument extends BaseDocument { + urn: string; + email?: string; + members?: string[]; + admins?: string[]; + groups?: string[]; + } + // Generated from: com/linkedin/metadata/search/CorpUserInfoDocument.pdsc + + export interface CorpUserInfoDocument extends BaseDocument { + urn: string; + ldap?: string; + title?: string; + managerLdap?: string; + fullName?: string; + aboutMe?: string; + teams?: string[]; + skills?: string[]; + active?: boolean; + } + // Generated from: com/linkedin/metadata/search/DataConceptDocument.pdsc + + export interface DataConceptDocument extends BaseDocument { + urn: string; + name?: string; + description?: string; + owners?: string[]; + ownerFullNames?: string[]; + tags?: string[]; + relatedMetricNames?: string[]; + relatedDatasetNames?: string[]; + relatedFeatureNames?: string[]; + } + // Generated from: com/linkedin/metadata/search/DataConstructChangeManagementDocument.pdsc + + export interface DataConstructChangeManagementDocument extends BaseDocument { + urn: string; + owningEntity?: string; + owningEntityType?: Com.Linkedin.DataConstructChangeManagement.OwningEntityType; + category?: Com.Linkedin.DataConstructChangeManagement.Category; + state?: Com.Linkedin.DataConstructChangeManagement.State; + creator?: string; + createdAt?: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/metadata/search/DatasetAccessGroupDocument.pdsc + + export interface DatasetAccessGroupDocument extends BaseDocument { + urn: string; + name?: string; + admins?: string[]; + dataType?: string; + dataClassification?: Com.Linkedin.Dataset.SecurityClassification; + datasets?: string[]; + corpGroups?: string[]; + } + // Generated from: com/linkedin/metadata/search/DatasetDocument.pdsc + + export interface DatasetDocument extends BaseDocument { + urn: string; + name?: string; + platform?: string; + origin?: Com.Linkedin.Common.FabricType; + owners?: string[]; + accessCount?: number; + deprecated?: boolean; + description?: string; + hasCompliance?: boolean; + hasComplianceProposal?: boolean; + hasOwners?: boolean; + hasSchema?: boolean; + numDownstreamDatasets?: number; + umpBucket?: string; + umpDescription?: string; + umpDisabled?: boolean; + umpFrequency?: Com.Linkedin.Metric.MetricFrequencyType[]; + umpXlntAttributes?: string[]; + likedBy?: string[]; + followedBy?: string[]; + healthScore?: number; + } + // Generated from: com/linkedin/metadata/search/Document.pdsc + + export type Document = + | AzkabanFlowDocument + | AzkabanJobDocument + | CorpUserInfoDocument + | DatasetDocument + | FeatureDocument + | MetricDocument + | RegisteredSchemaDocument; + // Generated from: com/linkedin/metadata/search/FeatureDocument.pdsc + + export interface FeatureDocument extends BaseDocument { + urn: string; + namespace?: string; + name?: string; + description?: string; + documentationLink?: string; + multiproduct?: string; + multiproductVersion?: string; + anchors?: string[]; + sources?: string[]; + baseEntity?: string; + classification?: string; + category?: string; + availability?: string; + status?: Com.Linkedin.Feature.Frame.FeatureStatusType; + tier?: Com.Linkedin.Feature.Frame.FeatureTierType; + owners?: string[]; + path?: string; + } + // Generated from: com/linkedin/metadata/search/GridWorkflowDocument.pdsc + + export interface GridWorkflowDocument extends BaseDocument { + urn: string; + schedulerType?: Com.Linkedin.Grid.SchedulerType; + schedulerId?: string; + workflowNamespace?: string; + tags?: string[]; + } + // Generated from: com/linkedin/metadata/search/GridWorkflowExecutionDocument.pdsc + + export interface GridWorkflowExecutionDocument extends BaseDocument { + urn: string; + schedulerType?: Com.Linkedin.Grid.SchedulerType; + schedulerId?: string; + workflowNamespace?: string; + tags?: string[]; + executionStatus?: Com.Linkedin.Grid.Execution.ExecutionStatus; + workflowExecutionStartTime?: number; + } + // Generated from: com/linkedin/metadata/search/InChartsChartDocument.pdsc + + export interface InChartsChartDocument extends BaseDocument { + urn: string; + owners?: string[]; + title?: string; + description?: string; + metrics?: string[]; + datasets?: string[]; + sourceTables?: string[]; + datasetTypes?: string[]; + protocol?: string; + createdAt?: number; + lastModifiedAt?: number; + } + // Generated from: com/linkedin/metadata/search/InChartsDashboardDocument.pdsc + + export interface InChartsDashboardDocument extends BaseDocument { + urn: string; + owners?: string[]; + title?: string; + description?: string; + company?: string; + business?: string; + team?: string; + accessType?: string; + createdAt?: number; + lastModifiedAt?: number; + } + // Generated from: com/linkedin/metadata/search/InferenceDocument.pdsc + + export interface InferenceDocument extends BaseDocument { + urn: string; + name?: string; + multiproduct?: string; + srcDatasetName?: string; + srcFeatureName?: string; + sourceType?: Com.Linkedin.Common.InferenceSourceType; + memberFacingName?: string; + memberFacingDescription?: string; + category?: string; + memberFacingCategoryDesc?: string; + valueExportable?: boolean; + platform?: string; + presentationFunctionMapping?: Com.Linkedin.Inference.PresentationFunctionType[]; + presentationInlineMappingName?: string; + presentationTableMappingName?: string; + eatIn?: boolean; + takeout?: boolean; + tier3?: boolean; + status?: string; + activeTimeAt?: Com.Linkedin.Common.Time; + statusCreatedTime?: Com.Linkedin.Common.Time; + statusCreator?: string; + owners?: string[]; + } + // Generated from: com/linkedin/metadata/search/MetricDocument.pdsc + + export interface MetricDocument extends BaseDocument { + urn: string; + type?: string; + name?: string; + dataset?: string; + disabled?: boolean; + bucket?: string; + domain?: string; + highPriority?: boolean; + description?: string; + tier?: string[]; + frequency?: Com.Linkedin.Metric.MetricFrequencyType[]; + derived?: boolean; + pii?: boolean; + tags?: string[]; + displayName?: string; + displayGroup?: string; + formula?: string; + owners?: string[]; + path?: string; + certified?: boolean; + usedInCertifiedRaptorDashboard?: boolean; + businessCritical?: boolean; + datasetDescription?: string; + numPreapprovedACLOwners?: number; + numProdACLIds?: number; + searchTags?: string[]; + governanceTier?: string; + healthScore?: number; + likedBy?: string[]; + followedBy?: string[]; + } + // Generated from: com/linkedin/metadata/search/MlDeploymentGroupDocument.pdsc + + export interface MlDeploymentGroupDocument extends BaseDocument { + urn: string; + name?: string; + } + // Generated from: com/linkedin/metadata/search/MlExperimentDocument.pdsc + + export interface MlExperimentDocument extends BaseDocument { + urn: string; + name?: string; + creator?: string; + createdAt?: Com.Linkedin.Common.Time; + description?: string; + projectId?: string; + } + // Generated from: com/linkedin/metadata/search/MlFeatureAnchorDocument.pdsc + + export interface MlFeatureAnchorDocument extends BaseDocument { + urn: string; + mlFeatureVersionUrn?: string; + } + // Generated from: com/linkedin/metadata/search/MlFeatureDocument.pdsc + + export interface MlFeatureDocument extends BaseDocument { + urn: string; + namespace?: string; + name?: string; + description?: string; + documentationLink?: string; + multiproduct?: string; + multiproductVersion?: string; + anchors?: string[]; + sources?: string[]; + baseEntity?: string; + classification?: string; + category?: string; + availability?: string; + status?: Com.Linkedin.Feature.Frame.FeatureStatusType; + tier?: Com.Linkedin.Feature.Frame.FeatureTierType; + owners?: string[]; + } + // Generated from: com/linkedin/metadata/search/MlPipelineRunDocument.pdsc + + export interface MlPipelineRunDocument extends BaseDocument { + urn: string; + creator?: string; + createdAt?: Com.Linkedin.Common.Time; + description?: string; + experimentId?: string; + status?: Com.Linkedin.Proml.MlPipelineRun.RunState; + pipelineVersionUrn?: string; + startAt?: Com.Linkedin.Common.Time; + endAt?: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/metadata/search/MlProjectDocument.pdsc + + export interface MlProjectDocument extends BaseDocument { + urn: string; + name?: string; + creator?: string; + createdAt?: Com.Linkedin.Common.Time; + description?: string; + projectGroupId?: string; + members?: string[]; + } + // Generated from: com/linkedin/metadata/search/MlPublishedModelDocument.pdsc + + export interface MlPublishedModelDocument extends BaseDocument { + urn: string; + name?: string; + deploymentGroupName?: string; + } + // Generated from: com/linkedin/metadata/search/MlTrainedModelDocument.pdsc + + export interface MlTrainedModelDocument extends BaseDocument { + urn: string; + name?: string; + creator?: string; + createdAt?: Com.Linkedin.Common.Time; + description?: string; + location?: string; + } + // Generated from: com/linkedin/metadata/search/RegisteredSchemaDocument.pdsc + + export interface RegisteredSchemaDocument extends BaseDocument { + urn: string; + registeredSchemaType?: Com.Linkedin.Common.RegisteredSchemaType; + name?: string; + repositoryName?: string; + } + } + namespace Snapshot { + // Generated from: com/linkedin/metadata/snapshot/AzkabanFlowSnapshot.pdsc + + export interface AzkabanFlowSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.AzkabanFlowAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/AzkabanJobSnapshot.pdsc + + export interface AzkabanJobSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.AzkabanJobAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/ContainerisedExecutionSnapshot.pdsc + + export interface ContainerisedExecutionSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.ContainerisedExecutionAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/CorpGroupSnapshot.pdsc + + export interface CorpGroupSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.CorpGroupAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/CorpUserSnapshot.pdsc + + export interface CorpUserSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.CorpUserAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/DataConceptSnapshot.pdsc + + export interface DataConceptSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.DataConceptAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/DataConstructChangeManagementSnapshot.pdsc + + export interface DataConstructChangeManagementSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.DataConstructChangeManagementAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/DatasetAccessGroupSnapshot.pdsc + + export interface DatasetAccessGroupSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.DatasetAccessGroupAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/DatasetGroupSnapshot.pdsc + + export interface DatasetGroupSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.DatasetGroupAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/DatasetInstanceSnapshot.pdsc + + export interface DatasetInstanceSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.DatasetInstanceAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/DatasetPartitionSnapshot.pdsc + + export interface DatasetPartitionSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.DatasetPartitionAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/DatasetSnapshot.pdsc + + export interface DatasetSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.DatasetAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/ExperimentAlertSubscriptionSnapshot.pdsc + + export interface ExperimentAlertSubscriptionSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.ExperimentAlertSubscriptionAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/FeatureSnapshot.pdsc + + export interface FeatureSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.FeatureAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/GridGroupSnapshot.pdsc + + export interface GridGroupSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.GridGroupAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/GridJobExecutionSnapshot.pdsc + + export interface GridJobExecutionSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.GridJobExecutionAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/GridUserSnapshot.pdsc + + export interface GridUserSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.GridUserAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/GridWorkflowExecutionSnapshot.pdsc + + export interface GridWorkflowExecutionSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.GridWorkflowExecutionAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/GridWorkflowSnapshot.pdsc + + export interface GridWorkflowSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.GridWorkflowAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/InchartsChartInstanceSnapshot.pdsc + + export interface InchartsChartInstanceSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.InchartsChartInstanceAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/InchartsChartSnapshot.pdsc + + export interface InchartsChartSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.InchartsChartAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/InchartsDashboardSnapshot.pdsc + + export interface InchartsDashboardSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.InchartsDashboardAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/InferenceCategorySnapshot.pdsc + + export interface InferenceCategorySnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.InferenceCategoryAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/InferenceSnapshot.pdsc + + export interface InferenceSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.InferenceAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MetricSnapshot.pdsc + + export interface MetricSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MetricAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlArtifactSnapshot.pdsc + + export interface MlArtifactSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlArtifactAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlDataAnalysisResultSnapshot.pdsc + + export interface MlDataAnalysisResultSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlDataAnalysisResultAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlDeploymentGroupSnapshot.pdsc + + export interface MlDeploymentGroupSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlDeploymentGroupAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlExperimentSnapshot.pdsc + + export interface MlExperimentSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlExperimentAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlExportedFeaturizedDatasetSnapshot.pdsc + + export interface MlExportedFeaturizedDatasetSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlExportedFeaturizedDatasetAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlFeatureAnchorSnapshot.pdsc + + export interface MlFeatureAnchorSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlFeatureAnchorAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlFeatureCreationResultSnapshot.pdsc + + export interface MlFeatureCreationResultSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlFeatureCreationResultAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlFeatureSnapshot.pdsc + + export interface MlFeatureSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.FeatureAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlFeatureVersionSnapshot.pdsc + + export interface MlFeatureVersionSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlFeatureVersionAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlFeaturizedDatasetSnapshot.pdsc + + export interface MlFeaturizedDatasetSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlFeaturizedDatasetAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlModelAnalysisResultSnapshot.pdsc + + export interface MlModelAnalysisResultSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlModelAnalysisResultAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlModelTrainingSummarySnapshot.pdsc + + export interface MlModelTrainingSummarySnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlModelTrainingSummaryAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlModelValidationResultSnapshot.pdsc + + export interface MlModelValidationResultSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlModelValidationResultAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlPipelineRunSnapshot.pdsc + + export interface MlPipelineRunSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlPipelineRunAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlPipelineSnapshot.pdsc + + export interface MlPipelineSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlPipelineAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlPipelineStepRunOutputSnapshot.pdsc + + export interface MlPipelineStepRunOutputSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlPipelineStepRunOutputAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlPipelineStepRunSnapshot.pdsc + + export interface MlPipelineStepRunSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlPipelineStepRunAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlPipelineVersionSnapshot.pdsc + + export interface MlPipelineVersionSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlPipelineVersionAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlProblemStatementSnapshot.pdsc + + export interface MlProblemStatementSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlProblemStatementAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlProjectGroupSnapshot.pdsc + + export interface MlProjectGroupSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlProjectGroupAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlProjectSnapshot.pdsc + + export interface MlProjectSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlProjectAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlPublishedModelSnapshot.pdsc + + export interface MlPublishedModelSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlPublishedModelAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlPublishedModelVersionSnapshot.pdsc + + export interface MlPublishedModelVersionSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlPublishedModelVersionAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlTaskExecutionLogSnapshot.pdsc + + export interface MlTaskExecutionLogSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlTaskExecutionLogAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/MlTrainedModelSnapshot.pdsc + + export interface MlTrainedModelSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.MlTrainedModelAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/RegisteredSchemaSnapshot.pdsc + + export interface RegisteredSchemaSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.RegisteredSchemaAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/SamzaJobInstanceSnapshot.pdsc + + export interface SamzaJobInstanceSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.SamzaJobInstanceAspect[]; + } + // Generated from: com/linkedin/metadata/snapshot/Snapshot.pdsc + + export type Snapshot = + | AzkabanFlowSnapshot + | AzkabanJobSnapshot + | ContainerisedExecutionSnapshot + | CorpUserSnapshot + | CorpGroupSnapshot + | DataConceptSnapshot + | DataConstructChangeManagementSnapshot + | DatasetAccessGroupSnapshot + | DatasetGroupSnapshot + | DatasetSnapshot + | DatasetInstanceSnapshot + | DatasetPartitionSnapshot + | ExperimentAlertSubscriptionSnapshot + | FeatureSnapshot + | GridUserSnapshot + | GridGroupSnapshot + | GridJobExecutionSnapshot + | GridWorkflowExecutionSnapshot + | GridWorkflowSnapshot + | InchartsChartInstanceSnapshot + | InchartsChartSnapshot + | InchartsDashboardSnapshot + | InferenceCategorySnapshot + | InferenceSnapshot + | MetricSnapshot + | MlArtifactSnapshot + | MlDataAnalysisResultSnapshot + | MlDeploymentGroupSnapshot + | MlExperimentSnapshot + | MlExportedFeaturizedDatasetSnapshot + | MlFeatureAnchorSnapshot + | MlFeatureCreationResultSnapshot + | MlFeatureSnapshot + | MlFeaturizedDatasetSnapshot + | MlModelAnalysisResultSnapshot + | MlModelTrainingSummarySnapshot + | MlModelValidationResultSnapshot + | MlPipelineRunSnapshot + | MlPipelineSnapshot + | MlPipelineStepRunOutputSnapshot + | MlPipelineStepRunSnapshot + | MlPipelineVersionSnapshot + | MlProblemStatementSnapshot + | MlProjectGroupSnapshot + | MlProjectSnapshot + | MlPublishedModelSnapshot + | MlPublishedModelVersionSnapshot + | MlTrainedModelSnapshot + | MlTaskExecutionLogSnapshot + | RegisteredSchemaSnapshot + | SamzaJobInstanceSnapshot + | WormholeNamespaceSnapshot; + // Generated from: com/linkedin/metadata/snapshot/SnapshotKey.pdsc + + export interface SnapshotKey { + aspectVersions: Com.Linkedin.Metadata.Aspect.AspectVersion[]; + } + // Generated from: com/linkedin/metadata/snapshot/WormholeNamespaceSnapshot.pdsc + + export interface WormholeNamespaceSnapshot { + urn: string; + aspects: Com.Linkedin.Metadata.Aspect.WormholeNamespaceAspect[]; + } + } + } + namespace Metric { + // Generated from: com/linkedin/metric/Metric.pdsc + + export interface Metric { + type: MetricType; + name: string; + health?: Com.Linkedin.Common.Health; + institutionalMemory?: Com.Linkedin.Common.InstitutionalMemory; + ownership?: Com.Linkedin.Common.Ownership; + umpMetricProperties?: Com.Linkedin.Metric.Ump.UMPMetricProperties; + userEditableMetricProperties?: UserEditableMetricProperties; + metricGovernance?: MetricGovernance; + } + // Generated from: com/linkedin/metric/MetricFrequencyType.pdsc + + export type MetricFrequencyType = 'REALTIME' | 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY'; + // Generated from: com/linkedin/metric/MetricGovernance.pdsc + + export interface MetricGovernance { + certifiedHierarchies: string[]; + } + // Generated from: com/linkedin/metric/MetricGovernanceTier.pdsc + + export type MetricGovernanceTier = 'TIER_X' | 'TIER_0' | 'TIER_1' | 'TIER_2'; + // Generated from: com/linkedin/metric/MetricKey.pdsc + + export interface MetricKey { + name: string; + type: MetricType; + } + // Generated from: com/linkedin/metric/MetricType.pdsc + + export type MetricType = 'UMP'; + // Generated from: com/linkedin/metric/UserEditableMetricProperties.pdsc + + export interface UserEditableMetricProperties extends Com.Linkedin.Common.BaseUserEditableInfo {} + // Generated from: com/linkedin/metric/UserEditableMetricPropertiesDelta.pdsc + + export interface UserEditableMetricPropertiesDelta { + tagsToAdd: string[]; + tagsToRemove: string[]; + } + namespace Ump { + // Generated from: com/linkedin/metric/ump/CodeInfo.pdsc + + export interface CodeInfo { + name: string; + codeSearchUrl: string; + changeLogUrl: string; + gitUrl: string; + } + // Generated from: com/linkedin/metric/ump/MetricColumnInfo.pdsc + + export interface MetricColumnInfo { + name: string; + description: string; + fieldFormat?: Com.Linkedin.Dataset.FieldFormat; + complianceType: Com.Linkedin.Dataset.ComplianceDataType; + } + // Generated from: com/linkedin/metric/ump/MetricDownstreamAppType.pdsc + + export type MetricDownstreamAppType = 'RAPTOR' | 'THIRDEYE' | 'XLNT' | 'PINOT' | 'VOLDEMORT'; + // Generated from: com/linkedin/metric/ump/TierInfo.pdsc + + export interface TierInfo { + frequency: Com.Linkedin.Metric.MetricFrequencyType; + value: number; + } + // Generated from: com/linkedin/metric/ump/UMPDatafileProperties.pdsc + + export interface UMPDatafileProperties { + name: string; + frequency: Com.Linkedin.Metric.MetricFrequencyType; + enabled: boolean; + delay: number; + window: number; + scriptType: UMPMetricScriptType; + } + // Generated from: com/linkedin/metric/ump/UMPMetricCode.pdsc + + export interface UMPMetricCode { + directory: CodeInfo; + files: CodeInfo[]; + aclOwners: string[]; + } + // Generated from: com/linkedin/metric/ump/UMPMetricDimension.pdsc + + export interface UMPMetricDimension { + dimensions: Com.Linkedin.Dataset.Ump.DimensionProperties[]; + } + // Generated from: com/linkedin/metric/ump/UMPMetricDirectionType.pdsc + + export type UMPMetricDirectionType = 'UP' | 'DOWN'; + // Generated from: com/linkedin/metric/ump/UMPMetricFormula.pdsc + + export interface UMPMetricFormula { + formula: string; + aggregationFunction: string; + attributes: MetricColumnInfo[]; + measures: MetricColumnInfo[]; + upstreamMetrics: string[]; + } + // Generated from: com/linkedin/metric/ump/UMPMetricInput.pdsc + + export interface UMPMetricInput extends Com.Linkedin.Dataset.Ump.UMPDataInput {} + // Generated from: com/linkedin/metric/ump/UMPMetricProperties.pdsc + + export interface UMPMetricProperties { + name: string; + dataset: string; + bucket: string; + domain?: string; + displayName?: string; + displayGroup?: string; + datafiles: UMPDatafileProperties[]; + description: string; + tier: TierInfo[]; + frequency: Com.Linkedin.Metric.MetricFrequencyType[]; + derived: boolean; + highPriority: boolean; + pii: boolean; + tags: string[]; + goodDirection: UMPMetricDirectionType; + formulaData: UMPMetricFormula; + businessCriticalHierarchies: string[]; + certifiedHierarchies: string[]; + searchTags: string[]; + governanceTier: Com.Linkedin.Metric.MetricGovernanceTier; + } + // Generated from: com/linkedin/metric/ump/UMPMetricScriptType.pdsc + + export type UMPMetricScriptType = 'PIG' | 'HIVE' | 'SPARK' | 'NONE'; + } + } + namespace Mxe { + // Generated from: com/linkedin/mxe/FailedMetadataChangeEvent.pdsc + + export interface FailedMetadataChangeEvent { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + metadataChangeEvent: MetadataChangeEvent; + error: string; + } + // Generated from: com/linkedin/mxe/MetadataAuditEvent.pdsc + + export interface MetadataAuditEvent { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + oldSnapshot?: Com.Linkedin.Metadata.Snapshot.Snapshot; + newSnapshot: Com.Linkedin.Metadata.Snapshot.Snapshot; + } + // Generated from: com/linkedin/mxe/MetadataChangeEvent.pdsc + + export interface MetadataChangeEvent { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + proposedSnapshot?: Com.Linkedin.Metadata.Snapshot.Snapshot; + proposedDelta?: Com.Linkedin.Metadata.Delta.Delta; + } + // Generated from: com/linkedin/mxe/MetadataGraphEvent.pdsc + + export interface MetadataGraphEvent { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + upsertedEntities: Com.Linkedin.Metadata.Entity.Entity[]; + removedRelationships: Com.Linkedin.Metadata.Relationship.Relationship[]; + upsertedRelationships: Com.Linkedin.Metadata.Relationship.Relationship[]; + } + // Generated from: com/linkedin/mxe/MetadataSearchEvent.pdsc + + export interface MetadataSearchEvent { + auditHeader?: Com.Linkedin.Avro2pegasus.Events.KafkaAuditHeader; + upsertedDocuments: Com.Linkedin.Metadata.Search.Document[]; + } + } + namespace Proml { + // Generated from: com/linkedin/proml/MlFeature.pdsc + + export interface MlFeature { + name: string; + namespace: string; + ownership?: Com.Linkedin.Common.Ownership; + frameFeatureAvailabilityConfig?: Com.Linkedin.Feature.Frame.FrameFeatureAvailabilityConfig; + frameFeatureConfig?: Com.Linkedin.Feature.Frame.FrameFeatureConfig; + frameFeatureEditableConfig?: Com.Linkedin.Feature.Frame.FrameFeatureEditableConfig; + frameDerivedFeatureConfig?: Com.Linkedin.Feature.Frame.FrameDerivedFeatureConfig; + frameFeatureInferenceInfo?: Com.Linkedin.Feature.Frame.FrameFeatureInferenceInfo; + frameFeatureStatusConfig?: Com.Linkedin.Feature.Frame.FrameFeatureStatusConfig; + frameFeatureTierConfig?: Com.Linkedin.Feature.Frame.FrameFeatureTierConfig; + frameFeatureUsageInfo?: Com.Linkedin.Feature.Frame.FrameFeatureUsageInfo; + } + namespace Common { + // Generated from: com/linkedin/proml/common/DaliLocation.pdsc + + export interface DaliLocation { + uri: Com.Linkedin.Common.Uri; + } + // Generated from: com/linkedin/proml/common/ErrorResponse.pdsc + + export interface ErrorResponse { + code?: string; + message: string; + details?: string; + } + // Generated from: com/linkedin/proml/common/FeatureRef.pdsc + + export type FeatureRef = string; + // Generated from: com/linkedin/proml/common/HdfsLocation.pdsc + + export interface HdfsLocation { + path: string; + } + // Generated from: com/linkedin/proml/common/JsonString.pdsc + + export type JsonString = string; + // Generated from: com/linkedin/proml/common/Member.pdsc + + export type Member = { corpUser: string } | { corpGroup: string }; + // Generated from: com/linkedin/proml/common/Members.pdsc + + export interface Members { + adminList: Member[]; + } + // Generated from: com/linkedin/proml/common/MlDeprecation.pdsc + + export interface MlDeprecation extends Com.Linkedin.Common.BaseDeprecation {} + namespace Feature { + // Generated from: com/linkedin/proml/common/feature/PublishInfo.pdsc + + export interface PublishInfo { + publishTargets: PublishTarget[]; + } + // Generated from: com/linkedin/proml/common/feature/PublishTarget.pdsc + + export type PublishTarget = + | Com.Linkedin.Common.VersionedMultiProductModule + | Com.Linkedin.Common.VersionedMultiProduct; + } + } + namespace MlArtifact { + // Generated from: com/linkedin/proml/mlArtifact/ArtifactInfo.pdsc + + export interface ArtifactInfo { + type: ArtifactType; + creation: Com.Linkedin.Common.AuditStamp; + pipelineStepRunOutput?: string; + } + // Generated from: com/linkedin/proml/mlArtifact/ArtifactType.pdsc + + export type ArtifactType = + | 'CUSTOM' + | 'MODEL_ANALYSIS_RESULT' + | 'MODEL_VALIDATION_RESULT' + | 'PUBLISHED_MODEL_VERSION' + | 'TRAINED_MODEL' + | 'FEATURIZED_DATASET' + | 'DATA_ANALYSIS_RESULT' + | 'MODEL_TRAINING_SUMMARY' + | 'EXPORTED_FEATURIZED_DATASET' + | 'FEATURE_CREATION_RESULT'; + // Generated from: com/linkedin/proml/mlArtifact/Id.pdsc + + export interface Id { + artifactId: string; + } + // Generated from: com/linkedin/proml/mlArtifact/StandardArtifactUrn.pdsc + + export interface StandardArtifactUrn { + artifactUrn?: StandardArtifactUrnType; + } + // Generated from: com/linkedin/proml/mlArtifact/StandardArtifactUrnType.pdsc + + export type StandardArtifactUrnType = + | { trainedModel: string } + | { analysisResult: string } + | { validationResult: string } + | { publishedModel: string } + | { featurizedDataset: string } + | { modelAnalysisResult: string } + | { dataAnalysisResult: string } + | { modelTrainingSummary: string } + | { exportedFeaturizedDataset: string } + | { featureCreationResult: string }; + } + namespace MlDataAnalysisResult { + // Generated from: com/linkedin/proml/mlDataAnalysisResult/AnalyzedDatasets.pdsc + + export interface AnalyzedDatasets { + datasets: { [id: string]: string }; + } + // Generated from: com/linkedin/proml/mlDataAnalysisResult/DataAnalysisResultInfo.pdsc + + export interface DataAnalysisResultInfo { + name?: string; + creation: Com.Linkedin.Common.AuditStamp; + resultLocation: string; + artifact: string; + } + // Generated from: com/linkedin/proml/mlDataAnalysisResult/Id.pdsc + + export interface Id { + dataAnalysisResultId: string; + } + } + namespace MlDeploymentGroup { + // Generated from: com/linkedin/proml/mlDeploymentGroup/DeploymentGroupInfo.pdsc + + export interface DeploymentGroupInfo { + name: string; + description?: string; + creation: Com.Linkedin.Common.AuditStamp; + namespace: string; + } + // Generated from: com/linkedin/proml/mlDeploymentGroup/Id.pdsc + + export interface Id { + mlDeploymentGroupId: string; + } + // Generated from: com/linkedin/proml/mlDeploymentGroup/PublishedModels.pdsc + + export interface PublishedModels { + publishedModels: string[]; + } + // Generated from: com/linkedin/proml/mlDeploymentGroup/PublishedModelVersions.pdsc + + export interface PublishedModelVersions { + publishedModelVersions: string[]; + } + } + namespace MlExperiment { + // Generated from: com/linkedin/proml/mlExperiment/ExperimentInfo.pdsc + + export interface ExperimentInfo { + name: string; + description?: string; + creation: Com.Linkedin.Common.AuditStamp; + ttlMin?: number; + project: string; + } + // Generated from: com/linkedin/proml/mlExperiment/Id.pdsc + + export interface Id { + experimentId: string; + } + // Generated from: com/linkedin/proml/mlExperiment/PipelineRuns.pdsc + + export interface PipelineRuns { + pipelineRuns: string[]; + } + } + namespace MlExportedFeaturizedDataset { + // Generated from: com/linkedin/proml/mlExportedFeaturizedDataset/ExportedFeaturizedDatasetInfo.pdsc + + export interface ExportedFeaturizedDatasetInfo { + creation: Com.Linkedin.Common.AuditStamp; + artifact: string; + } + // Generated from: com/linkedin/proml/mlExportedFeaturizedDataset/GridExportation.pdsc + + export interface GridExportation { + exportedDatasetLocation: string; + } + // Generated from: com/linkedin/proml/mlExportedFeaturizedDataset/Id.pdsc + + export interface Id { + exportedFeaturizedDatasetId: string; + } + // Generated from: com/linkedin/proml/mlExportedFeaturizedDataset/VeniceExportation.pdsc + + export interface VeniceExportation { + preExportDatasetLocation: string; + veniceStoreName: string; + } + } + namespace MlFeatureAnchor { + // Generated from: com/linkedin/proml/mlFeatureAnchor/FeatureAnchor.pdsc + + export interface FeatureAnchor { + anchor: + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.CouchbaseDataSourceAnchor + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.CustomDataSourceAnchor + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.EspressoDataSourceAnchor + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.InMemoryPassthroughDataSourceAnchor + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.RestliDataSourceAnchor + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.VeniceDataSourceAnchor + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.HdfsDataSourceAnchor + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.ObservationPassthroughDataSourceAnchor + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.OfflineFeatureSourcesAnchor + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.OnlineFeatureSourcesAnchor + | Com.Linkedin.Proml.MlFeatureAnchor.Anchor.CrossEnvironmentFeatureSourcesAnchor; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/PublishInfoDelta.pdsc + + export interface PublishInfoDelta { + publishTargetToUpdate: Com.Linkedin.Proml.Common.Feature.PublishTarget; + } + namespace Anchor { + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/CouchbaseDataSourceAnchor.pdsc + + export interface CouchbaseDataSourceAnchor + extends Com.Linkedin.Proml.MlFeatureAnchor.Common.TransformationFunctionForOnlineDataSource { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.CouchbaseDataSource; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/CrossEnvironmentFeatureSourcesAnchor.pdsc + + export interface CrossEnvironmentFeatureSourcesAnchor { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.FeatureSource[]; + transformationFunction: Com.Linkedin.Proml.MlFeatureAnchor.Common.UnspecifiedTransformationFunction; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/CustomDataSourceAnchor.pdsc + + export interface CustomDataSourceAnchor + extends Com.Linkedin.Proml.MlFeatureAnchor.Common.TransformationFunctionForOnlineDataSource { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.CustomDataSource; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/EspressoDataSourceAnchor.pdsc + + export interface EspressoDataSourceAnchor + extends Com.Linkedin.Proml.MlFeatureAnchor.Common.TransformationFunctionForOnlineDataSource { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.EspressoDataSource; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/HdfsDataSourceAnchor.pdsc + + export interface HdfsDataSourceAnchor + extends Com.Linkedin.Proml.MlFeatureAnchor.Common.TransformationFunctionForOfflineDataSource { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.HdfsDataSource; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/InMemoryPassthroughDataSourceAnchor.pdsc + + export interface InMemoryPassthroughDataSourceAnchor + extends Com.Linkedin.Proml.MlFeatureAnchor.Common.TransformationFunctionForOnlineDataSource { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.InMemoryPassthroughDataSource; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/ObservationPassthroughDataSourceAnchor.pdsc + + export interface ObservationPassthroughDataSourceAnchor + extends Com.Linkedin.Proml.MlFeatureAnchor.Common.TransformationFunctionForOfflineDataSource { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.ObservationPassthroughDataSource; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/OfflineFeatureSourcesAnchor.pdsc + + export interface OfflineFeatureSourcesAnchor { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.FeatureSource[]; + transformationFunction: Com.Linkedin.Proml.MlFeatureAnchor.Common.UnspecifiedTransformationFunction; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/OnlineFeatureSourcesAnchor.pdsc + + export interface OnlineFeatureSourcesAnchor { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.FeatureSource[]; + transformationFunction: Com.Linkedin.Proml.MlFeatureAnchor.Common.UnspecifiedTransformationFunction; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/RestliDataSourceAnchor.pdsc + + export interface RestliDataSourceAnchor + extends Com.Linkedin.Proml.MlFeatureAnchor.Common.TransformationFunctionForOnlineDataSource { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.RestliDataSource; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/anchor/VeniceDataSourceAnchor.pdsc + + export interface VeniceDataSourceAnchor + extends Com.Linkedin.Proml.MlFeatureAnchor.Common.TransformationFunctionForOnlineDataSource { + source: Com.Linkedin.Proml.MlFeatureAnchor.Source.VeniceDataSource; + } + } + namespace Common { + // Generated from: com/linkedin/proml/mlFeatureAnchor/common/Clazz.pdsc + + export interface Clazz { + fullyQualifiedName: string; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/common/MvelExpression.pdsc + + export interface MvelExpression { + mvel: string; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/common/SparkSqlExpression.pdsc + + export interface SparkSqlExpression { + sql: string; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/common/TransformationFunctionForOfflineDataSource.pdsc + + export interface TransformationFunctionForOfflineDataSource { + transformationFunction: UnspecifiedTransformationFunction; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/common/TransformationFunctionForOnlineDataSource.pdsc + + export interface TransformationFunctionForOnlineDataSource { + transformationFunction: UnspecifiedTransformationFunction; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/common/UnspecifiedTransformationFunction.pdsc + + export interface UnspecifiedTransformationFunction {} + // Generated from: com/linkedin/proml/mlFeatureAnchor/common/UserDefinedFunction.pdsc + + export interface UserDefinedFunction { + clazz: Clazz; + } + } + namespace Source { + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/CouchbaseDataSource.pdsc + + export interface CouchbaseDataSource { + bucketName: string; + bootstrapServers: Com.Linkedin.Common.Uri[]; + documentDataModel: Com.Linkedin.Proml.MlFeatureAnchor.Common.Clazz; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/CustomDataSource.pdsc + + export interface CustomDataSource { + dataModel: Com.Linkedin.Proml.MlFeatureAnchor.Common.Clazz; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/DataSource.pdsc + + export interface DataSource { + source: + | CouchbaseDataSource + | CustomDataSource + | EspressoDataSource + | HdfsDataSource + | InMemoryPassthroughDataSource + | ObservationPassthroughDataSource + | RestliDataSource + | VeniceDataSource; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/DateTimeFormat.pdsc + + export type DateTimeFormat = string; + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/EspressoDataSource.pdsc + + export interface EspressoDataSource { + databaseName: string; + tableName: string; + d2Uri: Com.Linkedin.Common.Uri; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/FeatureSource.pdsc + + export interface FeatureSource { + urn: string; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/HdfsDataSource.pdsc + + export interface HdfsDataSource { + datasetLocation: Com.Linkedin.Proml.Common.HdfsLocation | Com.Linkedin.Proml.Common.DaliLocation; + timeField?: TimeField; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/InMemoryPassthroughDataSource.pdsc + + export interface InMemoryPassthroughDataSource { + dataModel: Com.Linkedin.Proml.MlFeatureAnchor.Common.Clazz; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/ObservationPassthroughDataSource.pdsc + + export interface ObservationPassthroughDataSource {} + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/PathSpec.pdsc + + export type PathSpec = string; + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/RestliDataSource.pdsc + + export interface RestliDataSource { + resourceName: string; + projections?: PathSpec[]; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/RestRequestParamValue.pdsc + + export type RestRequestParamValue = Com.Linkedin.Proml.Common.JsonString; + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/TimeField.pdsc + + export interface TimeField { + name: string; + format: TimeFieldFormat; + } + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/TimeFieldFormat.pdsc + + export type TimeFieldFormat = TimestampGranularity | DateTimeFormat; + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/TimestampGranularity.pdsc + + export type TimestampGranularity = 'SECONDS' | 'MILLISECONDS'; + // Generated from: com/linkedin/proml/mlFeatureAnchor/source/VeniceDataSource.pdsc + + export interface VeniceDataSource { + storeName: string; + } + } + } + namespace MlFeatureCreationResult { + // Generated from: com/linkedin/proml/mlFeatureCreationResult/FeatureCreationResultInfo.pdsc + + export interface FeatureCreationResultInfo { + creation: Com.Linkedin.Common.AuditStamp; + featureCreationResultLocation: string; + artifact: string; + featureRefs: Com.Linkedin.Proml.Common.FeatureRef[]; + } + // Generated from: com/linkedin/proml/mlFeatureCreationResult/Id.pdsc + + export interface Id { + featureCreationResultId: string; + } + } + namespace MlFeatureVersion { + // Generated from: com/linkedin/proml/mlFeatureVersion/DimensionType.pdsc + + export type DimensionType = 'LONG' | 'INT' | 'STRING'; + // Generated from: com/linkedin/proml/mlFeatureVersion/FeatureFormat.pdsc + + export interface FeatureFormat { + valueType: ValueType; + dimensionTypes: DimensionType[]; + } + // Generated from: com/linkedin/proml/mlFeatureVersion/FeatureValue.pdsc + + export type FeatureValue = number | number | number | number | string; + // Generated from: com/linkedin/proml/mlFeatureVersion/FeatureVersion.pdsc + + export interface FeatureVersion { + format?: FeatureFormat; + defaultValue?: FeatureValue; + } + // Generated from: com/linkedin/proml/mlFeatureVersion/ValueType.pdsc + + export type ValueType = 'INT' | 'LONG' | 'FLOAT' | 'DOUBLE' | 'STRING' | 'BOOLEAN'; + } + namespace MlFeaturizedDataset { + // Generated from: com/linkedin/proml/mlFeaturizedDataset/FeaturizedDatasetInfo.pdsc + + export interface FeaturizedDatasetInfo { + creation: Com.Linkedin.Common.AuditStamp; + featurizedDatasetLocation: string; + artifact: string; + } + // Generated from: com/linkedin/proml/mlFeaturizedDataset/Id.pdsc + + export interface Id { + featurizedDatasetId?: string; + modelFeaturizedDatasetId?: string; + } + } + namespace MlModelAnalysisResult { + // Generated from: com/linkedin/proml/mlModelAnalysisResult/AnalyzedModel.pdsc + + export interface AnalyzedModel { + analyzedModel: string; + } + // Generated from: com/linkedin/proml/mlModelAnalysisResult/BinaryClassificationMetricsAnalyzerResult.pdsc + + export interface BinaryClassificationMetricsAnalyzerResult { + areaUnderReceiverOperatingCharacteristicCurve?: number; + areaUnderPrecisionRecallCurve?: number; + } + // Generated from: com/linkedin/proml/mlModelAnalysisResult/Id.pdsc + + export interface Id { + modelAnalysisResultId: string; + } + // Generated from: com/linkedin/proml/mlModelAnalysisResult/ModelAgnosticFeatureImportanceAnalyzerResult.pdsc + + export interface ModelAgnosticFeatureImportanceAnalyzerResult { + results: Array<{ + feature: string; + indicators: { + averageAbsoluteScoreDelta?: number; + rankingSimilarity?: { + average: number; + stddev: number; + count: number; + }; + }; + }>; + } + // Generated from: com/linkedin/proml/mlModelAnalysisResult/ModelAnalysisResultInfo.pdsc + + export interface ModelAnalysisResultInfo { + name?: string; + creation: Com.Linkedin.Common.AuditStamp; + resultLocation: string; + artifact: string; + } + // Generated from: com/linkedin/proml/mlModelAnalysisResult/MulticlassMetricsAnalyzerResult.pdsc + + export interface MulticlassMetricsAnalyzerResult { + accuracy?: number; + } + // Generated from: com/linkedin/proml/mlModelAnalysisResult/RankingMetricsAnalyzerResult.pdsc + + export interface RankingMetricsAnalyzerResult { + normalizedDiscountedCumulativeGainByK?: Array<{ + k: number; + value: number; + }>; + precisionByKAndThreshold?: Array<{ + k: number; + threshold: number; + value: number; + }>; + meanAveragePrecisionByThreshold?: Array<{ + threshold: number; + value: number; + }>; + } + // Generated from: com/linkedin/proml/mlModelAnalysisResult/RegressionMetricsAnalyzerResult.pdsc + + export interface RegressionMetricsAnalyzerResult { + rootMeanSquaredError?: number; + meanSquaredError?: number; + meanAbsoluteError?: number; + } + // Generated from: com/linkedin/proml/mlModelAnalysisResult/ReplayMetricsAnalyzerResult.pdsc + + export interface ReplayMetricsAnalyzerResult { + results?: Array<{ + metricId: string; + response: string; + reward: number; + matchedImpressions: number; + }>; + } + // Generated from: com/linkedin/proml/mlModelAnalysisResult/TestDataset.pdsc + + export interface TestDataset { + testDataset: string; + } + } + namespace MlModelTrainingSummary { + // Generated from: com/linkedin/proml/mlModelTrainingSummary/Id.pdsc + + export interface Id { + modelTrainingSummaryId: string; + } + // Generated from: com/linkedin/proml/mlModelTrainingSummary/ModelTrainingSummaryInfo.pdsc + + export interface ModelTrainingSummaryInfo { + creation: Com.Linkedin.Common.AuditStamp; + artifact: string; + trainedModel: string; + location: string; + } + } + namespace MlModelValidationResult { + // Generated from: com/linkedin/proml/mlModelValidationResult/Id.pdsc + + export interface Id { + modelValidationResultId: string; + } + // Generated from: com/linkedin/proml/mlModelValidationResult/ModelValidationResultInfo.pdsc + + export interface ModelValidationResultInfo { + mlTrainedModel: string; + creation: Com.Linkedin.Common.AuditStamp; + valid: boolean; + validations: ValidationDetails[]; + artifact: string; + } + // Generated from: com/linkedin/proml/mlModelValidationResult/ValidationDetails.pdsc + + export interface ValidationDetails { + type: ValidationType; + outcome: ValidationOutcome; + name?: string; + validationMessage?: string; + errorDetails?: Com.Linkedin.Proml.Common.ErrorResponse; + } + // Generated from: com/linkedin/proml/mlModelValidationResult/ValidationOutcome.pdsc + + export type ValidationOutcome = 'ERROR' | 'SUCCESS' | 'WARNING'; + // Generated from: com/linkedin/proml/mlModelValidationResult/ValidationType.pdsc + + export type ValidationType = 'DEPENDENCY_VALIDATION' | 'ONLINE_FEATURE_AVAILABILITY' | 'ABSOLUTE_MODEL_SIZE'; + } + namespace MlPipeline { + // Generated from: com/linkedin/proml/mlPipeline/Id.pdsc + + export interface Id { + pipelineId: string; + } + // Generated from: com/linkedin/proml/mlPipeline/PipelineInfo.pdsc + + export interface PipelineInfo { + name: string; + project: string; + } + // Generated from: com/linkedin/proml/mlPipeline/Versions.pdsc + + export interface Versions { + versions: string[]; + } + } + namespace MlPipelineRun { + // Generated from: com/linkedin/proml/mlPipelineRun/ExecutionId.pdsc + + export interface ExecutionId { + executionId: string; + platform: Platform; + } + // Generated from: com/linkedin/proml/mlPipelineRun/ExecutionIds.pdsc + + export interface ExecutionIds { + executionIds: ExecutionId[]; + } + // Generated from: com/linkedin/proml/mlPipelineRun/Id.pdsc + + export interface Id { + runId: string; + } + // Generated from: com/linkedin/proml/mlPipelineRun/PipelineRunEndTime.pdsc + + export interface PipelineRunEndTime { + endAt?: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/proml/mlPipelineRun/PipelineRunInfo.pdsc + + export interface PipelineRunInfo { + description?: string; + creation: Com.Linkedin.Common.AuditStamp; + pipelineVersion: string; + experiment: string; + } + // Generated from: com/linkedin/proml/mlPipelineRun/PipelineRunStartTime.pdsc + + export interface PipelineRunStartTime { + startAt?: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/proml/mlPipelineRun/PipelineRunStatus.pdsc + + export interface PipelineRunStatus { + status?: RunState; + } + // Generated from: com/linkedin/proml/mlPipelineRun/PipelineStepsRuns.pdsc + + export interface PipelineStepsRuns { + stepsRuns: string[]; + } + // Generated from: com/linkedin/proml/mlPipelineRun/Platform.pdsc + + export type Platform = 'AZKABAN' | 'UNKNOWN'; + // Generated from: com/linkedin/proml/mlPipelineRun/RunState.pdsc + + export type RunState = 'CANCELED' | 'CANCELING' | 'FAILED' | 'QUEUED' | 'RUNNING' | 'STARTED' | 'SUCCEEDED'; + } + namespace MlPipelineStepRun { + // Generated from: com/linkedin/proml/mlPipelineStepRun/Id.pdsc + + export interface Id { + stepRunId: string; + } + // Generated from: com/linkedin/proml/mlPipelineStepRun/PipelineStepRunInfo.pdsc + + export interface PipelineStepRunInfo { + pipelineStepName: string; + pipelineRun: string; + } + // Generated from: com/linkedin/proml/mlPipelineStepRun/StepRunCustomMetrics.pdsc + + export interface StepRunCustomMetrics { + metrics: { [id: string]: StepRunTrackedValue }; + } + // Generated from: com/linkedin/proml/mlPipelineStepRun/StepRunEndTime.pdsc + + export interface StepRunEndTime { + endAt?: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/proml/mlPipelineStepRun/StepRunOutputs.pdsc + + export interface StepRunOutputs { + stepRunOutputs: string[]; + } + // Generated from: com/linkedin/proml/mlPipelineStepRun/StepRunParameters.pdsc + + export interface StepRunParameters { + params: { [id: string]: StepRunTrackedValue }; + } + // Generated from: com/linkedin/proml/mlPipelineStepRun/StepRunStartTime.pdsc + + export interface StepRunStartTime { + startAt?: Com.Linkedin.Common.Time; + } + // Generated from: com/linkedin/proml/mlPipelineStepRun/StepRunTrackedValue.pdsc + + export type StepRunTrackedValue = + | number + | number + | string + | boolean + | { jsonValue: Com.Linkedin.Proml.Common.JsonString }; + } + namespace MlPipelineStepRunOutput { + // Generated from: com/linkedin/proml/mlPipelineStepRunOutput/Id.pdsc + + export interface Id { + stepRunOutputId: string; + } + // Generated from: com/linkedin/proml/mlPipelineStepRunOutput/StepRunOutputArtifact.pdsc + + export interface StepRunOutputArtifact { + artifact: string; + } + // Generated from: com/linkedin/proml/mlPipelineStepRunOutput/StepRunOutputInfo.pdsc + + export interface StepRunOutputInfo { + pipelineStepRun: string; + creation: Com.Linkedin.Common.AuditStamp; + } + } + namespace MlPipelineVersion { + // Generated from: com/linkedin/proml/mlPipelineVersion/Id.pdsc + + export interface Id { + pipelineVersionId: string; + } + // Generated from: com/linkedin/proml/mlPipelineVersion/PipelineRuns.pdsc + + export interface PipelineRuns { + pipelineRuns: string[]; + } + // Generated from: com/linkedin/proml/mlPipelineVersion/PipelineStepInfo.pdsc + + export interface PipelineStepInfo { + name: string; + type: PipelineStepType; + } + // Generated from: com/linkedin/proml/mlPipelineVersion/PipelineStepType.pdsc + + export type PipelineStepType = + | 'BULK_INFERENCE' + | 'CUSTOM' + | 'DATA_ANALYSIS' + | 'FEATURE_PREPARATION' + | 'FEATURE_TRANSFORMATION' + | 'MODEL_ANALYSIS' + | 'MODEL_REGISTRATION' + | 'MODEL_REWRITE' + | 'MODEL_TRAINING' + | 'MODEL_VALIDATION'; + // Generated from: com/linkedin/proml/mlPipelineVersion/PipelineVersionInfo.pdsc + + export interface PipelineVersionInfo { + version: string; + pipeline: string; + pipelineSpec?: PipelineVersionSpec; + } + // Generated from: com/linkedin/proml/mlPipelineVersion/PipelineVersionSpec.pdsc + + export interface PipelineVersionSpec { + steps?: PipelineStepInfo[]; + stepEdges?: StepEdges[]; + } + // Generated from: com/linkedin/proml/mlPipelineVersion/StepEdges.pdsc + + export interface StepEdges { + start: string; + ends: string[]; + } + } + namespace MlProblemStatement { + // Generated from: com/linkedin/proml/mlProblemStatement/Id.pdsc + + export interface Id { + problemStatementId: string; + } + // Generated from: com/linkedin/proml/mlProblemStatement/ProblemStatementInfo.pdsc + + export interface ProblemStatementInfo { + name: string; + description: string; + creation: Com.Linkedin.Common.AuditStamp; + project: string; + } + } + namespace MlProject { + // Generated from: com/linkedin/proml/mlProject/Experiments.pdsc + + export interface Experiments { + experiments: string[]; + } + // Generated from: com/linkedin/proml/mlProject/Id.pdsc + + export interface Id { + projectId: string; + } + // Generated from: com/linkedin/proml/mlProject/Pipelines.pdsc + + export interface Pipelines { + pipelines: string[]; + } + // Generated from: com/linkedin/proml/mlProject/ProblemStatement.pdsc + + export interface ProblemStatement { + problemStatement?: string; + } + // Generated from: com/linkedin/proml/mlProject/ProjectInfo.pdsc + + export interface ProjectInfo { + name: string; + description?: string; + creation: Com.Linkedin.Common.AuditStamp; + projectGroup: string; + } + } + namespace MlProjectGroup { + // Generated from: com/linkedin/proml/mlProjectGroup/Id.pdsc + + export interface Id { + projectGroupId: string; + } + // Generated from: com/linkedin/proml/mlProjectGroup/ProjectGroupInfo.pdsc + + export interface ProjectGroupInfo { + name: string; + description?: string; + creation: Com.Linkedin.Common.AuditStamp; + vertical?: string; + } + // Generated from: com/linkedin/proml/mlProjectGroup/Projects.pdsc + + export interface Projects { + projects: string[]; + } + } + namespace MlPublishedModel { + // Generated from: com/linkedin/proml/mlPublishedModel/Id.pdsc + + export interface Id { + publishedModelId: string; + } + // Generated from: com/linkedin/proml/mlPublishedModel/PublishedModelInfo.pdsc + + export interface PublishedModelInfo { + name: string; + mlDeploymentGroup?: string; + description?: string; + } + // Generated from: com/linkedin/proml/mlPublishedModel/PublishedModelVersions.pdsc + + export interface PublishedModelVersions { + publishedModelVersions: string[]; + } + // Generated from: com/linkedin/proml/mlPublishedModel/ReservedVersions.pdsc + + export interface ReservedVersions { + reservedVersions: string[]; + } + } + namespace MlPublishedModelVersion { + // Generated from: com/linkedin/proml/mlPublishedModelVersion/Id.pdsc + + export interface Id { + publishedModelVersionId: string; + } + // Generated from: com/linkedin/proml/mlPublishedModelVersion/PublishedModelVersionInfo.pdsc + + export interface PublishedModelVersionInfo { + version: string; + model: string; + description?: string; + creation: Com.Linkedin.Common.AuditStamp; + trainedModel: string; + mlDeploymentGroup?: string; + location: string[]; + publishedFabrics: string[]; + artifact?: string; + } + } + namespace MlTaskExecutionLog { + // Generated from: com/linkedin/proml/mlTaskExecutionLog/Id.pdsc + + export interface Id { + executionTaskLogId: string; + } + // Generated from: com/linkedin/proml/mlTaskExecutionLog/LogLevel.pdsc + + export type LogLevel = 'ERROR' | 'INFO' | 'WARN'; + // Generated from: com/linkedin/proml/mlTaskExecutionLog/TaskExecutionLogInfo.pdsc + + export interface TaskExecutionLogInfo { + creation: Com.Linkedin.Common.AuditStamp; + shortMessage: string; + detailedInfo?: string; + logLevel: LogLevel; + } + } + namespace MlTrainedModel { + // Generated from: com/linkedin/proml/mlTrainedModel/ComplianceInfo.pdsc + + export interface ComplianceInfo { + containingPiiData: boolean; + containingConfidentialData: boolean; + creation: Com.Linkedin.Common.AuditStamp; + } + // Generated from: com/linkedin/proml/mlTrainedModel/Id.pdsc + + export interface Id { + trainedModelId: string; + } + // Generated from: com/linkedin/proml/mlTrainedModel/ModelDependencies.pdsc + + export interface ModelDependencies { + features: string[]; + libraries: string[]; + } + // Generated from: com/linkedin/proml/mlTrainedModel/PhotonVizInfo.pdsc + + export interface PhotonVizInfo { + primaryKey: string; + } + // Generated from: com/linkedin/proml/mlTrainedModel/TrainedModelInfo.pdsc + + export interface TrainedModelInfo { + name: string; + description?: string; + creation: Com.Linkedin.Common.AuditStamp; + trainedModelLocation: string; + artifact?: string; + pipelineStepRun?: string; + } + namespace MlModelPublish { + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/LastSuccessfulTask.pdsc + + export interface LastSuccessfulTask { + lastSuccessfulTask: PublishTaskType; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/ModelArtifactStoreLocations.pdsc + + export interface ModelArtifactStoreLocations { + modelArtifactStoreLocations: string[]; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/ModelMpName.pdsc + + export interface ModelMpName { + modelMpName: string; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/ModelPublishAttempt.pdsc + + export interface ModelPublishAttempt { + publishAttempt: string; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/ModelUploadStatus.pdsc + + export interface ModelUploadStatus { + fabric: string; + uploadStatus: StatusType; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/ModelUploadStatusList.pdsc + + export interface ModelUploadStatusList { + modelUploadStatus: ModelUploadStatus[]; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/ModelVersion.pdsc + + export interface ModelVersion { + modelVersion: string; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/PrePublishLocation.pdsc + + export interface PrePublishLocation { + modelBundleLocation: string; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/PublishAttempt.pdsc + + export interface PublishAttempt { + publishAttemptId: string; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/PublishAttemptLogs.pdsc + + export interface PublishAttemptLogs { + publishAttempt: string; + taskExecutionLogs: string[]; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/PublishAttemptLogsList.pdsc + + export interface PublishAttemptLogsList { + publishAttemptLogsList: PublishAttemptLogs[]; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/PublishedModelVersion.pdsc + + export interface PublishedModelVersion { + publishedModelVersion: string; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/PublishRequest.pdsc + + export interface PublishRequest { + modelDeploymentGroup: string; + publishModelName: string; + newVersionOfExistingModel: boolean; + versionUpgradeType: VersionUpgradeType; + creation: Com.Linkedin.Common.AuditStamp; + publishDescription?: string; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/PublishStatus.pdsc + + export interface PublishStatus { + status: StatusType; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/PublishTaskType.pdsc + + export type PublishTaskType = + | 'MAS_UPLOAD' + | 'MP_CREATION' + | 'MP_VERSION_ACTIVATION' + | 'MP_VERSION_RESERVATION' + | 'REVIEW'; + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/ReviewInfo.pdsc + + export interface ReviewInfo { + reviewID: string; + } + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/StatusType.pdsc + + export type StatusType = 'FAILED' | 'IN_PROGRESS' | 'NOT_STARTED' | 'SUCCESSFUL'; + // Generated from: com/linkedin/proml/mlTrainedModel/mlModelPublish/VersionUpgradeType.pdsc + + export type VersionUpgradeType = 'MAJOR' | 'MINOR' | 'PATCH'; + } + } + namespace MlVertical { + // Generated from: com/linkedin/proml/mlVertical/VerticalInfo.pdsc + + export interface VerticalInfo { + name: string; + } + } + } + namespace Resourceidentity { + namespace Urn { + // Generated from: com/linkedin/resourceidentity/urn/Key.pdsc + + export type Key = string | { [id: string]: string } | { [id: string]: string }; + // Generated from: com/linkedin/resourceidentity/urn/KeyConfig.pdsc + + export interface KeyConfig { + keys: { [id: string]: Key }; + queryParameters?: { [id: string]: string }; + } + // Generated from: com/linkedin/resourceidentity/urn/ResourceKey.pdsc + + export interface ResourceKey { + resourcePath: string; + entity?: string; + keyConfig: KeyConfig; + } + // Generated from: com/linkedin/resourceidentity/urn/UrnCreatorTemplate.pdsc + + export interface UrnCreatorTemplate { + namespace: string; + urns: string[]; + } + // Generated from: com/linkedin/resourceidentity/urn/UrnTemplate.pdsc + + export interface UrnTemplate { + name: string; + namespace: string; + entityType: string; + constructable?: boolean; + accessible?: boolean; + owners: string[]; + owningTeam: string; + maxLength?: number; + doc: string; + fields: Array<{ + name: string; + type: string; + autoEncode?: boolean; + maxLength?: number; + doc: string; + }>; + compliance?: Com.Linkedin.Dataset.ComplianceStructure[]; + coercer?: string; + validator?: string; + resourceKey?: ResourceKey[]; + } + } + } + namespace Restli { + namespace Common { + // Generated from: com/linkedin/restli/common/CollectionMetadata.pdsc + + export interface CollectionMetadata { + start: number; + count: number; + total: number; + links: Link[]; + } + // Generated from: com/linkedin/restli/common/CreateStatus.pdsc + + export interface CreateStatus { + status: number; + id?: string; + location?: string; + error?: ErrorResponse; + } + // Generated from: com/linkedin/restli/common/EmptyRecord.pdsc + + export interface EmptyRecord {} + // Generated from: com/linkedin/restli/common/ErrorResponse.pdsc + + export interface ErrorResponse { + status?: number; + serviceErrorCode?: number; + code?: string; + message?: string; + docUrl?: string; + requestId?: string; + exceptionClass?: string; + stackTrace?: string; + errorDetailType?: string; + errorDetails?: {}; + } + // Generated from: com/linkedin/restli/common/Link.pdsc + + export interface Link { + rel: string; + href: string; + type: string; + } + // Generated from: com/linkedin/restli/common/PegasusSchema.pdsc + + export interface PegasusSchema {} + // Generated from: com/linkedin/restli/common/UpdateStatus.pdsc + + export interface UpdateStatus { + status: number; + error?: ErrorResponse; + } + namespace Multiplexer { + // Generated from: com/linkedin/restli/common/multiplexer/IndividualBody.pdsc + + export interface IndividualBody {} + // Generated from: com/linkedin/restli/common/multiplexer/IndividualRequest.pdsc + + export interface IndividualRequest { + method: string; + headers: { [id: string]: string }; + relativeUrl: string; + body?: IndividualBody; + dependentRequests: { [id: string]: IndividualRequest }; + } + // Generated from: com/linkedin/restli/common/multiplexer/IndividualResponse.pdsc + + export interface IndividualResponse { + status: number; + headers: { [id: string]: string }; + body?: IndividualBody; + } + // Generated from: com/linkedin/restli/common/multiplexer/MultiplexedRequestContent.pdsc + + export interface MultiplexedRequestContent { + requests: { [id: string]: IndividualRequest }; + } + // Generated from: com/linkedin/restli/common/multiplexer/MultiplexedResponseContent.pdsc + + export interface MultiplexedResponseContent { + responses: { [id: string]: IndividualResponse }; + } + } + } + namespace Restspec { + // Generated from: com/linkedin/restli/restspec/ActionSchema.pdsc + + export interface ActionSchema extends CustomAnnotationSchema, ServiceErrorsSchema, SuccessStatusesSchema { + name: string; + doc?: string; + parameters?: ParameterSchema[]; + returns?: string; + throws?: string[]; + } + // Generated from: com/linkedin/restli/restspec/ActionsSetSchema.pdsc + + export interface ActionsSetSchema extends ServiceErrorsSchema { + actions: ActionSchema[]; + } + // Generated from: com/linkedin/restli/restspec/AlternativeKeySchema.pdsc + + export interface AlternativeKeySchema { + name: string; + doc?: string; + type: string; + keyCoercer: string; + } + // Generated from: com/linkedin/restli/restspec/AssociationSchema.pdsc + + export interface AssociationSchema extends ServiceErrorsSchema { + identifier?: string; + assocKeys: AssocKeySchema[]; + alternativeKeys?: AlternativeKeySchema[]; + supports: string[]; + methods?: RestMethodSchema[]; + finders?: FinderSchema[]; + batchFinders?: BatchFinderSchema[]; + actions?: ActionSchema[]; + entity: EntitySchema; + } + // Generated from: com/linkedin/restli/restspec/AssocKeySchema.pdsc + + export interface AssocKeySchema { + name: string; + type: string; + } + // Generated from: com/linkedin/restli/restspec/BatchFinderSchema.pdsc + + export interface BatchFinderSchema extends FinderSchema { + batchParam: string; + } + // Generated from: com/linkedin/restli/restspec/CollectionSchema.pdsc + + export interface CollectionSchema extends ServiceErrorsSchema { + identifier: IdentifierSchema; + alternativeKeys?: AlternativeKeySchema[]; + supports: string[]; + methods?: RestMethodSchema[]; + finders?: FinderSchema[]; + batchFinders?: BatchFinderSchema[]; + actions?: ActionSchema[]; + entity: EntitySchema; + } + // Generated from: com/linkedin/restli/restspec/CustomAnnotationContentSchema.pdsc + + export interface CustomAnnotationContentSchema {} + // Generated from: com/linkedin/restli/restspec/CustomAnnotationSchema.pdsc + + export interface CustomAnnotationSchema { + annotations?: { [id: string]: CustomAnnotationContentSchema }; + } + // Generated from: com/linkedin/restli/restspec/EntitySchema.pdsc + + export interface EntitySchema { + path: string; + actions?: ActionSchema[]; + subresources?: ResourceSchema[]; + } + // Generated from: com/linkedin/restli/restspec/FinderSchema.pdsc + + export interface FinderSchema extends CustomAnnotationSchema, ServiceErrorsSchema, SuccessStatusesSchema { + name?: string; + doc?: string; + parameters?: ParameterSchema[]; + metadata?: MetadataSchema; + assocKey?: string; + assocKeys?: string[]; + pagingSupported?: boolean; + } + // Generated from: com/linkedin/restli/restspec/IdentifierSchema.pdsc + + export interface IdentifierSchema { + name: string; + type: string; + params?: string; + } + // Generated from: com/linkedin/restli/restspec/MetadataSchema.pdsc + + export interface MetadataSchema { + type: string; + } + // Generated from: com/linkedin/restli/restspec/ParameterSchema.pdsc + + export interface ParameterSchema extends CustomAnnotationSchema { + name: string; + type: string; + items?: string; + optional?: boolean; + default?: string; + doc?: string; + } + // Generated from: com/linkedin/restli/restspec/ResourceSchema.pdsc + + export interface ResourceSchema extends CustomAnnotationSchema { + name: string; + namespace?: string; + path: string; + schema?: string; + entityType: 'STRUCTURED_DATA' | 'UNSTRUCTURED_DATA'; + doc?: string; + collection?: CollectionSchema; + association?: AssociationSchema; + actionsSet?: ActionsSetSchema; + simple?: SimpleSchema; + } + // Generated from: com/linkedin/restli/restspec/RestMethodSchema.pdsc + + export interface RestMethodSchema extends CustomAnnotationSchema, ServiceErrorsSchema, SuccessStatusesSchema { + method: string; + doc?: string; + parameters?: ParameterSchema[]; + metadata?: MetadataSchema; + pagingSupported?: boolean; + } + // Generated from: com/linkedin/restli/restspec/ServiceErrorSchema.pdsc + + export interface ServiceErrorSchema { + status: number; + code: string; + message?: string; + errorDetailType?: string; + parameters?: string[]; + } + // Generated from: com/linkedin/restli/restspec/ServiceErrorsSchema.pdsc + + export interface ServiceErrorsSchema { + serviceErrors?: ServiceErrorSchema[]; + } + // Generated from: com/linkedin/restli/restspec/SimpleSchema.pdsc + + export interface SimpleSchema extends ServiceErrorsSchema { + supports: string[]; + methods?: RestMethodSchema[]; + actions?: ActionSchema[]; + entity: EntitySchema; + } + // Generated from: com/linkedin/restli/restspec/SuccessStatusesSchema.pdsc + + export interface SuccessStatusesSchema { + success?: number[]; + } + } + } + namespace Schema { + // Generated from: com/linkedin/schema/AvroSchema.pdsc + + export interface AvroSchema { + schema: string; + } + // Generated from: com/linkedin/schema/BaseGraphQLSchema.pdsc + + export interface BaseGraphQLSchema { + rawSchema: string; + } + // Generated from: com/linkedin/schema/BinaryJsonSchema.pdsc + + export interface BinaryJsonSchema { + schema: string; + } + // Generated from: com/linkedin/schema/CommonPegasusSchema.pdsc + + export interface CommonPegasusSchema { + rawSchema: string; + } + // Generated from: com/linkedin/schema/DDL.pdsc + + export interface DDL { + tableDDL: string; + } + // Generated from: com/linkedin/schema/EspressoSchema.pdsc + + export interface EspressoSchema { + documentSchema: string; + tableSchema: string; + } + // Generated from: com/linkedin/schema/FederatedGraphQLSchema.pdsc + + export interface FederatedGraphQLSchema extends BaseGraphQLSchema {} + // Generated from: com/linkedin/schema/KeyValueSchema.pdsc + + export interface KeyValueSchema { + keySchema: string; + valueSchema: string; + } + // Generated from: com/linkedin/schema/NormalizedSchema.pdsc + + export interface NormalizedSchema { + normalizedFields: SchemaField[]; + } + // Generated from: com/linkedin/schema/ObservedSchemaDefinition.pdsc + + export interface ObservedSchemaDefinition { + value: { + schema?: string; + schemaLanguage: Com.Linkedin.Common.ValueSchemaLanguage; + registeredSchema?: string; + }; + key?: { + schema: string; + schemaLanguage: Com.Linkedin.Common.KeySchemaLanguage; + registeredSchema?: string; + }; + normalizedSchema?: NormalizedSchema; + } + // Generated from: com/linkedin/schema/OpenCrudGraphQLSchema.pdsc + + export interface OpenCrudGraphQLSchema extends BaseGraphQLSchema {} + // Generated from: com/linkedin/schema/OrcSchema.pdsc + + export interface OrcSchema { + schema: string; + } + // Generated from: com/linkedin/schema/ParquetSchema.pdsc + + export interface ParquetSchema { + schema: string; + } + // Generated from: com/linkedin/schema/PDLSchema.pdsc + + export interface PDLSchema extends CommonPegasusSchema {} + // Generated from: com/linkedin/schema/PDSCSchema.pdsc + + export interface PDSCSchema extends CommonPegasusSchema {} + // Generated from: com/linkedin/schema/RegisteredSchema.pdsc + + export interface RegisteredSchema { + type: Com.Linkedin.Common.RegisteredSchemaType; + name: string; + schemaDefinition?: SchemaDefinition; + complianceInfo?: Com.Linkedin.Dataset.ComplianceInfo; + registeredschemaDeprecation?: RegisteredSchemaDeprecation; + } + // Generated from: com/linkedin/schema/RegisteredSchemaDeprecation.pdsc + + export interface RegisteredSchemaDeprecation extends Com.Linkedin.Common.BaseDeprecation { + actor?: string; + } + // Generated from: com/linkedin/schema/RegisteredSchemaKey.pdsc + + export interface RegisteredSchemaKey { + type: Com.Linkedin.Common.RegisteredSchemaType; + name: string; + } + // Generated from: com/linkedin/schema/SchemaDefinition.pdsc + + export interface SchemaDefinition { + rawSchema?: + | AvroSchema + | BinaryJsonSchema + | DDL + | EspressoSchema + | FederatedGraphQLSchema + | KeyValueSchema + | OrcSchema + | OpenCrudGraphQLSchema + | ParquetSchema + | PDLSchema + | PDSCSchema + | Schemaless; + normalizedSchema?: NormalizedSchema; + } + // Generated from: com/linkedin/schema/SchemaField.pdsc + + export interface SchemaField { + fieldPath: Com.Linkedin.Dataset.SchemaFieldPath; + jsonPath?: string; + nullable: boolean; + description?: string; + type: SchemaFieldDataType; + nativeDataType: string; + recursive: boolean; + } + // Generated from: com/linkedin/schema/SchemaFieldDataType.pdsc + + export type SchemaFieldDataType = + | 'BOOLEAN' + | 'BYTES' + | 'ENUM' + | 'NULL' + | 'NUMBER' + | 'STRING' + | 'ARRAY' + | 'MAP' + | 'RECORD' + | 'UNION'; + // Generated from: com/linkedin/schema/Schemaless.pdsc + + export interface Schemaless {} + } + namespace WormholeNamespace { + // Generated from: com/linkedin/wormholeNamespace/WormholeNamespace.pdsc + + export interface WormholeNamespace { + name: string; + origin: Com.Linkedin.Common.FabricType; + wormholeNamespaceMetadata?: Com.Linkedin.Dataset.Wormhole.WormholeNamespaceMetadata; + } + // Generated from: com/linkedin/wormholeNamespace/WormholeNamespaceKey.pdsc + + export interface WormholeNamespaceKey { + name: string; + origin: Com.Linkedin.Common.FabricType; + } + } + } + namespace Microsoft { + namespace Common { + namespace Azure { + // Generated from: com/microsoft/common/azure/NamedEntity.pdsc + + export interface NamedEntity { + entityTypeScore?: number; + text: string; + offset: number; + length: number; + wikipediaMetadata?: TextAnalyticsWikipediaMetadata[]; + bingId?: string; + type: TextAnalyticsEntityType; + } + // Generated from: com/microsoft/common/azure/TextAnalyticsEntityType.pdsc + + export type TextAnalyticsEntityType = + | 'PERSON_NAME' + | 'LOCATION_NAME' + | 'ORGANIZATION_NAME' + | 'QUANTITY' + | 'DATETIME' + | 'URL' + | 'EMAIL'; + // Generated from: com/microsoft/common/azure/TextAnalyticsNamedEntityRecognitionResponse.pdsc + + export interface TextAnalyticsNamedEntityRecognitionResponse { + header: Com.Linkedin.Avro2pegasus.Events.EventHeader; + documentId: string; + namedEntities: NamedEntity[]; + } + // Generated from: com/microsoft/common/azure/TextAnalyticsWikipediaMetadata.pdsc + + export interface TextAnalyticsWikipediaMetadata { + language: string; + id: string; + url: string; + score?: number; + } + } + } + } +} +declare namespace Sample { + // Generated from: sample/LixTest.pdsc + + export interface LixTest { + testKey: string; + treatment: string; + memberId: number; + } + // Generated from: sample/Sample.pdsc + + export interface Sample { + message?: string; + id: number; + dateCreated: Com.Linkedin.Common.Date; + memberId: number; + flag?: boolean; + } +} +declare namespace Websnapshot { + // Generated from: websnapshot/WebSnapshot.pdsc + + export interface WebSnapshot { + targets: WebSnapshotTarget[]; + emails: Com.Linkedin.Common.EmailAddress[]; + debuggerEmailRecipients?: Com.Linkedin.Common.EmailAddress[]; + subject: string; + format: 'PNG' | 'PDF'; + from?: Com.Linkedin.Common.EmailAddress; + replyTo?: Com.Linkedin.Common.EmailAddress; + ccList?: Com.Linkedin.Common.EmailAddress[]; + bccList?: Com.Linkedin.Common.EmailAddress[]; + emailBody?: string; + } + // Generated from: websnapshot/WebSnapshotErrorThreshold.pdsc + + export interface WebSnapshotErrorThreshold { + minor: number; + major: number; + } + // Generated from: websnapshot/WebSnapshotPrintOptions.pdsc + + export interface WebSnapshotPrintOptions { + width: number; + height: number; + layout: 'PORTRAIT' | 'LANDSCAPE'; + } + // Generated from: websnapshot/WebSnapshotReport.pdsc + + export interface WebSnapshotReport { + requestId: string; + snapshotStatus: 'SUCCESS' | 'FAILED'; + snapshots?: string[]; + errorMessage?: string; + } + // Generated from: websnapshot/WebSnapshotTarget.pdsc + + export interface WebSnapshotTarget { + url: string; + options: WebSnapshotPrintOptions; + errorThreshold?: WebSnapshotErrorThreshold; + } +} diff --git a/datahub-web/@datahub/metadata-types/types/common/locale.d.ts b/datahub-web/@datahub/metadata-types/types/common/locale.d.ts new file mode 100644 index 0000000000000..05ad762738bf4 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/common/locale.d.ts @@ -0,0 +1,11 @@ +/** + * https://jarvis.corp.linkedin.com/codesearch/result/?name=Locale.pdsc&path=models%2Fmodels%2Fsrc%2Fmain%2Fpegasus%2Fcom%2Flinkedin%2Fcommon&reponame=netrepo%2Fmodels#Locale + */ +export interface ILocale { + // A lowercase two-letter language code as defined by ISO-639. + language: string; + // An uppercase two-letter country code as defined by ISO-3166. + country?: string; + // Vendor or browser-specific code. + variant?: string; +} diff --git a/datahub-web/@datahub/metadata-types/types/common/multi-locale-string.d.ts b/datahub-web/@datahub/metadata-types/types/common/multi-locale-string.d.ts new file mode 100644 index 0000000000000..8bc6462e4aad5 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/common/multi-locale-string.d.ts @@ -0,0 +1,13 @@ +import { ILocale } from '@datahub/metadata-types/types/common/locale'; + +/** + * https://jarvis.corp.linkedin.com/codesearch/result/?name=MultiLocaleString.pdsc&path=models%2Fmodels%2Fsrc%2Fmain%2Fpegasus%2Fcom%2Flinkedin%2Fcommon&reponame=netrepo%2Fmodels + * + * Represents a textual field with values for multiple locales. Most readers should use the 'localized' field entry keyed by preferredLocale. + */ +export interface IMultiLocaleString { + // Maps a locale to a localized version of the string. Each key is a Locale record converted to string format, with the language, country and variant separated by underscores. Examples: 'en', 'de_DE', 'en_US_WIN', 'de__POSIX', 'fr__MAC'. + localized: Record; + // The preferred locale to use, based on standard rules + preferredLocale: ILocale; +} diff --git a/datahub-web/@datahub/metadata-types/types/common/owner.d.ts b/datahub-web/@datahub/metadata-types/types/common/owner.d.ts deleted file mode 100644 index 068db6816a6cc..0000000000000 --- a/datahub-web/@datahub/metadata-types/types/common/owner.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { IOwnershipSource } from '@datahub/metadata-types/types/common/ownership-source'; -import { OwnershipType } from '@datahub/metadata-types/constants/common/ownership-type'; - -/** - * Ownership information - * @export - * @interface IOwner - */ -export interface IOwner { - // Owner URN, e.g. urn:li:corpuser:ldap, urn:li:corpGroup:group_name, and urn:li:multiProduct:mp_name - owner: string; - // The type of the ownership - type: OwnershipType; - // Source information for the ownership - source?: IOwnershipSource; -} diff --git a/datahub-web/@datahub/metadata-types/types/common/ownership-source.d.ts b/datahub-web/@datahub/metadata-types/types/common/ownership-source.d.ts deleted file mode 100644 index 842e3e926b976..0000000000000 --- a/datahub-web/@datahub/metadata-types/types/common/ownership-source.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { OwnershipSourceType } from '@datahub/metadata-types/constants/common/ownership-source-type'; - -/** - * Source/provider of the ownership information - * @export - * @interface IOwnershipSource - */ -export interface IOwnershipSource { - // The type of the source - type: OwnershipSourceType; - // A reference URL for the source - url?: string; -} diff --git a/datahub-web/@datahub/metadata-types/types/common/ownership.d.ts b/datahub-web/@datahub/metadata-types/types/common/ownership.d.ts deleted file mode 100644 index 279fdad990983..0000000000000 --- a/datahub-web/@datahub/metadata-types/types/common/ownership.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { IOwner } from '@datahub/metadata-types/types/common/owner'; - -/** - * Ownership information of an entity - * @export - * @interface IOwnership - */ -export interface IOwnership { - // List of owners of the entity - owners: Array; -} diff --git a/datahub-web/packages/data-portal/app/typings/api/ownership/owner.d.ts b/datahub-web/@datahub/metadata-types/types/common/shared-owner.d.ts similarity index 100% rename from datahub-web/packages/data-portal/app/typings/api/ownership/owner.d.ts rename to datahub-web/@datahub/metadata-types/types/common/shared-owner.d.ts diff --git a/datahub-web/@datahub/metadata-types/types/common/user.d.ts b/datahub-web/@datahub/metadata-types/types/common/user.d.ts new file mode 100644 index 0000000000000..cec9d69d85e1b --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/common/user.d.ts @@ -0,0 +1,16 @@ +/** + * Describes the interface for the user json returned + * from the current user endpoint + * https://jarvis.corp.linkedin.com/codesearch/result/?name=User.java&path=wherehows-frontend%2Fdatahub-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Flinkedin%2Fdatahub%2Fmodels%2Ftable&reponame=wherehows%2Fwherehows-frontend#User + */ +export interface IUser { + departmentNum: number; + email: string; + id: number; + name: string; + userName: string; + userSetting: null | { + defaultWatch: string; + detailDefaultView: string; + }; +} diff --git a/datahub-web/@datahub/entity-deprecation/types/dummy/index.d.ts b/datahub-web/@datahub/metadata-types/types/dummy/index.d.ts similarity index 100% rename from datahub-web/@datahub/entity-deprecation/types/dummy/index.d.ts rename to datahub-web/@datahub/metadata-types/types/dummy/index.d.ts diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-concept/data-concept-entity.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-concept/data-concept-entity.d.ts new file mode 100644 index 0000000000000..6a331361e2772 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-concept/data-concept-entity.d.ts @@ -0,0 +1,87 @@ +import { InstitutionalMemories } from '@datahub/metadata-types/types/aspects/institutional-memory'; +import { IAuditStamp } from '@datahub/metadata-types/types/common/audit-stamp'; + +/** + * An object containing the base properties for a related entity to a data concept. An entity is + * arbitrarily determined to be related when it contains some data that describes the concept + * Built from ref: + * https://jarvis.corp.linkedin.com/codesearch/result/?path=metadata-models%2Fmetadata-models%2Fsrc%2Fmain%2Fpegasus%2Fcom%2Flinkedin%2FdataConcept&reponame=multiproducts%2Fmetadata-models&name=RelatedEntities.pdsc + */ +export interface IDataConceptRelatedEntity { + // Describes how the entity is related to the data concept + description: string; +} + +/** + * A reference to the dataset that is related to the data concept + */ +interface IDataConeptRelatedDataset extends IDataConceptRelatedEntity { + datasetUrn: string; +} + +/** + * A reference to the metric that is related to the data concept + */ +interface IDataConeptRelatedMetric extends IDataConceptRelatedEntity { + metricUrn: string; +} + +/** + * A reference to the feature that is related to the data concept + */ +interface IDataConceptRelatedFeature extends IDataConceptRelatedEntity { + featureUrn: string; +} + +/** + * A reference to the related inchart that is related to the data concept + */ +interface IDataConceptRelatedChart extends IDataConceptRelatedEntity { + inchartsDashboardUrn: string; +} + +/** + * Reference to related entities to the data concept in some way + * Reference: + * https://jarvis.corp.linkedin.com/codesearch/result/?path=metadata-models%2Fmetadata-models%2Fsrc%2Fmain%2Fpegasus%2Fcom%2Flinkedin%2FdataConcept&reponame=multiproducts%2Fmetadata-models&name=RelatedEntities.pdsc + */ +interface IDataConceptRelatedEntities { + createStamp: IAuditStamp; + relatedDatasets: Array; + relatedMetrics: Array; + relatedFeatures: Array; + relatedInchartsDashboards: Array; +} + +/** + * Descriptive properties related to a data concept object + * Reference: + * https://jarvis.corp.linkedin.com/codesearch/result/?path=metadata-models%2Fmetadata-models%2Fsrc%2Fmain%2Fpegasus%2Fcom%2Flinkedin%2FdataConcept&reponame=multiproducts%2Fmetadata-models&name=DataConceptProperties.pdsc + */ +export interface IDataConceptProperties { + // Name of the related data concept + name: string; + // Tags identifying useful properties for the data concept + tags: Array; + lastUpdatedTimeStamp: IAuditStamp; + // Provided description for the related data concept, regarding its definition and how it is used + description: string; +} + +/** + * A data concept is a human created construct that describes some data driven idea at the company + * Reference: + * https://rb.corp.linkedin.com/r/1821269 + */ +export interface IDataConcept { + // Identifier for the data concept + conceptId: number; + // Intitutional memory, i.e. corpuser provided content related to a data concept + institutionalMemory?: { elements: InstitutionalMemories }; + // Details related to owners for the data concept + ownership?: Com.Linkedin.Common.Ownership; + // Object containing the properties related to this data concept + dataConceptProperties?: IDataConceptProperties; + // A map to entities that are related to the data concept + relatedEntities?: IDataConceptRelatedEntities; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-cluster-info.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-cluster-info.d.ts new file mode 100644 index 0000000000000..d178516dde0ac --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-cluster-info.d.ts @@ -0,0 +1,14 @@ +import { HadoopClusterType } from '@datahub/metadata-types/constants/common/hadoop-cluster-type'; + +/** + * Azkaban cluster information which includes azkaban cluster name and the hadoop cluster + * @export + * @interface IAzkabanClusterInfo + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/dataJob/azkaban/AzkabanClusterInfo.pdsc + */ +export interface IAzkabanClusterInfo { + // Azkaban cluster name, e.g. ltx1-holdem + clusterName: string; + // Hadoop cluster in which the project and flows exist, e.g. HOLDEM, FARO or WAR + hadoopCluster: HadoopClusterType; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-flow-info.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-flow-info.d.ts new file mode 100644 index 0000000000000..4a5cd07a254a7 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-flow-info.d.ts @@ -0,0 +1,14 @@ +import { IAzkabanProjectInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-project-info'; + +/** + * Metadata associated with a Azkaban flow + * @export + * @interface IAzkabanFlowInfo + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/dataJob/azkaban/AzkabanFlowInfo.pdsc + */ +export interface IAzkabanFlowInfo { + // Azkaban flow name + flowName: string; + // Azkaban project information including project name, version and cluster + project: IAzkabanProjectInfo; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-project-info.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-project-info.d.ts new file mode 100644 index 0000000000000..53bde572ca31c --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-project-info.d.ts @@ -0,0 +1,16 @@ +import { IAzkabanClusterInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-cluster-info'; + +/** + * Metadata associated with a Azkaban project + * @export + * @interface IAzkabanProjectInfo + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/dataJob/azkaban/AzkabanProjectInfo.pdsc + */ +export interface IAzkabanProjectInfo { + // Azkaban project name + projectName: string; + // Azkaban project upload version + projectVersion: string; + // Hadoop cluster in which the project exists + clusterInfo: IAzkabanClusterInfo; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/flow/aspect.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/flow/aspect.d.ts new file mode 100644 index 0000000000000..5a35114d0ee56 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/flow/aspect.d.ts @@ -0,0 +1,19 @@ +import { IBaseAspect } from '@datahub/metadata-types/types/metadata/aspect'; +import { IAzkabanFlowInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-flow-info'; +import { IAzkabanFlowJobsInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/flow/azkaban-flow-jobs-info'; + +/** + * A union of all supported metadata aspects for a Azkaban flow + * @export + * @interface IAzkabanFlowAspect + * @extends {IBaseAspect} + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/metadata/aspect/AzkabanFlowAspect.pdsc + */ +export interface IAzkabanFlowAspect extends IBaseAspect { + // Ownership information of an entity + 'com.linkedin.common.Ownership'?: Com.Linkedin.Common.Ownership; + // Metadata associated with a Azkaban job + 'com.linkedin.dataJob.azkaban.AzkabanFlowInfo'?: IAzkabanFlowInfo; + // Inputs consumed by the Azkaban job + 'com.linkedin.dataJob.azkaban.AzkabanFlowJobsInfo'?: IAzkabanFlowJobsInfo; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/flow/azkaban-flow-entity.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/flow/azkaban-flow-entity.d.ts new file mode 100644 index 0000000000000..578bbeb74f393 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/flow/azkaban-flow-entity.d.ts @@ -0,0 +1,32 @@ +import { IBaseEntity } from '@datahub/metadata-types/types/entity'; +import { IAzkabanClusterInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-cluster-info'; +import { IAzkabanProjectInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-project-info'; +import { IAzkabanFlowInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-flow-info'; +import { IAzkabanFlowJobsInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/flow/azkaban-flow-jobs-info'; + +/** + * Describes the mid-tier interface for the Azkaban flow entity + * @export + * @interface IAzkabanFlowEntity + * @extends {IBaseEntity} + */ +export interface IAzkabanFlowEntity extends IBaseEntity { + // Azkaban jobs associated with a Azkaban flow + jobsInfo: IAzkabanFlowJobsInfo; + // Azkaban cluster name, e.g. ltx1-holdem + clusterName: IAzkabanClusterInfo['clusterName']; + // Azkaban project name + projectName: IAzkabanProjectInfo['projectName']; + // Azkaban flow name + flowName: IAzkabanFlowInfo['flowName']; + // Metadata information associated with a Azkaban flow + info: { + // Metadata associated with a Azkaban project + project: IAzkabanProjectInfo; + // Azkaban flow name + flowName: IAzkabanFlowInfo['flowName']; + }; +} + +// Alias for the interface attributes returned by the mid-tier endpoint for Azkaban Flow instance +export type AzkabanFlowApiEntity = Omit; diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/flow/azkaban-flow-jobs-info.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/flow/azkaban-flow-jobs-info.d.ts new file mode 100644 index 0000000000000..8d7509aeeef41 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/flow/azkaban-flow-jobs-info.d.ts @@ -0,0 +1,10 @@ +/** + * Azkaban jobs associated with a Azkaban flow + * @export + * @interface IAzkabanFlowJobsInfo + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/dataJob/azkaban/AzkabanFlowJobsInfo.pdsc + */ +export interface IAzkabanFlowJobsInfo { + // List of Azkaban jobs that are part of this flow + jobs: Array; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/aspect.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/aspect.d.ts new file mode 100644 index 0000000000000..0e4baee4890e0 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/aspect.d.ts @@ -0,0 +1,24 @@ +import { IBaseAspect } from '@datahub/metadata-types/types/metadata/aspect'; +import { IAzkabanJobInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-info'; +import { AzkabanJobInput } from '@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-input'; +import { AzkabanJobOutput } from '@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-output'; + +/** + * A union of all supported metadata aspects for a Azkaban job + * @export + * @interface IAzkabanJobAspect + * @extends {IBaseAspect} + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/metadata/aspect/AzkabanJobAspect.pdsc + */ +export interface IAzkabanJobAspect extends IBaseAspect { + // URN for the associated Azkaban job + urn: string; + // Ownership information of an entity + 'com.linkedin.common.Ownership'?: Com.Linkedin.Common.Ownership; + // Metadata associated with a Azkaban job + 'com.linkedin.dataJob.azkaban.AzkabanJobInfo'?: IAzkabanJobInfo; + // Inputs consumed by the Azkaban job + 'com.linkedin.dataJob.azkaban.AzkabanJobInput'?: AzkabanJobInput; + // Outputs produced by the Azkaban job + 'com.linkedin.dataJob.azkaban.AzkabanJobOutput'?: AzkabanJobOutput; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-entity.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-entity.d.ts new file mode 100644 index 0000000000000..3a58c8bd89ccb --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-entity.d.ts @@ -0,0 +1,42 @@ +import { IBaseEntity } from '@datahub/metadata-types/types/entity'; +import { IDataJobOutput } from '@datahub/metadata-types/types/entity/data-job/data-job-output'; +import { IDataJobInput } from '@datahub/metadata-types/types/entity/data-job/data-job-input'; +import { IAzkabanClusterInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-cluster-info'; +import { IAzkabanProjectInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-project-info'; +import { IAzkabanJobInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-info'; +import { IAzkabanFlowInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-flow-info'; + +/** + * Describes the mid-tier interface for the Azkaban Job entity + * @export + * @interface IAzkabanJobEntity + * @extends {IBaseEntity} + */ +export interface IAzkabanJobEntity extends IBaseEntity { + // Identification URN for a specific job instance + urn: string; + // Azkaban job name + jobName: IAzkabanJobInfo['jobName']; + // Outputs produced by the data job + output: IDataJobOutput; + // Inputs consumed by the data job + input: IDataJobInput; + // Azkaban cluster name, e.g. ltx1-holdem + clusterName: IAzkabanClusterInfo['clusterName']; + // Azkaban project name + projectName: IAzkabanProjectInfo['projectName']; + // Azkaban flow name + flowName: IAzkabanFlowInfo['flowName']; + // Metadata information associated with a Azkaban job + info: { + // Azkaban job name + jobName: IAzkabanJobInfo['jobName']; + // Metadata associated with a Azkaban project + project: IAzkabanProjectInfo; + // Azkaban flow name + flowName: IAzkabanFlowInfo['flowName']; + }; +} + +// Alias for the interface attributes returned by the mid-tier endpoint for Azkaban Job instance +export type AzkabanJobApiEntity = Omit; diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-info.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-info.d.ts new file mode 100644 index 0000000000000..0c761a528b68f --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-info.d.ts @@ -0,0 +1,12 @@ +import { IAzkabanFlowInfo } from '@datahub/metadata-types/types/entity/data-job/azkaban/azkaban-flow-info'; + +/** + * Metadata associated with a Azkaban job + * @export + * @interface IAzkabanJobInfo + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/dataJob/azkaban/AzkabanJobInfo.pdsc + */ +export interface IAzkabanJobInfo extends IAzkabanFlowInfo { + // Azkaban job name + jobName: string; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-input.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-input.d.ts new file mode 100644 index 0000000000000..4866f39e0ff41 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-input.d.ts @@ -0,0 +1,7 @@ +import { IDataJobInput } from '@datahub/metadata-types/types/entity/data-job/data-job-input'; + +/** + * Inputs consumed by the Azkaban job + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/dataJob/azkaban/AzkabanJobInput.pdsc + */ +export type AzkabanJobInput = IDataJobInput; diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-output.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-output.d.ts new file mode 100644 index 0000000000000..93c7e04c0381a --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/azkaban/job/azkaban-job-output.d.ts @@ -0,0 +1,7 @@ +import { IDataJobOutput } from '@datahub/metadata-types/types/entity/data-job/data-job-output'; + +/** + * Outputs produced by the Azkaban job + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/dataJob/azkaban/AzkabanJobOutput.pdsc + */ +export type AzkabanJobOutput = IDataJobOutput; diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/data-job-input.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/data-job-input.d.ts new file mode 100644 index 0000000000000..9f0704f8d50d3 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/data-job-input.d.ts @@ -0,0 +1,10 @@ +/** + * Inputs consumed by the data job + * @export + * @interface IDataJobInput + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/dataJob/DataJobInput.pdsc + */ +export interface IDataJobInput { + // Input datasets consumed by the data job during processing, each string is a dataset urn + inputDatasets: Array; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/data-job/data-job-output.d.ts b/datahub-web/@datahub/metadata-types/types/entity/data-job/data-job-output.d.ts new file mode 100644 index 0000000000000..c5369e9da2986 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/data-job/data-job-output.d.ts @@ -0,0 +1,10 @@ +/** + * Outputs produced by the data job + * @export + * @interface IDataJobOutput + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/dataJob/DataJobOutput.pdsc + */ +export interface IDataJobOutput { + // Output datasets produced by the data job during processing, each string is a dataset urn + outputDatasets: Array; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/dataset/aspect.d.ts b/datahub-web/@datahub/metadata-types/types/entity/dataset/aspect.d.ts index 1b694fe3a30a1..a8951c4c9f40b 100644 --- a/datahub-web/@datahub/metadata-types/types/entity/dataset/aspect.d.ts +++ b/datahub-web/@datahub/metadata-types/types/entity/dataset/aspect.d.ts @@ -1,5 +1,4 @@ import { IBaseAspect } from '@datahub/metadata-types/types/metadata/aspect'; -import { IOwnership } from '@datahub/metadata-types/types/common/ownership'; /** * A specific metadata aspect for a dataset @@ -10,5 +9,9 @@ import { IOwnership } from '@datahub/metadata-types/types/common/ownership'; export interface IDatasetAspect extends IBaseAspect { // URN for the dataset the metadata aspect is associated with urn: string; - 'com.linkedin.common.Ownership'?: IOwnership; + // The specific metadata aspect + 'com.linkedin.dataset.ump.UMPDatasetProperties'?: Com.Linkedin.Dataset.Ump.UMPDatasetProperties; + 'com.linkedin.dataset.RetentionPolicy'?: Com.Linkedin.Dataset.RetentionPolicy; + 'com.linkedin.dataset.ComplianceInfo'?: Com.Linkedin.Dataset.ComplianceInfo; + 'com.linkedin.common.Ownership'?: Com.Linkedin.Common.Ownership; } diff --git a/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance-data-types.d.ts b/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance-data-types.d.ts new file mode 100644 index 0000000000000..4ed5d2b5a606e --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance-data-types.d.ts @@ -0,0 +1,30 @@ +import { + Classification, + MemberIdLogicalType, + ComplianceFieldIdValue, + NonMemberIdLogicalType +} from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; + +/** + * Describes the interface for a complianceDataType + * @export + * @interface IComplianceDataType + */ +export interface IComplianceDataType { + // Indicates that id contains pii + pii: boolean; + // Flag indicating if a field with this id is a member identifier + idType: boolean; + // The default security classification for the field with this id + defaultSecurityClassification: Classification; + // User friendly translation for the id string + title: string; + // Urn for the id + $URN: string; + // List of field formats & description supported for a field with the id, only applicable to fields with idType set to true + supportedFieldFormats: Array<{ id: MemberIdLogicalType; description: string }>; + // The id for the field + id: ComplianceFieldIdValue | NonMemberIdLogicalType; + // A short description for this data type + description?: string; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance/export-policy.d.ts b/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance/export-policy.d.ts new file mode 100644 index 0000000000000..8ae1729a32f8e --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance/export-policy.d.ts @@ -0,0 +1,16 @@ +/** + * Describes the expected API interface for the dataset export policy fields, describing + * whether or not certain types of user content exist within the dataset + */ +export interface IDatasetExportPolicy { + // Whether the dataset contains content generated by user action + containsUserActionGeneratedContent: boolean | null; + // Whether the dataset contains content derived from user information + containsUserDerivedContent: boolean | null; + // Whether the dataset contains user generated content + containsUserGeneratedContent: boolean | null; + // username of who last modified this policy + modifiedBy: string | null; + // Unix timestamp for last modified date/time + modifiedTime: number | null; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance/info.d.ts b/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance/info.d.ts new file mode 100644 index 0000000000000..febb92767a388 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance/info.d.ts @@ -0,0 +1,30 @@ +import { IComplianceFieldAnnotation } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-annotation'; +import { Classification } from '@datahub/metadata-types/constants/entity/dataset/compliance-field-types'; +import { PurgePolicy } from '@datahub/metadata-types/constants/entity/dataset/compliance/purge-policy'; +import { DatasetClassification } from '@datahub/metadata-types/constants/entity/dataset/compliance/classifiers'; + +export interface IDatasetComplianceInfo { + // List of compliance annotation/tag attributes for fields on the dataset + complianceEntities: Array; + // User entered purge notation for a dataset with a purge exempt policy + compliancePurgeNote: null | string; + // Purge Policy for the dataset + complianceType: PurgePolicy | ''; + // Dataset level security classification + confidentiality: Classification | null; + // Flag indicating that the dataset contains pii data, typically for schemaless dataset this is user entered, + // for datasets with a schema, this derived from the complianceEntities + containingPersonalData?: boolean | null; + // Tags for a types of data contained in the related dataset + datasetClassification: DatasetClassification | null; + // Unique wherehows specific database identifier, at this point is legacy + datasetId: null; + // Unique urn for the dataset + readonly datasetUrn?: string; + // optional string with username of modifier + modifiedBy?: string; + // optional timestamp of last modification date + modifiedTime?: number; + // optional attribute indicating that the compliance policy is derived from a parent in the lineage + readonly fromUpstream?: boolean; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance/retention.d.ts b/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance/retention.d.ts new file mode 100644 index 0000000000000..1342d76eb7c58 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/dataset/compliance/retention.d.ts @@ -0,0 +1,19 @@ +import { PurgePolicy } from '@datahub/metadata-types/constants/entity/dataset/compliance/purge-policy'; + +/** + * A dataset retention policy determines how long should the dataset be kept before it should be purged + */ +export interface IDatasetRetentionPolicy { + // Unique wherehows specific database identifier, at this point is legacy but is still being returned by API + datasetId: null; + // Unique urn for the dataset that helps identify it + datasetUrn: string; + // optional string with username of modifier + modifiedBy: string; + // optional timestamp of last modification date + modifiedTime: number; + // User entered purge notation for a dataset with a purge exempt policy + purgeNote: string | null; + // Purge Policy for the dataset + purgeType: PurgePolicy | ''; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/dataset/dataset-entity.d.ts b/datahub-web/@datahub/metadata-types/types/entity/dataset/dataset-entity.d.ts index d5036ba47e4df..5296f08fc4a8f 100644 --- a/datahub-web/@datahub/metadata-types/types/entity/dataset/dataset-entity.d.ts +++ b/datahub-web/@datahub/metadata-types/types/entity/dataset/dataset-entity.d.ts @@ -1,6 +1,14 @@ import { FabricType } from '@datahub/metadata-types/constants/common/fabric-type'; import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; +/** + * TODO META-11674 + * + * DEPRECATED This model correspond to + * https://jarvis.corp.linkedin.com/codesearch/result/?name=DatasetView.java&path=wherehows-frontend%2Fdatahub-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Flinkedin%2Fdatahub%2Fmodels%2Fview&reponame=wherehows%2Fwherehows-frontend + * + * which should be avoided but still used in some places + */ export interface IDatasetEntity { createdTime: number; decommissionTime: number | null; @@ -25,4 +33,7 @@ export interface IDatasetEntity { tags: Array; // Equivalent to urn of a dataset uri: string; + // The health score for the dataset entity + healthScore: number; + urn?: string; } diff --git a/datahub-web/@datahub/metadata-types/types/entity/dataset/platform.d.ts b/datahub-web/@datahub/metadata-types/types/entity/dataset/platform.d.ts index 2c9c0be6dd908..ba1b2cf37627f 100644 --- a/datahub-web/@datahub/metadata-types/types/entity/dataset/platform.d.ts +++ b/datahub-web/@datahub/metadata-types/types/entity/dataset/platform.d.ts @@ -1,3 +1,4 @@ +import { PurgePolicy } from '@datahub/metadata-types/constants/entity/dataset/compliance/purge-policy'; import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform'; /** @@ -6,6 +7,8 @@ import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/datase * @interface IDataPlatform */ export interface IDataPlatform { + // Policies supported for this dataset + supportedPurgePolicies: Array; // the type of the dataset platform with the given name e.g. DISTRIBUTED_FILE_SYSTEM, RELATIONAL_DB type: string; // the name of the dataset platform diff --git a/datahub-web/@datahub/metadata-types/types/entity/dataset/scehma.d.ts b/datahub-web/@datahub/metadata-types/types/entity/dataset/scehma.d.ts index 891a45ba281dc..03a1d1ed41b29 100644 --- a/datahub-web/@datahub/metadata-types/types/entity/dataset/scehma.d.ts +++ b/datahub-web/@datahub/metadata-types/types/entity/dataset/scehma.d.ts @@ -22,9 +22,14 @@ export interface IDatasetSchemaColumn { * @interface */ export interface IDatasetSchema { + // Denotes that the dataset contains no explicitly defined schema, e.g. Couchbase schemaless: boolean; + // The raw schema content rawSchema: null | string; + // If dataset has dedicated key schema which is separated from the table or value part, it can be stored here keySchema: null | string; + // Date of last modification for the schema lastModified?: number; - columns: Array; + // Flattened/normalized field-level schema definition with fully-qualified field path + columns?: Array; } diff --git a/datahub-web/@datahub/metadata-types/types/entity/dataset/schedule-properties.d.ts b/datahub-web/@datahub/metadata-types/types/entity/dataset/schedule-properties.d.ts deleted file mode 100644 index e703ca61d849c..0000000000000 --- a/datahub-web/@datahub/metadata-types/types/entity/dataset/schedule-properties.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { HadoopClusterType } from '@datahub/metadata-types/constants/common/hadoop-cluster-type'; - -/** - * Schedule properties when the flow is run. This is chosen based on the availability of input data sources - * @namespace Dataset - * @interface IScheduleProperties - */ -export interface IScheduleProperties { - // Cluster qualifier for this schedule - value: string; - // Cluster qualifier for this schedule - cluster: HadoopClusterType; -} diff --git a/datahub-web/@datahub/metadata-types/types/entity/dataset/ump-flows.d.ts b/datahub-web/@datahub/metadata-types/types/entity/dataset/ump-flows.d.ts new file mode 100644 index 0000000000000..c4a5e0bf0a168 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/dataset/ump-flows.d.ts @@ -0,0 +1,42 @@ +/** + * Represents one frequency item in the execution flow + */ +export interface ITimeFrame { + latestStatus: string; + time: number; + latestExeUrl?: string; + executionsHistory?: { + flowStatusSummary: Array; + }; +} + +/** + * Execution history interface from the execution flow + */ +export interface IExecutionHistory { + execId: string; + project?: string; + flowExecutionUrl: string; + flowExecutionStatus: string; + flowExecutionLastUpdated: number; + application: string; +} + +/** + * Execution flow response coming from UMP-Monitor + */ +export interface IExecutionFlow { + cluster: string; + dataset: string; + flowName: string; + frequency: string; + hasPermission?: boolean; + timeFrame: Array; +} + +/** + * UMP-Monitor query reponse container + */ +export interface IExecutionFlowResponse { + flowStatusResponseDataset: Array; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/feature-aspect.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/feature-aspect.d.ts new file mode 100644 index 0000000000000..d6fd37805f64f --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/feature-aspect.d.ts @@ -0,0 +1,22 @@ +import { IFrameFeatureEditableConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-editable-config'; +import { IFrameFeatureConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-config'; +import { IBaseAspect } from '@datahub/metadata-types/types/metadata/aspect'; +import { IFrameFeatureAvailabilityConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-availability-config'; +import { IFrameFeatureStatusConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-status-config'; +import { IFrameFeatureTierConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-tier-config'; + +/** + * Supported metadata aspects for a Feature + * @export + * @interface IFeatureAspect + * @extends {IBaseAspect} + */ +export interface IFeatureAspect extends IBaseAspect { + urn: string; + 'com.linkedin.common.Ownership'?: Com.Linkedin.Common.Ownership; + 'com.linkedin.feature.frame.FrameFeatureAvailabilityConfig'?: IFrameFeatureAvailabilityConfig; + 'com.linkedin.feature.frame.FrameFeatureConfig'?: IFrameFeatureConfig; + 'com.linkedin.feature.frame.FrameFeatureEditableConfig'?: IFrameFeatureEditableConfig; + 'com.linkedin.feature.frame.FrameFeatureStatusConfig'?: IFrameFeatureStatusConfig; + 'com.linkedin.feature.frame.FrameFeatureTierConfig'?: IFrameFeatureTierConfig; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/feature-entity.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/feature-entity.d.ts new file mode 100644 index 0000000000000..d2a9be9f43de2 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/feature-entity.d.ts @@ -0,0 +1,26 @@ +import { IBaseEntity } from '@datahub/metadata-types/types/entity/index'; +import { FeatureStatusType } from '@datahub/metadata-types/constants/entity/feature/frame/feature-status-type'; +import { FeatureTierType } from '@datahub/metadata-types/constants/entity/feature/frame/feature-tier-type'; + +/** + * Specification of a generic Feature entity + * https://jarvis.corp.linkedin.com/codesearch/result/?name=FeatureEntity.pdsc&path=metadata-models%2Fmetadata-models%2Fsrc%2Fmain%2Fpegasus%2Fcom%2Flinkedin%2Fmetadata%2Fentity&reponame=multiproducts%2Fmetadata-models + */ +export interface IFeatureEntity extends IBaseEntity { + // Urn for the feature. Urn is constructed from two parts, 1. namespace (which is the feature multiproduct name) and 2. feature name + urn: string; + // Feature name + name?: string; + // Namespace of the feature, e.g. jymbii, waterloo, careers etc + namespace?: string; + // A union of all supported feature base entity types + baseEntity?: string; + // Classification of the feature, e.g. Characteristic, Activity etc + classification?: string; + // Category of the feature, like InmailSent, CompanyStandardizedData, AdsClickCampaignType + category?: string; + // Status for the feature + status?: FeatureStatusType; + // Tier for the feature + tier?: FeatureTierType; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/availability-info.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/availability-info.d.ts new file mode 100644 index 0000000000000..71faf0f4b8f71 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/availability-info.d.ts @@ -0,0 +1,14 @@ +import { FabricType } from '@datahub/metadata-types/constants/common/fabric-type'; +import { AvailabilityEnvironmentType } from '@datahub/metadata-types/constants/entity/feature/frame/availability-environment-type'; + +/** + * Availability of the feature or anchor in different environments + * @export + * @interface IAvailabilityInfo + */ +export interface IAvailabilityInfo { + // Represents the environment where the feature/anchor is available, e.g. OFFLINE, ONLINE and NEARLINE + environment: AvailabilityEnvironmentType; + // Fabric where feature/anchor is available in combination with the environment + fabric: FabricType; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/espresso-source-properties.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/espresso-source-properties.d.ts new file mode 100644 index 0000000000000..f5fffc75c0042 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/espresso-source-properties.d.ts @@ -0,0 +1,13 @@ +/** + * Represents an espresso source and related properties. + * @export + * @interface IEspressoSourceProperties + */ +export interface IEspressoSourceProperties { + // Espresso database name + database: string; + // Espresso table name + table: string; + // D2 URI of the Espresso database + d2Uri: string; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/feature-multiproduct-info.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/feature-multiproduct-info.d.ts new file mode 100644 index 0000000000000..699dc1d1bad07 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/feature-multiproduct-info.d.ts @@ -0,0 +1,17 @@ +/** + * Properties associated with the multiproduct in which the feature is defined + * @export + * @interface IFeatureMultiProductInfo + */ +export interface IFeatureMultiProductInfo { + // Urn of the frame-feature multiproduct in which this feature has been defined + multiproduct: string; + // Name of the offline module of frame-feature multiproduct in which this feature has been defined + offlineModuleName?: string; + // Name of the online module of frame-feature multiproduct in which this feature has been defined + onlineModuleName?: string; + // The canonical name of the frame feature Multiproduct + name: string; + // Version of the multiproduct for onboarding the feature + version: string; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-anchor-config.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-anchor-config.d.ts new file mode 100644 index 0000000000000..ed6e39465bcb8 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-anchor-config.d.ts @@ -0,0 +1,20 @@ +import { IFrameSourceConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-source-config'; +import { IAvailabilityInfo } from '@datahub/metadata-types/types/entity/feature/frame/availability-info'; + +/** + * Represents a anchor definition as defined in the frame feature config + * @export + * @interface IFrameAnchorConfig + */ +export interface IFrameAnchorConfig { + // Name of the anchor + name: string; + // Source associated with this anchor + source: IFrameSourceConfig; + // Key expression for the anchor + key?: string | Array; + // Fully qualified extractor class name + extractor?: string; + // Environment and fabric where anchor is defined, e.g. in ONLINE EI fabric or PROD + availability: IAvailabilityInfo; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-derived-feature-config.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-derived-feature-config.d.ts new file mode 100644 index 0000000000000..8f87f19ea80cc --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-derived-feature-config.d.ts @@ -0,0 +1,26 @@ +interface IFrameDerivedFeatureInput { + // Name of the input + name: string; + // Key associated with the input + key: string | Array; + // Feature associated with this input + feature: string; +} + +/** + * Properties associated with a derived feature as specified in derivations section of frame config + * @export + * @interface IFrameDerivedFeatureConfig + */ +export interface IFrameDerivedFeatureConfig { + // Name of the feature + name: string; + // Derived feature expression or class name + expression: string; + // Key expression for the feature + key?: string | Array; + // Inputs for this derived feature + inputs?: Array; + // Base or upstream features associated with this derived feature + baseFeatures: Array; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-availability-config.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-availability-config.d.ts new file mode 100644 index 0000000000000..79ea82f1ee7e2 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-availability-config.d.ts @@ -0,0 +1,11 @@ +import { IAvailabilityInfo } from '@datahub/metadata-types/types/entity/feature/frame/availability-info'; + +/** + * Properties associated with the availability of a feature + * @export + * @interface IFrameFeatureAvailabilityConfig + */ +export interface IFrameFeatureAvailabilityConfig { + // Availability of the feature in different environments like offline, online and nearline and fabrics like ei, prod etc + availability: Array; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-category.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-category.d.ts new file mode 100644 index 0000000000000..d6730765170d4 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-category.d.ts @@ -0,0 +1,5 @@ +/** + * Dot (.) separated feature category path, e.g. Member.Activity.Job.ApplySave + * @alias string Provides a semantic type annotation for the string format, does not assert the type of the string + */ +export type FrameFeatureCategory = string; diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-config.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-config.d.ts new file mode 100644 index 0000000000000..410969abfe37d --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-config.d.ts @@ -0,0 +1,33 @@ +import { IFeatureMultiProductInfo } from '@datahub/metadata-types/types/entity/feature/frame/feature-multiproduct-info'; +import { FrameFeatureType } from '@datahub/metadata-types/constants/entity/feature/frame/frame-feature-type'; +import { IFrameAnchorConfig } from '@datahub/metadata-types/types/entity/feature/frame/frame-anchor-config'; +import { IFrameSlidingWindowAggregationInfo } from '@datahub/metadata-types/types/entity/feature/frame/frame-sliding-window-aggregation-info'; +import { IFrameGlobalProperties } from '@datahub/metadata-types/types/entity/feature/frame/frame-global-properties'; + +/** + * Feature properties as defined in the frame config. + * @export + * @interface IFrameFeatureConfig + */ +export interface IFrameFeatureConfig { + // Name of the feature + name: string; + // Feature expression + expression?: string; + // Type of the feature + type?: FrameFeatureType; + // MVEL function or UDF defined in feature expression + udf?: string; + // Anchors of the feature as defined in all feature configs + anchors: Array; + // Default value of a feature + defaultValue?: string | number | Array | Record; + // Properties of the multiproduct in which this feature is defined + multiproductInfo?: IFeatureMultiProductInfo; + // Properties associated with Sliding Window Aggregation feature + slidingWindowAggregationInfo?: IFrameSlidingWindowAggregationInfo; + // Global properties as defined in the globals section of frame config + globalProperties: IFrameGlobalProperties; + // Namespace of the feature, e.g. jymbii, waterloo, careers etc + namespace: string; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-editable-config.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-editable-config.d.ts new file mode 100644 index 0000000000000..fefecb0357d42 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-editable-config.d.ts @@ -0,0 +1,28 @@ +import { FrameFeatureCategory } from '@datahub/metadata-types/types/entity/feature/frame/frame-feature-category'; +import { FeatureInferType } from '@datahub/metadata-types/constants/entity/feature/frame/feature-infer-type'; + +/** + * Properties associated with a feature which can be modified/edited by the user + * @export + * @interface IFrameFeatureEditableConfig + */ +export interface IFrameFeatureEditableConfig { + // Description of the feature or link to the documentation of the feature + description?: string; + // Category of the feature + category?: { + categoryString: FrameFeatureCategory; + }; + // Link to the documentation of the feature + documentationLink?: string; + // Base category of the feature, e.g. Member, Job etc + baseEntity?: { + baseEntityString: string; + }; + // Classification category of the feature, e.g. Characteristic, Activity etc + classification?: { + classificationString: string; + }; + // Infer type of the feature, e.g. Fact or Inferred + inferType?: FeatureInferType; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-status-config.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-status-config.d.ts new file mode 100644 index 0000000000000..821f07040396b --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-status-config.d.ts @@ -0,0 +1,12 @@ +import { FeatureStatusType } from '@datahub/metadata-types/constants/entity/feature/frame/feature-status-type'; + +/** + * Properties associated with the status of a feature which can be modified/edited by the user + * @export + * @interface IFrameFeatureStatusConfig + */ +export interface IFrameFeatureStatusConfig { + // Status of the feature + // default FeatureStatusType.Unpublished + status: FeatureStatusType; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-tier-config.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-tier-config.d.ts new file mode 100644 index 0000000000000..4d65503c6acbd --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-feature-tier-config.d.ts @@ -0,0 +1,10 @@ +import { FeatureTierType } from '@datahub/metadata-types/constants/entity/feature/frame/feature-tier-type'; +/** + * Properties associated with the tier of a feature which can be modified/edited by the user + * @export + * @interface IFrameFeatureTierConfig + */ +export interface IFrameFeatureTierConfig { + // Tier of the feature + tier?: FeatureTierType; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-global-properties.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-global-properties.d.ts new file mode 100644 index 0000000000000..7b95b37aaa2b0 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-global-properties.d.ts @@ -0,0 +1,10 @@ +/** + * Global properties as defined in the frame config + * @export + * @interface IFrameGlobalProperties + */ +export interface IFrameGlobalProperties { + // Control whether Frame would ignore syntax NPE errors from MVEL expressions + // default false + strictMode: boolean; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-sliding-window-aggregation-info.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-sliding-window-aggregation-info.d.ts new file mode 100644 index 0000000000000..1b7dc66abb285 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-sliding-window-aggregation-info.d.ts @@ -0,0 +1,19 @@ +import { FeatureAggregationType } from '@datahub/metadata-types/constants/entity/feature/frame/feature-aggregation-type'; + +/** + * Properties associated with Sliding Window Aggregation feature + * @export + * @interface IFrameSlidingWindowAggregationInfo + */ +export interface IFrameSlidingWindowAggregationInfo { + // Aggregation function to be applied for sliding window aggregation + aggregation: FeatureAggregationType; + // Length of window time, supports 4 type of units: d(day), h(hour), m(minute), s(second). The example value are 7d, 5h, 3m or 1s + window: string; + // A Spark SQL expression for filtering the fact data before aggregation + filter?: string; + // The column/field on which the data will be grouped by before aggregation + groupBy?: string; + // A number specifying for each group, taking the records with the TOP k aggregation value + limit?: number; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-source-config.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-source-config.d.ts new file mode 100644 index 0000000000000..5142852dd94d9 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-source-config.d.ts @@ -0,0 +1,18 @@ +import { FrameSourceType } from '@datahub/metadata-types/constants/entity/feature/frame/frame-source-type'; +import { IFrameSourceProperties } from '@datahub/metadata-types/types/entity/feature/frame/frame-source-properties'; + +/** + * Represents a source for features as defined in the frame config + * @export + * @interface IFrameSourceConfig + */ +export interface IFrameSourceConfig { + // Name of the source + name: string; + // Supported source types in Frame + type: FrameSourceType; + // Dataset urn corresponding to the source. Some sources may not have datasetUrn like passthrough sources + datasetUrn?: string; + // Properties associated with the source + properties: IFrameSourceProperties; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-source-properties.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-source-properties.d.ts new file mode 100644 index 0000000000000..76ade4775d8ae --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/frame-source-properties.d.ts @@ -0,0 +1,18 @@ +import { IEspressoSourceProperties } from '@datahub/metadata-types/types/entity/feature/frame/espresso-source-properties'; +import { IHDFSSourceProperties } from '@datahub/metadata-types/types/entity/feature/frame/hdfs-source-properties'; +import { IVoldemortSourceProperties } from '@datahub/metadata-types/types/entity/feature/frame/voldermort-source-properties'; +import { IRestliSourceProperties } from '@datahub/metadata-types/types/entity/feature/frame/restli-source-properties'; +import { IVeniceSourceProperties } from '@datahub/metadata-types/types/entity/feature/frame/venice-source-properties'; +import { IPassthroughSourceProperties } from '@datahub/metadata-types/types/entity/feature/frame/passthrough-source-properties'; + +/** + * A union of all supported source property types + */ +interface IFrameSourceProperties { + 'com.linkedin.feature.frame.EspressoSourceProperties'?: IEspressoSourceProperties; + 'com.linkedin.feature.frame.HDFSSourceProperties'?: IHDFSSourceProperties; + 'com.linkedin.feature.frame.VoldemortSourceProperties'?: IVoldemortSourceProperties; + 'com.linkedin.feature.frame.RestliSourceProperties'?: IRestliSourceProperties; + 'com.linkedin.feature.frame.VeniceSourceProperties'?: IVeniceSourceProperties; + 'com.linkedin.feature.frame.PassthroughSourceProperties'?: IPassthroughSourceProperties; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/hdfs-source-properties.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/hdfs-source-properties.d.ts new file mode 100644 index 0000000000000..a81599e8e22ce --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/hdfs-source-properties.d.ts @@ -0,0 +1,20 @@ +/** + * Represents a Frame HDFS source and related properties + * @export + * @interface IHDFSSourceProperties + */ +export interface IHDFSSourceProperties { + // "File URI (HDFS path) of the dataset, or Dali URI (dalids:///) + path: string; + // Extra parameters for Frame's generic data manipulation + extraParameters?: Record>; + // Set as true to identify a fact dataset for aggregation + // default false + timeseries: boolean; + // Field name of timestamp column in fact data + timestamp?: string; + // Format of the timestamp value, in java.time.DateTimeFormatter format + timestampFormat?: string; + // True or false to specify if the source is pointing to a time-sensitive path + hasTimeSnapshot: boolean; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/passthrough-source-properties.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/passthrough-source-properties.d.ts new file mode 100644 index 0000000000000..ea0bb7cbcf2e4 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/passthrough-source-properties.d.ts @@ -0,0 +1,9 @@ +/** + * Represents an passthrough source and related properties + * @export + * @interface IPassthroughSourceProperties + */ +export interface IPassthroughSourceProperties { + // Describes the class that the features will be extracted from. It can POJO or pegasus objects + dataModel?: string; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/restli-source-properties.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/restli-source-properties.d.ts new file mode 100644 index 0000000000000..0e0aea3525e6a --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/restli-source-properties.d.ts @@ -0,0 +1,11 @@ +// Represents a Restli source and related properties +export interface IRestliSourceProperties { + // Restli resource name + restResourceName: string; + // MVEL key expression + keyExpression: string; + // Path spec, a comma separated string + pathSpec: string; + // A map for specifying additional parameters needed by Rest.li + restRequestParams: Record | Record>; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/venice-source-properties.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/venice-source-properties.d.ts new file mode 100644 index 0000000000000..6c9be89e469b4 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/venice-source-properties.d.ts @@ -0,0 +1,11 @@ +/** + * Properties related to a Venice source + * @export + * @interface IVeniceSourceProperties + */ +export interface IVeniceSourceProperties { + // Venice database name + storeName: string; + // MVEL key expression + keyExpression: string; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/feature/frame/voldermort-source-properties.d.ts b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/voldermort-source-properties.d.ts new file mode 100644 index 0000000000000..3d4b321857312 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/entity/feature/frame/voldermort-source-properties.d.ts @@ -0,0 +1,13 @@ +/** + * Properties related to a Voldemort source + * @export + * @interface IVoldemortSourceProperties + */ +export interface IVoldemortSourceProperties { + // Voldemort Store name + storeName: string; + // MVEL key expression + keyExpression: string; + // The connection point for the voldemort store + bootstrapUrl: string; +} diff --git a/datahub-web/@datahub/metadata-types/types/entity/index.d.ts b/datahub-web/@datahub/metadata-types/types/entity/index.d.ts index 3e00c439baf62..c71db4b376ca3 100644 --- a/datahub-web/@datahub/metadata-types/types/entity/index.d.ts +++ b/datahub-web/@datahub/metadata-types/types/entity/index.d.ts @@ -5,9 +5,7 @@ */ export interface IBaseEntity { // The resource name for the entity - urn?: string; - // The identifier for a dataset entity, available if the inheriting entity is a Dataset - uri?: string; + urn: string; // Whether the entity has been removed or not, removed means a soft deletion removed: boolean; } diff --git a/datahub-web/@datahub/metadata-types/types/entity/person/person-entity.d.ts b/datahub-web/@datahub/metadata-types/types/entity/person/person-entity.d.ts index d9d88a473c0e7..90ae8034c242b 100644 --- a/datahub-web/@datahub/metadata-types/types/entity/person/person-entity.d.ts +++ b/datahub-web/@datahub/metadata-types/types/entity/person/person-entity.d.ts @@ -8,8 +8,6 @@ export interface ICorpUserEditableInfo { teams: Array; // A self-assigned list of skills that the person claims to own skills: Array; - // Reference to the picture URL for the person - pictureLink: string; } /** @@ -47,4 +45,5 @@ export interface ICorpUserInfo { countryCode: string; }; editableInfo?: ICorpUserEditableInfo; + datasetRecommendationsInfo?: Com.Linkedin.Identity.DatasetRecommendationsInfo; } diff --git a/datahub-web/@datahub/metadata-types/types/global.d.ts b/datahub-web/@datahub/metadata-types/types/global.d.ts new file mode 100644 index 0000000000000..72fa1ab19eede --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/global.d.ts @@ -0,0 +1,6 @@ +// Types for compiled templates +declare module '@datahub/metadata-types/templates/*' { + import { TemplateFactory } from 'htmlbars-inline-precompile'; + const tmpl: TemplateFactory; + export default tmpl; +} diff --git a/datahub-web/@datahub/metadata-types/types/metadata/azkaban-flow-snapshot.d.ts b/datahub-web/@datahub/metadata-types/types/metadata/azkaban-flow-snapshot.d.ts new file mode 100644 index 0000000000000..2edbca5a43865 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/metadata/azkaban-flow-snapshot.d.ts @@ -0,0 +1,14 @@ +import { IAzkabanFlowAspect } from '@datahub/metadata-types/types/entity/data-job/azkaban/flow/aspect'; + +/** + * A metadata snapshot for a specific azkaban flow entity + * @export + * @interface IAzkabanFlowSnapshot + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/metadata/snapshot/AzkabanFlowSnapshot.pdsc + */ +export interface IAzkabanFlowSnapshot { + // Azkaban flow urn identifying a Azkaban declared flow + urn: string; + // The list of metadata aspects associated with a Azkaban flow. Depending on the use case, this can either be all, or a selection, of supported aspects. + aspects: Array; +} diff --git a/datahub-web/@datahub/metadata-types/types/metadata/azkaban-job-snapshot.d.ts b/datahub-web/@datahub/metadata-types/types/metadata/azkaban-job-snapshot.d.ts new file mode 100644 index 0000000000000..cec4fddc7d3c5 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/metadata/azkaban-job-snapshot.d.ts @@ -0,0 +1,14 @@ +import { IAzkabanJobAspect } from '@datahub/metadata-types/types/entity/data-job/azkaban/job/aspect'; + +/** + * A metadata snapshot for a specific azkaban job entity + * @export + * @interface IAzkabanJobSnapshot + * @link https://git.corp.linkedin.com:1367/a/plugins/gitiles/multiproducts/metadata-models/+/master/metadata-models/src/main/pegasus/com/linkedin/metadata/snapshot/AzkabanJobSnapshot.pdsc + */ +export interface IAzkabanJobSnapshot { + // Azkaban job urn identifying a Azkaban declared job + urn: string; + // The list of metadata aspects associated with a Azkaban job. Depending on the use case, this can either be all, or a selection, of supported aspects. + aspects: Array; +} diff --git a/datahub-web/@datahub/metadata-types/types/metadata/feature-snapshot.d.ts b/datahub-web/@datahub/metadata-types/types/metadata/feature-snapshot.d.ts new file mode 100644 index 0000000000000..911f95337d839 --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/metadata/feature-snapshot.d.ts @@ -0,0 +1,14 @@ +import { IFeatureAspect } from '@datahub/metadata-types/types/entity/feature/feature-aspect'; + +/** + * A metadata snapshot for a specific feature entity + * @export + * @interface IFeatureSnapshot + */ +export interface IFeatureSnapshot { + // URN for the entity the metadata snapshot is associated with + urn: string; + // The list of metadata aspects associated with the feature. + // Depending on the use case, this can either be all, or a selection, of supported aspects. + aspects: Array; +} diff --git a/datahub-web/@datahub/metadata-types/types/metadata/snapshot.d.ts b/datahub-web/@datahub/metadata-types/types/metadata/snapshot.d.ts index 1bab5cedf72ac..e83d5126aefba 100644 --- a/datahub-web/@datahub/metadata-types/types/metadata/snapshot.d.ts +++ b/datahub-web/@datahub/metadata-types/types/metadata/snapshot.d.ts @@ -1,6 +1,10 @@ import { IDatasetSnapshot } from '@datahub/metadata-types/types/metadata/dataset-snapshot'; +import { IFeatureSnapshot } from '@datahub/metadata-types/types/metadata/feature-snapshot'; /** * Intersection of available entity snapshot types + * @export + * @namespace metadata.snapshot + * @interface {IDatasetSnapshot & IFeatureSnapshot} */ -export type Snapshot = IDatasetSnapshot; +export type Snapshot = IDatasetSnapshot & IFeatureSnapshot; diff --git a/datahub-web/@datahub/metadata-types/types/pdsc.d.ts b/datahub-web/@datahub/metadata-types/types/pdsc.d.ts new file mode 100644 index 0000000000000..43e063e42a36d --- /dev/null +++ b/datahub-web/@datahub/metadata-types/types/pdsc.d.ts @@ -0,0 +1,14 @@ +/** + * Some types may be missing from the PDSC generation. + * Using this file to fill those missing types when we don't really need + * to import the 'real' type. + */ + +// TODO META-11580: PDSC Types are not generating properly +declare namespace Com { + namespace Linkedin { + namespace Khronos { + type TaskStatus = unknown; + } + } +} diff --git a/datahub-web/@datahub/pdsc/.gitignore b/datahub-web/@datahub/pdsc/.gitignore new file mode 100644 index 0000000000000..e638f617517e1 --- /dev/null +++ b/datahub-web/@datahub/pdsc/.gitignore @@ -0,0 +1,3 @@ +dist +node_modules +test/dist diff --git a/datahub-web/@datahub/pdsc/README.md b/datahub-web/@datahub/pdsc/README.md new file mode 100644 index 0000000000000..7b5d3f38ac345 --- /dev/null +++ b/datahub-web/@datahub/pdsc/README.md @@ -0,0 +1,14 @@ +@datahub/pdsc +=============================================================== + +Original Author: Marius Seritan + +This package is used to translate backend models, which are currently written in PDL (you can find +out more about PDL as part of LinkedIn's open source rest.li framework at +[https://linkedin.github.io/rest.li/pdl_schema](https://linkedin.github.io/rest.li/pdl_schema) ) and +translated to PDSC, an older schema spec for rest.li, documented at +[https://linkedin.github.io/rest.li/pdsc_syntax](https://linkedin.github.io/rest.li/pdsc_syntax). + +The PDSC defines the models on the backend, which then are translated to Java classes that get +returned in our APIs. Thus, the translation of these models to TypeScript gives us a reliable method +to create a JavaScript readable equivalent definition for the API response. diff --git a/datahub-web/@datahub/pdsc/local-types/decompress.d.ts b/datahub-web/@datahub/pdsc/local-types/decompress.d.ts new file mode 100644 index 0000000000000..1b72435223c7a --- /dev/null +++ b/datahub-web/@datahub/pdsc/local-types/decompress.d.ts @@ -0,0 +1,21 @@ +declare module 'decompress' { + function decompress( + input: string, + output?: string, + options?: { + filter?: any; + map?: any; + strip?: number; + plugins?: string[]; + } + ): Promise< + Array<{ + path: string; + type: string; + data: Buffer; + mode: number; + mtime: string; + }> + >; + export = decompress; +} diff --git a/datahub-web/@datahub/pdsc/local-types/find-root.d.ts b/datahub-web/@datahub/pdsc/local-types/find-root.d.ts new file mode 100644 index 0000000000000..74fc464834031 --- /dev/null +++ b/datahub-web/@datahub/pdsc/local-types/find-root.d.ts @@ -0,0 +1,4 @@ +declare module 'find-root' { + function findRoot(start?: string, check?: (file: string) => boolean): string | undefined; + export = findRoot; +} diff --git a/datahub-web/@datahub/pdsc/package.json b/datahub-web/@datahub/pdsc/package.json new file mode 100644 index 0000000000000..fa47b4acc2c29 --- /dev/null +++ b/datahub-web/@datahub/pdsc/package.json @@ -0,0 +1,63 @@ +{ + "name": "@datahub/pdsc", + "version": "0.0.0", + "private": true, + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "prepack": "node_modules/.bin/tsc", + "prepublish": "node_modules/.bin/tsc", + "tsc": "node_modules/.bin/tsc", + "run": "node_modules/.bin/tsc && node dist/index.js", + "test": "node_modules/.bin/tsc -p test/ && node_modules/.bin/mocha test/**/*.spec.js", + "testGrep": "node_modules/.bin/tsc -p test/ && node_modules/.bin/mocha test/**/*.spec.js --grep ", + "debug-test": "node_modules/.bin/tsc -p test/ && node_modules/.bin/mocha --inspect-brk test/**/*.spec.js", + "tslint": "./node_modules/.bin/tslint -p tsconfig.json 'src/**/*.ts'", + "prettier": "./node_modules/.bin/prettier --write '{src,test}/**/*.ts'", + "watch-test": "tsc -w -p test/ & sleep 1 && mocha -w test/**/*.spec.js", + "generate-metadata-models": "node_modules/.bin/tsc && node dist/index.js --data-model ../../../build/datahub-web/pdscs/pegasus" + }, + "pre-commit": [ + "test", + "tslint", + "prettier", + "precommit" + ], + "dependencies": { + "decompress": "^4.2.0", + "glob": "^7.1.2", + "json5": "^0.5.1", + "lockfile": "^1.0.3", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "prettier": "^1.6.1", + "request": "^2.81.0", + "request-promise-native": "1.0.4", + "xml2js": "^0.4.17" + }, + "devDependencies": { + "@types/chai": "^3.5.2", + "@types/cheerio": "^0.22.1", + "@types/glob": "^5.0.30", + "@types/json5": "^0.0.29", + "@types/lockfile": "^0.4.29", + "@types/minimist": "^1.2.0", + "@types/mkdirp": "^0.3.29", + "@types/mocha": "^2.2.41", + "@types/node": "^8.0.7", + "@types/prettier": "^1.6.1", + "@types/request-promise-native": "^1.0.5", + "@types/xml2js": "^0.4.0", + "chai": "^3.5.0", + "find-root": "^1.1.0", + "mocha": "^3.3.0", + "pre-commit": "^1.2.2", + "tslint": "^5.7.0", + "tslint-config-prettier": "^1.5.0", + "typescript": "^3.9.3" + }, + "files": [ + "dist", + "local-types" + ] +} diff --git a/datahub-web/@datahub/pdsc/restli-types-config.json b/datahub-web/@datahub/pdsc/restli-types-config.json new file mode 100644 index 0000000000000..3afb5261add28 --- /dev/null +++ b/datahub-web/@datahub/pdsc/restli-types-config.json @@ -0,0 +1,5 @@ +{ + "cacheFolder": "tmp/codegen", + "output": "../metadata-types/types/codegen", + "collectionType": "Restli.Common.CollectionResponse" +} diff --git a/datahub-web/@datahub/pdsc/src/config.ts b/datahub-web/@datahub/pdsc/src/config.ts new file mode 100644 index 0000000000000..08d3e7a519e72 --- /dev/null +++ b/datahub-web/@datahub/pdsc/src/config.ts @@ -0,0 +1,9 @@ +/** + * Configuration for the restli-types generator. + */ +export interface Config { + urlMappingsFile: string; + cacheFolder: string; + output: string; + collectionType: string; +} diff --git a/datahub-web/@datahub/pdsc/src/download-cache.ts b/datahub-web/@datahub/pdsc/src/download-cache.ts new file mode 100644 index 0000000000000..652b023495416 --- /dev/null +++ b/datahub-web/@datahub/pdsc/src/download-cache.ts @@ -0,0 +1,87 @@ +import decompress = require('decompress'); +import * as fs from 'fs'; +import * as http from 'http'; +import * as lockfile from 'lockfile'; +import * as mkdirp from 'mkdirp'; +import * as path from 'path'; + +export function getContent(url: string, cacheFile: string): Promise { + return getBinary(url, cacheFile).then(file => fs.readFileSync(file).toString()); +} + +/** + * Load the file from the url or local cache. + * + * @param url download url + * @param cacheFile local file name to read from/save to + */ +export function getBinary(url: string, cacheFile: string): Promise { + const localFolder = path.dirname(cacheFile); + if (fs.existsSync(cacheFile)) { + return Promise.resolve(cacheFile); + } + mkdirp.sync(localFolder); + const tempFile = `${cacheFile}-dload-${process.pid}`; + if (fs.existsSync(tempFile)) { + fs.unlinkSync(tempFile); + } + return new Promise((resolve, reject) => { + // select http or https module, depending on reqested url + const request = http.get(url, response => { + // handle http errors + if (!response.statusCode || response.statusCode < 200 || response.statusCode > 299) { + if (fs.existsSync(tempFile)) { + fs.unlinkSync(tempFile); + } + reject(new Error('Failed to load page, status code: ' + response.statusCode)); + } + const stream = fs.createWriteStream(tempFile); + response.on('data', chunk => stream.write(chunk)); + response.on('end', () => { + stream.end(); + }); + + // after .end() the stream will notify 'finish' + stream.on('finish', () => { + fs.renameSync(tempFile, cacheFile); + resolve(cacheFile); + }); + stream.on('error', err => reject(err)); + }); + // handle connection errors of the request + request.on('error', err => { + if (fs.existsSync(tempFile)) { + fs.unlinkSync(tempFile); + } + reject(`Error downloading ${url}: ${err}`); + }); + }); +} + +export interface Entry { + path: string; + data: Buffer; + type: string; +} + +export function unzip(archive: string, destination: string): Promise { + return new Promise((resolve, reject) => { + const lck = destination + '.lock'; + lockfile.lock(lck, err => { + if (err) { + reject(`Cannot create lock file ${lck}: ${err}`); + return; + } + + decompress(archive, destination) + .then((entries: Entry[]) => { + lockfile.unlockSync(lck); + resolve(entries); + }) + .catch((dErr: any) => { + lockfile.unlockSync(lck); + reject(`Error decompressing ${archive}: ${dErr}`); + }); + }); + }); +} diff --git a/datahub-web/@datahub/pdsc/src/index.ts b/datahub-web/@datahub/pdsc/src/index.ts new file mode 100644 index 0000000000000..981288a7de105 --- /dev/null +++ b/datahub-web/@datahub/pdsc/src/index.ts @@ -0,0 +1,143 @@ +// tslint:disable:no-console no-string-literal +import * as fs from 'fs'; +import * as minimist from 'minimist'; +import * as mkdirp from 'mkdirp'; +import * as path from 'path'; +import { format as pretty, Options as PrettyOptions } from 'prettier'; + +import { Config } from './config'; +import { DataModelsOptions, generateDataModels } from './pdsc/data-models-gen'; +import { generateTs, processIdlFolder } from './rest-spec/api-declaration-gen'; + +const CONFIG = 'restli-types-config.json'; + +export * from './ts-emitter'; + +/** + * Options to use when prettier-ing + */ +const PRETTY_OPTIONS: PrettyOptions = { + parser: 'typescript', + singleQuote: true +}; + +/** + * Generate the interface definitions (url name and structure). + * + * @param idlArchive filename + * @param config + */ +export async function generateIdl(idlArchive: string, config: Config) { + const restModels = await processIdlFolder(idlArchive, { + cacheFolder: config.cacheFolder + }); + + if (restModels.length === 0) { + throw new Error(`Did not generate any models from idl ${idlArchive}`); + } + + // Output the resources under the resources folder. + const resources = path.join(config.output, 'resources'); + mkdirp.sync(resources); + + restModels.forEach(rm => { + const filename = path.join(resources, `${rm.name}.ts`); + try { + const content = generateTs(rm, { + collectionType: config.collectionType, + ignoreNamespace: 'com.' + }); + const formatted = pretty(content, PRETTY_OPTIONS); + fs.writeFileSync(filename, formatted); + } catch (err) { + const augmented = `Error on ${filename}: ${err}`; + throw new Error(augmented); + } + }); +} + +export async function codegen( + idlArchive: string | undefined, + dataModel: string | undefined, + ignorePackage: string[], + addType: string | undefined +) { + const config = loadConfig(); + if (!dataModel) { + throw new Error(`Missing required cli argument data-model`); + } + + mkdirp.sync(config.output); + if (idlArchive && fs.existsSync(idlArchive)) { + try { + generateIdl(idlArchive, config); + } catch (err) { + throw new Error(`Error generating idl: ${err}`); + } + } + + const outputFile = path.join(config.output, 'index.d.ts'); + try { + if (fs.existsSync(outputFile)) { + fs.unlinkSync(outputFile); + } + const options: DataModelsOptions = { + addType, + ignorePackage, + outputFile + }; + await generateDataModels(dataModel, options); + const formatted = pretty(fs.readFileSync(outputFile).toString(), PRETTY_OPTIONS); + fs.writeFileSync(outputFile, formatted); + } catch (err) { + // Save the file for easier debugging + if (fs.existsSync(outputFile)) { + const errorFile = path.join(config.output, 'index.err.d.ts'); + fs.renameSync(outputFile, errorFile); + } + // Log the error here since the stack trace gets lost. + console.error('Error in generating and formatting data models', err); + + throw new Error(`Error generating data models in ${dataModel}: ${err}`); + } +} + +function loadConfig(): Config { + let config: Config; + if (fs.existsSync(CONFIG)) { + config = JSON.parse(fs.readFileSync(CONFIG).toString()); + // backwards compatibility with Sailfish where this library originated + if (!config.collectionType) { + config.collectionType = 'Sailfish.Restli.Collection'; + } + } else { + throw new Error(`Missing configuration file ${CONFIG}`); + } + return config; +} + +if (!module.parent) { + /** + * Main command line entry point. + * @param args + */ + async function main(args: string[]) { + const cli = minimist(process.argv.slice(2)); + + const idlArchive: string | undefined = cli['rest-spec']; + const dataModel: string | undefined = cli['data-model']; + const ignorePackageOpt: string | string[] | undefined = cli['ignore-package']; + const addType: string | undefined = cli['add-type']; + let ignorePackage: string[] = []; + if (ignorePackageOpt) { + ignorePackage = typeof ignorePackageOpt === 'string' ? [ignorePackageOpt] : ignorePackageOpt; + } + codegen(idlArchive, dataModel, ignorePackage, addType); + } + + main(process.argv) + .then(() => console.log('pi-restli-types completed successfully')) + .catch(err => { + console.error('pi-restli-types failed with:\n', err); + }); +} diff --git a/datahub-web/@datahub/pdsc/src/pdsc/data-models-gen.ts b/datahub-web/@datahub/pdsc/src/pdsc/data-models-gen.ts new file mode 100644 index 0000000000000..93dbc1a7553d6 --- /dev/null +++ b/datahub-web/@datahub/pdsc/src/pdsc/data-models-gen.ts @@ -0,0 +1,139 @@ +/** + * Generate the .d.ts file describing the API types from their PDSC. + */ +import * as fs from 'fs'; +import * as glob from 'glob'; +import * as json5 from 'json5'; +import * as path from 'path'; +import { buildIgnoreRegExp, packageToNamespace } from '../ts-emitter'; +import { generateTs, Schema, SchemaOptions } from './schema'; + +type Registry = Map; + +/** + * Check to see if the `data` array starts with all the elements in `prefix`. + * + * @param data + * @param prefix + */ +function startsWith(data: string[], prefix: string[]) { + if (data.length < prefix.length) { + return false; + } + for (let i = 0; i < prefix.length; i++) { + if (data[i] !== prefix[i]) { + return false; + } + } + return true; +} + +/** + * Write the registry in one file, opening and closing namespaces as needed. + * + * Example + * + * declare namespace Foo { + * namespace Common { + * export type A = string; + * } + * namespace Other { + * export interface Baz {}; + * } + * } + * + * declare namespace Voyager { + * namespace Feed { + * } + * } + */ +function serializeToFile(registry: Registry, outputFile: string, ignorePackages: RegExp[] | undefined): Promise<{}> { + return new Promise((resolve, reject) => { + const out = fs.createWriteStream(outputFile); + const paths: string[] = []; + out.on('finish', () => resolve()); + out.on('error', err => { + const message = `error writing ${outputFile}: ${err}`; + reject(message); + }); + + // Get a list of namespaces to group type definitions by. + const namespaces: string[] = Array.from(registry.keys()); + namespaces.sort(); + + // Process each namespace. + for (const current of namespaces) { + // Map from package to wanted namespaces list. + const wanted = packageToNamespace(current, ignorePackages); + + // first close unwanted namespace + while (paths.length > 0 && !startsWith(wanted, paths)) { + out.write('}\n'); + paths.pop(); + } + + // For top level namespaces we need to output a `declare`. + if (paths.length === 0) { + out.write('declare '); + } + + // Open desired namespaces. + while (paths.length < wanted.length) { + const component = wanted[paths.length]; + out.write(`namespace ${component} {\n`); + paths.push(component); + } + + // Output all the entries from the registry. + const entries = registry.get(current); + if (entries) { + entries.forEach(entry => { + out.write(entry); + }); + } + } + // close all remaining namespaces` + while (paths.length > 0 && paths.length) { + out.write('}\n'); + paths.pop(); + } + out.end(); + }); +} + +export interface DataModelsOptions { + outputFile: string; + ignorePackage?: string[]; + addType?: string; +} + +/** + * Generate the type information for the data models. + * + * @param inFolder folder containing pdsc files. + * @param config + */ +export async function generateDataModels(inFolder: string, options: DataModelsOptions) { + const registry: Map = new Map(); + const ignoreRegExp = buildIgnoreRegExp(options.ignorePackage); + const schemaOptions: SchemaOptions = { + addType: options.addType, + ignorePackages: ignoreRegExp + }; + for (const file of glob.sync('**/*.pdsc', { cwd: inFolder })) { + try { + const fullPath = path.join(inFolder, file); + const data = fs.readFileSync(fullPath).toString(); + const schema: Schema = json5.parse(data); + const generated = generateTs(schema, file, schemaOptions); + const documented = `// Generated from: ${file}\n\n${generated.value}`; + + const existing = registry.get(generated.namespace) || []; + existing.push(documented); + registry.set(generated.namespace, existing); + } catch (e) { + throw new Error(`Error processing '${file}': ${e}`); + } + } + return serializeToFile(registry, options.outputFile, ignoreRegExp); +} diff --git a/datahub-web/@datahub/pdsc/src/pdsc/field.ts b/datahub-web/@datahub/pdsc/src/pdsc/field.ts new file mode 100644 index 0000000000000..98a43dfa4712c --- /dev/null +++ b/datahub-web/@datahub/pdsc/src/pdsc/field.ts @@ -0,0 +1,29 @@ +export type SimpleField = 'boolean' | 'bytes' | 'double' | 'fixed' | 'float' | 'int' | 'long' | 'string'; + +/** + * Generate the typescript for the type, or undefined if not a simple type. + * + * @param type + */ +export function generate(type: SimpleField): string | undefined { + switch (type) { + case 'boolean': + return 'boolean'; + case 'bytes': + return 'number'; + case 'double': + return 'number'; + case 'float': + return 'number'; + case 'fixed': + return 'string'; + case 'int': + return 'number'; + case 'long': + return 'number'; + case 'string': + return 'string'; + default: + return; + } +} diff --git a/datahub-web/@datahub/pdsc/src/pdsc/schema.ts b/datahub-web/@datahub/pdsc/src/pdsc/schema.ts new file mode 100644 index 0000000000000..18f1bedb9d591 --- /dev/null +++ b/datahub-web/@datahub/pdsc/src/pdsc/schema.ts @@ -0,0 +1,242 @@ +import * as path from 'path'; + +import { packageToNamespace, typeToNamespace } from '../ts-emitter'; +import { generate, SimpleField } from './field'; + +export type FieldType = SimpleField | string | string[] | Schema; + +/** + * A PDSC type can be complex or primitive. This discriminator picks between + * the two. + * + * @param type + */ +function isComplexType(type: FieldType): type is Schema { + return typeof type === 'object' && !!(type as Schema).type; +} + +export interface Field { + name: string; + type: FieldType; + doc?: string; + optional?: boolean; + default?: any; + derived: boolean; +} + +export interface PdscArray { + type: 'array'; + name?: string; + namespace?: string; + doc?: string; + items: FieldType; +} + +export interface PdscEnum { + type: 'enum'; + name?: string; + namespace?: string; + doc?: string; + symbols: string[]; +} + +export interface PdscFixed { + type: 'fixed'; + name?: string; + namespace?: string; + doc?: string; + size: number; +} + +export interface PdscMap { + type: 'map'; + name?: string; + namespace?: string; + doc?: string; + values: FieldType; +} + +export interface PdscRecord { + type: 'record'; + name?: string; + namespace?: string; + doc?: string; + fields: Field[]; + include: string[]; +} + +export interface PdscTyperef { + type: 'typeref'; + name?: string; + namespace?: string; + doc?: string; + ref: FieldType; +} + +export interface PdscSubrecord { + alias?: string; + ref: FieldType; +} + +export interface PdscUnion { + type: string[]; + name?: string; + namespace?: string; + doc?: string; +} + +export type Schema = PdscArray | PdscEnum | PdscFixed | PdscMap | PdscRecord | PdscTyperef | PdscUnion; + +/** + * A generated typescript class. + */ +export class Generated { + constructor(public name: string, public namespace: string, public value: string) {} +} + +/** + * Generate typescripts for the fields of a PDSC record. + * + * @param fields + * @param options + */ +function generateRecordFields(fields: Field[], options: SchemaOptions): string { + const body = fields.map(f => { + const name = `${f.name}${f.optional ? '?' : ''}`; + return `${name}: ${generateSchema(f.type, options)};`; + }); + // Add the optional field type, if there are already fields. + if (options.addType && fields.length) { + body.push(`${options.addType}?: string`); + } + return `{\n ${body.join('\n ')}\n}`; +} + +/** + * Generate the typescript representation for the given type.GG + * + * @param type + */ +function generateSchema(type: FieldType, options: SchemaOptions): string { + const generator = (t: FieldType) => generateSchema(t, options); + if (Array.isArray(type)) { + if (type.length === 0) { + return 'never'; + } + return type.map(generator).join('\n | '); + } + if (isComplexType(type)) { + const subType = type.type; + switch (subType) { + case 'array': { + const items = (type as PdscArray).items; + const translated = generator(items); + if (typeof items === 'string') { + return `${translated}[]`; + } else { + return `Array<${translated}>`; + } + } + case 'enum': { + let values = (type as PdscEnum).symbols; + if (!values || !values.length) { + values = ['NONE']; + } + return values.map(a => `'${a}'`).join('\n | '); + } + case 'map': { + const values = (type as PdscMap).values; + const translated = generator(values); + return `{[id: string]: ${translated}}`; + } + case 'record': { + const fields = (type as PdscRecord).fields; + + return `${generateRecordFields(fields, options)}`; + } + case 'typeref': { + return generator((type as PdscTyperef).ref); + } + default: { + if (isComplexType(subType)) { + return generator(subType); + } + if (typeof subType === 'string') { + const simple = generate(subType as SimpleField); + if (simple) { + return simple; + } + + // we have a package name + const fieldName = (type as PdscSubrecord).alias || `'${subType}'`; + const value = typeToNamespace(subType, options.ignorePackages); + return `{ ${fieldName}: ${value} }`; + } + } + } + } + if (typeof type === 'string') { + const simple = generate(type as SimpleField); + if (simple) { + return simple; + } + // we have a package name + return typeToNamespace(type, options.ignorePackages); + } + throw new Error(`Cannot translate ${type}`); +} + +/** + * Generate a (namespaced ?) list of interfaces to extend, based on the include field of a PDSC record. + * + * @param includes + * @param options + */ +function generateIncludeNames(includes: string[], options: SchemaOptions): string { + if (!includes) { + return ''; + } + + return includes + .map(a => + packageToNamespace(a, options.ignorePackages) + .filter(s => s) // swallow empty strings + .join('.') + ) + .join(', '); +} + +export interface SchemaOptions { + addType: string | undefined; + ignorePackages: RegExp[] | undefined; +} + +/** + * Generate the typescript representation of a top level schema. + * + * @param schema top level schema + * @param file file path for the current schema, must start at the package, for example "com/linkedin/.." + */ +export function generateTs(schema: Schema, file: string | undefined, options: SchemaOptions): Generated { + const name = schema.name || (file && path.basename(file, '.pdsc')); + if (!name) { + throw new Error(`Missing name in ${schema}, file ${file}`); + } + const namespace = schema.namespace || (file && path.dirname(file).replace(/\//g, '.')); + if (!namespace) { + throw new Error(`Missing namespace in ${schema}, file ${file}`); + } + + // if there are includes on this PdscRecord, generate a list of include names .. otherwise nothing. + const extensions = + (schema.type === 'record' && + (schema as PdscRecord).include && + `extends ${generateIncludeNames((schema as PdscRecord).include, options)} `) || + ``; + + const value = + schema.type === 'record' + ? `export interface ${name} ${extensions}${generateRecordFields((schema as PdscRecord).fields, options)}\n` + : `export type ${name} = ${generateSchema(schema, options)};\n`; + return new Generated(name, namespace, value); +} diff --git a/datahub-web/@datahub/pdsc/src/rest-spec/api-declaration-gen.ts b/datahub-web/@datahub/pdsc/src/rest-spec/api-declaration-gen.ts new file mode 100644 index 0000000000000..402149ac7a08e --- /dev/null +++ b/datahub-web/@datahub/pdsc/src/rest-spec/api-declaration-gen.ts @@ -0,0 +1,96 @@ +import * as fs from 'fs'; +import * as glob from 'glob'; +import * as json5 from 'json5'; +import * as mkdirp from 'mkdirp'; +import * as path from 'path'; + +import { getBinary, getContent, unzip } from '../download-cache'; +import * as ts from '../ts-emitter'; +import { RestSpec } from './rest-spec'; + +const CACHE_BUCKET = 'pi-restli-types'; +export interface Options { + resourceFilter?: string[]; + cacheFolder: string; +} + +/** + * Load the rest spec content from the file. + * + * @param fullPath + */ +export function loadRestSpec(fullPath: string): RestSpec { + const data = fs.readFileSync(fullPath).toString(); + const restSpec: RestSpec = json5.parse(data); + return restSpec; +} + +/** + * Process a local idl file. + * + * @param file zip/jar file containing restspec.json files. + * @param options + */ +export function processIdlFolder(inFolder: string, options: Options): RestSpec[] { + const out: RestSpec[] = []; + for (const file of glob.sync('**/*.restspec.json', { cwd: inFolder })) { + try { + const fullPath = path.join(inFolder, file); + out.push(loadRestSpec(fullPath)); + } catch (err) { + throw new Error(`Error parsing ${file}: ${err}`); + } + } + return out; +} + +export function generateTs(restSpec: RestSpec, options: { ignoreNamespace: string; collectionType: string }): string { + const parts: string[] = []; + + parts.push(ts.formatDocs(restSpec.doc)); + + if (restSpec.schema) { + const entityType = restSpec.schema.startsWith(options.ignoreNamespace) + ? restSpec.schema.substr(options.ignoreNamespace.length) + : restSpec.schema; + const capitalized = entityType + .split('.') + .map(ts.capitalize) + .join('.'); + parts.push(`\nexport type Entity = ${capitalized};`); + parts.push(`export type Result = ${options.collectionType};`); + } + + parts.push(`\nexport const resourceUrl = '${ts.makeRelative(restSpec.path)}';`); + + if (restSpec.collection) { + if (restSpec.collection.finders && restSpec.collection.finders.length > 0) { + parts.push(`\nexport const Finder = {`); + restSpec.collection.finders.forEach(finder => { + parts.push(''); + if (finder.doc) { + parts.push(ts.formatDocs(finder.doc, ' ')); + } + + parts.push(` ${finder.name}: {`); + parts.push(` name: '${finder.name}',`); + if (finder.parameters) { + parts.push(` parameters: [`); + finder.parameters.forEach(p => { + parts.push(' {'); + if (p.doc) { + parts.push(` doc: ${ts.stringConstant(p.doc)},`); + } + parts.push(` name: '${p.name}',`); + parts.push(` type: '${p.type}',`); + parts.push(' },'); + }); + parts.push(' ],'); + } + parts.push(' },'); + }); + parts.push('};'); + } + } + return parts.join('\n') + '\n'; +} diff --git a/datahub-web/@datahub/pdsc/src/rest-spec/rest-spec.ts b/datahub-web/@datahub/pdsc/src/rest-spec/rest-spec.ts new file mode 100644 index 0000000000000..243d2c3646b55 --- /dev/null +++ b/datahub-web/@datahub/pdsc/src/rest-spec/rest-spec.ts @@ -0,0 +1,30 @@ +// tslint:disable:max-classes-per-file + +export class Finder { + name: string; + doc: string; + parameters: Array<{ + name: string; + type: string; + doc: string; + }>; +} + +/** + * Define the format of the rest-spec.json files. + * + * This is an incomplete definition, just the bits that we need to translate + * for now. + */ +export interface RestSpec { + name: string; + path: string; + namespace: string; + schema: string; + doc: string; + collection: { + identifier: string; + type: string; + finders: Finder[]; + }; +} diff --git a/datahub-web/@datahub/pdsc/src/ts-emitter.ts b/datahub-web/@datahub/pdsc/src/ts-emitter.ts new file mode 100644 index 0000000000000..19d3dbd15355a --- /dev/null +++ b/datahub-web/@datahub/pdsc/src/ts-emitter.ts @@ -0,0 +1,109 @@ +/** + * Format the value as a string constant. + * + * @param value to format + */ +export function stringConstant(value: string): string { + return "'" + value.replace(/\n/g, ' ').replace(/\'/g, "\\'") + "'"; +} + +/** + * Format the lines in the string as single line comments (//). + * + * @param docs string to format + * @param prefix optional prefix for each line + */ +export function formatDocs(docs: string, prefix?: string): string { + const start = prefix ? prefix + '//' : '//'; + return docs + .split('\n') + .map(line => start + (line === '' || line.startsWith(' ') ? line : ' ' + line)) + .join('\n'); +} + +/** + * Capitalize the first letter of the word. + * + * @param word + */ +export function capitalize(word: string): string { + if (!word || word.length === 0) { + return word; + } + return word[0].toUpperCase() + word.substr(1); +} + +/* + * Make the url relative. this is needed to add the baseUrl at consumption. + * + * @param url + */ +export function makeRelative(url: string): string { + if (!url || url.length === 0) { + return url; + } + if (url.startsWith('/')) { + return url.substr(1); + } + return url; +} + +/** + * Build a regex to remove the ignored package from start of string. + */ +export function buildIgnoreRegExp(ignorePackages: string[] | undefined): RegExp[] | undefined { + return ignorePackages ? ignorePackages.map(a => new RegExp('^' + a)) : undefined; +} + +/** + * Clean the (fully qualified) type/namespace by removing any ignored packages from the start. + * + * @param _type + * @param ignorePackages + */ +function cleanType(_type: string, ignorePackages: RegExp[] | undefined): string { + // Eliminate any ignored package. + let clean = _type; + for (const re of ignorePackages || []) { + clean = clean.replace(re, ''); + } + return clean; +} + +/** + * Build the Typescript namespace from the java package name. + * + * @param java + * @param ignorePackage optional regular expression to remove ignored package. + */ +export function packageToNamespace(_package: string, ignorePackages: RegExp[] | undefined): string[] { + // Build a regex to remove the ignored package from start of string. + const cleanNamespace = cleanType(_package, ignorePackages); + const parts = cleanNamespace.split('.'); + const capitalized = parts.map(capitalize); + return capitalized; +} + +/** + * Build the typescript fully qualified type for the full java type. + * + * @param _type package.class + * @param ignorePackage regexp to use for eliminating ignored packages. + */ +export function typeToNamespace(_type: string, ignorePackages: RegExp[] | undefined): string { + // Translate all Urn types to string. + if (_type.endsWith('Urn')) { + return 'string'; + } + + // Eliminate any ignored package. + const clean = cleanType(_type, ignorePackages); + + const parts = clean.split('.'); + const last = parts.pop(); + const capitalized = parts.map(capitalize); + if (last) { + capitalized.push(last); + } + return capitalized.join('.'); +} diff --git a/datahub-web/@datahub/pdsc/test/fixtures/rest-spec/api-rest-model-0.1.21/com.linkedin.sailfish.feed.sailfishFeedUpdates.restspec.json b/datahub-web/@datahub/pdsc/test/fixtures/rest-spec/api-rest-model-0.1.21/com.linkedin.sailfish.feed.sailfishFeedUpdates.restspec.json new file mode 100644 index 0000000000000..6001f5ec7fbff --- /dev/null +++ b/datahub-web/@datahub/pdsc/test/fixtures/rest-spec/api-rest-model-0.1.21/com.linkedin.sailfish.feed.sailfishFeedUpdates.restspec.json @@ -0,0 +1,29 @@ +{ + "name" : "sailfishFeedUpdates", + "namespace" : "com.linkedin.sailfish.feed", + "path" : "/sailfishFeedUpdates", + "schema" : "com.linkedin.feed.AggregatedFeedItem", + "doc" : "generated from: com.linkedin.sailfish.feed.resources.FeedUpdatesResource", + "collection" : { + "identifier" : { + "name" : "updateUrn", + "type" : "com.linkedin.common.Urn" + }, + "supports" : [ ], + "finders" : [ { + "name" : "feed", + "parameters" : [ { + "name" : "paginationToken", + "type" : "string", + "optional" : true + } ], + "metadata" : { + "type" : "com.linkedin.voyager.feed.Metadata" + }, + "pagingSupported" : true + } ], + "entity" : { + "path" : "/sailfishFeedUpdates/{updateUrn}" + } + } +} \ No newline at end of file diff --git a/datahub-web/@datahub/pdsc/test/fixtures/rest-spec/api-rest-model-0.1.21/expected.ts.txt b/datahub-web/@datahub/pdsc/test/fixtures/rest-spec/api-rest-model-0.1.21/expected.ts.txt new file mode 100644 index 0000000000000..6d063bc2547a9 --- /dev/null +++ b/datahub-web/@datahub/pdsc/test/fixtures/rest-spec/api-rest-model-0.1.21/expected.ts.txt @@ -0,0 +1,19 @@ +// generated from: com.linkedin.sailfish.feed.resources.FeedUpdatesResource + +export type Entity = Linkedin.Feed.AggregatedFeedItem; +export type Result = Custom.CollectionResult; + +export const resourceUrl = 'sailfishFeedUpdates'; + +export const Finder = { + + feed: { + name: 'feed', + parameters: [ + { + name: 'paginationToken', + type: 'string', + }, + ], + }, +}; diff --git a/datahub-web/@datahub/pdsc/test/tsconfig.json b/datahub-web/@datahub/pdsc/test/tsconfig.json new file mode 100644 index 0000000000000..271fbee8cb9d8 --- /dev/null +++ b/datahub-web/@datahub/pdsc/test/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "removeComments": true, + "outDir": "dist", + "types": [ + "chai", + "mocha" + ] + }, + "include": [ + "**/*.spec.ts" + ] +} \ No newline at end of file diff --git a/datahub-web/@datahub/pdsc/test/unit/pdsc/schema.spec.ts b/datahub-web/@datahub/pdsc/test/unit/pdsc/schema.spec.ts new file mode 100644 index 0000000000000..268df784d32c2 --- /dev/null +++ b/datahub-web/@datahub/pdsc/test/unit/pdsc/schema.spec.ts @@ -0,0 +1,255 @@ +// tslint:disable:object-literal-sort-keys object-literal-key-quotes +import chai = require('chai'); + +import * as pdsc from '../../../src/pdsc/schema'; + +const assert = chai.assert; + +describe('pdsc', () => { + const options: pdsc.SchemaOptions = { + addType: undefined, + ignorePackages: undefined + }; + + it('generates enum', () => { + const raw = { + type: 'enum', + name: 'NonMemberPermissions', + namespace: 'com.linkedin.restli.examples.groups.api', + symbols: ['NONE', 'READ_ONLY'] + }; + const expected = `export type NonMemberPermissions = 'NONE'\n | 'READ_ONLY';\n`; + const generated = pdsc.generateTs(raw as any, undefined, options); + assert.equal(expected, generated.value); + }); + + it('generates typeref', () => { + const raw = `{ + "type" : "typeref", + "name" : "GroupMembershipQueryParamArrayRef", + "namespace" : "com.linkedin.restli.examples.groups.api", + "ref" : { "type" : "array", "items" : "GroupMembershipQueryParam" } + }`; + const expected = 'export type GroupMembershipQueryParamArrayRef = GroupMembershipQueryParam[];\n'; + const generated = pdsc.generateTs(JSON.parse(raw) as any, undefined, options); + assert.equal(expected, generated.value); + }); + + it('generates union typeref', () => { + const raw = ` + { + "type" : "typeref", + "name" : "NotificationRecipient", + "namespace" : "com.linkedin.dataConstructChangeManagement", + "doc" : "A recipients of a change management notification", + "ref" : [ { + "alias" : "groupUrn", + "type" : "com.linkedin.common.CorpGroupUrn" + }, { + "alias" : "userUrn", + "type" : "com.linkedin.common.CorpuserUrn" + } ] + }`; + const expected = 'export type NotificationRecipient = { groupUrn: string }\n | { userUrn: string };\n'; + const generated = pdsc.generateTs(JSON.parse(raw) as any, undefined, options); + assert.equal(expected, generated.value); + }); + + it('generates union typeref without alias', () => { + const raw = ` + { + "type" : "typeref", + "name" : "NotificationRecipient", + "namespace" : "com.linkedin.dataConstructChangeManagement", + "doc" : "A recipients of a change management notification", + "ref" : [ { + "type" : "com.linkedin.common.CorpGroupUrn" + }, { + "type" : "com.linkedin.common.CorpuserUrn" + } ] + }`; + const expected = + "export type NotificationRecipient = { 'com.linkedin.common.CorpGroupUrn': string }\n | { 'com.linkedin.common.CorpuserUrn': string };\n"; + const generated = pdsc.generateTs(JSON.parse(raw) as any, undefined, options); + assert.equal(expected, generated.value); + }); + + it('generates empty typeref', () => { + const raw = ` + { + "type": "typeref", + "name": "TransformationFunction", + "namespace": "com.linkedin.proml.mlFeatureAnchor", + "doc": "Represents the tranformation logic to produce feature value from the source of FeatureAnchor.\\nTODO(PROML-6165): Fill in concrete types after Frame v2 scope is finalized.", + "ref": [] + }`; + const expected = 'export type TransformationFunction = never;\n'; + const generated = pdsc.generateTs(JSON.parse(raw) as any, undefined, options); + assert.equal(expected, generated.value); + }); + + it('generates record', () => { + const raw = `{ + "type": "record", + "name": "Fortune", + "namespace": "org.restli.example.fortune", + "doc": "Generate a fortune cookie", + "fields": [ + { + "name": "fortune", + "type": "string", + "doc": "The Fortune cookie string" + }, + { + "name": "funny_level", + "type": "double", + "optional":true, + "doc": "The level of funniness" + }, + { + "name": "style", + "type": "CookieStyle" + }, + { + "name": "facets", + "type": { "type": "map", "values": "string" } + }, + { + "name": "action", + "type": [ + "dismiss", + "accept" + ] + } + ] + }`; + // tslint:disable:max-line-length + const expected = + 'export interface Fortune {\n fortune: string;\n funny_level?: number;\n style: CookieStyle;\n facets: {[id: string]: string};\n action: dismiss\n | accept;\n}\n'; + const generated = pdsc.generateTs(JSON.parse(raw) as any, undefined, options); + assert.equal(expected, generated.value); + assert.equal('org.restli.example.fortune', generated.namespace); + assert.equal('Fortune', generated.name); + }); + + it('generates fixed', () => { + const raw = `{ + "type": "fixed", + "name": "MD5", + "namespace": "com.linkedin.common", + "doc": "128 bit MD5 digest", + "size" : 16 + }`; + + const expected = 'export type MD5 = string;\n'; + const generated = pdsc.generateTs(JSON.parse(raw) as any, undefined, options); + assert.equal(expected, generated.value); + assert.equal('MD5', generated.name); + assert.equal('com.linkedin.common', generated.namespace); + }); + + it('generates boolean', () => { + const raw = `{ + "type": "boolean", + "name": "Awesome", + "namespace": "com.linkedin.common" + }`; + + const expected = 'export type Awesome = boolean;\n'; + const generated = pdsc.generateTs(JSON.parse(raw) as any, undefined, options); + assert.equal(expected, generated.value); + }); + + it('generates array of array', () => { + const raw = `{ + "name" : "stringArrayArray", + "type" : { "type" : "array", "items" : { "type" : "array", "items" : "string" } }, + "namespace" : "org.test" + }`; + const expected = 'export type stringArrayArray = Array;\n'; + const generated = pdsc.generateTs(JSON.parse(raw) as any, undefined, options); + assert.equal(expected, generated.value); + }); + + it('generates flattened', () => { + const raw = `{ + "doc" : "Map of attachment.", + "type" : "map", + "values" : "Attachment" + }`; + const expected = 'export type Bar = {[id: string]: Attachment};\n'; + const generated = pdsc.generateTs(JSON.parse(raw) as any, 'org/foo/Bar', options); + assert.equal(expected, generated.value); + assert.equal('org.foo', generated.namespace); + assert.equal('Bar', generated.name); + }); + it('handles empty record', () => { + const raw = `{ + "type": "record", + "name": "ErrorResponse", + "namespace": "com.linkedin.restli.common", + "doc": "A generic ErrorResponse", + "fields": [ + { + "name": "errorDetails", + "type": + { + "type": "record", + "name": "ErrorDetails", + "fields": [] + }, + "optional": true + } + ] + }`; + const expected = 'export interface ErrorResponse {\n errorDetails?: {\n \n};\n}\n'; + const generated = pdsc.generateTs(JSON.parse(raw) as any, 'org/foo/Bar', options); + assert.equal(expected, generated.value); + }); + + it('generates map', () => { + const raw = `{ + "type": "record", + "name": "FacetedFeedMetadata", + "namespace": "com.linkedin.feed", + "doc": "Metadata accompanying a feed service response, including pagination token.", + "fields": [ + { + "name": "facets", + "doc": "Facet counts keyed by FPR id (first level key) and facet name (second level).", + "type": { + "type": "map", + "values": { + "type": "map", + "values": "int" + } + } + } + ] + }`; + // tslint:disable:max-line-length + const expected = 'export interface FacetedFeedMetadata {\n facets: {[id: string]: {[id: string]: number}};\n}\n'; + const generated = pdsc.generateTs(JSON.parse(raw) as any, undefined, options); + assert.equal(expected, generated.value); + }); + + it('uses includes as interface extensions', () => { + const raw = `{ + "type": "record", + "name": "BaseRecord", + "namespace": "com.linkedin.feed", + "doc": "Metadata accompanying a feed service response, including pagination token.", + "include" : [ "com.linkedin.common.Mixin" ], + "fields": [ + ] + }`; + // tslint:disable:max-line-length + const expected = 'export interface BaseRecord extends Linkedin.Common.Mixin {\n \n}\n'; + const restrictiveOptions: pdsc.SchemaOptions = { + addType: undefined, + ignorePackages: [/com/] + }; + const generated = pdsc.generateTs(JSON.parse(raw) as any, undefined, restrictiveOptions); + assert.equal(expected, generated.value); + }); +}); diff --git a/datahub-web/@datahub/pdsc/test/unit/rest-spec/api-declaration-gen.spec.ts b/datahub-web/@datahub/pdsc/test/unit/rest-spec/api-declaration-gen.spec.ts new file mode 100644 index 0000000000000..0cc2c5f210b7d --- /dev/null +++ b/datahub-web/@datahub/pdsc/test/unit/rest-spec/api-declaration-gen.spec.ts @@ -0,0 +1,23 @@ +import chai = require('chai'); +import * as findRoot from 'find-root'; +import * as fs from 'fs'; +import * as path from 'path'; +import { generateTs, loadRestSpec } from '../../../src/rest-spec/api-declaration-gen'; + +const assert = chai.assert; + +const fixtures = path.join(findRoot(), 'test/fixtures/rest-spec/api-rest-model-0.1.21'); + +describe('generateTs', () => { + it('parses', () => { + const project = findRoot(); + const fixture = path.join(fixtures, 'com.linkedin.sailfish.feed.sailfishFeedUpdates.restspec.json'); + const expected = fs.readFileSync(path.join(fixtures, 'expected.ts.txt')).toString(); + const restSpec = loadRestSpec(fixture); + const ts = generateTs(restSpec, { + ignoreNamespace: 'com.', + collectionType: 'Custom.CollectionResult' + }); + assert.equal(expected, ts); + }); +}); diff --git a/datahub-web/@datahub/pdsc/test/unit/ts-emitter.spec.ts b/datahub-web/@datahub/pdsc/test/unit/ts-emitter.spec.ts new file mode 100644 index 0000000000000..208a4eaf530a3 --- /dev/null +++ b/datahub-web/@datahub/pdsc/test/unit/ts-emitter.spec.ts @@ -0,0 +1,80 @@ +import chai = require('chai'); +import { + buildIgnoreRegExp, + formatDocs, + makeRelative, + packageToNamespace, + stringConstant, + typeToNamespace +} from '../../src/ts-emitter'; + +const assert = chai.assert; + +describe('formatDocs', () => { + it('adds // to simple string', () => { + const doc = formatDocs('abc'); + assert.equal(doc, '// abc'); + }); + + it('adds // per line', () => { + const doc = formatDocs('abc\n'); + assert.equal(doc, '// abc\n//'); + }); + + it('does not duplicate space', () => { + const doc = formatDocs(' abc'); + assert.equal(doc, '// abc'); + }); + + it('uses prefix', () => { + const doc = formatDocs(' abc', ' '); + assert.equal(doc, ' // abc'); + }); +}); + +describe('stringConstant', () => { + it('simple string', () => { + const s = stringConstant('abc'); + assert.equal("'abc'", s); + }); + + it('quotes single quote', () => { + const s = stringConstant("a'bc"); + assert.equal("'a\\'bc'", s); + }); + + it('squashes new lines', () => { + const s = stringConstant('a\nbc'); + assert.equal("'a bc'", s); + }); +}); + +describe('makeRelative`', () => { + it('removes / in first position', () => { + const s = makeRelative('/abc'); + assert.equal('abc', s); + }); + + it('passes through relative', () => { + const s = makeRelative('ab/c'); + assert.equal('ab/c', s); + }); +}); + +describe('packageToNamespace', () => { + it('capitalizes packages', () => { + const ns = packageToNamespace('com.linkedin.one', buildIgnoreRegExp(['com.'])); + assert.equal('Linkedin.One', ns.join('.')); + }); + it('capitalizes packages without ignore', () => { + const ns = packageToNamespace('com.linkedin.one', undefined); + assert.equal('Com.Linkedin.One', ns.join('.')); + }); +}); + +describe('typeToNamespace', () => { + it('capitalizes the packages for the type', () => { + const ns = typeToNamespace('com.linkedin.one', buildIgnoreRegExp(['com.'])); + assert.equal('Linkedin.one', ns); + }); +}); diff --git a/datahub-web/@datahub/pdsc/tsconfig.json b/datahub-web/@datahub/pdsc/tsconfig.json new file mode 100644 index 0000000000000..30e3a3c29f15e --- /dev/null +++ b/datahub-web/@datahub/pdsc/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "es6", + "types": [ + "node" + ], + "module": "commonjs", + "moduleResolution": "node", + "noImplicitAny": true, + "removeComments": true, + "preserveConstEnums": true, + "sourceMap": true, + "strictNullChecks": true, + "outDir": "dist", + "declaration": true, + "lib": [ + "es2015" + ] + }, + "include": [ + "local-types/**/*d.ts", + "src/**/*.ts" + ] +} \ No newline at end of file diff --git a/datahub-web/@datahub/entity-header/.editorconfig b/datahub-web/@datahub/search/.editorconfig similarity index 100% rename from datahub-web/@datahub/entity-header/.editorconfig rename to datahub-web/@datahub/search/.editorconfig diff --git a/datahub-web/@datahub/entity-header/.ember-cli b/datahub-web/@datahub/search/.ember-cli similarity index 100% rename from datahub-web/@datahub/entity-header/.ember-cli rename to datahub-web/@datahub/search/.ember-cli diff --git a/datahub-web/@datahub/search/.gitignore b/datahub-web/@datahub/search/.gitignore new file mode 100644 index 0000000000000..c40a1b2aba3ef --- /dev/null +++ b/datahub-web/@datahub/search/.gitignore @@ -0,0 +1,25 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist/ +/tmp/ + +# dependencies +/bower_components/ +/node_modules/ + +# misc +/.env* +/.pnp* +/.sass-cache +/connect.lock +/coverage/ +/libpeerconnection.log +/npm-debug.log* +/testem.log +/yarn-error.log + +# ember-try +/.node_modules.ember-try/ +/bower.json.ember-try +/package.json.ember-try diff --git a/datahub-web/@datahub/search/.npmignore b/datahub-web/@datahub/search/.npmignore new file mode 100644 index 0000000000000..bd09adff92e08 --- /dev/null +++ b/datahub-web/@datahub/search/.npmignore @@ -0,0 +1,32 @@ +# compiled output +/dist/ +/tmp/ + +# dependencies +/bower_components/ + +# misc +/.bowerrc +/.editorconfig +/.ember-cli +/.env* +/.eslintignore +/.eslintrc.js +/.git/ +/.gitignore +/.template-lintrc.js +/.travis.yml +/.watchmanconfig +/bower.json +/config/ember-try.js +/CONTRIBUTING.md +/ember-cli-build.js +/testem.js +/tests/ +/yarn.lock +.gitkeep + +# ember-try +/.node_modules.ember-try/ +/bower.json.ember-try +/package.json.ember-try diff --git a/datahub-web/@datahub/search/.travis.yml b/datahub-web/@datahub/search/.travis.yml new file mode 100644 index 0000000000000..d10bed4d288bc --- /dev/null +++ b/datahub-web/@datahub/search/.travis.yml @@ -0,0 +1,67 @@ +--- +language: node_js +node_js: + # we recommend testing addons with the same minimum supported node version as Ember CLI + # so that your addon works for all apps + - '10' + +sudo: false +dist: trusty + +addons: + chrome: stable + +cache: + yarn: true + +env: + global: + # See https://git.io/vdao3 for details. + - JOBS=1 + +branches: + only: + - master + # npm version tags + - /^v\d+\.\d+\.\d+/ + +jobs: + fail_fast: true + allow_failures: + - env: EMBER_TRY_SCENARIO=ember-canary + + include: + # runs linting and tests with current locked deps + + - stage: 'Tests' + name: 'Tests' + install: + - yarn install --non-interactive + script: + - yarn lint:hbs + - yarn lint:js + - yarn test + + - name: 'Floating Dependencies' + script: + - yarn test + + # we recommend new addons test the current and previous LTS + # as well as latest stable release (bonus points to beta/canary) + - stage: 'Additional Tests' + env: EMBER_TRY_SCENARIO=ember-lts-2.18 + - env: EMBER_TRY_SCENARIO=ember-lts-3.4 + - env: EMBER_TRY_SCENARIO=ember-release + - env: EMBER_TRY_SCENARIO=ember-beta + - env: EMBER_TRY_SCENARIO=ember-canary + - env: EMBER_TRY_SCENARIO=ember-default-with-jquery + +before_install: + - curl -o- -L https://yarnpkg.com/install.sh | bash + - export PATH=$HOME/.yarn/bin:$PATH + +install: + - yarn install --no-lockfile --non-interactive + +script: + - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO diff --git a/datahub-web/@datahub/entity-header/.watchmanconfig b/datahub-web/@datahub/search/.watchmanconfig similarity index 100% rename from datahub-web/@datahub/entity-header/.watchmanconfig rename to datahub-web/@datahub/search/.watchmanconfig diff --git a/datahub-web/@datahub/search/LICENSE.md b/datahub-web/@datahub/search/LICENSE.md new file mode 100644 index 0000000000000..0d02ed0266734 --- /dev/null +++ b/datahub-web/@datahub/search/LICENSE.md @@ -0,0 +1,13 @@ +Copyright (c) 2020 LinkedIn + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/datahub-web/@datahub/search/README.md b/datahub-web/@datahub/search/README.md new file mode 100644 index 0000000000000..7d24e219b041e --- /dev/null +++ b/datahub-web/@datahub/search/README.md @@ -0,0 +1,4 @@ +Search Addon for DataHub +============================================================================== + +This addon contains all the components and code related to search. This addon is not meant to be shared with other projects and should only be used in DataHub project. diff --git a/datahub-web/@datahub/entity-deprecation/vendor/.gitkeep b/datahub-web/@datahub/search/addon/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-deprecation/vendor/.gitkeep rename to datahub-web/@datahub/search/addon/.gitkeep diff --git a/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/date.ts b/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/date.ts new file mode 100644 index 0000000000000..5de944cb9bad9 --- /dev/null +++ b/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/date.ts @@ -0,0 +1,36 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/custom-search-result-property-component/date'; +import { computed } from '@ember/object'; +import { layout, tagName } from '@ember-decorators/component'; +import { ICustomSearchResultPropertyComponentDate } from '@datahub/data-models/types/search/custom-search-result-property-component/date'; + +/** + * Component to render field as formatted dates. + */ +@tagName('') +@layout(template) +export default class CustomSearchResultPropertyComponentDate extends Component { + /** + * number value of the date + */ + value?: number; + + /** + * options passed from search should specify format + */ + options?: ICustomSearchResultPropertyComponentDate['options']; + + /** + * Sometimes BE returns time in seconds instead of MS. + * this will transform the date to something moment will accept + */ + @computed('value') + get fixedValue(): number | undefined { + const { options, value } = this; + if (options && typeof value !== 'undefined' && options.inSeconds) { + return value * 1000; + } + return value; + } +} diff --git a/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/icon.ts b/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/icon.ts new file mode 100644 index 0000000000000..95e5addec0c9b --- /dev/null +++ b/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/icon.ts @@ -0,0 +1,28 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/custom-search-result-property-component/icon'; +import { layout, tagName } from '@ember-decorators/component'; +import { DataModelEntity } from '@datahub/data-models/constants/entity'; +import { ICustomSearchResultPropertyComponentIcon } from '@datahub/data-models/types/search/custom-search-result-property-component/icon'; + +/** + * Component to render field as icons. Normally used in the header of a search result + */ +@tagName('') +@layout(template) +export default class CustomSearchResultPropertyComponentSearchIcon extends Component { + /** + * The entity that we want to get the property from + */ + entity?: DataModelEntity; + + /** + * should it show the icon or not + */ + value?: boolean; + + /** + * Options for this component + */ + options?: ICustomSearchResultPropertyComponentIcon['options']; +} diff --git a/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/link.ts b/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/link.ts new file mode 100644 index 0000000000000..85e8d3736a69f --- /dev/null +++ b/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/link.ts @@ -0,0 +1,23 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/custom-search-result-property-component/link'; +import { DataModelEntity } from '@datahub/data-models/constants/entity'; +import { layout, tagName } from '@ember-decorators/component'; +import { ICustomSearchResultPropertyComponentLink } from '@datahub/data-models/types/search/custom-search-result-property-component/link'; + +/** + * Component to render external links + */ +@tagName('') +@layout(template) +export default class CustomSearchResultPropertyComponentSearchLink extends Component { + /** + * The entity that we want to get the property from + */ + entity?: DataModelEntity; + + /** + * Options for this component + */ + options?: ICustomSearchResultPropertyComponentLink['options']; +} diff --git a/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/tag.ts b/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/tag.ts new file mode 100644 index 0000000000000..2967595737e5b --- /dev/null +++ b/datahub-web/@datahub/search/addon/components/custom-search-result-property-component/tag.ts @@ -0,0 +1,41 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/custom-search-result-property-component/tag'; +import { layout, tagName } from '@ember-decorators/component'; +import { ICustomSearchResultPropertyComponentTag } from '@datahub/data-models/types/search/custom-search-result-property-component/tag'; + +/** + * This is a wrapper for nacho-pill that accepts options + */ +@layout(template) +@tagName('') +export default class CustomSearchResultPropertyComponentSearchTag extends Component { + baseClass = 'entity-pill'; + + /** + * value can have the string which to show or a boolean to say whether we should show this tag + * in this case, options.text must be defined + */ + value?: string | boolean; + + /** + * returns the text to display for this tag. + * text can come from the value or an option in options + */ + get text(): string | undefined { + const { value, options } = this; + if (typeof this.value === 'boolean' && value && options && options.text) { + return options.text; + } + if (typeof value === 'string' && value.length > 0) { + return value; + } + + return undefined; + } + + /** + * Options that this component accept + */ + options?: ICustomSearchResultPropertyComponentTag['options']; +} diff --git a/datahub-web/@datahub/search/addon/services/search.ts b/datahub-web/@datahub/search/addon/services/search.ts new file mode 100644 index 0000000000000..6abc88e50e6d5 --- /dev/null +++ b/datahub-web/@datahub/search/addon/services/search.ts @@ -0,0 +1,192 @@ +import { + ISearchResultClickTrackEventParams, + ICustomEventData, + IBaseTrackingEvent +} from '@datahub/shared/types/tracking/event-tracking'; +import { inject as service } from '@ember/service'; +import RouterService from '@ember/routing/router-service'; +import DwellTime from '@datahub/shared/utils/tracking/dwell-time'; +import { Time } from '@datahub/metadata-types/types/common/time'; +import { action } from '@ember/object'; +import { searchTrackingEvent } from '@datahub/shared/constants/tracking/event-tracking/search'; +import Service from '@ember/service'; +import { isRouteEntityPageRoute } from '@datahub/data-models/utils/entity-route-name-resolver'; +import { SuccessfulDwellTimeLength, searchRouteName } from '@datahub/shared/constants/tracking/site-search-tracking'; +import Transition from '@ember/routing/-private/transition'; +import UnifiedTracking from '@datahub/shared/services/unified-tracking'; +import { + PageKey, + CustomTrackingEventName, + SearchActionEventCategory +} from '@datahub/shared/constants/tracking/event-tracking'; +import CurrentUser from '@datahub/shared/services/current-user'; +import DataModelsService from '@datahub/data-models/services/data-models'; +import { DataModelName } from '@datahub/data-models/constants/entity'; + +/** + * Search service is used to maintain the same + * state on different parts of the app. Right now the only thing + * we need to persist is the keywords. + */ +export default class SearchService extends Service { + /** + * Keyword or query for the current search + */ + keyword!: string; + + /** + * Data Models service to fetch unguarded entities + */ + @service('data-models') + dataModels!: DataModelsService; + + /** + * Current entity of the search + */ + entity?: DataModelName; + + /** + * Optional urn of the clicked search result + * @type {string} + */ + private clickedSearchResultUrn?: string; + + /** + * On service instantiation a reference to a DwellTime instance is cached here to track dwell time + * @type {DwellTime} + * @memberof Search + */ + dwellTimeTracker!: DwellTime; + + /** + * Injects the application CurrentUser service to provide the actor information on the action event + */ + @service('current-user') + sessionUser!: CurrentUser; + + /** + * References the application service to track user events, metrics and interaction + */ + @service('unified-tracking') + tracking!: UnifiedTracking; + + /** + * Router service used in tracking dwell time + */ + @service + router!: RouterService; + + /** + * Performs a set of operation when a search result is clicked. + * + * Responsible for gathering the required parameters for tracking the click and passes them onto the `trackSearchCategoryEvent` method. + * @param {string} urn The urn associated with the clicked search result + * @param {number} absolutePosition The position of the specific result in regards with all the search-results + */ + didClickSearchResult(urn: string, absolutePosition: number): void { + // When a search result is clicked, initiate dwell time tracking + this.dwellTimeTracker.beginTracking(); + // Also, track event as a click event + this.clickedSearchResultUrn = urn; + const searchResultEventParams: ISearchResultClickTrackEventParams = { + baseSearchTrackingEvent: searchTrackingEvent.SearchResultClick, + actionCategory: SearchActionEventCategory.SearchClick, + absolutePosition, + facet: null + }; + this.trackSearchActionEvent(searchResultEventParams); + } + + /** + * Sets the threshold value of the successful amount of dwell time on the component + * @instance + */ + successfulDwellTimeLength = SuccessfulDwellTimeLength; + + /** + * Track SAT Click as an event + * 1) Time spent or more specifically dwell time on viewing the entity page (see DwellTime class for differentiation) + * @link {DwellTime} + * 2) navigation sequence i.e. click from a search implied by dwell time, that lands on an entity page + * @param {number} dwellTime + * @returns boolean + */ + @action + trackSatClick(dwellTime: number, transition: Transition): boolean { + const isSATClick = this.isSATClick(dwellTime, transition); + if (isSATClick) { + this.trackSearchActionEvent({ + baseSearchTrackingEvent: searchTrackingEvent.SearchResultSATClick, + actionCategory: SearchActionEventCategory.SearchSatClick, + absolutePosition: null, + facet: null + }); + } + + return isSATClick; + } + + /** + * Creates attributes for tracking the search action event and invokes the tracking service. + * + * @param {ISearchResultClickTrackEventParams} searchResultEventParams A map consisting the current user's username, search query keyed in by the user , the positioning of the search result card in the list, the facet filters clicked by the user + */ + trackSearchActionEvent(searchActionEventParams: ISearchResultClickTrackEventParams): void { + const { baseSearchTrackingEvent, absolutePosition, actionCategory, facet } = searchActionEventParams; + const userName = this.sessionUser.entity?.username || ''; + + const baseEventAttrs: IBaseTrackingEvent = { + ...baseSearchTrackingEvent, + name: this.clickedSearchResultUrn + }; + const customEventAttrs: ICustomEventData = { + pageKey: PageKey.searchCategory, + eventName: CustomTrackingEventName.SearchAction, + userName, + target: this.clickedSearchResultUrn, + body: { + requesterUrn: userName, + targetUrn: this.clickedSearchResultUrn, + actionCategory, + query: this.keyword, + absolutePosition, + facet + } + }; + this.tracking.trackEvent(baseEventAttrs, customEventAttrs); + } + + init(): void { + super.init(); + + // Instantiate a DwellTime instance to track dwell time, which is essentially time spent on a search result page + this.dwellTimeTracker = new DwellTime(searchRouteName, this.router, this.trackSatClick); + } + + /** + * Determines if the click can be judged as a satisfied click + * @param {Time} dwellTime the amount of time in milliseconds the user has dwelled on the page + * @param {Transition} { to, from } the current ember transition object containing the RouteInfo object being transitioned to or from + */ + isSATClick(dwellTime: Time, { to, from }: Transition): boolean { + const isReturningToSearch = Boolean(to && to.name === searchRouteName); + // If the user is returning to the search page, check if the dwellTime is meets or exceeds what is considered a successful amount of time + const isSufficientDwellTimeOnSearchReturn = isReturningToSearch && dwellTime >= this.successfulDwellTimeLength; + + // If the dwell time is sufficient and the user is returning to search, or the user is navigating away from an entity route + // to a route that is not search this is considered a satisfied click + return ( + isSufficientDwellTimeOnSearchReturn || + (isRouteEntityPageRoute(from, this.dataModels.guards.unGuardedEntitiesDisplayName) && !isReturningToSearch) + ); + } +} + +// DO NOT DELETE: this is how TypeScript knows how to look up your services. +declare module '@ember/service' { + // This is a core ember thing + //eslint-disable-next-line @typescript-eslint/interface-name-prefix + interface Registry { + search: SearchService; + } +} diff --git a/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/date.hbs b/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/date.hbs new file mode 100644 index 0000000000000..aa768799b8a26 --- /dev/null +++ b/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/date.hbs @@ -0,0 +1 @@ +{{moment-format this.fixedValue @options.format}} diff --git a/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/icon.hbs b/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/icon.hbs new file mode 100644 index 0000000000000..a34cf1f8c1d61 --- /dev/null +++ b/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/icon.hbs @@ -0,0 +1,10 @@ +{{#if @value}} + +{{/if}} \ No newline at end of file diff --git a/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/link.hbs b/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/link.hbs new file mode 100644 index 0000000000000..6fa473848a469 --- /dev/null +++ b/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/link.hbs @@ -0,0 +1,3 @@ + + {{@options.text}} + diff --git a/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/tag.hbs b/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/tag.hbs new file mode 100644 index 0000000000000..4cf3fbe390860 --- /dev/null +++ b/datahub-web/@datahub/search/addon/templates/components/custom-search-result-property-component/tag.hbs @@ -0,0 +1,7 @@ +{{#if this.text}} + +{{/if}} diff --git a/datahub-web/@datahub/search/addon/utils/entities.ts b/datahub-web/@datahub/search/addon/utils/entities.ts new file mode 100644 index 0000000000000..3bcdebb036b92 --- /dev/null +++ b/datahub-web/@datahub/search/addon/utils/entities.ts @@ -0,0 +1,10 @@ +import { DataModelEntity } from '@datahub/data-models/constants/entity'; + +/** + * Guard function checks if the selected entity isEnabled for search + * @param {DataModelEntity} entityClass the entity class to check against + * TODO: META-10750 Refactor out by making the search attribute in IEntityRenderPropsSearch optional, + * updating call sites with sensible defaults and adding test coverage + */ +export const isSearchable = (entityClass: DataModelEntity): boolean => + Boolean(entityClass.renderProps?.search?.isEnabled); diff --git a/datahub-web/@datahub/search/addon/utils/search-results.ts b/datahub-web/@datahub/search/addon/utils/search-results.ts new file mode 100644 index 0000000000000..c1a8ca7d1f139 --- /dev/null +++ b/datahub-web/@datahub/search/addon/utils/search-results.ts @@ -0,0 +1,120 @@ +import { + SearchResultDataItem, + ISearchDataWithMetadata, + IDataModelEntitySearchResult +} from '@datahub/data-models/types/entity/search'; +import { IFacetCounts, IFacetsCounts } from '@datahub/data-models/types/entity/facets'; +import { IAggregationMetadata } from '@datahub/search/types/api/entity'; +import { DataModelEntity } from '@datahub/data-models/constants/entity'; + +/** + * Computes the search result item's index within the full list of results + */ +export const searchResultItemIndex = ({ + itemsPerPage, + page, + pageIndex +}: Pick, 'page' | 'itemsPerPage'> & { pageIndex: number }): number => + itemsPerPage * (page - 1) + pageIndex + 1; + +/** + * Returns a mapping iteratee that takes a search result data element to an object containing a reference to the result item + * and result item metadata + */ +export const withResultMetadata = ( + metadataOptions: Pick, 'page' | 'itemsPerPage'> +): ((data: T, pageIndex: number) => ISearchDataWithMetadata) => ( + data: SearchResultDataItem, + pageIndex: number +): ISearchDataWithMetadata => { + const { page, itemsPerPage } = metadataOptions; + // The result's position in the full list of results returned for the search query + const resultPosition = searchResultItemIndex({ pageIndex, itemsPerPage, page }); + const meta: ISearchDataWithMetadata['meta'] = { + resultPosition + }; + + return { + data, + meta + }; +}; + +/** + * Will merge original facet counts returned by API with previous selected values. This may happen + * when a filter is selected by default but the result does not contain that value for example: + * Search result: + * { + * status: { + * unpublished: 3 + * } + * } + * + * Facet Selected: + * status: ['published'] + * + * Merge result: + * { + * status: { + * unpublished: 3, + * published: 0 + * } + * } + * + * Now the UI can render the checkbox for published with a count of 0 + * + * @param facetCounts + * @param previousSelections + */ +export const mergeFacetCountsWithSelections = ( + facetCounts: IFacetsCounts, + previousSelections: Record> = {} +): IFacetsCounts => { + return Object.keys(previousSelections).reduce((facetCounts: IFacetsCounts, key: string): IFacetsCounts => { + const withMissingKey = facetCounts[key] + ? facetCounts + : { + ...facetCounts, + [key]: {} + }; + const valuesSelected = previousSelections[key]; + const selectedValuesWithNumericCount = valuesSelected.reduce( + (facetCountValues, value): IFacetCounts => + facetCountValues[value] + ? facetCountValues + : { + ...facetCountValues, + [value]: 0 + }, + withMissingKey[key] + ); + return { + ...facetCounts, + [key]: selectedValuesWithNumericCount + }; + }, facetCounts); +}; + +/** + * Transform api aggregation meta into a more suitable UI structure + * @param metas entity aggregation meta coming from api + */ +export const searchResultMetasToFacetCounts = ( + metas: Array, + previousSelections: Record> = {} +): IFacetsCounts => { + const facetCounts: IFacetsCounts = metas.reduce( + (facets: IFacetsCounts, meta: IAggregationMetadata): IFacetsCounts => { + const facet: IFacetCounts = facets[meta.name] || {}; + return { + ...facets, + [meta.name]: { + ...facet, + ...meta.aggregations + } + }; + }, + {} + ); + return mergeFacetCountsWithSelections(facetCounts, previousSelections); +}; diff --git a/datahub-web/@datahub/entity-header/addon/.gitkeep b/datahub-web/@datahub/search/app/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/addon/.gitkeep rename to datahub-web/@datahub/search/app/.gitkeep diff --git a/datahub-web/@datahub/search/app/components/custom-search-result-property-component/date.js b/datahub-web/@datahub/search/app/components/custom-search-result-property-component/date.js new file mode 100644 index 0000000000000..947dba8202938 --- /dev/null +++ b/datahub-web/@datahub/search/app/components/custom-search-result-property-component/date.js @@ -0,0 +1 @@ +export { default } from '@datahub/search/components/custom-search-result-property-component/date'; diff --git a/datahub-web/@datahub/search/app/components/custom-search-result-property-component/icon.js b/datahub-web/@datahub/search/app/components/custom-search-result-property-component/icon.js new file mode 100644 index 0000000000000..a6c17ea651bf7 --- /dev/null +++ b/datahub-web/@datahub/search/app/components/custom-search-result-property-component/icon.js @@ -0,0 +1 @@ +export { default } from '@datahub/search/components/custom-search-result-property-component/icon'; diff --git a/datahub-web/@datahub/search/app/components/custom-search-result-property-component/link.js b/datahub-web/@datahub/search/app/components/custom-search-result-property-component/link.js new file mode 100644 index 0000000000000..b944da3667892 --- /dev/null +++ b/datahub-web/@datahub/search/app/components/custom-search-result-property-component/link.js @@ -0,0 +1 @@ +export { default } from '@datahub/search/components/custom-search-result-property-component/link'; diff --git a/datahub-web/@datahub/search/app/components/custom-search-result-property-component/tag.js b/datahub-web/@datahub/search/app/components/custom-search-result-property-component/tag.js new file mode 100644 index 0000000000000..03b15d39088ca --- /dev/null +++ b/datahub-web/@datahub/search/app/components/custom-search-result-property-component/tag.js @@ -0,0 +1 @@ +export { default } from '@datahub/search/components/custom-search-result-property-component/tag'; diff --git a/datahub-web/@datahub/search/app/services/search.js b/datahub-web/@datahub/search/app/services/search.js new file mode 100644 index 0000000000000..f2aa7532fdeaf --- /dev/null +++ b/datahub-web/@datahub/search/app/services/search.js @@ -0,0 +1 @@ +export { default } from '@datahub/search/services/search'; diff --git a/datahub-web/@datahub/search/config/ember-try.js b/datahub-web/@datahub/search/config/ember-try.js new file mode 100644 index 0000000000000..a619971407eb1 --- /dev/null +++ b/datahub-web/@datahub/search/config/ember-try.js @@ -0,0 +1,80 @@ +'use strict'; + +const getChannelURL = require('ember-source-channel-url'); + +module.exports = function() { + return Promise.all([getChannelURL('release'), getChannelURL('beta'), getChannelURL('canary')]).then(urls => { + return { + useYarn: true, + scenarios: [ + { + name: 'ember-lts-2.18', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ 'jquery-integration': true }) + }, + npm: { + devDependencies: { + '@ember/jquery': '^0.5.1', + 'ember-source': '~2.18.0' + } + } + }, + { + name: 'ember-lts-3.4', + npm: { + devDependencies: { + 'ember-source': '~3.4.0' + } + } + }, + { + name: 'ember-release', + npm: { + devDependencies: { + 'ember-source': urls[0] + } + } + }, + { + name: 'ember-beta', + npm: { + devDependencies: { + 'ember-source': urls[1] + } + } + }, + { + name: 'ember-canary', + npm: { + devDependencies: { + 'ember-source': urls[2] + } + } + }, + // The default `.travis.yml` runs this scenario via `yarn test`, + // not via `ember try`. It's still included here so that running + // `ember try:each` manually or from a customized CI config will run it + // along with all the other scenarios. + { + name: 'ember-default', + npm: { + devDependencies: {} + } + }, + { + name: 'ember-default-with-jquery', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ + 'jquery-integration': true + }) + }, + npm: { + devDependencies: { + '@ember/jquery': '^0.5.1' + } + } + } + ] + }; + }); +}; diff --git a/datahub-web/@datahub/search/config/environment.d.ts b/datahub-web/@datahub/search/config/environment.d.ts new file mode 100644 index 0000000000000..3951075c5e2d9 --- /dev/null +++ b/datahub-web/@datahub/search/config/environment.d.ts @@ -0,0 +1,13 @@ +declare const config: { + environment: 'development' | 'test' | 'production'; + modulePrefix: string; + podModulePrefix: string; + locationType: string; + rootURL: string; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; +}; + +export default config; diff --git a/datahub-web/@datahub/entity-header/config/environment.js b/datahub-web/@datahub/search/config/environment.js similarity index 100% rename from datahub-web/@datahub/entity-header/config/environment.js rename to datahub-web/@datahub/search/config/environment.js diff --git a/datahub-web/@datahub/search/ember-cli-build.js b/datahub-web/@datahub/search/ember-cli-build.js new file mode 100644 index 0000000000000..d9648581d66f8 --- /dev/null +++ b/datahub-web/@datahub/search/ember-cli-build.js @@ -0,0 +1,18 @@ +'use strict'; + +const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); + +module.exports = function(defaults) { + const app = new EmberAddon(defaults, { + // Add options here + }); + + /* + This build file specifies the options for the dummy test app of this + addon, located in `/tests/dummy` + This build file does *not* influence how the addon or the app using it + behave. You most likely want to be modifying `./index.js` or app's build file + */ + + return app.toTree(); +}; diff --git a/datahub-web/@datahub/search/index.js b/datahub-web/@datahub/search/index.js new file mode 100644 index 0000000000000..ac65e94b66155 --- /dev/null +++ b/datahub-web/@datahub/search/index.js @@ -0,0 +1,6 @@ +'use strict'; + +module.exports = { + name: require('./package').name, + isDevelopingAddon: () => true +}; diff --git a/datahub-web/@datahub/search/package.json b/datahub-web/@datahub/search/package.json new file mode 100644 index 0000000000000..effaf4e17c794 --- /dev/null +++ b/datahub-web/@datahub/search/package.json @@ -0,0 +1,81 @@ +{ + "name": "@datahub/search", + "version": "0.0.0", + "description": "Search addon for DataHub", + "keywords": [ + "ember-addon" + ], + "repository": "", + "license": "MIT", + "author": "", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "build": "ember build --environment=production", + "start": "ember serve", + "test": "ember test", + "test:all": "ember try:each", + "prepublishOnly": "ember ts:precompile", + "postpublish": "ember ts:clean" + }, + "dependencies": { + "@datahub/data-models": "^0.0.0", + "@datahub/metadata-types": "^0.0.0", + "@datahub/shared": "^0.0.0", + "@datahub/utils": "^0.0.0", + "@fortawesome/ember-fontawesome": "^0.1.13", + "@fortawesome/free-regular-svg-icons": "^5.9.0", + "@fortawesome/free-solid-svg-icons": "^5.9.0", + "@nacho-ui/pill": "^0.0.38", + "@types/ember-resolver": "^5.0.7", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^4.2.2", + "ember-cli-string-helpers": "^4.0.5", + "ember-cli-typescript": "^3.1.3" + }, + "devDependencies": { + "@babel/core": "^7.8.4", + "@ember/optional-features": "^1.3.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "@types/ember": "^3.1.1", + "@types/ember-qunit": "^3.4.7", + "@types/ember-test-helpers": "^1.0.5", + "@types/ember-testing-helpers": "^0.0.3", + "@types/ember__test-helpers": "^0.7.9", + "@types/qunit": "^2.9.0", + "@types/rsvp": "^4.0.3", + "babel-eslint": "^10.0.3", + "broccoli-asset-rev": "^3.0.0", + "ember-auto-import": "^1.5.3", + "ember-cli": "~3.16.0", + "ember-cli-dependency-checker": "^3.2.0", + "ember-cli-inject-live-reload": "^2.0.2", + "ember-cli-sri": "^2.1.1", + "ember-cli-typescript-blueprints": "^3.0.0", + "ember-cli-uglify": "^3.0.0", + "ember-cli-update": "^0.52.1", + "ember-export-application-global": "^2.0.1", + "ember-load-initializers": "^2.1.1", + "ember-maybe-import-regenerator": "^0.1.6", + "ember-qunit": "^4.6.0", + "ember-resolver": "^7.0.0", + "ember-source": "~3.16.3", + "ember-source-channel-url": "^2.0.1", + "ember-try": "^1.4.0", + "loader.js": "^4.7.0", + "qunit-dom": "^0.9.1", + "typescript": "^3.9.3" + }, + "engines": { + "node": "10.* || >= 12" + }, + "ember": { + "edition": "octane" + }, + "ember-addon": { + "configPath": "tests/dummy/config" + } +} diff --git a/datahub-web/@datahub/entity-header/testem.js b/datahub-web/@datahub/search/testem.js similarity index 100% rename from datahub-web/@datahub/entity-header/testem.js rename to datahub-web/@datahub/search/testem.js diff --git a/datahub-web/@datahub/search/tests/dummy/app/app.ts b/datahub-web/@datahub/search/tests/dummy/app/app.ts new file mode 100644 index 0000000000000..d8e2088b6b0e5 --- /dev/null +++ b/datahub-web/@datahub/search/tests/dummy/app/app.ts @@ -0,0 +1,12 @@ +import Application from '@ember/application'; +import Resolver from 'ember-resolver'; +import loadInitializers from 'ember-load-initializers'; +import config from './config/environment'; + +export default class App extends Application { + modulePrefix = config.modulePrefix; + podModulePrefix = config.podModulePrefix; + Resolver = Resolver; +} + +loadInitializers(App, config.modulePrefix); diff --git a/datahub-web/@datahub/entity-header/app/.gitkeep b/datahub-web/@datahub/search/tests/dummy/app/components/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/app/.gitkeep rename to datahub-web/@datahub/search/tests/dummy/app/components/.gitkeep diff --git a/datahub-web/@datahub/search/tests/dummy/app/config/environment.d.ts b/datahub-web/@datahub/search/tests/dummy/app/config/environment.d.ts new file mode 100644 index 0000000000000..3951075c5e2d9 --- /dev/null +++ b/datahub-web/@datahub/search/tests/dummy/app/config/environment.d.ts @@ -0,0 +1,13 @@ +declare const config: { + environment: 'development' | 'test' | 'production'; + modulePrefix: string; + podModulePrefix: string; + locationType: string; + rootURL: string; + APP: { + // Alternate value for notifications service toast delay, used in test runs + notificationsTimeout?: number; + }; +}; + +export default config; diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/components/.gitkeep b/datahub-web/@datahub/search/tests/dummy/app/controllers/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/tests/dummy/app/components/.gitkeep rename to datahub-web/@datahub/search/tests/dummy/app/controllers/.gitkeep diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/controllers/.gitkeep b/datahub-web/@datahub/search/tests/dummy/app/helpers/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/tests/dummy/app/controllers/.gitkeep rename to datahub-web/@datahub/search/tests/dummy/app/helpers/.gitkeep diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/index.html b/datahub-web/@datahub/search/tests/dummy/app/index.html similarity index 100% rename from datahub-web/@datahub/entity-header/tests/dummy/app/index.html rename to datahub-web/@datahub/search/tests/dummy/app/index.html diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/helpers/.gitkeep b/datahub-web/@datahub/search/tests/dummy/app/models/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/tests/dummy/app/helpers/.gitkeep rename to datahub-web/@datahub/search/tests/dummy/app/models/.gitkeep diff --git a/datahub-web/@datahub/search/tests/dummy/app/router.ts b/datahub-web/@datahub/search/tests/dummy/app/router.ts new file mode 100644 index 0000000000000..b0aca2421bcb0 --- /dev/null +++ b/datahub-web/@datahub/search/tests/dummy/app/router.ts @@ -0,0 +1,9 @@ +import EmberRouter from '@ember/routing/router'; +import config from './config/environment'; + +export default class Router extends EmberRouter { + location = config.locationType; + rootURL = config.rootURL; +} + +Router.map(function(): void {}); diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/models/.gitkeep b/datahub-web/@datahub/search/tests/dummy/app/routes/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/tests/dummy/app/models/.gitkeep rename to datahub-web/@datahub/search/tests/dummy/app/routes/.gitkeep diff --git a/datahub-web/@datahub/datasets-core/tests/dummy/app/templates/tab.hbs b/datahub-web/@datahub/search/tests/dummy/app/styles/app.scss similarity index 100% rename from datahub-web/@datahub/datasets-core/tests/dummy/app/templates/tab.hbs rename to datahub-web/@datahub/search/tests/dummy/app/styles/app.scss diff --git a/datahub-web/@datahub/tracking/tests/dummy/app/templates/application.hbs b/datahub-web/@datahub/search/tests/dummy/app/templates/application.hbs similarity index 100% rename from datahub-web/@datahub/tracking/tests/dummy/app/templates/application.hbs rename to datahub-web/@datahub/search/tests/dummy/app/templates/application.hbs diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/routes/.gitkeep b/datahub-web/@datahub/search/tests/dummy/app/templates/components/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/tests/dummy/app/routes/.gitkeep rename to datahub-web/@datahub/search/tests/dummy/app/templates/components/.gitkeep diff --git a/datahub-web/@datahub/search/tests/dummy/config/environment.js b/datahub-web/@datahub/search/tests/dummy/config/environment.js new file mode 100644 index 0000000000000..43938b91a0109 --- /dev/null +++ b/datahub-web/@datahub/search/tests/dummy/config/environment.js @@ -0,0 +1,54 @@ +'use strict'; + +module.exports = function(environment) { + const ENV = { + modulePrefix: 'dummy', + environment, + rootURL: '/', + locationType: 'auto', + EmberENV: { + FEATURES: { + // Here you can enable experimental features on an ember canary build + // e.g. 'with-controller': true + }, + EXTEND_PROTOTYPES: { + // Prevent Ember Data from overriding Date.parse. + Date: false + } + }, + + APP: { + // Here you can pass flags/options to your application instance + // when it is created + } + }; + + if (environment === 'development') { + // ENV.APP.LOG_RESOLVER = true; + // ENV.APP.LOG_ACTIVE_GENERATION = true; + // ENV.APP.LOG_TRANSITIONS = true; + // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; + // ENV.APP.LOG_VIEW_LOOKUPS = true; + } + + if (environment === 'test') { + // Testem prefers this... + ENV.locationType = 'none'; + + // keep test console output quieter + ENV.APP.LOG_ACTIVE_GENERATION = false; + ENV.APP.LOG_VIEW_LOOKUPS = false; + ENV.RAISE_ON_DEPRECATION = false; + ENV.LOG_STACKTRACE_ON_DEPRECATION = false; + + ENV.APP.rootElement = '#ember-testing'; + ENV.APP.autoboot = false; + ENV.APP.notificationsTimeout = 1; + } + + if (environment === 'production') { + // here you can enable a production-specific feature + } + + return ENV; +}; diff --git a/datahub-web/@datahub/search/tests/dummy/config/optional-features.json b/datahub-web/@datahub/search/tests/dummy/config/optional-features.json new file mode 100644 index 0000000000000..b26286e2ecdf3 --- /dev/null +++ b/datahub-web/@datahub/search/tests/dummy/config/optional-features.json @@ -0,0 +1,6 @@ +{ + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true +} diff --git a/datahub-web/@datahub/tracking/tests/dummy/config/targets.js b/datahub-web/@datahub/search/tests/dummy/config/targets.js similarity index 100% rename from datahub-web/@datahub/tracking/tests/dummy/config/targets.js rename to datahub-web/@datahub/search/tests/dummy/config/targets.js diff --git a/datahub-web/@datahub/entity-header/tests/dummy/public/robots.txt b/datahub-web/@datahub/search/tests/dummy/public/robots.txt similarity index 100% rename from datahub-web/@datahub/entity-header/tests/dummy/public/robots.txt rename to datahub-web/@datahub/search/tests/dummy/public/robots.txt diff --git a/datahub-web/@datahub/entity-header/tests/dummy/app/templates/components/.gitkeep b/datahub-web/@datahub/search/tests/helpers/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/tests/dummy/app/templates/components/.gitkeep rename to datahub-web/@datahub/search/tests/helpers/.gitkeep diff --git a/datahub-web/@datahub/entity-header/tests/index.html b/datahub-web/@datahub/search/tests/index.html similarity index 100% rename from datahub-web/@datahub/entity-header/tests/index.html rename to datahub-web/@datahub/search/tests/index.html diff --git a/datahub-web/@datahub/entity-header/tests/helpers/.gitkeep b/datahub-web/@datahub/search/tests/integration/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/tests/helpers/.gitkeep rename to datahub-web/@datahub/search/tests/integration/.gitkeep diff --git a/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-date-test.ts b/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-date-test.ts new file mode 100644 index 0000000000000..8ba818310bbdc --- /dev/null +++ b/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-date-test.ts @@ -0,0 +1,25 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; +import moment from 'moment'; + +module('Integration | Component | custom-search-result-property-component/date', function(hooks): void { + setupRenderingTest(hooks); + + test('it renders', async function(assert): Promise { + this.setProperties({ + value: + moment('2018-11-28 18:42:00') + .toDate() + .valueOf() / 1000, + options: { + inSeconds: true, + format: 'MM/DD/YYYY, hh:mm a' + } + }); + await render(hbs``); + + assert.equal(this.element.textContent && this.element.textContent.trim(), '11/28/2018, 06:42 pm'); + }); +}); diff --git a/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-icon-test.ts b/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-icon-test.ts new file mode 100644 index 0000000000000..f230e794dcaf6 --- /dev/null +++ b/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-icon-test.ts @@ -0,0 +1,33 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; +import 'qunit-dom'; + +module('Integration | Component | custom-search-result-property-component/icon', function(hooks): void { + setupRenderingTest(hooks); + + test('it renders', async function(assert): Promise { + this.setProperties({ + value: true, + options: { + iconName: 'certificate' + } + }); + await render(hbs``); + + assert.dom('.fa-certificate').exists(); + }); + + test('it should not render', async function(assert): Promise { + this.setProperties({ + value: false, + options: { + iconName: 'certificate' + } + }); + await render(hbs``); + + assert.dom('.fa-certificate').doesNotExist(); + }); +}); diff --git a/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-link-test.ts b/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-link-test.ts new file mode 100644 index 0000000000000..e5dff39174547 --- /dev/null +++ b/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-link-test.ts @@ -0,0 +1,31 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | custom-search-result-property-component/link', function(hooks): void { + setupRenderingTest(hooks); + + test('it renders', async function(assert): Promise { + const entity = { + entityLink: { + link: { + model: ['some model'], + queryParams: {}, + route: '', + text: '' + } + } + }; + const options = { + linkProperty: 'entityLink', + text: 'View in a nice place' + }; + + this.set('entity', entity); + this.set('options', options); + await render(hbs``); + + assert.equal(this.element.textContent && this.element.textContent.trim(), 'View in a nice place'); + }); +}); diff --git a/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-tag-test.ts b/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-tag-test.ts new file mode 100644 index 0000000000000..044239920809f --- /dev/null +++ b/datahub-web/@datahub/search/tests/integration/components/search/bricks/search-tag-test.ts @@ -0,0 +1,36 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render, findAll } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | custom-search-result-property-component/tag', function(hooks): void { + setupRenderingTest(hooks); + + test('it renders correctly when titleize and modifiers are present', async function(assert): Promise { + const mockOptions = { + styleModifier: 'class1', + titleize: true + }; + this.set('value', 'testValue'); + this.set('options', mockOptions); + await render(hbs``); + + assert.ok(this.element, 'Initial render is without errors'); + assert.equal(findAll('.nacho-pill').length, 1, 'Renders a pill with the right class1'); + assert.equal(findAll('.nacho-pill--small').length, 1, 'Renders a pill with the right class2'); + assert.equal(findAll('.entity-pillclass1').length, 1, 'Renders a pill with the right class3'); + assert.equal(this.element.textContent && this.element.textContent.trim(), 'Testvalue'); + }); + + test('it renders correctly when titleize and modifiers are absent', async function(assert): Promise { + this.set('value', 'testValue'); + this.set('options', {}); + await render(hbs``); + + assert.ok(this.element, 'Initial render is without errors'); + assert.equal(findAll('.nacho-pill').length, 1, 'Renders a pill with the right class'); + assert.equal(findAll('.nacho-pill--small').length, 1, 'Renders a pill with the right class'); + assert.equal(findAll('.class1').length, 0, 'Renders a pill with the right class'); + assert.equal(this.element.textContent && this.element.textContent.trim(), 'testValue'); + }); +}); diff --git a/datahub-web/@datahub/search/tests/test-helper.ts b/datahub-web/@datahub/search/tests/test-helper.ts new file mode 100644 index 0000000000000..8e58a19207ce8 --- /dev/null +++ b/datahub-web/@datahub/search/tests/test-helper.ts @@ -0,0 +1,8 @@ +import Application from 'dummy/app'; +import config from '../config/environment'; +import { setApplication } from '@ember/test-helpers'; +import { start } from 'ember-qunit'; + +setApplication(Application.create(config.APP)); + +start(); diff --git a/datahub-web/@datahub/entity-header/tests/integration/.gitkeep b/datahub-web/@datahub/search/tests/unit/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/tests/integration/.gitkeep rename to datahub-web/@datahub/search/tests/unit/.gitkeep diff --git a/datahub-web/@datahub/search/tsconfig.json b/datahub-web/@datahub/search/tsconfig.json new file mode 100644 index 0000000000000..6a334cb2eec3f --- /dev/null +++ b/datahub-web/@datahub/search/tsconfig.json @@ -0,0 +1,48 @@ +{ + "extends": "../../configs/tsconfig-base", + "compilerOptions": { + "baseUrl": ".", + "rootDir": "../../", + "paths": { + "dummy/mirage/*": ["tests/dummy/mirage/*", "../../@datahub/data-models/tests/dummy/mirage/*"], + "dummy/tests/*": ["tests/*", "../../@datahub/data-models/tests/*"], + "dummy/*": [ + "tests/dummy/app/*", + "app/*", + "../../@datahub/data-models/tests/dummy/app/*", + "../../@datahub/data-models/tests/app/*" + ], + "@datahub/search": ["addon"], + "@datahub/search/*": ["addon/*"], + "@datahub/search/test-support": ["addon-test-support"], + "@datahub/search/test-support/*": ["addon-test-support/*"], + "@datahub/data-models": ["../../@datahub/data-models/addon"], + "@datahub/data-models/*": ["../../@datahub/data-models/addon/*"], + "@datahub/metadata-types/": ["../../@datahub/metadata-types/addon"], + "@datahub/metadata-types/*": ["../../@datahub/metadata-types/addon/*"], + "@datahub/shared/": ["../../@datahub/shared/addon"], + "@datahub/shared/*": ["../../@datahub/shared/addon/*"], + "@datahub/utils/": ["../../@datahub/utils/addon"], + "@datahub/utils/*": ["../../@datahub/utils/addon/*"], + "*": ["types/*"] + } + }, + "include": [ + "app/**/*", + "addon/**/*", + "tests/**/*", + "types/**/*", + "test-support/**/*", + "addon-test-support/**/*", + "../../@datahub/utils/addon/**/*", + "../../@datahub/utils/types/**/*", + "../../@datahub/data-models/addon/**/*", + "../../@datahub/data-models/tests/**/*", + "../../@datahub/data-models/types/**/*", + "../../@datahub/metadata-types/addon/**/*", + "../../@datahub/metadata-types/types/**/*", + "../../@datahub/shared/addon/**/*", + "../../@datahub/shared/types/**/*", + "../../@datahub/shared/tests/**/*" + ] +} diff --git a/datahub-web/packages/data-portal/app/typings/api/search/entity.d.ts b/datahub-web/@datahub/search/types/api/entity.d.ts similarity index 81% rename from datahub-web/packages/data-portal/app/typings/api/search/entity.d.ts rename to datahub-web/@datahub/search/types/api/entity.d.ts index 398f2d3c3d222..5ef92f0559874 100644 --- a/datahub-web/packages/data-portal/app/typings/api/search/entity.d.ts +++ b/datahub-web/@datahub/search/types/api/entity.d.ts @@ -1,3 +1,5 @@ +import { IPaginatedResponse } from '@datahub/utils/types/api/response'; + /** * The aggregation metadata is mapped to properties on the search response as searchResultMetadatas and * contains data used mostly for facet parameters in the search page where we aggregate how many results @@ -32,15 +34,7 @@ export interface ISearchEntityApiParams { * is expected to be in the results * @interface IEntitySearchResult */ -export interface IEntitySearchResult { +export interface IEntitySearchResult extends IPaginatedResponse { // Aggregation results for the search, broken down by facet properties and values to aggregation value searchResultMetadatas: Array; - // Search result returned elements - elements: Array; - // Starting index of the list of search results - start: number; - // Number of returned results - count: number; - // Total number of results that would be returned - total: number; } diff --git a/datahub-web/@datahub/search/types/dummy/index.d.ts b/datahub-web/@datahub/search/types/dummy/index.d.ts new file mode 100644 index 0000000000000..bfa534e702782 --- /dev/null +++ b/datahub-web/@datahub/search/types/dummy/index.d.ts @@ -0,0 +1 @@ +declare module 'dummy/app'; diff --git a/datahub-web/@datahub/search/types/global.d.ts b/datahub-web/@datahub/search/types/global.d.ts new file mode 100644 index 0000000000000..624326b0e7ea9 --- /dev/null +++ b/datahub-web/@datahub/search/types/global.d.ts @@ -0,0 +1,6 @@ +// Types for compiled templates +declare module '@datahub/search/templates/*' { + import { TemplateFactory } from 'htmlbars-inline-precompile'; + const tmpl: TemplateFactory; + export default tmpl; +} diff --git a/datahub-web/@datahub/search/types/modules/ember-load-initializers.d.ts b/datahub-web/@datahub/search/types/modules/ember-load-initializers.d.ts new file mode 100644 index 0000000000000..7b4672f61a85c --- /dev/null +++ b/datahub-web/@datahub/search/types/modules/ember-load-initializers.d.ts @@ -0,0 +1,5 @@ +declare module 'ember-load-initializers' { + import Application from '@ember/application'; + + export default function(app: typeof Application, prefix: string): void; +} diff --git a/datahub-web/@datahub/entity-header/tests/unit/.gitkeep b/datahub-web/@datahub/search/vendor/.gitkeep similarity index 100% rename from datahub-web/@datahub/entity-header/tests/unit/.gitkeep rename to datahub-web/@datahub/search/vendor/.gitkeep diff --git a/datahub-web/@datahub/shared/.npmignore b/datahub-web/@datahub/shared/.npmignore index fba9154569bdc..bd09adff92e08 100644 --- a/datahub-web/@datahub/shared/.npmignore +++ b/datahub-web/@datahub/shared/.npmignore @@ -12,6 +12,7 @@ /.env* /.eslintignore /.eslintrc.js +/.git/ /.gitignore /.template-lintrc.js /.travis.yml diff --git a/datahub-web/@datahub/shared/.travis.yml b/datahub-web/@datahub/shared/.travis.yml index c8cec1979ed09..d10bed4d288bc 100644 --- a/datahub-web/@datahub/shared/.travis.yml +++ b/datahub-web/@datahub/shared/.travis.yml @@ -3,7 +3,7 @@ language: node_js node_js: # we recommend testing addons with the same minimum supported node version as Ember CLI # so that your addon works for all apps - - "6" + - '10' sudo: false dist: trusty @@ -33,8 +33,8 @@ jobs: include: # runs linting and tests with current locked deps - - stage: "Tests" - name: "Tests" + - stage: 'Tests' + name: 'Tests' install: - yarn install --non-interactive script: @@ -42,13 +42,13 @@ jobs: - yarn lint:js - yarn test - - name: "Floating Dependencies" + - name: 'Floating Dependencies' script: - yarn test # we recommend new addons test the current and previous LTS # as well as latest stable release (bonus points to beta/canary) - - stage: "Additional Tests" + - stage: 'Additional Tests' env: EMBER_TRY_SCENARIO=ember-lts-2.18 - env: EMBER_TRY_SCENARIO=ember-lts-3.4 - env: EMBER_TRY_SCENARIO=ember-release diff --git a/datahub-web/@datahub/shared/LICENSE.md b/datahub-web/@datahub/shared/LICENSE.md index f8d1edb3b7d6e..0d02ed0266734 100644 --- a/datahub-web/@datahub/shared/LICENSE.md +++ b/datahub-web/@datahub/shared/LICENSE.md @@ -1,9 +1,13 @@ -The MIT License (MIT) +Copyright (c) 2020 LinkedIn -Copyright (c) 2019 +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + http://www.apache.org/licenses/LICENSE-2.0 -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/datahub-web/@datahub/shared/addon/api/change-management/change-log.ts b/datahub-web/@datahub/shared/addon/api/change-management/change-log.ts new file mode 100644 index 0000000000000..5705d7fe55a64 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/api/change-management/change-log.ts @@ -0,0 +1,34 @@ +import { getJSON, postJSON, putJSON } from '@datahub/utils/api/fetcher'; +import { ApiVersion } from '@datahub/utils/api/shared'; +import { entityApiRoot, entityApiByUrn } from '@datahub/data-models/api/entity'; + +export const changeLogEndpoint = 'data-construct-change-managements'; + +/** + * Api call to get the detail payload of a Change Management log + * @param id the identifier of the Change Management log + */ +export const getChangeLog = ( + id: number +): Promise => + getJSON({ + url: entityApiByUrn(`${id}`, changeLogEndpoint) + }); + +/** + * Api call to create a Change Management log + * @param changeLog the payload of the Change Management log + */ +export const createChangeLog = ( + changeLog: Com.Linkedin.DataConstructChangeManagement.DataConstructChangeManagementContent +): Promise => postJSON({ url: entityApiRoot(changeLogEndpoint, ApiVersion.v2), data: changeLog }); + +/** + * Api call to update an Change Management log + * @param id the identifier of the Change Management log + * @param changeLog the payload of the Change Management log + */ +export const updateChangeLog = ( + id: number, + changeLog: Com.Linkedin.DataConstructChangeManagement.DataConstructChangeManagement +): Promise => putJSON({ url: entityApiByUrn(`${id}`, changeLogEndpoint), data: changeLog }); diff --git a/datahub-web/@datahub/shared/addon/api/entity-configs.ts b/datahub-web/@datahub/shared/addon/api/entity-configs.ts new file mode 100644 index 0000000000000..4485f55a0c0b5 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/api/entity-configs.ts @@ -0,0 +1,33 @@ +import { getJSON } from '@datahub/utils/api/fetcher'; +import { encodeUrn } from '@datahub/utils/validators/urn'; +import { ApiVersion, getApiRoot } from '@datahub/utils/api/shared'; +import { returnDefaultIfNotFound } from '@datahub/utils/api/fetcher'; + +/** + * Constructs the entity configs url root endpoint + * @param {ApiVersion} version the version of the api midtier route + */ +export const entityConfigsUrlRoot = (version: ApiVersion): string => `${getApiRoot(version)}/entity-configs`; + +/** + * Constructs the url that requests entity configs for the provided urn and target feature + * @param urn the urn of the entity that we are requesting configs + * @param targetFeature the target feature that is being configured + */ +export const entityConfigsUrlByUrnAndTargetFeature = (urn: string, targetFeature: string): string => + `${entityConfigsUrlRoot(ApiVersion.v2)}/${encodeUrn(urn)}?target=${targetFeature}`; + +/** + * Reads the entity configs given an entity urn and a target feature + * @param urn the urn of the entity that we are requesting configs + * @param targetFeature the target feature that is being configured + */ +export const readEntityFeatureConfigs = (urn: string, targetFeature: string): Promise => { + // TODO META-11235: Allow for entity feature configs container to batch targets + // Currently returns a boolean due to midtier implementation for appworx deprecation + // Should eventually return a Record where the key is the target feature and the value is the config object or null + return returnDefaultIfNotFound( + getJSON({ url: entityConfigsUrlByUrnAndTargetFeature(urn, targetFeature) }), + false + ); +}; diff --git a/datahub-web/@datahub/shared/addon/api/health/index.ts b/datahub-web/@datahub/shared/addon/api/health/index.ts new file mode 100644 index 0000000000000..b8e78e0204cd6 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/api/health/index.ts @@ -0,0 +1,59 @@ +import { getJSON, postJSON } from '@datahub/utils/api/fetcher'; +import { DataModelEntity } from '@datahub/data-models/constants/entity'; +import { entityApiByUrn } from '@datahub/data-models/api/entity'; +import { isNotFoundApiError } from '@datahub/utils/api/shared'; + +/** + * Defines the expected response from the Health endpoint for a given entity + * @interface IHealthResponse + */ +interface IHealthResponse { + // Endpoint response for the health metadata + health: Com.Linkedin.Common.Health; +} + +/** + * Constant value for the Health Endpoint + */ +export const healthEndpoint = 'health-v2'; + +/** + * Constructs the entity url using provided specific entity url and appending the health endpoint + * @param {string} entityUrl a partially constructed READ endpoint url for the specific entity with the identifying urn attached + */ +export const entityHealthUrl = (entityUrl: string): string => `${entityUrl}/${healthEndpoint}`; + +/** + * Requests the Health metadata (aspect) for an entity at the provided entityUrl + * @param {DataModelEntity} Entity the entity to request Health metadata for + * @param {string} urn the urn of the specific entity to request + * @param {boolean} [isRecalculation=false] flag indicating that the recalculation endpoint should be used, this also responds with the updated health score + */ +export const getOrRecalculateHealth = async ( + Entity: DataModelEntity, + urn: string, + isRecalculation = false +): Promise => { + const endpointPath = Entity.renderProps.entityPage?.apiRouteName; + + if (endpointPath) { + // the READ endpoint url for a specific entity + const url = entityHealthUrl(entityApiByUrn(urn, endpointPath)); + const request = isRecalculation ? postJSON({ url, data: {} }) : getJSON({ url }); + + try { + return (await request).health; + } catch (e) { + // There may be instances where a GET request for the Health Score may not have been calculated, resulting in a 404 + // In such instances we want to force a recalculation to generate the current score + // Recursively invoke function with recalculation flag as stop case if the response is not found on GET invocation + if (isNotFoundApiError(e) && !isRecalculation) { + return await getOrRecalculateHealth(Entity, urn, true); + } + + throw e; + } + } + + throw new Error(`Invalid endpoint: ${endpointPath}`); +}; diff --git a/datahub-web/@datahub/shared/addon/api/lineage/index.ts b/datahub-web/@datahub/shared/addon/api/lineage/index.ts new file mode 100644 index 0000000000000..5bdbd3a8392ef --- /dev/null +++ b/datahub-web/@datahub/shared/addon/api/lineage/index.ts @@ -0,0 +1,19 @@ +import { getJSON } from '@datahub/utils/api/fetcher'; +import { getApiRoot, ApiVersion } from '@datahub/utils/api/shared'; +import { encodeUrn } from '@datahub/utils/validators/urn'; +import buildUrl from '@datahub/utils/api/build-url'; + +/** + * Will generate lineage api url given an entity URN + * @param urn + */ +const lineageUrl = (urn: string): string => `${getApiRoot(ApiVersion.v2)}/lineage/graph/${encodeUrn(urn)}`; + +/** + * Will return a Lineage Graph for a specific entity + * @param urn + * @param limit the max number of upstreams & downstreams levels to be returned + */ +export const readLineage = (urn: string, limit: number): Promise => { + return getJSON({ url: buildUrl(lineageUrl(urn), { limit }) }); +}; diff --git a/datahub-web/@datahub/shared/addon/api/top-consumers/index.ts b/datahub-web/@datahub/shared/addon/api/top-consumers/index.ts new file mode 100644 index 0000000000000..8499e8817d455 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/api/top-consumers/index.ts @@ -0,0 +1,23 @@ +import { DataModelName } from '@datahub/data-models/constants/entity'; +import { getJSON } from '@datahub/utils/api/fetcher'; +import { entityApiByUrn } from '@datahub/data-models/api/entity'; + +/** + * Creates a url to the top consumers endpoint for a specific entity by urn + * @param {DataModelName} entityType - the type of entity for which we are making this request + * @param {string} urn - identifier for the specific entity for which we want to construct the url + */ +const topConsumersUrlByEntityAndUrn = (entityType: DataModelName, urn: string): string => + `${entityApiByUrn(urn, entityType)}/top-consumers`; + +/** + * Given an entity type and urn, construct a getter that retrieves the top consumers aspect for the entity + * @param {DataModelName} entityType - the type of entity for which we want to read like information + * @param {string} urn - the identifier for the entity for which we want to read like information + */ +export const readTopConsumersForEntity = ( + entityType: DataModelName, + urn: string +): Promise => { + return getJSON({ url: topConsumersUrlByEntityAndUrn(entityType, urn) }); +}; diff --git a/datahub-web/@datahub/shared/addon/api/user/authentication.ts b/datahub-web/@datahub/shared/addon/api/user/authentication.ts index 9cf5afe36a839..e3aa6329207f2 100644 --- a/datahub-web/@datahub/shared/addon/api/user/authentication.ts +++ b/datahub-web/@datahub/shared/addon/api/user/authentication.ts @@ -1,36 +1,10 @@ -import { getApiRoot, ApiStatus } from '@datahub/utils/api/shared'; +import { getApiRoot, ApiVersion } from '@datahub/utils/api/shared'; import { getJSON } from '@datahub/utils/api/fetcher'; +import { ICorpUserInfo } from '@datahub/metadata-types/types/entity/person/person-entity'; -const currentUserUrl = `${getApiRoot()}/user/me`; +const currentUserUrl = `${getApiRoot(ApiVersion.v1)}/user/me`; /** - * Describes the interface for the user json returned - * from the current user endpoint + * Requests the currently logged in user and returns that user */ -export interface IUser { - departmentNum: number; - email: string; - id: number; - name: string; - userName: string; - pictureLink: string; - userSetting: null | { - defaultWatch: string; - detailDefaultView: string; - }; -} - -/** - * Requests the currently logged in user and if the response is ok, - * returns the user, otherwise throws - */ -export const currentUser = async (): Promise => { - const response = (await getJSON({ url: currentUserUrl })) as { user: IUser; status: ApiStatus }; - const { status = ApiStatus.FAILED, user } = response; - - if (status === ApiStatus.OK) { - return user; - } - - throw new Error(`Exception: ${status}`); -}; +export const currentUser = (): Promise => getJSON({ url: currentUserUrl }); diff --git a/datahub-web/@datahub/shared/addon/authenticators/aad-sso.ts b/datahub-web/@datahub/shared/addon/authenticators/aad-sso.ts new file mode 100644 index 0000000000000..a973d360165c5 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/authenticators/aad-sso.ts @@ -0,0 +1,39 @@ +import Base from 'ember-simple-auth/authenticators/base'; +import { inject as service } from '@ember/service'; +import AadSso from '@datahub/shared/services/aad-sso'; + +/** + * Ember Simple Auth Azure Active Directory Single Sign On authenticator + */ +export default class AadSsoAuthenticator extends Base { + /** + * Azure Active Directory Single Sign On service to share state across the app + */ + @service('aad-sso') + sso!: AadSso; + + /** + * Will be invoked when launching the app (when browser loads the app) to restore previous sessions. + * We will invoke the midtier to validate the tokens + */ + restore(_data: string): Promise { + return this.sso.validateToken(); + } + + /** + * Will authenticate if needed. By default will redirect to AAD to authenticate. If redirectToAAD is false + * will not redirect which is useful when you are already logged in in the midtier but not in the frontend. + * @param redirectToAAD + */ + authenticate(redirectToAAD = true): Promise { + return this.sso.authenticate(redirectToAAD); + } + + /** + * Will destroy session data. + * @param _data + */ + invalidate(_data: string): Promise { + return Promise.resolve(); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/avatar/avatar-name.ts b/datahub-web/@datahub/shared/addon/components/avatar/avatar-name.ts new file mode 100644 index 0000000000000..f4b0e02b11531 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/avatar/avatar-name.ts @@ -0,0 +1,43 @@ +import Component from '@glimmer/component'; +import { Avatar } from '@datahub/shared/modules/avatars/avatar'; + +/** + * The types available for name display + */ +type DisplayType = 'name' | 'username'; + +interface IAvatarNameComponenetArgs { + // A single instance of the Avatar class, representing the person whose name we want to show in + // this component + avatar: Avatar; + // Base class to use in addition to the base avatar name component class, if needed + nameClass?: string; + // Option passed in to select type of name displayed + displayType?: DisplayType; +} + +export const baseAvatarNameComponentClass = 'avatar-name'; + +/** + * The AvatarNameComponent is responsible for rendering an avatar when there is a single name + * to be shown for the person. It should be used in conjunction with the main avatar container + * @example + * + * {{#each avatars as |avatar|}} + * + * {{/each}} + * + */ +export default class AvatarNameComponent extends Component { + /** + * Attaching to component for ease of access in the template + */ + baseClass = baseAvatarNameComponentClass; + + /** + * The intended name type to be displayed + */ + get displayType(): DisplayType { + return this.args.displayType || 'username'; + } +} diff --git a/datahub-web/@datahub/shared/addon/components/avatar/containers/avatar-main.ts b/datahub-web/@datahub/shared/addon/components/avatar/containers/avatar-main.ts new file mode 100644 index 0000000000000..9b0b913704a2b --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/avatar/containers/avatar-main.ts @@ -0,0 +1,124 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/avatar/containers/avatar-main'; +import { inject as service } from '@ember/service'; +import { set } from '@ember/object'; +import { task } from 'ember-concurrency'; +import { tagName, layout } from '@ember-decorators/component'; +import { ETask } from '@datahub/utils/types/concurrency'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; +import DataModelsService from '@datahub/data-models/services/data-models'; +import { Avatar } from '@datahub/shared/modules/avatars/avatar'; +import { oneOrMany } from '@datahub/utils/array/one-or-many'; +import { containerDataSource } from '@datahub/utils/api/data-source'; + +/** + * The AvatarMainContainer is responsible for receiving information about a person and translating + * it into an Avatar class object that can be passed into various components meant for rendering + * avatars consistently. Because the data we receive in our application can vary, the goal of this + * container will be to take inconsistent input and return consistent output. + * + * Possible parameters for this container are: entity, urn, username. + * Input can be in the form of a single item or an array of items. The container only intends for + * one kind of input given, if multiple inputs are provided then the priority will be: + * entity > urn > username + * + * @example + * {{!-- Basic use --}} + * + * {{#each avatars as |avatar|}} + * + * {{/each}} + * + * + * {{!-- Would fetch data for the avatar object as we build it --}} + * + * ... + * + */ +@tagName('') +@layout(template) +@containerDataSource('getAvatarsTask', ['entity', 'urn', 'username']) +export default class AvatarMainContainer extends Component { + /** + * Injection of data models service to access the generic PersonEntity class + */ + @service + dataModels!: DataModelsService; + + /** + * Optional argument for a person entity, or a list of person entities, to underly the data + * inside the avatar object + */ + entity?: PersonEntity | Array; + + /** + * Optional argument for a person entity's urn, or list of urns, to reference the entity that + * should underly the data inside the avatar object + */ + urn?: string | Array; + + /** + * Optional argument for a person entity's username, or list of usernames, provided when their + * urn or entity (the safer options) are not easily accessible + */ + username?: string | Array; + + /** + * Whether or not we need to await the async operation of building the avatars. Setting this to + * true will await the build() method on our avatars, allowing us to access additional underlying + * data but will cause a delay in returning the information. This is useful when we need the + * entirety of the Avatar information *before* showing anything on the UI. However, in most cases + * we will want to show some UI initially and load additional data as needed, so this is default + * to false + * @default false + */ + shouldBuildAvatar?: boolean; + + /** + * The avatar objects finally created from the avatar creation task, yielded from this container + * to whatever component needs this data for rendering + */ + avatars?: Array; + + /** + * Given a urn or username argument to the container, returns as a list of urns + */ + get urns(): Array { + const { username, urn, dataModels } = this; + const personEntityClass = dataModels.getModel(PersonEntity.displayName); + + if (!username && !urn) { + return []; + } + + return urn + ? oneOrMany(urn) + : oneOrMany(username).map((value: string): string => personEntityClass.urnFromUsername(value)); + } + + /** + * Regardless of the argument given to the container, this will return a list of entities that + * should underly the avatar objects we create + */ + get entities(): Array { + const { entity, dataModels } = this; + const personEntityClass = dataModels.getModel(PersonEntity.displayName); + + return entity ? oneOrMany(entity) : this.urns.map((urn): PersonEntity => new personEntityClass(urn)); + } + + /** + * Sets the avatar information to be yielded by the container + */ + @task(function*(this: AvatarMainContainer): IterableIterator>> { + const avatars: Array = Boolean(this.shouldBuildAvatar) + ? (((yield Promise.all( + this.entities.map((entity): Promise => Avatar.build(entity)) + )) as unknown) as Array) + : this.entities.map((entity): Avatar => new Avatar(entity)); + + set(this, 'avatars', avatars); + }) + getAvatarsTask!: ETask; +} diff --git a/datahub-web/@datahub/shared/addon/components/avatar/generic-wrapper.ts b/datahub-web/@datahub/shared/addon/components/avatar/generic-wrapper.ts new file mode 100644 index 0000000000000..10296f14dfb70 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/avatar/generic-wrapper.ts @@ -0,0 +1,29 @@ +import Component from '@glimmer/component'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; + +interface IAvatarGenericWrapperArgs { + // Optional parameters to influence what renders in the generic wrapper + options: { + // Component to accept the yielded params of the avatar main container, for example avatar-name + component: string; + // Whether or not we pass the whole of the yielded avatars to a single component that accepts + // a list or if we want to use the above stated component for each avatar in the yielded list + // from avatar main container + avatarsAsList?: boolean; + // Whether or not we should build the avatars in the avatar main container. Most often this + // will likely be false + shouldBuildAvatar?: boolean; + }; + // The entity we are passing to avatar main container to be transformed. Called "value" as this + // is often the generic param used to pass values into generic components in our application + value: PersonEntity | Array; +} + +/** + * The generic wrapper component can be used to wrap both the avatar main container and a avatar + * presentational component together, useful for when the component is being loaded to a config + * and the template doesn't have room to allow for the full blown container usage that requires + * yielding to block components and passing different params around, etc. + * Note that if the generic wrapper is used, the value is expected to be a person entity + */ +export default class AvatarGenericWrapper extends Component {} diff --git a/datahub-web/@datahub/shared/addon/components/avatar/nacho-table-wrapper.hbs b/datahub-web/@datahub/shared/addon/components/avatar/nacho-table-wrapper.hbs new file mode 100644 index 0000000000000..04b5dcf7d6e50 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/avatar/nacho-table-wrapper.hbs @@ -0,0 +1,7 @@ + + + {{#each avatars as |avatar|}} + + {{/each}} + + \ No newline at end of file diff --git a/datahub-web/@datahub/shared/addon/components/browser/browse-card.ts b/datahub-web/@datahub/shared/addon/components/browser/browse-card.ts new file mode 100644 index 0000000000000..0254ec1531dd2 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/browser/browse-card.ts @@ -0,0 +1,38 @@ +import Component from '@ember/component'; +import { IDynamicLinkNode } from '@datahub/utils/types/vendor/dynamic-link'; +import { noop } from 'lodash'; +import { action } from '@ember/object'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/browser/browse-card'; +import { layout } from '@ember-decorators/component'; + +/** + * Card component. It is used in the home page of the app to + * show the different types of entity + */ +@layout(template) +export default class BrowseCard extends Component { + // Title of the card + title?: string; + // Description below the title + description?: string; + // It will show a pendulum animation when true embedded in the card + showSpinner?: boolean; + // Target link for the user when it clicks the card + link?: IDynamicLinkNode; + + /** + * Externally supplied reference to the host components click handler + */ + didClickCard: (e: string) => void = noop; + + /** + * Handler to pass the current card name to the external event handler + */ + @action + onClick(): void { + const { didClickCard, title } = this; + + didClickCard && title && didClickCard(title); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/browser/browse-category.ts b/datahub-web/@datahub/shared/addon/components/browser/browse-category.ts new file mode 100644 index 0000000000000..f1da4f0884962 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/browser/browse-category.ts @@ -0,0 +1,17 @@ +import Component from '@ember/component'; +import { classNames, tagName, layout } from '@ember-decorators/component'; +import { EntityLinkNode } from '@datahub/data-models/types/entity/shared'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/browser/browse-category'; + +/** + * It represents a row in the browsing experience. This row contains a title + * which should be included in the link (node) passed into it. Also, depending + * if it is a category or a entity it will add a folder icon or file icon. + */ +@layout(template) +@tagName('li') +@classNames('browse-category browse-category-container__li') +export default class BrowseCategory extends Component { + node?: EntityLinkNode; +} diff --git a/datahub-web/@datahub/shared/addon/components/browser/containers/category-container.ts b/datahub-web/@datahub/shared/addon/components/browser/containers/category-container.ts new file mode 100644 index 0000000000000..b412e994f725e --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/browser/containers/category-container.ts @@ -0,0 +1,67 @@ +import CurrentUser from '@datahub/shared/services/current-user'; +import { action } from '@ember/object'; +import Component from '@ember/component'; +import { inject as service } from '@ember/service'; +import UnifiedTracking from '@datahub/shared/services/unified-tracking'; +import { + TrackingEventCategory, + CustomTrackingEventName, + PageKey +} from '@datahub/shared/constants/tracking/event-tracking'; +import { + ICategoryContainerTrackEventParams, + IBaseTrackingEvent, + ICustomEventData +} from '@datahub/shared/types/tracking/event-tracking'; +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/browser/containers/category-container'; +import { layout } from '@ember-decorators/component'; + +@layout(template) +export default class BrowserContainersCategoryContainer extends Component { + /** + * References the application service to track user events, metrics and interaction + */ + @service('unified-tracking') + tracking!: UnifiedTracking; + + /** + * Injects the application CurrentUser service to provide the actor information on the action event + */ + @service('current-user') + sessionUser!: CurrentUser; + + /** + * Click handler constructs a custom event of type `DataHubBrowseActionEvent` and hands off the + * customEventData to the tracking service + * @param {string} categoryName the name of the browse category for the clicked card + */ + @action + onCardClick(categoryName: string): void { + const userName = this.sessionUser.entity?.username || ''; + this.trackBrowseCategoryEvent({ userName, categoryName }); + } + + /** + * Creates attributes for tracking the browse action event and invokes the tracking service + * @param {ICategoryContainerTrackEventParams} { userName, title } the current user's username and the title of the card + */ + trackBrowseCategoryEvent({ userName, categoryName }: ICategoryContainerTrackEventParams): void { + const baseEventAttrs: IBaseTrackingEvent = { + category: TrackingEventCategory.Entity, + action: CustomTrackingEventName.BrowseAction + }; + const customEventAttrs: ICustomEventData = { + pageKey: PageKey.browseCategory, + eventName: CustomTrackingEventName.BrowseAction, + userName: userName, + target: categoryName, + body: { + actorUrn: userName, + targetUrn: categoryName + } + }; + + this.tracking.trackEvent(baseEventAttrs, customEventAttrs); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/browser/containers/entity-categories.ts b/datahub-web/@datahub/shared/addon/components/browser/containers/entity-categories.ts new file mode 100644 index 0000000000000..6e247b916bbc8 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/browser/containers/entity-categories.ts @@ -0,0 +1,216 @@ +import Component from '@ember/component'; +import { setProperties, set } from '@ember/object'; +import { computed } from '@ember/object'; +import { alias, or } from '@ember/object/computed'; +import { inject as service } from '@ember/service'; +import { task } from 'ember-concurrency'; +import { containerDataSource } from '@datahub/utils/api/data-source'; +import { IBrowsePath } from '@datahub/data-models/types/entity/shared'; +import { ETaskPromise } from '@datahub/utils/types/concurrency'; +import { DataModelEntity } from '@datahub/data-models/constants/entity'; +import { DatasetEntity } from '@datahub/data-models/entity/dataset/dataset-entity'; +import DataModelsService from '@datahub/data-models/services/data-models'; +import { DataModelName } from '@datahub/data-models/constants/entity/index'; +import { MockEntity } from '@datahub/data-models/entity/mock/mock-entity'; +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/browser/containers/entity-categories'; +import { layout } from '@ember-decorators/component'; + +/** + * Describes the properties that are returned from the BrowseEntityCategory route's model hook + * if the current entity is implemented using the BaseEntity data model class, then properties + * are augmented with attributes to enable proper rendering + * @interface IBrowseEntityModel + */ +export interface IBrowseEntityModel { + // Entity display name used in breadcrumbs component + displayName?: string; + // category and prefix string values + segments?: Array; + entity: DataModelName | typeof MockEntity.displayName; + page: number; + size: number; + // References the DataModelEntity for the current entity being browsed + showHierarchySearch?: boolean; +} + +/** + * Defines the container component to fetch nodes for a given entity constrained by category, or prefix, etc + * For example fetch the elements for a Ump metric where the parameter is a bucket + * @export + * @class EntityCategoriesContainer + * @extends {Component} + */ +@layout(template) +@containerDataSource('getEntityCategoriesNodesTask', ['params']) +export default class EntityCategoriesContainer extends Component { + /** + * Route / url properties to redirect to data system + */ + params?: IBrowseEntityModel; + + /** + * Contains the information about the actual path like counts, folders, entities + */ + browsePath?: IBrowsePath; + + /** + * References the current DataModelEntity class if applicable + */ + entityType?: DataModelEntity; + + /** + * Data Models Service will be used to load the right model for an entity type to fetch + * the browsing path. + */ + @service('data-models') + dataModels!: DataModelsService; + + /** + * Total count of entities inside groups + */ + @computed('browsePath') + get totalNumEntities(): number { + const { browsePath } = this; + const { totalNumEntities = 0 } = browsePath || {}; + return totalNumEntities; + } + + /** + * Total entities in this group + */ + @computed('browsePath') + get entitiesPaginationCount(): number { + const { browsePath } = this; + const { entitiesPaginationCount = 0 } = browsePath || {}; + return entitiesPaginationCount; + } + /** + * Flag indicated if the browser component to perform a search within a category should be visible in the ui or hidden + */ + @alias('params.showHierarchySearch') + showSearchWithinHierarchy?: boolean; + + /** + * should show category as tiles instead of list of items + */ + showAsTiles = false; + + /** + * Loading state for the entities + */ + isLoadingEntitiesList = false; + + /** + * Loading state for the groups + */ + isLoadingGroupsList = false; + + /** + * Since there are two lists, we will show the spinner until + * both lists are done + */ + @or('isLoadingGroupsList', 'isLoadingEntitiesList') + isLoadingList!: boolean; + + /** + * Current page for element pagination + */ + page = 0; + + /** + * Number of elements to fetch per page + */ + count = 100; + + /** + * Invokes 'initialLoad' with async syntax instead of relying on generators since + * ember-concurrency syntax is not settle and can be problematic. + */ + @(task(function*(this: EntityCategoriesContainer): IterableIterator> { + yield this.initialLoad(); + }).restartable()) + getEntityCategoriesNodesTask!: ETaskPromise; + + /** + * Initial load to request entities or categories based on a prefix or category if available + */ + async initialLoad(): Promise { + const { segments = [], entity } = this.params || {}; + const entityType = this.dataModels.getModel(entity as DataModelName); + setProperties(this, { + entityType, + // NOTE: for now there is no straight forward way to specify this in the render props, + // since the future of this is unknown, hardcoding this logic here. Feel free to refractor + // this into render props. + showAsTiles: (!segments || segments.length === 0) && entity === DatasetEntity.displayName, + isLoadingEntitiesList: true, + isLoadingGroupsList: true, + page: 0 + }); + set(this, 'browsePath', await this.fetchBrowsePath()); + } + + /** + * Will fetch and return data for current page + */ + async fetchBrowsePath(): Promise { + const { segments = [] } = this.params || {}; + const { page, count, entityType } = this; + + return entityType && (await entityType.readCategories(segments, { page, count })); + } + + /** + * Given page and number of items per page, it will calculate + * the amount of items that we have fetched so far. + */ + get numFetchedSoFar(): number { + const { page, count } = this; + return (page + 1) * count; + } + + /** + * Whether there is more items to fetch from BE or not + */ + get hasMoreItems(): boolean { + const { entitiesPaginationCount, numFetchedSoFar } = this; + return numFetchedSoFar < entitiesPaginationCount; + } + + /** + * Closure action for big-list onFinished for entity list + * + * it will return additional items to load into the list + */ + async onFinishedLoadingEntities(): Promise { + const { hasMoreItems, page } = this; + if (hasMoreItems) { + set(this, 'page', page + 1); + const browsePath = await this.fetchBrowsePath(); + if (browsePath && browsePath.entities.length > 0) { + return browsePath.entities; + } + } + + set(this, 'isLoadingEntitiesList', false); + return []; + } + + /** + * Closure action for big-list onFinished for entity list + */ + onFinishedLoadingGroups(): void { + set(this, 'isLoadingGroupsList', false); + } + + /** + * Closure action for big-list onFinished for tiles (no entities should exist in this list) + */ + onFinishedLoadingTiles(): void { + setProperties(this, { + isLoadingEntitiesList: false, + isLoadingGroupsList: false + }); + } +} diff --git a/datahub-web/packages/data-portal/app/components/browser/entity-breadcrumbs.ts b/datahub-web/@datahub/shared/addon/components/browser/entity-breadcrumbs.ts similarity index 93% rename from datahub-web/packages/data-portal/app/components/browser/entity-breadcrumbs.ts rename to datahub-web/@datahub/shared/addon/components/browser/entity-breadcrumbs.ts index 5c5ca8973f242..1a72f6b321696 100644 --- a/datahub-web/packages/data-portal/app/components/browser/entity-breadcrumbs.ts +++ b/datahub-web/@datahub/shared/addon/components/browser/entity-breadcrumbs.ts @@ -1,6 +1,8 @@ import Component from '@ember/component'; -import { classNames } from '@ember-decorators/component'; +import { classNames, layout } from '@ember-decorators/component'; import { computed } from '@ember/object'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/browser/entity-breadcrumbs'; /** * Describes the interface for properties in a breadcrumb node @@ -51,6 +53,7 @@ const bakeBreadcrumbs = (...entityHierarchySegments: Array): Trail => { * @class BrowserEntityBreadcrumbs * @extends {Component} */ +@layout(template) @classNames('nacho-breadcrumbs-container') export default class BrowserEntityBreadcrumbs extends Component { /** @@ -58,14 +61,14 @@ export default class BrowserEntityBreadcrumbs extends Component { * @type {number} * @memberof BrowserEntityBreadcrumbs */ - maxTrailLength: number = 8; + maxTrailLength = 8; /** * External attribute for the category segment value in the url for browse.entity.category * @type {string} * @memberof BrowserEntityBreadcrumbs */ - categoryPath: string = ''; + categoryPath = ''; /** * List of entity category segments used to generate the breadcrumbs, this is typically diff --git a/datahub-web/@datahub/shared/addon/components/browser/entity-breadcrumbs/breadcrumb-error.hbs b/datahub-web/@datahub/shared/addon/components/browser/entity-breadcrumbs/breadcrumb-error.hbs new file mode 100644 index 0000000000000..f9426fcd1f1ab --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/browser/entity-breadcrumbs/breadcrumb-error.hbs @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/datahub-web/@datahub/shared/addon/components/browser/entity-breadcrumbs/crumb.ts b/datahub-web/@datahub/shared/addon/components/browser/entity-breadcrumbs/crumb.ts new file mode 100644 index 0000000000000..3bca31f7f02fe --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/browser/entity-breadcrumbs/crumb.ts @@ -0,0 +1,17 @@ +import Component from '@ember/component'; +import { tagName, classNames, layout } from '@ember-decorators/component'; +import { IBreadcrumb } from '@datahub/shared/components/browser/entity-breadcrumbs'; +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/browser/entity-breadcrumbs/crumb'; + +@layout(template) +@tagName('li') +@classNames('nacho-breadcrumbs__crumb') +export default class BrowserEntityBreadcrumbsCrumb extends Component { + /** + * The IBreadcrumb properties to be rendered for this component + * @type {IBreadcrumb} + * @memberof BrowserEntityBreadcrumbsCrumb + */ + crumb?: IBreadcrumb; +} diff --git a/datahub-web/packages/data-portal/app/components/browser/search-within-hierarchy.ts b/datahub-web/@datahub/shared/addon/components/browser/search-within-hierarchy.ts similarity index 88% rename from datahub-web/packages/data-portal/app/components/browser/search-within-hierarchy.ts rename to datahub-web/@datahub/shared/addon/components/browser/search-within-hierarchy.ts index f3099a2de2b8b..4a8d0deac9d3f 100644 --- a/datahub-web/packages/data-portal/app/components/browser/search-within-hierarchy.ts +++ b/datahub-web/@datahub/shared/addon/components/browser/search-within-hierarchy.ts @@ -1,8 +1,10 @@ import Component from '@ember/component'; -import { tagName } from '@ember-decorators/component'; +import { tagName, layout } from '@ember-decorators/component'; import { computed } from '@ember/object'; import { DataModelEntity } from '@datahub/data-models/constants/entity'; import { IDynamicLinkNode } from '@datahub/utils/types/vendor/dynamic-link'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/browser/search-within-hierarchy'; /** * Indicates the total number of entities within a category and on user interaction @@ -11,6 +13,7 @@ import { IDynamicLinkNode } from '@datahub/utils/types/vendor/dynamic-link'; * @class BrowserSearchWithinHierarchy * @extends {Component} */ +@layout(template) @tagName('') export default class BrowserSearchWithinHierarchy extends Component { /** @@ -21,7 +24,7 @@ export default class BrowserSearchWithinHierarchy extends Component { /** * Count of entities within the related browse hierarchy */ - count: number = 0; + count = 0; /** * Browse hierarchy currently being viewed, represented by the list of segments diff --git a/datahub-web/@datahub/shared/addon/components/buttons/binary-toggle-button.ts b/datahub-web/@datahub/shared/addon/components/buttons/binary-toggle-button.ts new file mode 100644 index 0000000000000..f4fdcf9325b1d --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/buttons/binary-toggle-button.ts @@ -0,0 +1,105 @@ +import Component from '@glimmer/component'; +import { noop } from 'lodash'; +import { action } from '@ember/object'; + +interface IButtonsBinaryToggleButtonArgs { + // Click event handler for the affirmation button + onAffirm?: () => void; + // Click event handler for the deny button + onDeny?: () => void; + // Click event handler to reverse a previous affirmation or denial action + onUndo?: () => unknown; + // Current state of the clicked state button + state?: State; + // Text labels for each state intended to be rendered when the user has clicked a state + stateLabels?: Record; + // Help / tooltip text for the affirmation button + affirmTitle?: string; + // Help / tooltip text for the deny button + denyTitle?: string; + // Flag indicating the affirm button should be disabled from interaction + affirmDisabled?: boolean; + // Flag indicating the deny button should be disabled from interaction + denyDisabled?: boolean; +} + +/** + * State flags mapping to each button in the toggle + * @export + * @enum {string} + */ +export enum State { + affirm = 'affirm', + deny = 'deny' +} + +// BEM block for the component +const baseClass = 'binary-toggle'; + +// BEM element selector for the component button element +export const buttonClass = `${baseClass}-button`; + +/** + * Groups two svg icon buttons as a binary operation between the two buttons and renders a button to + * reverse the state change when the action buttons are interacted with + * @export + * @class ButtonsBinaryToggleButton + * @extends {Component} + */ +export default class ButtonsBinaryToggleButton extends Component { + /** + * Component reference for template accessibility + */ + baseClass = baseClass; + + /** + * Button class is added to the nested button components + */ + buttonClass = buttonClass; + + /** + * Enum is partially applied to action when user click button in template to distinguish which button + * was clicked while using the same click handler for both + */ + State = State; + + /** + * Resolves the value of the label text when the state of the toggled buttons has changed + * @readonly + */ + get stateLabel(): string | undefined { + const { stateLabels, state } = this.args; + + return stateLabels && state ? stateLabels[state] : undefined; + } + + /** + * Optional class for the resolved state once either of the options has been clicked + * @readonly + */ + get stateClass(): string { + const { state } = this.args; + + return state ? `${this.baseClass}__label--${state}` : ''; + } + + /** + * Handle the click event for either button + * @param {State} stateChange the state flag for the clicked button + */ + @action + onClick(stateChange: State): void { + const { onAffirm = noop, onDeny = noop } = this.args; + stateChange === State.affirm ? onAffirm() : onDeny(); + } + + /** + * Allows the user to reverse the state the button may have transitioned to by invoking the + * external action for undo if supplied + */ + @action + onReverse(): void { + const { onUndo = noop } = this.args; + onUndo(); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/buttons/svg-icon.ts b/datahub-web/@datahub/shared/addon/components/buttons/svg-icon.ts new file mode 100644 index 0000000000000..ee38e1e83f0d6 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/buttons/svg-icon.ts @@ -0,0 +1,43 @@ +import Component from '@glimmer/component'; +import { noop } from 'lodash'; +import { action } from '@ember/object'; + +interface IButtonsSvgIconArgs { + // Alternate / tooltip text content + title?: string; + // An optional class directly targeting the svg image + iconClass?: string; + // Name of the svg icon to render within the context of the button + // This is the file name for the svg image which should be in a directory path + // that is accessible to svg-bar helper, typically @datahub/shared/public/assets/images/svgs/svg + iconName?: string; + // on click handler for handling click events from the button element + onClick?: () => unknown; +} + +// BEM Block class for the component +export const baseClass = 'svg-icon-button'; + +/** + * Renders a button element with an svg image as the label + * Not intended for a textual button but provides the option to render a tooltip when the title argument + * is provided + * @export + * @class ButtonsSvgIcon + * @extends {Component} + */ +export default class ButtonsSvgIcon extends Component { + /** + * Referenced in template + */ + baseClass = baseClass; + + /** + * Invokes the onclick handler if one is provided + */ + @action + onClick(): void { + const { onClick = noop } = this.args; + onClick(); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/change-management/add-change-log-modal.ts b/datahub-web/@datahub/shared/addon/components/change-management/add-change-log-modal.ts new file mode 100644 index 0000000000000..0bd448bed5a17 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/change-management/add-change-log-modal.ts @@ -0,0 +1,438 @@ +import Component from '@glimmer/component'; +import { IAddChangeLogModalProps } from '@datahub/shared/types/change-management/change-log'; +import { action, setProperties, computed } from '@ember/object'; +import { tracked } from '@glimmer/tracking'; +import Changeset from 'ember-changeset'; +import { task } from 'ember-concurrency'; +import { ETask } from '@datahub/utils/types/concurrency'; +import getActorFromUrn from '@datahub/data-models/utils/get-actor-from-urn'; +import { ChangeLog } from '@datahub/shared/modules/change-log'; +import { ValidatorFunc } from 'ember-changeset/types'; +import { validateLength } from 'ember-changeset-validations/validators'; +import lookupValidator from 'ember-changeset-validations'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; +import { OwnerUrnNamespace } from '@datahub/data-models/constants/entity/dataset/ownership'; + +/** + * Interface meant for assembling the different recipient types' count + */ +interface IEmailRecipientsCount { + // Number of followers for the entity + followers: number; + // Number of owners for the entity + owners: number; + // Optional individual recipients being added on a per-email/notification basis + individualRecipients: number; + // Option group distribution lists being added on a per-email basis + distributionLists: number; +} + +interface IAddChangeLogModalArgs { + // External handler method for handling the closing of the modal + onCloseModal: () => void; + // External handler method for handling the saving of data from the modal + onSave: (savedInfo: IAddChangeLogModalProps) => Promise; + // External handler method for handling the sending of email for a `changeLog` which was previously only saved to the audit log + onSendEmailOnly?: ( + recipients: Array + ) => Promise; + + // The followers of the entity being supplied in as the recipients + recipients?: Array; + + // Optional argument to indicate if the modal needs to handle the sending of email for an existing log + isSendingEmailOnly?: boolean; + + // Optional argument which is populated with a changelog when we want to display an existing log as part of the modal + currentChangeLog?: ChangeLog; + + // number of owners in the the parent entity + ownersCount: number; +} + +/** + * Each enum value represents a valid state that the modal might be in. + * Since the modal is wizard based, each state represents different UI element values and user actions the states change + */ +enum ModalState { + // The state where the modal is meant to save the information into the `Audit Log` only + SaveOnly = 'save', + // The state where the modal saves the infomration to the `Audit Log` and sends out an email as a notification + SaveAndNotify = 'saveandNotify', + // The temporary state of transition between `SaveOnly` and `SaveAndNotify` + Transition = 'transition', + // The state where the modal is in charge of sending the email for an existing change log + EmailOnly = 'email' +} + +/** + * Types of optional recipients + */ +enum RecipientType { + IndividualRecipient = 'individualRecipient', + DistributionList = 'distributionList' +} + +// Minimum number of characters required for Subject and Content to create the log +const MIN_CHAR_SUBJECT_AND_CONTENT = 10; +// Maximum number of characters allowed for change-log subject +const MAX_CHAR_SUBJECT = 240; +// Maximum number of characters allowed for change-log content +const MAX_CHAR_CONTENT = 2500; +// The className associated with this component declared for styling purposes in the template +export const baseModalClass = 'add-change-log'; + +/** + * Presentational component that is in charge of displaying a form + * letting the users fill in content required to generate a new ChangeLog. + * + * Owners have the option of either saving the changeLog to the AuditLog only, + * or additionally also send it out to a group of recipients ( followers). + * + * It performs the following functions + * 1) Provides a way for Owners to enter details about a new change log that they wish to create + * 2) Allows them to save / send an email to recipients + * 3) Provides a preview of the notification that is to be sent out and allows them to add additional recipients if needed. + * 4) Communicates the final information containing all the metadata required back to a container. + */ +export default class AddChangeLogModal extends Component { + /** + * Attached to component for easier access from template. + */ + baseModalClass = baseModalClass; + + /** + * Attached to component for easier access from template + */ + minCharSubjectAndContent: number = MIN_CHAR_SUBJECT_AND_CONTENT; + + /** + * Attached to component for easier access from template. + */ + maxCharSubject: number = MAX_CHAR_SUBJECT; + + /** + * Attached to component for easier access from template. + */ + maxCharContent: number = MAX_CHAR_CONTENT; + + recipientType: Record = { + individualRecipient: RecipientType.IndividualRecipient, + distributionList: RecipientType.DistributionList + }; + + /** + * The list of Additional recipients that a user chooses to add in the preview stage. + */ + @tracked + individualRecipients: Array = []; + + /** + * The list of Group distribution lists that a user chooses to add in the preview stage. + */ + @tracked + distributionLists: Array = []; + + /** + * Property representing the current state of the Modal + */ + currentModalState: ModalState = this.args.isSendingEmailOnly ? ModalState.EmailOnly : ModalState.SaveOnly; + + /** + * The text for the `Save` button of the modal + */ + saveOrNextButtonText = this.args.isSendingEmailOnly ? 'Next' : 'Save'; + + /** + * Flag indicating if the modal is in Preview mode or not + */ + @tracked + isDisplayingPreviewModal = false; + + /** + * Flag indicating if the modal is in the sending email only mode or not + */ + @tracked + isSendingEmailOnly = this.args.isSendingEmailOnly || false; + + /** + * Ember changeset Validations for the subject and content text input fields + */ + validators(): Record> { + return { + subject: [validateLength({ min: 10 })], + content: [validateLength({ min: 10 })] + }; + } + + /** + * A hash of editable working properties representing the local state of this component + */ + @tracked + editableChangeset: Changeset = new Changeset( + this.defaultChangeLogModalProps, + lookupValidator(this.validators()), + this.validators() + ); + + /** + * Returns the default editable properties for the modal. + * Serves as the starting model for the ChangeSet + * Handy for resetting the modal upon cancel or a successful submission. + */ + get defaultChangeLogModalProps(): IAddChangeLogModalProps { + return { + subject: '', + content: '', + sendEmail: false, + recipients: this.args.recipients || [] + }; + } + + /** + * Object that breaks down total email-recipients count into 4 categories to better communicate + * the audience groups to the user as well as the number in each group. + * + * Note : For distribution lists we only display the number of groups, not the number of people in each group. + */ + @computed('individualRecipients', 'distributionLists') + get emailRecipientsCount(): IEmailRecipientsCount { + const { recipients = [], ownersCount = 0 } = this.args; + return { + followers: Math.max(recipients.length - ownersCount, 0), + owners: ownersCount, + individualRecipients: this.individualRecipients.length, + distributionLists: this.distributionLists.length + }; + } + + /** + * Count of all recipients together + */ + @computed('emailRecipientsCount') + get totalRecipientsCount(): number { + return ( + this.emailRecipientsCount.followers + + this.emailRecipientsCount.individualRecipients + + this.emailRecipientsCount.owners + ); + } + + /** + * Returns a boolean indicating if the `Save` button is disabled incase the user enters + * characters less than the minimum required for either Subject or Content + */ + get isSaveDisabled(): boolean { + // We enable the save if it the State is `EmailOnly` + if (this.currentModalState === ModalState.EmailOnly) { + return false; + } + return !( + this.editableChangeset.get('subject').length >= this.minCharSubjectAndContent && + this.editableChangeset.get('content').length >= this.minCharSubjectAndContent + ); + } + + /** + * Formatting logic for parsing the recipients names into a meaningful human format that can be displayed onto the template. + * + * We display the first 5 followers in a Capitalized fashion then denote how many more are left (if any) with the `x more` notation. + */ + get recipientsDisplayText(): string { + const recipients = this.editableChangeset.get('recipients'); + const numberOfRecipients = this.editableChangeset.get('recipients')?.length || 0; + const numberOfHiddenRecipients = numberOfRecipients - 5; + + if (numberOfRecipients > 0) { + const baseDisplayText = + recipients + ?.slice(0, 5) + .map(recipient => getActorFromUrn((recipient as { userUrn?: string }).userUrn || '')) + .join(', ') || ''; + + const additionalDisplayText = numberOfRecipients > 5 ? ` and ${numberOfHiddenRecipients} more` : ''; + return baseDisplayText.concat(additionalDisplayText); + } + return 'No followers found, email will be sent to owners only'; + } + + /** + * Assembly logic for the preview mode's title text, which is dynamic based on how many individual recipients and DLs are added when creating a new log. + */ + get titleText(): string { + const { emailRecipientsCount, totalRecipientsCount } = this; + const baseTitleText = `Sending Email to ${totalRecipientsCount} individuals`; + const additionalTitleText = + emailRecipientsCount.distributionLists > 0 ? ` and ${emailRecipientsCount.distributionLists} group(s)` : ''; + return baseTitleText.concat(additionalTitleText); + } + + /** + * The method responsible for setting all the local properties for each state + */ + modalStateHandler(state: ModalState): void { + switch (state) { + case ModalState.SaveAndNotify: + setProperties(this, { + saveOrNextButtonText: 'Save log & send Email', + currentModalState: ModalState.SaveAndNotify, + isDisplayingPreviewModal: true + }); + break; + case ModalState.Transition: + setProperties(this, { + saveOrNextButtonText: 'Next', + currentModalState: ModalState.Transition, + isDisplayingPreviewModal: false + }); + this.editableChangeset.set('sendEmail', true); + break; + case ModalState.SaveOnly: + setProperties(this, { + saveOrNextButtonText: 'Save', + currentModalState: ModalState.SaveOnly, + isSendingEmailOnly: false, + isDisplayingPreviewModal: false + }); + this.editableChangeset.set('sendEmail', false); + break; + case ModalState.EmailOnly: + setProperties(this, { + saveOrNextButtonText: 'Next', + currentModalState: ModalState.EmailOnly, + isDisplayingPreviewModal: false, + isSendingEmailOnly: true + }); + this.editableChangeset.set('sendEmail', true); + break; + } + } + + /** + * Async task responsible for handing off the recipients to the container to send email. + */ + @(task(function*(this: AddChangeLogModal): IterableIterator> { + if (this.args.onSendEmailOnly) { + const recipients = this.constructRecipients(); + ((yield this.args.onSendEmailOnly(recipients)) as unknown) as void; + } + }).drop()) + sendEmailOnlyTask!: ETask; + + /** + * Async task responsible for handing off the user entered information to the container component + */ + @(task(function*(this: AddChangeLogModal): IterableIterator> { + const subject = this.editableChangeset.get('subject'); + const content = this.editableChangeset.get('content'); + const sendEmail = this.editableChangeset.get('sendEmail'); + const recipients = this.constructRecipients(); + ((yield this.args.onSave({ subject, content, sendEmail, recipients })) as unknown) as void; + this.onResetModal(); + }).restartable()) + saveChangeLogTask!: ETask; + + /** + * Local helper method that constructs recipients. + * + * It handles both optional recipients and incoming recipients from the container + */ + constructRecipients(): Array { + const recipients = this.editableChangeset.get('recipients') || []; + // construct namespace of optional individual recipients if any + const individualRecipients = this.individualRecipients.map(individualRecipient => ({ + userUrn: PersonEntity.urnFromUsername(individualRecipient) + })); + // construct namespace of optional distribution lists if any + const distributionLists = this.distributionLists.map(distributionList => ({ + // TODO : Replace this line with helper from GroupEntity once META-12355 is completed. + groupUrn: `${OwnerUrnNamespace.groupUser}:${distributionList}` + })); + // Append the optional individual recipients to the main recipients + return [...recipients, ...individualRecipients, ...distributionLists]; + } + + /** + * Closes the modal and resets the values of the `editedProps` to default + */ + @action + onResetModal(): void { + this.editableChangeset.rollback(); + this.modalStateHandler(ModalState.SaveOnly); + this.args.onCloseModal(); + } + + /** + * Transitions state over to SaveAndNotify and also performs calling of the `SaveChangeLogTask` + */ + @action + async handleSaveOrNextClick(): Promise { + const { currentModalState } = this; + if (currentModalState === ModalState.Transition || currentModalState === ModalState.EmailOnly) { + this.modalStateHandler(ModalState.SaveAndNotify); + } else if (currentModalState === ModalState.SaveAndNotify && this.isSendingEmailOnly) { + await this.sendEmailOnlyTask.perform(); + this.onResetModal(); + } else { + await this.saveChangeLogTask.perform(); + this.onResetModal(); + } + } + + /** + * Handles the modal state when `onSendEmail` button is selected + */ + @action + onSendEmailSelected(): void { + this.currentModalState === ModalState.SaveOnly + ? this.modalStateHandler(ModalState.Transition) + : this.modalStateHandler(ModalState.SaveOnly); + } + + /** + * Function which handles the `back` click in the preview , transitions the ModalState over to `Transition`. + * Results in the fields being populated with current values that the user has entered + */ + @action + onBackToAddModal(): void { + this.modalStateHandler(ModalState.Transition); + } + + /** + * Method that appends a new recipient to the `individualRecipients` or the `distributedLists` property + * + * @param recipientName The LDAP/name of a recipient being added in by the user. + * @param recipientType The type of the recipient being added + */ + @action + addRecipient(recipientType: string, recipientName: string): void { + switch (recipientType) { + case RecipientType.DistributionList: + this.distributionLists.addObject(recipientName); + break; + case RecipientType.IndividualRecipient: + this.individualRecipients.addObject(recipientName); + break; + } + } + + /** + * Method that removes an individual recipient or distributed list name from the Optional fields of recipients + * + * @param valueIndex The index of the recipient that is to be removed + * @param recipientType The type of the recipient that is to be removed + */ + @action + removeRecipient(recipientType: string, valueIndex: number): void { + switch (recipientType) { + case RecipientType.DistributionList: + const distributionList = this.distributionLists[valueIndex]; + this.distributionLists.removeObject(distributionList); + break; + case RecipientType.IndividualRecipient: + const recipient = this.individualRecipients[valueIndex]; + this.individualRecipients.removeObject(recipient); + break; + } + } +} diff --git a/datahub-web/@datahub/shared/addon/components/change-management/change-log-search-provider.ts b/datahub-web/@datahub/shared/addon/components/change-management/change-log-search-provider.ts new file mode 100644 index 0000000000000..6f24b0bbd89f8 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/change-management/change-log-search-provider.ts @@ -0,0 +1,60 @@ +import Component from '@glimmer/component'; +import { IEntityRenderCommonPropsSearch } from '@datahub/data-models/types/search/search-entity-render-prop'; +import { DataModelName, DataModelEntityInstance, DataModelEntity } from '@datahub/data-models/constants/entity'; +import { DataConstructChangeManagementEntity } from '@datahub/data-models/entity/data-construct-change-management/data-construct-change-management-entity'; +import { inject as service } from '@ember/service'; +import DataModelsService from '@datahub/data-models/services/data-models'; +import { alias } from '@ember/object/computed'; + +interface IChangeLogSearchProviderArgs { + /** + * The entity which resides as a property on the `data-construct-change-management` entity under `OwningEntity` + */ + entity: DataModelEntityInstance; +} + +/** + * A Dummy component that has no significant logic around API calls or data transformation but serves + * as a wrapper for providing the required search configs and params. + */ +export default class ChangeLogSearchProvider extends Component { + /** + * Search config being passed over to leverage existing search container + */ + searchConfig?: IEntityRenderCommonPropsSearch = { + attributes: [], + showFacets: false + }; + + /** + * TODO: [META-11886] Investigate Pagination of results in ChangeLogTable + * Number of search results we want to display in a single page. + */ + pageSize = 200; + + /** + * The search keyword being provided to dictate what aspect of the entity we search by + * Here we escape the double quotes with a backslash to ensure encoding meets the search query requirements + */ + keyword = encodeURIComponent(`owningEntity:\\"${this.args.entity.urn}\\"`); + + /** + * Get the entity whose display name we care about and whose instances we are searching for + */ + get changeManagementEntity(): DataModelEntity { + return this.dataModels.getModel('data-construct-change-management'); + } + + /** + * Injection of the data models service to access the general dataConstructChangeManagement entity class + */ + @service('data-models') + dataModels!: DataModelsService; + + /** + * The displayName of the entity whose instances we are searching for. + * The category to narrow/ filter search results + */ + @alias('changeManagementEntity.displayName') + entityDisplayName: DataModelName = DataConstructChangeManagementEntity.displayName; +} diff --git a/datahub-web/@datahub/shared/addon/components/change-management/change-log-table.ts b/datahub-web/@datahub/shared/addon/components/change-management/change-log-table.ts new file mode 100644 index 0000000000000..7baa60719adb9 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/change-management/change-log-table.ts @@ -0,0 +1,94 @@ +import Component from '@ember/component'; +import { noop } from 'lodash'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/change-management/change-log-table'; +import { layout } from '@ember-decorators/component'; +import { INachoTableConfigs } from '@nacho-ui/table/types/nacho-table'; +import { ChangeLog } from '@datahub/shared/modules/change-log'; +import { IConfigurator } from '@datahub/shared/types/configurator/configurator'; +import { computed } from '@ember/object'; +import { inject as service } from '@ember/service'; + +export const baseTableClass = 'change-log-table'; +export const tableTitle = 'Change Log'; + +/** + * Presentational component responsible for displaying the ChangeLogs associated with an entity in a Tabular format. + * The logs collectively form the `Audit Log` . For more info - refer to `go/datahub/changemanagementdd` + * + * The component uses NachoTable behind the scenes and provides functionality to + * 1: Add a new log + * 2: View Details of an existing log + * 3: Send out an E-mail for a log that has not been published + */ +@layout(template) +export default class ChangeLogTable extends Component { + /** + * Styling classname for the table + */ + baseTableClass = baseTableClass; + + /** + * Title of the table + */ + tableTitle = tableTitle; + + /** + * The Change logs being passed in from the container that needs to be displayed in the table + */ + changeLogs: Array = []; + + /** + * Flag indicating if current user can only read the Audit log or has rights to create a new one / send out notifications as well. + */ + readOnly = true; + + /** + * Tooltip text that provides user with contextual info around change management + */ + tooltipText = 'An audit log of all the changes logged by owners. Click here to learn more about Change Management'; + + /** + * Configuration properties to render the changeLogs present as a table + */ + tableConfigs: INachoTableConfigs<{}> = { + labels: ['createdBy, dateAdded, type, actions'], + useBlocks: { body: true, footer: true }, + headers: [ + { title: 'Created by', className: `${baseTableClass}__created-by` }, + { title: 'Date Added', className: `${baseTableClass}__date` }, + { title: 'Subject', className: `${baseTableClass}__subject` }, + { title: 'Notification Status', className: `${baseTableClass}__notification-status` }, + { title: '', className: `${baseTableClass}__actions` } + ] + }; + + /** + * Application configurator is used to extract the changeManagement link from wikiLinks config object + */ + @service + configurator!: IConfigurator; + + /** + * Reference to the Wiki link help resource for Change Management + */ + @computed('configurator') + get changeManagementWiki(): string { + return this.configurator.getConfig('wikiLinks').changeManagement || ''; + } + + /** + * External action handler when a new ChangeLog needs to be added + */ + onAddLog: () => void = noop; + + /** + * Placeholder for external action handler that is invoked when "View Detail" is clicked + */ + showChangeLogDetail: (id: number) => void = noop; + + /** + * Placeholder for external action handler that is invoked when "Send Email" is clicked + */ + onSendEmail: (id: number) => void = noop; +} diff --git a/datahub-web/@datahub/shared/addon/components/change-management/containers/change-log.ts b/datahub-web/@datahub/shared/addon/components/change-management/containers/change-log.ts new file mode 100644 index 0000000000000..98c91a92e2631 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/change-management/containers/change-log.ts @@ -0,0 +1,377 @@ +import Component from '@ember/component'; +import CurrentUser from '@datahub/shared/services/current-user'; +import { inject as service } from '@ember/service'; +import { alias, map } from '@ember/object/computed'; +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/change-management/containers/change-log'; +import { layout } from '@ember-decorators/component'; +import { task } from 'ember-concurrency'; +import { action, set, setProperties, computed } from '@ember/object'; +import { IAddChangeLogModalProps } from '@datahub/shared/types/change-management/change-log'; +import { getChangeLog, createChangeLog, updateChangeLog } from '@datahub/shared/api/change-management/change-log'; +import { ChangeLog, IChangeLogProperties } from '@datahub/shared/modules/change-log'; +import { + transformChangeLogDetailResponse, + constructChangeLogContent, + transformFollowersIntoRecipients, + transformChangeLogIntoResponse +} from '@datahub/shared/utils/change-management'; +import { ETask, ETaskPromise } from '@datahub/utils/types/concurrency'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { containerDataSource } from '@datahub/utils/api/data-source'; +import { IDataModelEntitySearchResult, ISearchDataWithMetadata } from '@datahub/data-models/types/entity/search'; +import { DataConstructChangeManagementEntity } from '@datahub/data-models/entity/data-construct-change-management/data-construct-change-management-entity'; +import { singularize } from 'ember-inflector'; +import { noop } from 'lodash'; +import { IConfigurator } from '@datahub/shared/types/configurator/configurator'; +import Notifications from '@datahub/utils/services/notifications'; +import { NotificationEvent } from '@datahub/utils/constants/notifications'; +import DataModelsService from '@datahub/data-models/services/data-models'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; + +/** + * Container component that handles fetching of Data ( Followers , Search results ) + * Massages them appropriately , instantiates the change log objects and passes required presentational information over to the children. + */ +@layout(template) +@containerDataSource('getContainerDataTask', ['entity', 'results']) +export default class ChangeLogContainer extends Component { + /** + * Injects the config service + */ + @service + configurator!: IConfigurator; + + /** + * Reference to the app notification service. Users are notified on fetching of changeLog detail and creation of a new changeLog + */ + @service + notifications!: Notifications; + + /** + * Reference to the data models service in order to access the proper entity for our current user + */ + @service + dataModels!: DataModelsService; + + /** + * The data entity that gives context to this container regarding the change logs + * A Passed in property from parent + */ + entity?: DataModelEntityInstance; + + /** + * Flag indicating if a user is currently adding a new change log. + */ + isAddingChangeLog = false; + + /** + * Flag indicating if a user is currently viewing change log detail info + */ + isViewingChangeLog = false; + + /** + * Flag indicating if a user is currently sending email for a previously unsent change log + */ + isSendingEmailOnly = false; + + /** + * Current Changelog whose detail info is being viewed + */ + currentChangeLog?: ChangeLog; + + /** + * A list of users that will receive notifications regarding this entity if an owner wishes to publish a changelog. + */ + recipients: Array = []; + + /** + * The search results containing all the change logs that belong to this entity + * A Passed in property from parent + */ + + results?: IDataModelEntitySearchResult>; + + /** + * The owners for the entity + */ + @computed('entity.owners') + get owners(): Array { + return this.entity?.owners || []; + } + + /** + * Constructs a map of userNames of each owner + */ + @map('owners', function(this: ChangeLogContainer, owner: Com.Linkedin.Common.Owner): string { + return owner.owner; + }) + ownerUserNames!: Array; + + /** + * Returns if the currently logged in user is an enlisted owner or not + */ + @computed('entity.owners') + get isCurrentUserAnOwner(): boolean { + return this.ownerUserNames.includes(this.username || ''); + } + + /** + * Converts the array of usernames into an array of recipients + */ + @computed('entity.owners') + get ownersAsRecipients(): Array { + const { ownerUserNames, dataModels } = this; + const PersonEntityClass = dataModels.getModel(PersonEntity.displayName); + return ownerUserNames.map(userName => { + return { + userUrn: PersonEntityClass.urnFromUsername(userName) + }; + }); + } + + /** + * Sorts the change log responses based on the `lastModified` field + */ + @computed('results') + get sortedResultResponses(): Array { + const { results } = this; + const dataArray = results?.data || []; + const dataEntities: Array = dataArray.mapBy('data'); + const resultResponses: Array = dataEntities.mapBy( + 'entity' + ); + return resultResponses.sort((responseA, responseB) => responseB.lastModified.time - responseA.lastModified.time); + } + + /** + * Gets the flag guard for showing change management related feature components + * @default false defaulted to not show the feature + */ + @computed('configurator.showDataConstructChangeManagement') + get showDataConstructChangeManagement(): boolean { + const { configurator } = this; + return ( + configurator && configurator.getConfig('showDataConstructChangeManagement', { useDefault: true, default: false }) + ); + } + + /** + * A list of all the changeLogs that are being handled / displayed on the UI side. + * This is the massaged / extracted version of the `results` ( the search response) + * + * The mapping logic extracts the response , transforms it into a `ChangeLog` object that presentational components can understand. + */ + @map('sortedResultResponses', function( + this: ChangeLogContainer, + sortedResultResponse: Com.Linkedin.DataConstructChangeManagement.DataConstructChangeManagement + ): ChangeLog | void { + return new ChangeLog(transformChangeLogDetailResponse(sortedResultResponse)); + }) + changeLogs!: Array; + + /** + * References the CurrentUser service + */ + @service('current-user') + currentUser!: CurrentUser; + + /** + * The current user's username + */ + @alias('currentUser.entity.username') + username?: string; + + /** + * External placeholder method that gets invoked upon a save operation complete + */ + onSaveComplete: () => void = noop; + + /** + * Fetches the change log whose detail is to be shown and opens the modal to display it. + * @param id ID of the change log, whose detail is to be shown + */ + @action + showChangeLogDetail(id: number): void { + const currentChangeLog: ChangeLog | undefined = this.changeLogs.find(changeLog => changeLog.id === id); + set(this, 'currentChangeLog', currentChangeLog); + set(this, 'isViewingChangeLog', true); + } + + /** + * Creates a new `ChangeLog` object by instantiating a native class with properties and appends it to the `changeLogs` list + * @param changeLogResponse + */ + instantiateChangeLog(changeLogResponse: IChangeLogProperties): void { + const changeLog = new ChangeLog(changeLogResponse); + this.changeLogs.pushObject(changeLog); + } + + /** + * Method that extracts the changelog to be sent out and activates the `add-change-log-modal`, so that the user can verify recipients + * + * @param id ID of the changelog whose notification is being sent out + */ + @action + onSendEmail(id: number): void { + const currentChangeLog: ChangeLog | undefined = this.changeLogs.find(changeLog => changeLog.id === id); + setProperties(this, { + currentChangeLog, + isSendingEmailOnly: true, + isAddingChangeLog: true + }); + } + + /** + * Enables viewing of the Change Log modal + */ + @action + onAddLog(): void { + set(this, 'isAddingChangeLog', true); + } + + /** + * Handles saving of a new changeLog + * @param changeLogInfo All the required info for a new changeLog creation + */ + @action + async onSave(changeLogInfo: IAddChangeLogModalProps): Promise { + //await operation of save + try { + await this.createChangeLog.perform(changeLogInfo); + this.notifications.notify({ + content: 'Successfully created a new Change Log. Your changes will be updated in the table shortly.', + type: NotificationEvent.success + }); + } catch (e) { + this.notifications.notify({ + content: `We could not create a new Change Log. ${e}`, + type: NotificationEvent.error + }); + } + this.onSaveComplete(); + } + + /** + * Handles assimilation of the `currentChangeLog` and `recipients` to be sent to, + * and invokes the task that performs the actual operation. + * + * @param recipients Users who will receive the email for the changeLog + */ + @action + async onSendEmailOnly( + recipients: Array + ): Promise { + const changeLogToBeUpdated: ChangeLog = Object.assign( + {}, + this.currentChangeLog, + { recipients }, + { sendEmail: true } + ); + try { + await this.updateChangeLog.perform(changeLogToBeUpdated); + this.notifications.notify({ + content: 'Notification sent out successfully.', + type: NotificationEvent.success + }); + } catch (e) { + this.notifications.notify({ + content: `We could not send out the notification. ${e}`, + type: NotificationEvent.error + }); + } + this.onSaveComplete(); + } + + /** + * Disables viewing of the Add change log Modal + */ + @action + handleClosingOfAddChangeLogModal(): void { + setProperties(this, { + isAddingChangeLog: false, + isSendingEmailOnly: false + }); + } + + /** + * Disables viewing of the View Change Log modal + */ + @action + handleClosingOfViewChangeLogModal(): void { + set(this, 'isViewingChangeLog', false); + } + + /** + * Container to get the Detail response for a particular Change Management Log + * + * @param id : The identifier of the Change Log + */ + @(task(function*( + id: number + ): IterableIterator> { + return ((yield getChangeLog( + id + )) as unknown) as Com.Linkedin.DataConstructChangeManagement.DataConstructChangeManagement; + }).restartable()) + getChangeLogDetail!: ETask; + + /** + * Task that creates a new changeLog + */ + @(task(function*(this: ChangeLogContainer, changeLogInfo: IAddChangeLogModalProps): IterableIterator> { + const { entity, username } = this; + if (entity && username) { + const urn = entity.urn || ''; + const entityType = singularize(entity.displayName); + const changeLogContent: Com.Linkedin.DataConstructChangeManagement.DataConstructChangeManagementContent = constructChangeLogContent( + changeLogInfo, + username, + urn, + entityType + ); + ((yield createChangeLog(changeLogContent)) as unknown) as void; + } + }).drop()) + createChangeLog!: ETask; + + /** + * Task that updates an existing changeLog + */ + @(task(function*(this: ChangeLogContainer, changeLog: ChangeLog): IterableIterator> { + const { entity, username } = this; + if (entity && username) { + const changeLogResponse = transformChangeLogIntoResponse(changeLog, username); + ((yield updateChangeLog(changeLog.id, changeLogResponse)) as unknown) as void; + } + }).drop()) + updateChangeLog!: ETask; + + /** + * Task defined to get the necessary data for this container. + */ + @(task(function*(this: ChangeLogContainer): IterableIterator> { + const { entity, ownersAsRecipients } = this; + if (entity) { + ((yield entity.readFollows()) as unknown) as Promise; + + // 1. Gather unique recipient urns + const uniqueRecipientUrns = new Set( + [...transformFollowersIntoRecipients(entity.followedByActions), ...ownersAsRecipients].map( + user => (user as { userUrn?: string }).userUrn || '' + ) + ); + + // 2. Construct recipients from the recipient Urns + const recipients: Array = Array.from( + uniqueRecipientUrns + ).map((urn: string) => ({ + userUrn: urn + })); + + // 3 . Set the recipients locally for sending notifications + set(this, 'recipients', recipients); + } + }).drop()) + getContainerDataTask!: ETaskPromise; +} diff --git a/datahub-web/@datahub/shared/addon/components/change-management/read-only-email-content.ts b/datahub-web/@datahub/shared/addon/components/change-management/read-only-email-content.ts new file mode 100644 index 0000000000000..c12a052abf698 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/change-management/read-only-email-content.ts @@ -0,0 +1,23 @@ +import Component from '@glimmer/component'; + +// Styling class name for template +export const baseClass = 'read-only-email-content'; + +interface IReadOnlyEmailContentArgs { + // Category that the email corresponds to + type: Com.Linkedin.DataConstructChangeManagement.Category; + // Subject of the email + subject: string; + // Core content of the email + content: string; + // Optional styling param that maybe injected in + stylingClass?: string; +} + +/** + * Simple presentational component that is meant to display the contents of a email notification + */ +export default class ReadOnlyEmailContent extends Component { + // Styling class that defaults to `baseClass` , optionally might be an input to the component + baseClass = this.args.stylingClass || baseClass; +} diff --git a/datahub-web/@datahub/shared/addon/components/change-management/view-change-log-modal.ts b/datahub-web/@datahub/shared/addon/components/change-management/view-change-log-modal.ts new file mode 100644 index 0000000000000..f00cf408a1e71 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/change-management/view-change-log-modal.ts @@ -0,0 +1,38 @@ +import Component from '@glimmer/component'; +import { ChangeLog } from '@datahub/shared/modules/change-log'; + +// Styling class name for template +export const baseModalClass = 'view-change-log'; + +interface IViewChangeLogModalArgs { + // External handler method for handling the closing of the modal + onCloseModal: () => void; + + // The changeLog being viewed + changeLog: ChangeLog; +} + +/** + * Presentational Component that displays details of a ChangeLog + */ +export default class ViewChangeLogModal extends Component { + /** + * CSS Styling name for easier access in template + */ + baseModalClass = baseModalClass; + + /** + * Getter to check if the Change log was used to send notification or not + */ + get notificationText(): string { + return this.args.changeLog.sendEmail ? 'Sent' : 'Not Sent'; + } + + /** + * Formats the recipients into Displayable text required for the `Audience section of the Modal` + */ + get audienceText(): string { + const recipients = this.args.changeLog.recipients; + return `${recipients?.length || 0} recipients`; + } +} diff --git a/datahub-web/@datahub/shared/addon/components/configurable/containers/entity-feature-configs.ts b/datahub-web/@datahub/shared/addon/components/configurable/containers/entity-feature-configs.ts new file mode 100644 index 0000000000000..f73654a9b398d --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/configurable/containers/entity-feature-configs.ts @@ -0,0 +1,63 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/configurable/containers/entity-feature-configs'; +import { task } from 'ember-concurrency'; +import { layout } from '@ember-decorators/component'; +import { ETaskPromise } from '@datahub/utils/types/concurrency'; +import { readEntityFeatureConfigs } from '@datahub/shared/api/entity-configs'; +import { alias } from '@ember/object/computed'; +import { set } from '@ember/object'; +import { containerDataSource } from '@datahub/utils/api/data-source'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; + +/** + * This container is the data source for requesting entity feature configs + * Renders the yielded components if there are configs for the provided entity @urn and config @target + * + * TODO META-11238: Separate entity feature configs container with configurable feature wrapper + * This container should not contain render logic after being genericized + */ +@layout(template) +@containerDataSource('getContainerDataTask', ['entity', 'targetFeature']) +export default class EntityFeatureConfigsContainer extends Component { + /** + * The entity providing context for the feature configs + */ + entity?: DataModelEntityInstance; + + /** + * The urn of the provided entity used for requesting configs specific to that entity + */ + @alias('entity.urn') + urn?: string; + + /** + * The target feature for which this container is requesting entity configs for + * TODO META-11234: Allow for entity feature configs container to batch for multiple targets + */ + targetFeature = ''; + + /** + * The entity configs used for rendering configurable feature components + * TODO META-11234: Allow for entity feature configs container to batch for multiple targets + * Configs should be a record of configs when there are multiple targets however the current midtier implementation + * only fetches for an appworx-deprecation flag + */ + configs = false; + + /** + * Parent container task to get all data for the container component + */ + @task(function*(this: EntityFeatureConfigsContainer): IterableIterator> { + if (this.urn && this.targetFeature) { + try { + const configs: boolean = ((yield readEntityFeatureConfigs(this.urn, this.targetFeature)) as unknown) as boolean; + + set(this, 'configs', configs); + } catch { + // Do nothing + } + } + }) + getContainerDataTask!: ETaskPromise>; +} diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/composed/user-assistance/help-tooltip-with-link.hbs b/datahub-web/@datahub/shared/addon/components/dynamic-components/composed/user-assistance/help-tooltip-with-link.hbs new file mode 100644 index 0000000000000..068fb73d55cca --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/composed/user-assistance/help-tooltip-with-link.hbs @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/composed/user-assistance/help-tooltip-with-link.ts b/datahub-web/@datahub/shared/addon/components/dynamic-components/composed/user-assistance/help-tooltip-with-link.ts new file mode 100644 index 0000000000000..962134d8261e1 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/composed/user-assistance/help-tooltip-with-link.ts @@ -0,0 +1,76 @@ +import Component from '@glimmer/component'; +import { IDynamicComponentArgs } from '@datahub/shared/types/dynamic-component'; +import { IDynamicComponentsTooltipArgs } from '@datahub/shared/components/dynamic-components/tooltip'; +import { IDynamicComponentsTextArgs } from '@datahub/shared/components/dynamic-components/text'; +import { IDynamicComponentsWikiLinkArgs } from '@datahub/shared/components/dynamic-components/wiki-link'; + +export interface IHelpTooltipWithLinkArgs { + options: { + // The text to show up in the help tooltip + text?: string; + // A key for the wiki link (if we want one) + wikiKey?: string; + // The text for the wiki link (if we want one) + wikiLinkText?: string; + // Trigger on a certain user action + triggerOn?: IDynamicComponentsTooltipArgs['options']['triggerOn']; + // Custom classname for the tooltip + className?: string; + }; +} + +/** + * The help tooltip with link component combines the dynamic components: + * - tooltip + * - icon + * - text + * - wiki link + * In a common pattern that creates a help tooltip. + * This is a shortcut that keeps the compatibility with generic render props but removes a bit of the + * overhead to actually create such a component + * + * @example + * renderProps = { + * options: { + * text: 'Pikachu is an electric pokemon', + * wikiKey: 'pikachu', + * wikiLinkText: 'Learn more', + * triggerOn: 'hover' + * } + * } + */ +export default class HelpTooltipWithLink extends Component { + get tooltipOptions(): IDynamicComponentsTooltipArgs['options'] { + const { text, wikiKey, wikiLinkText, triggerOn } = this.args.options; + const tooltipContent: Array> = []; + + if (text) { + const textContent: IDynamicComponentArgs = { + name: 'dynamic-components/text', + options: { text } + }; + tooltipContent.push(textContent); + } + + if (wikiKey) { + const wikiLinkContent: IDynamicComponentArgs = { + name: 'dynamic-components/wiki-link', + options: { wikiKey, text: wikiLinkText } + }; + tooltipContent.push(wikiLinkContent); + } + + return { + // While the tooltip default is click, we default to hover here since that is the more common + // behavior for help tooltips + triggerOn: triggerOn || 'hover', + triggerComponent: { + name: 'dynamic-components/icon', + options: { icon: 'question-circle', prefix: 'far', className: 'dynamic-tooltip__inline-trigger-icon' } + }, + contentComponents: tooltipContent + }; + } +} diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/header.hbs b/datahub-web/@datahub/shared/addon/components/dynamic-components/header.hbs new file mode 100644 index 0000000000000..f00a3e39e91db --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/header.hbs @@ -0,0 +1,12 @@ +
+
+
+ {{component this.dynamicTextComponent.name options=this.dynamicTextComponent.options}} +
+
+
+ {{#each @options.contentComponents as |contentComponent|}} + {{component contentComponent.name options=contentComponent.options}} + {{/each}} +
+
\ No newline at end of file diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/header.ts b/datahub-web/@datahub/shared/addon/components/dynamic-components/header.ts new file mode 100644 index 0000000000000..a76d9fa90d5d3 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/header.ts @@ -0,0 +1,62 @@ +import Component from '@glimmer/component'; +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; + +const baseStylingClassname = 'dynamic-header'; + +/** + * Interface showcasing the type of arguments that are supplied to this component + */ +export interface IDynamicComponentsHeaderArgs { + options: { + // Styling class provided by consuming component + classname?: string; + // List of core content components + contentComponents: Array; + // Title text of the header + title?: string; + }; +} + +/** + * The purpose of the dynamic header component is to be able to render headers in our generic + * rendering logic, for example, when using render props. + * + * @example + * In render props: + * { + * name: 'dynamic-components/header' + * options: { + * classname: 'charmander', + * title: 'firePokemon', + * contentComponents: [ + * { + * name: 'dynamic-components/tooltip', + * options : { + * triggerOn: 'pokeBall', + * contentComponents: [ + * { + * name: 'dynamic-components/wiki=link' + * options: { .......} + * } + * ] + * } + * ] + * } + * } + * + */ +export default class DynamicComponentsHeader extends Component { + baseStylingClassname = baseStylingClassname; + + /** + * Returns a dynamic text component used for the title of the header + */ + get dynamicTextComponent(): IDynamicComponent { + return { + name: 'dynamic-components/text', + options: { + text: this.args.options.title || '' + } + }; + } +} diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/icon.hbs b/datahub-web/@datahub/shared/addon/components/dynamic-components/icon.hbs new file mode 100644 index 0000000000000..01d6c6a68fd1a --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/icon.hbs @@ -0,0 +1,6 @@ + + diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/icon.ts b/datahub-web/@datahub/shared/addon/components/dynamic-components/icon.ts new file mode 100644 index 0000000000000..1000338b1ffea --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/icon.ts @@ -0,0 +1,25 @@ +import Component from '@glimmer/component'; + +export interface IDynamicComponentsIconArgs { + options: { + // Name of the icon (in accordance with FaIcon component from ember-fontawesome) + icon: string; + // Any custom class(es) we want to add to the icon + className?: string; + // In accordance with ember-fontawesome, we may need a prefix to render a specific icon properly + prefix?: string; + }; +} + +/** + * The purpose of the dynamic icon component is to be able to render a font awesome icon in our + * generic rendering logic, for example, when using render props. + * + * @example + * // In render props: + * { + * name: 'dynamic-components/icon' + * options: { icon: 'question-circle', prefix: 'far' } + * } + */ +export default class DynamicComponentsIcon extends Component {} diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/text.hbs b/datahub-web/@datahub/shared/addon/components/dynamic-components/text.hbs new file mode 100644 index 0000000000000..f55e9990df009 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/text.hbs @@ -0,0 +1,4 @@ +{{!-- Allows us to show a block of text in a method more easily compatible with the dynamic + component rendering process + --}} +{{@options.text}} diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/text.ts b/datahub-web/@datahub/shared/addon/components/dynamic-components/text.ts new file mode 100644 index 0000000000000..c4cc14bd20927 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/text.ts @@ -0,0 +1,21 @@ +import Component from '@glimmer/component'; + +export interface IDynamicComponentsTextArgs { + options: { + // Any plain text string to render + text: string; + }; +} + +/** + * The purpose of the dynamic text component is to be able to render simple text in our generic + * rendering logic, for example, when using render props. + * + * @example + * // In render props: + * { + * name: 'dynamic-components/text' + * options: { text: 'Hello darkness my old friend' } + * } + */ +export default class DynamicComponentsText extends Component {} diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/tooltip.hbs b/datahub-web/@datahub/shared/addon/components/dynamic-components/tooltip.hbs new file mode 100644 index 0000000000000..3324dde2b4635 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/tooltip.hbs @@ -0,0 +1,12 @@ +
+ {{component @options.triggerComponent.name options=@options.triggerComponent.options}} + + {{!-- From ember-tooltips --}} + +
+ {{#each @options.contentComponents as |contentComponent|}} + {{component contentComponent.name options=contentComponent.options}} + {{/each}} +
+
+
diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/tooltip.ts b/datahub-web/@datahub/shared/addon/components/dynamic-components/tooltip.ts new file mode 100644 index 0000000000000..1a076c0901e6e --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/tooltip.ts @@ -0,0 +1,41 @@ +import Component from '@glimmer/component'; +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; + +export interface IDynamicComponentsTooltipArgs { + options: { + // The component that will be placed in the trigger for the tooltip + triggerComponent: IDynamicComponent; + // The event (in accordance with ember-tooltips) that will trigger the tooltip content + triggerOn?: 'click' | 'hover' | 'focus'; + // Any custom class(es) to add to the tooltip component itself + className?: string; + // The component(s) that we want to display in the tooltip content + contentComponents: Array; + }; +} + +/** + * The purpose of the dynamic tooltip component is to be able to render a tooltip in our generic + * rendering logic, for example, when using render props. + * + * @example + * // In render props: + * { + * name: 'dynamic-components/tooltip' + * options: { + * triggerComponent: { + * name: 'dynamic-components/icon', + * options: { icon: 'question-circle', prefix: 'far' } + * }, + * triggerOn: 'hover', + * contentComponents: [ + * { name: 'dynamic-component/text', options: { text: 'Click here to learn more!' } }, + * { + * name: 'dynamic-component/wiki-link', + * options: { wikiKey: 'appHelp' } + * } + * ] + * } + * } + */ +export default class DynamicComponentsTooltip extends Component {} diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/wiki-link.hbs b/datahub-web/@datahub/shared/addon/components/dynamic-components/wiki-link.hbs new file mode 100644 index 0000000000000..cf4bfa05adb0c --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/wiki-link.hbs @@ -0,0 +1,8 @@ + + {{or @options.text this.wikiLink}} + diff --git a/datahub-web/@datahub/shared/addon/components/dynamic-components/wiki-link.ts b/datahub-web/@datahub/shared/addon/components/dynamic-components/wiki-link.ts new file mode 100644 index 0000000000000..865ffde1b2236 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/dynamic-components/wiki-link.ts @@ -0,0 +1,43 @@ +import Component from '@glimmer/component'; +import { inject as service } from '@ember/service'; +import { IConfigurator } from '@datahub/shared/types/configurator/configurator'; + +export interface IDynamicComponentsWikiLinkArgs { + options: { + // The property in the wikiLinks object in the configs that gets us the link we want specifically + wikiKey: string; + // Any text we want to show as the link text (as opposed to the link itself being shown to the user) + text?: string; + // Any custom class(es) we want to show + className?: string; + }; +} + +/** + * The purpose of the dynamic wiki link component is to be able to render a link to our wiki pages + * (a mapping of which exists in the configurator) in our generic rendering logic, for example, + * when using render props. + * + * @example + * // In render props: + * { + * name: 'dynamic-components/wiki-link' + * options: { wikiKey: 'appHelp', text: 'Learn more' } + * } + */ +export default class DynamicComponentsWikiLink extends Component { + /** + * Injects the configurator service so that we can access the mapping of wiki links we received + * from our configs + */ + @service + configurator!: IConfigurator; + + /** + * Returns the wiki link from the configs specified by the key from the options argument + */ + get wikiLink(): string { + const wikiKey = this.args.options.wikiKey; + return this.configurator.getConfig('wikiLinks')[wikiKey]; + } +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-alert-banner.ts b/datahub-web/@datahub/shared/addon/components/entity-alert-banner.ts new file mode 100644 index 0000000000000..13f4e27bf78e8 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-alert-banner.ts @@ -0,0 +1,31 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../templates/components/entity-alert-banner'; +import { layout, classNames } from '@ember-decorators/component'; + +export const baseClass = 'entity-alert-banner'; + +/** + * A banner that displays entity level alerts + * + * TODO META-11234: Refactor entity alert banner to be generic + * The banner template is currently hardcoded and does not use + */ +@classNames(`${baseClass}-container`) +@layout(template) +export default class EntityAlertBanner extends Component { + /** + * Declared for convenient access in the template + */ + baseClass = baseClass; + + /** + * The subject of the alert message + */ + subject = ''; + + /** + * The body of the alert message that provides additional detail + */ + body = ''; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/base-page-component.ts b/datahub-web/@datahub/shared/addon/components/entity-page/base-page-component.ts new file mode 100644 index 0000000000000..74fa655ddf9b9 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/base-page-component.ts @@ -0,0 +1,10 @@ +import { expandOptionsAttribute } from '@datahub/utils/decorators/expand-options-attribute'; +import Component from '@ember/component'; +import { assertComponentPropertyNotUndefined } from '@datahub/utils/decorators/assert'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; + +@expandOptionsAttribute() +export default class BasePageComponent extends Component { + @assertComponentPropertyNotUndefined + entity!: DataModelEntityInstance; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-base-container.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-base-container.ts new file mode 100644 index 0000000000000..08d6dc0adbb06 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-base-container.ts @@ -0,0 +1,156 @@ +import Component from '@ember/component'; +import RouterService from '@ember/routing/router-service'; +import { inject as service } from '@ember/service'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/entity-page/entity-base-container'; +import { action, set, computed } from '@ember/object'; +import { layout, tagName } from '@ember-decorators/component'; +import { task } from 'ember-concurrency'; +import { ETask } from '@datahub/utils/types/concurrency'; +import { IEntityContainer } from '@datahub/shared/types/entity-page/containers'; +import DataModelsService from '@datahub/data-models/services/data-models'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { BaseEntity } from '@datahub/data-models/entity/base-entity'; +import { containerDataSource } from '@datahub/utils/api/data-source'; +import { + IEntityRenderPropsEntityPage, + ITabProperties +} from '@datahub/data-models/types/entity/rendering/entity-render-props'; +import { assertComponentPropertyNotUndefined } from '@datahub/utils/decorators/assert'; +import { IConfigurator } from '@datahub/shared/types/configurator/configurator'; + +/** + * Class for a basic data model entity tagless container component. + * Preferred usage is composition over inheritance, i.e. + * if other functionality is required, a secondary component may be used within the context of EntityBaseContainer. + + + {{! nested presentational components}} + + + * + * However, is extensible to provide per entity customization in certain cases. + * Conforms to the interface defined in IEntityContainer providing the basic members needed for an entity container component + * @export + * @class EntityBaseContainer + * @extends {Component} + * @implements {IEntityContainer} + * @template E the DataModelEntity type this container is responsible for, found in the DataModelEntity type + */ +@tagName('') +@layout(template) +@containerDataSource>>('reifyEntityTask', ['urn']) +export default class EntityBaseContainer extends Component + implements IEntityContainer { + /** + * URN identifier for the related data entity specified by EntityBaseContainer['entity'] + */ + @assertComponentPropertyNotUndefined + urn!: string; + + /** + * Reference to the associated and reified instance of the supplied entityClass + */ + entity?: E; + + /** + * The class (DataModel) for the data model entity instance + */ + @assertComponentPropertyNotUndefined + entityClass!: ReturnType; + + /** + * The currently selected entity page tab + */ + @assertComponentPropertyNotUndefined + currentTab!: string; + + /** + * Error returned when api fetch failed + */ + error?: Error; + + /** + * References the injected application / host router service + */ + @service('router') + router!: RouterService; + + /** + * The injected application DataModels service + */ + @service('data-models') + dataModels!: DataModelsService; + + /** + * Configurator service if available + */ + @service + configurator?: IConfigurator; + + /** + * Jit ACL configs + */ + jitAclConfig = this.configurator?.getConfig('jitAcl'); + + /** + * List of tabs that are available to be rendered via the Entity container component + * tabs are yielded by the component and can be rendered by the presentational component within the block + * Tabs are provided to the contextual presentational component to render the list of available Tabs + */ + @computed('entity') + get tabs(): Array { + const { entityClass, entity } = this; + const emptyTabProperties: Array = []; + + if (entityClass && entityClass.renderProps && entityClass.renderProps.entityPage && entity) { + const entityPage: IEntityRenderPropsEntityPage = entityClass.renderProps.entityPage; + return typeof entityPage.tabProperties === 'function' + ? entityPage.tabProperties(entity) + : entityPage.tabProperties; + } + + return emptyTabProperties; + } + + /** + * Container data task to reify the container's entity instance on component DOM insertion or container dependent key update + */ + @(task(function*(this: EntityBaseContainer): IterableIterator> { + const { urn, dataModels, entityClass } = this; + let entity: EntityBaseContainer['entity']; + + if (urn && entityClass) { + try { + set(this, 'error', undefined); + entity = yield (dataModels.createInstance(entityClass.displayName, urn) as unknown) as Promise; + } catch (e) { + set(this, 'error', e); + throw e; + } finally { + // Always set or reset the entity to the resolved or default value on each try + // For example, if the urn changes, but an exception is thrown, ensure the previous entity is replaced with the default + set(this, 'entity', entity); + } + } + }).restartable()) + reifyEntityTask!: ETask; + + /** + * Handles the tab selection action from the UI element for the user selected navigation tab + * @param {Tab} tabSelected the unique tab identifier selected by the user + */ + @action + tabSelectionDidChange(tabSelected: string): void { + const { router, urn } = this; + + // Perform transition if the currentTab is not the one currently selected + if (urn && this.currentTab !== tabSelected) { + router.transitionTo(router.currentRouteName, urn, tabSelected); + } + } +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-deprecation.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-deprecation.ts new file mode 100644 index 0000000000000..11a3b7ebd7e12 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-deprecation.ts @@ -0,0 +1,175 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import layout from '../../templates/components/entity-page/entity-deprecation'; +import { action, computed } from '@ember/object'; +import { reads } from '@ember/object/computed'; +import { classNames } from '@ember-decorators/component'; +import moment from 'moment'; +import { set } from '@ember/object'; + +/** + * This component was made as a tab to handle the deprecation scenario for entities on DataHub, but is made generic to + * be usable or extendable for a general deprecation scenarios + * + * @example + * {{datahub/entity-page/entity-deprecation + * entityName="Pokemon" + * deprecated=boolDeprecated + * deprecationNote=stringDeprecationNote + * decommissionTime=timestampDecommissionTime + * entityDecommissionWikiLink=hashWikiLinks.entityDecommission + * onUpdateDeprecation=functionOrActionUpdateDeprecation}} + */ +@classNames('entity-deprecation') +export default class EntityDeprecation extends Component { + layout = layout; + + /** + * Name of the current entity that we are dealing with. Originally this was "dataset" but is + * now expanding + * @type {string} + */ + entityName!: string; + + /** + * Flag indicating whether the current entity has been deprecated + * @type {boolean} + */ + isDeprecated!: boolean; + + /** + * Text string, intended to indicate the reason for deprecation + * @type {string} + */ + deprecationNote!: string; + + /** + * Time when the dataset will be decommissioned + * @type {number} + */ + decommissionTime!: number; + + /** + * Expected to be passed in from a containing component, will be called to actually update the + * component with the new user input + * @param {boolean} isDeprecated - new deprecation state + * @param {string} note - new deprecation note + * @param {number} time - new deprecation time as unix timestamp + */ + updateDeprecation!: (isDeprecated: boolean, note: string, time: number | null) => Promise; + + /** + * Currently selected date, used in the calendar dropdown component + * @type {Date} + */ + selectedDate: Date = new Date(); + + /** + * Date around which the calendar is centered + * @type {Date} + */ + centeredDate: Date = this.selectedDate; + + /** + * Before a user can update the deprecation status to deprecated, they must acknowledge that even if the + * entity is deprecated they must still keep it compliant. + * @type {boolean} + */ + isDeprecationAcknowledged = false; + + /** + * Expected to be passed in if we plan on using the default entity deprecation acknowledgement template, + * leads to a more info link for the user about deprecation of such entity + * @type {string | undefined} + */ + entityDecommissionWikiLink?: string; + + /** + * Optionally passed in if the entity should have an acknowledgement message/structure that differs from + * our default provided partial. If not passed in, constructor will automatically populate this with the + * default acknowledgement + * @type {string} + */ + deprecationAcknowledgementTemplate!: string; + + /** + * The earliest date a user can select as a decommission date + * @type {Date} + */ + minSelectableDecommissionDate: Date = new Date( + moment() + .add(1, 'days') + .valueOf() + ); + + /** + * Working reference to the entity's deprecated flag, made to be edited by the user + * @type {ComputedProperty} + */ + @reads('isDeprecated') + isDeprecatedAlias!: EntityDeprecation['isDeprecated']; + + /** + * Working reference to the entity's decommissionTime flag, made to be edited by the user + */ + @reads('decommissionTime') + decommissionTimeAlias!: EntityDeprecation['decommissionTime']; + + /** + * Working reference to the entity's deprecationNote, made to be edited by the user + * @type {ComputedProperty} + */ + @computed('deprecationNote') + get deprecationNoteAlias(): EntityDeprecation['deprecationNote'] { + return this.deprecationNote || ''; + } + + didInsertElement(): void { + super.didInsertElement(); + + typeof this.deprecationAcknowledgementTemplate === 'string' || + set(this, 'deprecationAcknowledgementTemplate', 'partials/entity-deprecation/default-acknowledgement'); + } + + /** + * Invokes the save action with the updated values for deprecated status, decommission time, and + * deprecation note. The actual save functionality should be handled by + */ + @action + async onUpdateDeprecation(): Promise { + const { isDeprecatedAlias, deprecationNoteAlias, decommissionTimeAlias } = this; + + const noteValue = isDeprecatedAlias ? deprecationNoteAlias : ''; + const time = decommissionTimeAlias || null; + + await this.updateDeprecation(!!isDeprecatedAlias, noteValue || '', time); + set(this, 'deprecationNoteAlias', noteValue); + } + + /** + * Toggle the boolean value of our deprecated alias. + */ + @action + toggleDeprecatedStatus(): void { + this.toggleProperty('isDeprecatedAlias'); + } + + /** + * Handles updates to the decommission time, triggered by our power calendar component through user + * clicking on the date input + * @param {Date} decommissionTime - date the entity should be decomissioned + */ + @action + onDecommissionDateChange(decommissionTime: Date): void { + set(this, 'decommissionTimeAlias', new Date(decommissionTime).getTime()); + } + + /** + * When a user clicks the checkbox to acknolwedge or cancel the acknolwedgement of the notice for + * deprecating an entity + */ + @action + onAcknowledgeDeprecationNotice(): void { + this.toggleProperty('isDeprecationAcknowledged'); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/attribute-callout.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/attribute-callout.ts new file mode 100644 index 0000000000000..b19379fc7a738 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/attribute-callout.ts @@ -0,0 +1,7 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import layout from '../../../templates/components/entity-page/entity-header/attribute-callout'; + +export default class EntityHeaderAttributeCallout extends Component { + layout = layout; +} diff --git a/datahub-web/@datahub/entity-header/addon/components/entity-header/content-row.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/content-row.ts similarity index 76% rename from datahub-web/@datahub/entity-header/addon/components/entity-header/content-row.ts rename to datahub-web/@datahub/shared/addon/components/entity-page/entity-header/content-row.ts index 5130c805a5331..8a456c5de8df1 100644 --- a/datahub-web/@datahub/entity-header/addon/components/entity-header/content-row.ts +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/content-row.ts @@ -1,6 +1,6 @@ import Component from '@ember/component'; // @ts-ignore: Ignore import of compiled template -import layout from '../../templates/components/entity-header/content-row'; +import layout from '../../../templates/components/entity-page/entity-header/content-row'; import { classNames } from '@ember-decorators/component'; @classNames('wherehows-entity-header-content-row') diff --git a/datahub-web/@datahub/entity-header/addon/components/entity-header/entity-property.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/entity-property.ts similarity index 86% rename from datahub-web/@datahub/entity-header/addon/components/entity-header/entity-property.ts rename to datahub-web/@datahub/shared/addon/components/entity-page/entity-header/entity-property.ts index 510a756f0a37a..fb81f324af2ac 100644 --- a/datahub-web/@datahub/entity-header/addon/components/entity-header/entity-property.ts +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/entity-property.ts @@ -1,11 +1,11 @@ import Component from '@ember/component'; // @ts-ignore: Ignore import of compiled template -import layout from '../../templates/components/entity-header/entity-property'; +import layout from '../../../templates/components/entity-page/entity-header/entity-property'; import { classNames } from '@ember-decorators/component'; import { reads } from '@ember/object/computed'; import { computed } from '@ember/object'; import { typeOf } from '@ember/utils'; -import { IEntityHeaderPropertyConfig } from '@datahub/entity-header/types/components/entity-header/entity-property'; +import { IEntityHeaderPropertyConfig } from '@datahub/shared/types/entity-page/components/entity-header/entity-property-config'; @classNames('wherehows-entity-header-property') export default class EntityHeaderEntityProperty extends Component { @@ -16,7 +16,7 @@ export default class EntityHeaderEntityProperty extends Component { * @type {string} * @memberof EntityHeaderEntityProperty */ - name: string = ''; + name = ''; /** * The value of the previous entity property @@ -63,7 +63,7 @@ export default class EntityHeaderEntityProperty extends Component { const { computeLink } = config; if (typeOf(oneWayValue) === 'array') { - return (oneWayValue as Array).map(item => computeLink(item)); + return (oneWayValue as Array).map((item): ReturnType => computeLink(item)); } return [computeLink(oneWayValue)]; diff --git a/datahub-web/@datahub/entity-header/addon/components/entity-header/entity-title.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/entity-title.ts similarity index 80% rename from datahub-web/@datahub/entity-header/addon/components/entity-header/entity-title.ts rename to datahub-web/@datahub/shared/addon/components/entity-page/entity-header/entity-title.ts index d250cbaf3d8a0..ebc9f91ea7457 100644 --- a/datahub-web/@datahub/entity-header/addon/components/entity-header/entity-title.ts +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/entity-title.ts @@ -1,6 +1,6 @@ import Component from '@ember/component'; // @ts-ignore: Ignore import of compiled template -import layout from '../../templates/components/entity-header/entity-title'; +import layout from '../../../templates/components/entity-page/entity-header/entity-title'; import { set } from '@ember/object'; import { tagName, classNames } from '@ember-decorators/component'; @@ -16,8 +16,8 @@ export default class EntityHeaderEntityTitle extends Component { */ title!: string; - constructor() { - super(...arguments); + constructor(properties?: object) { + super(properties); // Initialization defaults for expected component attributes typeof this.title === 'string' || set(this, 'title', 'UNKNOWN'); diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/entity-type.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/entity-type.ts new file mode 100644 index 0000000000000..a1dbe6d937e37 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/entity-type.ts @@ -0,0 +1,22 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/entity-page/entity-header/entity-title'; +import { tagName, classNames, layout } from '@ember-decorators/component'; + +/** + * Defines the component which displays the type of entity this header is associated with + * @export + * @class EntityHeaderEntityType + * @extends {Component} + */ +@tagName('h4') +@layout(template) +@classNames('wherehows-entity-header-type') +export default class EntityHeaderEntityType extends Component { + /** + * The type of the entity + * @type {string} + * @memberof EntityHeaderEntityType + */ + type = 'UNKNOWN'; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/naked-div.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/naked-div.ts new file mode 100644 index 0000000000000..a5b6bd6a9e407 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/naked-div.ts @@ -0,0 +1,7 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import layout from '../../../templates/components/entity-page/entity-header/naked-div'; + +export default class EntityHeaderNakedDiv extends Component { + layout = layout; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/tag.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/tag.ts new file mode 100644 index 0000000000000..4cfc74e25395c --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-header/tag.ts @@ -0,0 +1,37 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/entity-page/entity-header/tag'; +import { layout, tagName } from '@ember-decorators/component'; + +@layout(template) +@tagName('') +export default class EntityHeaderTag extends Component { + baseClass = 'entity-pill'; + + /** + * value can have the string which to show or a boolean to say whether we should show this tag + * in this case, options.text must be defined + */ + value?: string | boolean; + + /** + * returns the text to display for this tag. + * text can come from the value or an option in options + */ + get text(): string | undefined { + const { value, options } = this; + if (typeof this.value === 'boolean' && value && options && options.text) { + return options.text; + } + if (typeof value === 'string' && value.length > 0) { + return value; + } + + return undefined; + } + + /** + * Options that this component accept + */ + options?: { text: string; state: string }; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/content-panel-with-toggle.hbs b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/content-panel-with-toggle.hbs new file mode 100644 index 0000000000000..f78be434c6cca --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/content-panel-with-toggle.hbs @@ -0,0 +1,38 @@ + + +
+ {{#if this.toolbarComponent}} + {{component + this.toolbarComponent.name + entity=@entity + options=this.toolbarComponent.options + state=this.state + lastState=this.lastState + onStateChanged=(fn this.onStateChanged)}} + {{/if}} +
+ View as + + {{hd.content}} + +
+
+
+ + {{component + this.contentComponent.name + entity=@entity + options=this.contentComponent.options + state=this.state + lastState=this.lastState + onStateChanged=(fn this.onStateChanged)}} + +
\ No newline at end of file diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/content-panel-with-toggle.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/content-panel-with-toggle.ts new file mode 100644 index 0000000000000..dd5e4ec63f382 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/content-panel-with-toggle.ts @@ -0,0 +1,81 @@ +import Component from '@glimmer/component'; +import { action, set, setProperties } from '@ember/object'; +import { INachoDropdownOption } from '@nacho-ui/dropdown/types/nacho-dropdown'; +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; +import { reads } from '@ember/object/computed'; +import { + IContentPanelWithToggle, + IContentPanelWithToggleItem +} from '@datahub/data-models/types/entity/rendering/page-components'; + +/** + * Args required for content-panel-with-toogle + */ +export interface IEntityPageContentContentPanelWithToggleArgs { + // Options will be wrapped into this options object + options: IContentPanelWithToggle['options']; +} + +/** + * Content panel that will have a toggle to switch between contents + * + * This component accept a dropdown with label to show in the toggle. Also it + * contains a content component that will be rendered once the option is selected. + * A toolbar component can be passed along with the content component if needed. + * + * Comunication between both will be done using a state (redux like). Child will trigger + * onStateChanged once they require to change the state. This new state will be propagated + * to other children. Make sure state is not mutated, so every state change results in a new + * state object. + */ +export default class EntityPageContentContentPanelWithToggle extends Component< + IEntityPageContentContentPanelWithToggleArgs +> { + /** + * Dropdown option selected + */ + optionSelected: INachoDropdownOption = this.args.options.dropDownItems[0]; + + /** + * Current shared state + */ + state?: State; + + /** + * Shared state before current + */ + lastState?: State; + + /** + * Alias for content component + */ + @reads('optionSelected.value.contentComponent') + contentComponent!: IDynamicComponent; + + /** + * Alias for toobar component + */ + @reads('optionSelected.value.toolbarComponent') + toolbarComponent?: IDynamicComponent; + + /** + * Handle when dropdown option is selected + * @param option Option to be selected + */ + @action + onSelect(option: INachoDropdownOption): void { + set(this, 'optionSelected', option); + } + + /** + * Handle when state is changed + * @param state New state + */ + @action + onStateChanged(state: State): void { + setProperties(this, { + lastState: this.state, + state: state + }); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/content-panel.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/content-panel.ts new file mode 100644 index 0000000000000..51a132f0da427 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/content-panel.ts @@ -0,0 +1,21 @@ +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/entity-page/entity-page-content/content-panel'; +import { layout } from '@ember-decorators/component'; +import { IContentPanelComponent } from '@datahub/data-models/types/entity/rendering/page-components'; +import { assertComponentPropertyNotUndefined } from '@datahub/utils/decorators/assert'; +import BasePageComponent from '@datahub/shared/components/entity-page/base-page-component'; + +/** + * Content panel that will wrap a component with title, maybe a subheader, and some other common display info + * + * In the future this will also have a 'filter' dropdown to select which content to show, in a similar fashion than + * tabs works. + */ +@layout(template) +export default class EntityPageContentContentPanel extends BasePageComponent { + /** + * See documentation in the interface IContentPanelComponent. + */ + @assertComponentPropertyNotUndefined + options!: IContentPanelComponent['options']; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-discriminator.hbs b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-discriminator.hbs new file mode 100644 index 0000000000000..cb94fe85fc8a3 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-discriminator.hbs @@ -0,0 +1 @@ +{{component this.component.name options=this.component.options entity=@entity}} \ No newline at end of file diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-discriminator.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-discriminator.ts new file mode 100644 index 0000000000000..0acc0b045d1ae --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-discriminator.ts @@ -0,0 +1,54 @@ +import Component from '@glimmer/component'; +import { IDynamicComponent } from '@datahub/shared/types/dynamic-component'; +import { get } from '@ember/object'; +import { IEntityDiscriminator } from '@datahub/data-models/types/entity/rendering/page-components'; + +/** + * Arguments for this component + */ +interface IEntityPageContentEntityDiscriminatorArgs { + // options for this component + options: IEntityDiscriminator['options']; + // urn of dataset to extract platform + entity: T; +} + +/** + * This component will render a component based on the value of a property in an entity. + * + * for example: + * + * entity1 = { + * type: 'GRAPHQL' + * }; + * + * entity2 = { + * type = 'PEGASUS' + * }; + * + * { + * discriminator: { + * GRAPHQL: ifGraphQLRenderThisComponent + * }, + * default: forOtherCasesLikePEGASUSRenderThisComponent, + * propertyName: 'type' + * } + * + */ +export default class EntityPageContentEntityDiscriminator extends Component< + IEntityPageContentEntityDiscriminatorArgs +> { + /** + * Selected component base on the value of a property. If the value is undefined or not mapped, + * we will use default. + * + * @readonly + */ + get component(): IDynamicComponent { + const { entity, options } = this.args; + const { discriminator, default: defaultComponent, propertyName } = options; + const propertyValue = (get(entity, propertyName) as unknown) as Extract; + const discriminatedComponent: IDynamicComponent | undefined = propertyValue && discriminator[propertyValue]; + return discriminatedComponent || defaultComponent; + } +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-switch.hbs b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-switch.hbs new file mode 100644 index 0000000000000..48e3f31d2c8f6 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-switch.hbs @@ -0,0 +1,5 @@ +{{component + @options.component.name + options=@options.component.options + entity=(get @entity @options.propertyName) +}} \ No newline at end of file diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-switch.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-switch.ts new file mode 100644 index 0000000000000..2612893195ac5 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/entity-switch.ts @@ -0,0 +1,17 @@ +import Component from '@glimmer/component'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { IEntitySwitch } from '@datahub/data-models/types/entity/rendering/page-components'; + +interface IEntityPageContentEntitySwitchArgs { + // original entity where to fetch the new entity + entity: DataModelEntityInstance; + // contains the propertyName and child component to render + options: IEntitySwitch['options']; +} + +/** + * This component will switch the entity passed down to components to another one + * using a property of the original entity. This way we can reuse components meant for entity1, + * on entity2 if there is a relation. + */ +export default class EntityPageContentEntitySwitch extends Component> {} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/file-viewer.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/file-viewer.ts new file mode 100644 index 0000000000000..9be0fd6a7677d --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/file-viewer.ts @@ -0,0 +1,18 @@ +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/entity-page/entity-page-content/file-viewer'; +import { layout } from '@ember-decorators/component'; +import { IFileViewerComponent } from '@datahub/data-models/types/entity/rendering/page-components'; +import { assertComponentPropertyNotUndefined } from '@datahub/utils/decorators/assert'; +import BasePageComponent from '@datahub/shared/components/entity-page/base-page-component'; + +/** + * Component that will use ember-ace to display the content of a file + */ +@layout(template) +export default class EntityPageContentFileViewer extends BasePageComponent { + /** + * See documentation in the interface IFileViewerComponent. + */ + @assertComponentPropertyNotUndefined + options!: IFileViewerComponent['options']; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/hydrate-entity.hbs b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/hydrate-entity.hbs new file mode 100644 index 0000000000000..838dd6bac0426 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/hydrate-entity.hbs @@ -0,0 +1,7 @@ + + {{#if @options.component}} + {{component @options.component.name options=@options.component.options entity=this.hydratedEntity}} + {{else}} + {{yield this.hydratedEntity}} + {{/if}} + \ No newline at end of file diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/hydrate-entity.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/hydrate-entity.ts new file mode 100644 index 0000000000000..814f6162168e2 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/hydrate-entity.ts @@ -0,0 +1,62 @@ +import Component from '@glimmer/component'; +import { IHydrateEntity } from '@datahub/data-models/types/entity/rendering/page-components'; +import { DataModelEntityInstance, DataModelName } from '@datahub/data-models/constants/entity'; + +import { inject as service } from '@ember/service'; +import DataModelsService from '@datahub/data-models/services/data-models'; +import { ETaskPromise } from '@datahub/utils/types/concurrency'; +import { task } from 'ember-concurrency'; +import { set } from '@ember/object'; + +interface IEntityPageContentHydrateEntityArgs { + // Dehydrated entity + entity: DataModelEntityInstance; + // Child component that will receive + options: IHydrateEntity['options']; +} + +/** + * This component will create an entity given an entity... wait what? The problem is that + * sometimes entity intances are not completely instatiated (with all props). This class will act as + * a simple container calling DataModels and instanciating a complete instance. + */ +export default class EntityPageContentHydrateEntity extends Component { + /** + * Data Models service to hydrate entities + */ + @service('data-models') + dataModels!: DataModelsService; + + /** + * Output of this component + */ + hydratedEntity!: DataModelEntityInstance; + + /** + * Task that will hydrate the entity by calling create instance + */ + @(task(function*(this: EntityPageContentHydrateEntity): IterableIterator> { + const { entity } = this.args; + const { dataModels } = this; + + if (entity && entity.urn) { + const hydratedEntity = yield dataModels.createInstance( + entity.staticInstance.displayName as DataModelName, + entity.urn + ); + set(this, 'hydratedEntity', (hydratedEntity as unknown) as DataModelEntityInstance); + } + }).restartable()) + hydrateEntityTask!: ETaskPromise; + + /** + * Will invoke hydrateEntityTask upon creation + * @param owner passthrough to parent + * @param args passthrough to parent + */ + constructor(owner: unknown, args: IEntityPageContentHydrateEntityArgs) { + super(owner, args); + + this.hydrateEntityTask.perform(); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/nacho-table-entity-link.hbs b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/nacho-table-entity-link.hbs new file mode 100644 index 0000000000000..04f481f453de0 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/nacho-table-entity-link.hbs @@ -0,0 +1,7 @@ + + {{#with (or @field @rowData) as |entity|}} + + {{split-text entity.entityLink.link.title 65}} + + {{/with}} + \ No newline at end of file diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/nacho-table.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/nacho-table.ts new file mode 100644 index 0000000000000..9ed8496034b42 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-content/nacho-table.ts @@ -0,0 +1,42 @@ +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/entity-page/entity-page-content/nacho-table'; +import { layout, tagName } from '@ember-decorators/component'; +import { INachoTableComponent } from '@datahub/data-models/types/entity/rendering/page-components'; +import { assertComponentPropertyNotUndefined } from '@datahub/utils/decorators/assert'; +import BasePageComponent from '@datahub/shared/components/entity-page/base-page-component'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity/index'; +import { KeyNamesWithValueType } from '@datahub/utils/types/base'; + +/** + * Nacho table wrapper for generic entity page + * + * @export + * @class EntityPageContentNachoTable + * @template E entity to render + */ + +@tagName('') +@layout(template) +export default class EntityPageContentNachoTable extends BasePageComponent { + /** + * See interface INachoTableComponent + */ + @assertComponentPropertyNotUndefined + options!: INachoTableComponent['options']; + + /** + * Will get the data to render within the table. + * If no propertyName specified, then entity will be used + * + * @readonly + */ + get data(): Array | undefined { + const { entity, options } = this; + const { propertyName } = options; + const propertyNameWithType = propertyName as KeyNamesWithValueType>; + if (propertyNameWithType) { + return entity[propertyNameWithType]; + } + return [entity]; + } +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-main.ts b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-main.ts new file mode 100644 index 0000000000000..14158a5b1229f --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/entity-page-main.ts @@ -0,0 +1,33 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/entity-page/entity-page-main'; +import { layout, classNames } from '@ember-decorators/component'; +import { expandOptionsAttribute } from '@datahub/utils/decorators/expand-options-attribute'; +import { assertComponentPropertyNotUndefined } from '@datahub/utils/decorators/assert'; +import { DataModelEntity } from '@datahub/data-models/constants/entity'; + +/** + * Main generic entity page that is consumed in the generic tab entity route + */ +@layout(template) +@classNames('entity-page-main') +@expandOptionsAttribute() +export default class EntityPageMain extends Component { + /** + * URN for the entity to show + */ + @assertComponentPropertyNotUndefined + urn!: string; + + /** + * Entity class for the entity to show + */ + @assertComponentPropertyNotUndefined + entityClass!: DataModelEntity; + + /** + * Current tab selected to show + */ + @assertComponentPropertyNotUndefined + tabSelected!: string; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/layouts/linear-layout.ts b/datahub-web/@datahub/shared/addon/components/entity-page/layouts/linear-layout.ts new file mode 100644 index 0000000000000..84466bc9a7636 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/layouts/linear-layout.ts @@ -0,0 +1,16 @@ +// @ts-ignore: Ignore import of compiled template +import template from '../../../templates/components/entity-page/layouts/linear-layout'; +import { layout } from '@ember-decorators/component'; +import { ILinearLayoutComponent } from '@datahub/data-models/types/entity/rendering/page-components'; +import BasePageComponent from '@datahub/shared/components/entity-page/base-page-component'; + +/** + * It places subcomponents as list of components, one after the other + */ +@layout(template) +export default class LayoutsLinearLayout extends BasePageComponent { + /** + * See ILinearLayoutComponent + */ + options!: ILinearLayoutComponent['options']; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-page/wherehows-entity-header.ts b/datahub-web/@datahub/shared/addon/components/entity-page/wherehows-entity-header.ts new file mode 100644 index 0000000000000..fa692d835788f --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity-page/wherehows-entity-header.ts @@ -0,0 +1,54 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import layout from '../../templates/components/entity-page/wherehows-entity-header'; +import { tagName, classNames } from '@ember-decorators/component'; +import { set } from '@ember/object'; + +@tagName('section') +@classNames('wherehows-entity-header') +export default class WhereHowsEntityHeader extends Component { + layout = layout; + + /** + * References the component name to be used to render the title / name of the entity + * @type {string} + * @memberof WhereHowsEntityHeader + */ + entityTitleComponent!: string; + + /** + * References the component name used to render a key-value pair of entity attributes + * @type {string} + * @memberof WhereHowsEntityHeader + */ + entityPropertyComponent!: string; + + /** + * References the component name used to render an entity attribute / property that + * deserved prominent placement in the entity header component + * @type {string} + * @memberof WhereHowsEntityHeader + */ + entityAttributePillCalloutComponent!: string; + + /** + * References the component name used to render the entity type + * @type {string} + * @memberof WhereHowsEntityHeader + */ + entityTypeComponent!: string; + + constructor(properties?: object) { + super(properties); + + // Initialization defaults for expected component attributes + typeof this.entityTitleComponent === 'string' || + set(this, 'entityTitleComponent', 'entity-page/entity-header/entity-title'); + typeof this.entityPropertyComponent === 'string' || + set(this, 'entityPropertyComponent', 'entity-page/entity-header/entity-property'); + typeof this.entityAttributePillCalloutComponent === 'string' || + set(this, 'entityAttributePillCalloutComponent', 'entity-page/entity-header/attribute-callout'); + typeof this.entityTypeComponent === 'string' || + set(this, 'entityTypeComponent', 'entity-page/entity-header/entity-type'); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/entity-pill.ts b/datahub-web/@datahub/shared/addon/components/entity-pill.ts deleted file mode 100644 index 4090ca73190ab..0000000000000 --- a/datahub-web/@datahub/shared/addon/components/entity-pill.ts +++ /dev/null @@ -1,9 +0,0 @@ -import Component from '@ember/component'; -// @ts-ignore: Ignore import of compiled template -import template from '../templates/components/entity-pill'; -import { layout } from '@ember-decorators/component'; - -@layout(template) -export default class EntityPill extends Component { - baseClass: string = 'entity-pill'; -} diff --git a/datahub-web/@datahub/shared/addon/components/entity/grid-group/profile-list.ts b/datahub-web/@datahub/shared/addon/components/entity/grid-group/profile-list.ts new file mode 100644 index 0000000000000..26ea8e1b5dbb9 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity/grid-group/profile-list.ts @@ -0,0 +1,21 @@ +import Component from '@glimmer/component'; +import { IGridGroupEntity } from '@datahub/shared/types/grid-group'; +import { IEntityListProfile } from '@datahub/shared/types/profile-list'; + +interface IGridGroupEntityProfileListArgs { + /** + * The list of external entities profiles rendered in this profile + */ + profiles: Array>; +} + +export const baseClass = 'grid-group-entity-profile-list'; + +/** + * This component is a list of profiles for grid group entities. + * Each profile will contain the grid group's name and an external link to the grid group entity page + */ +export default class GridGroupEntityProfileList extends Component { + // Declared for convenient access in the template + baseClass = baseClass; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity/people/profile-list.ts b/datahub-web/@datahub/shared/addon/components/entity/people/profile-list.ts new file mode 100644 index 0000000000000..e60ffa2408ce3 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity/people/profile-list.ts @@ -0,0 +1,24 @@ +import Component from '@glimmer/component'; +import { PersonEntity } from '@datahub/data-models/entity/person/person-entity'; +import { IEntityListProfile } from '@datahub/shared/types/profile-list'; + +interface IPeopleEntityProfileListArgs { + /** + * The list of people entity profiles rendered in this profile + */ + profiles: Array>; +} + +export const baseClass = 'people-entity-profile-list'; + +/** + * This component is a list of profiles for people entities. + * Each profile will contain the person entity's picture, name, title, and connection info. + * The profile also allows for the user to be redirected to the selected user's entity page + * + * TODO META-11582: Refactor people profile list to adopt Avatars architecture + */ +export default class PeopleEntityProfileList extends Component { + // Declared for convenient access in the template + baseClass = baseClass; +} diff --git a/datahub-web/@datahub/shared/addon/components/entity/properties-panel-label.hbs b/datahub-web/@datahub/shared/addon/components/entity/properties-panel-label.hbs new file mode 100644 index 0000000000000..76b60c9b919e4 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity/properties-panel-label.hbs @@ -0,0 +1,11 @@ +{{@options.displayName}} + +{{#with @options.tooltipText as |tooltipText|}} + + + +{{/with}} diff --git a/datahub-web/@datahub/shared/addon/components/entity/properties-panel-label.ts b/datahub-web/@datahub/shared/addon/components/entity/properties-panel-label.ts new file mode 100644 index 0000000000000..28dbfc9201719 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity/properties-panel-label.ts @@ -0,0 +1,12 @@ +import Component from '@glimmer/component'; +import { IPropertyPanelLabelComponentOptions } from '@datahub/data-models/types/entity/rendering/properties-panel'; + +interface IEntityPropertiesPanelLabelArgs { + // Options provided as rendering logic for the component + options: IPropertyPanelLabelComponentOptions; +} + +/** + * The generic component for property panel labels on the entity page + */ +export default class EntityPropertiesPanelLabel extends Component {} diff --git a/datahub-web/@datahub/shared/addon/components/entity/properties-panel.ts b/datahub-web/@datahub/shared/addon/components/entity/properties-panel.ts new file mode 100644 index 0000000000000..89735043db2f2 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/entity/properties-panel.ts @@ -0,0 +1,18 @@ +import Component from '@glimmer/component'; +import { DataModelEntityInstance } from '@datahub/data-models/constants/entity'; +import { IPropertiesPanelArgsOptions } from '@datahub/data-models/types/entity/rendering/properties-panel'; + +/** + * Arguments for Properties Panel component + */ +export interface IPropertiesPanelArgs { + // Entity to retrive the properties passed in options + entity: DataModelEntityInstance; + // Bucket of options to allow to be rendered as a Dynamic Component + options: IPropertiesPanelArgsOptions; +} + +/** + * This component will show properties from an entity + */ +export default class PropertiesPanel extends Component {} diff --git a/datahub-web/@datahub/shared/addon/components/expandable-content.ts b/datahub-web/@datahub/shared/addon/components/expandable-content.ts new file mode 100644 index 0000000000000..79c6d7993c985 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/expandable-content.ts @@ -0,0 +1,35 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import layout from '../templates/components/expandable-content'; +import { classNames } from '@ember-decorators/component'; +import { action } from '@ember/object'; + +const baseComponentClass = 'expandable-content'; + +@classNames(`${baseComponentClass}__container`) +export default class ExpandableContent extends Component { + layout = layout; + + /** + * Leads to ease of use in the template level + * @type {string} + */ + baseComponentClass = baseComponentClass; + + /** + * The expanded state of this component. When the user clicks on the button trigger, it'll toggle this + * between expanded and unexpanded. Can optionally be passed in as a parameter, or defaulted to being + * a local property + * @type {boolean} + */ + isExpanded = false; + + /** + * Toggles the expanded state of this component, which will then reveal the yielded content in an + * "expanded" window + */ + @action + toggleExpanded(): void { + this.toggleProperty('isExpanded'); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/forms/action-drawer.ts b/datahub-web/@datahub/shared/addon/components/forms/action-drawer.ts new file mode 100644 index 0000000000000..71a256c510000 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/forms/action-drawer.ts @@ -0,0 +1,48 @@ +import Component from '@ember/component'; +// @ts-ignore: Ignore import of compiled template +import template from '../../templates/components/forms/action-drawer'; +import { layout, tagName, classNames, className } from '@ember-decorators/component'; +import { action } from '@ember/object'; + +const baseClass = 'form-action-drawer'; + +/** + * Shareable contextual component renders a fixed positioned bar at the bottom of the screen. + * Useful for forms / editable views that need to show a summary of user modifications. + * This component is intentionally bare to allow for maximum flexibility with myriad use cases. + * + * Exposes an action for toggling the drawer and the flag indicating the drawer state + * Sample usage: + * + * + * + * @export + * @class FormsActionDrawer + * @extends {Component} + */ +@layout(template) +@tagName('section') +@classNames(baseClass) +export default class FormsActionDrawer extends Component { + /** + * Component CSS selector + */ + baseClass = baseClass; + + /** + * Block modifier selector, applied based on the flag value + */ + @className(`${baseClass}--open`, `${baseClass}--close`) + readonly isExpanded = false; + + /** + * Handles the toggling of the drawer state, driven by the flag isExpanded + */ + @action + onDrawerToggle(): void { + this.toggleProperty('isExpanded'); + } +} diff --git a/datahub-web/@datahub/shared/addon/components/graph/graph-viewer.hbs b/datahub-web/@datahub/shared/addon/components/graph/graph-viewer.hbs new file mode 100644 index 0000000000000..de939a5b313a1 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/graph/graph-viewer.hbs @@ -0,0 +1,19 @@ + + +
+ +
+{{!-- template-lint-disable no-invalid-interactive --}} +{{!-- The section below acts as a top level handler catching all children click events. + This is necesary as the SVG contains many child that can be clicked --}} +
+ +
diff --git a/datahub-web/@datahub/shared/addon/components/graph/graph-viewer.ts b/datahub-web/@datahub/shared/addon/components/graph/graph-viewer.ts new file mode 100644 index 0000000000000..a2ec1dc01d214 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/graph/graph-viewer.ts @@ -0,0 +1,444 @@ +import Component from '@glimmer/component'; +import GraphRenderer from '@datahub/shared/services/graph-renderer'; +import { inject as service } from '@ember/service'; +import svgPanZoom from 'svg-pan-zoom'; +import { processGraphVizSvg, forEachNode } from '@datahub/shared/utils/graph/graph-svg'; +import { focusElements, calculateMaxZoom } from '@datahub/shared/utils/graph/svg-pan-and-zoom'; +import { + excludeSimpleAttributes, + moveAttributeEdgesToEdges, + getAllPaths +} from '@datahub/shared/utils/graph/graph-transformations'; +import { action, set, setProperties } from '@ember/object'; +import { IGraphViewerState } from '@datahub/shared/types/graph/graph-viewer-state'; +import { task } from 'ember-concurrency'; +import { ETaskPromise } from '@datahub/utils/types/concurrency'; +import { ISharedStateArgs } from '@datahub/shared/types/entity-page/components/entity-page-content/content-panel-with-toggle'; +import RouterService from '@ember/routing/router-service'; +import { extractEntityType } from '@datahub/utils/validators/urn'; +import DataModelsService from '@datahub/data-models/services/data-models'; +import { excludeNodes } from '@datahub/shared/utils/graph/graph-transformations'; + +/** + * Closest is missing from TS definition + */ +type MyEventTarget = EventTarget & { closest: (str: string) => HTMLElement }; +type MyMouseEvent = MouseEvent & { target: MyEventTarget }; + +/** + * Base CSS Class + */ +const baseClass = 'graph-viewer'; + +/** + * Design Doc: + * https://docs.google.com/document/d/1R1-qIbJusGjXmZ_hlKA3KufQA9ufr7fjKSriVXATmCY/edit#heading=h.5x0d5h95i329 + * + * This component will render a Graph type. + * + * GraphViz is the library that will render the svg. GraphViz is a C library compiled with + * emscripten to use it in JS, and ported as Viz.js + * + * Viz.js includes a worker that renders the SVG, that's why we need a service to invoke it. + * + * We will transform the Graph Model into Dot notation (graphviz input type). + * Once we have dot file, we will send it to GraphViz and we will get and svg string as response. + * + * We will convert the svg string into an svg element. We will transform svg element as the output + * of graphviz is not suitable for interactions or styling. We will stripe out all inline style, + * add css classes and some 'data-' inside the nodes for easy selection. + * + * Once this is done, we will use SVGPanZoom to handle the navigation in the svg. + * + */ +export default class GraphViewer extends Component> { + baseClass = baseClass; + /** + * Service to interact with GraphViz worker + */ + @service + graphRenderer!: GraphRenderer; + + /** + * SvgPanZoom reference to navigate through the entities + */ + svgPanZoom?: SvgPanZoom.Instance; + + /** + * Max zoom for this graph. Depending on the width of the svg, this number will be calculated when rendering. + * See calculateMaxZoom + */ + maxZoom?: number; + + /** + * Resize observer needed for fullscreen modes. It will watch svgContainer changes + */ + resizeObserver: ResizeObserver = new ResizeObserver(() => this.onDomResize()); + + /** + * As svg is not rendered in ember, we need to create an alternative to easily bind events to elements. + * ClickBinds will help you to do that by simulating a listener. See click() for implementation details + */ + clickBinds: Record Promise> = { + [`.${baseClass}__title`]: this.onTitleClick, + [`.${baseClass}__property-type--reference`]: this.onReferenceClick, + [`.${baseClass}__action-go-to-entity`]: this.onGoToEntityClick + }; + + /** + * Reference to SVG container for DOM manipulation purposes + */ + svgContainer?: Element; + + /** + * Flag to enable once all svg rendenring is done. This will help to ignore state changes until the graph is rendered. + */ + rendered = false; + + /** + * Will be needed to perform transitions + */ + @service + router?: RouterService; + + /** + * DataModelsService will be used to generate links to entities when needed + */ + @service('data-models') + dataModels?: DataModelsService; + + /** + * When new state check if some action needs to be performed + */ + @action + onUpdatedState(): void { + if (this.rendered) { + const { state, lastState } = this.args; + + // if selectedNode is different that lastState, then select entity + if (state?.selectedNodeId && state?.selectedNodeId !== lastState?.selectedNodeId) { + this.onChangeSelectedEntity(); + } + + // if show connector is different than lastState, then render graph again + if (this.svgContainer && state?.showAttributes !== lastState?.showAttributes) { + this.renderGraphTask.perform(this.svgContainer); + } + + // if exludeNodePattern is different than lastState, then render graph again + if (this.svgContainer && state?.excludeNodePattern !== lastState?.excludeNodePattern) { + this.renderGraphTask.perform(this.svgContainer); + } + } + } + + /** + * Action handle when users click on View Entity + * @param button element that contains the reference to go + */ + onGoToEntityClick(button: HTMLElement): Promise { + const entityUrn = button.getAttribute('data-entity-urn'); + const apiEntityType = entityUrn && extractEntityType(entityUrn); + const EntityModel = apiEntityType && this.dataModels?.getModelByApiName(apiEntityType); + if (EntityModel && entityUrn) { + const entityInstance = this.dataModels?.createPartialInstance(EntityModel?.displayName, entityUrn); + const link = entityInstance?.entityLink; + const { route, model } = (link && link.link) || {}; + const url = route && model && this.router?.urlFor.apply(this.router, [route, ...model]); + url && window.open(url); + } + return Promise.resolve(); + } + + /** + * Will select an entity in the state + * @param nodeId id of the entity + */ + selectEntity(nodeId: string): void { + this.args.onStateChanged({ + ...this.args.state, + selectedNodeId: nodeId + }); + } + + /** + * + * Will add a css class to an edge + * + * @param fromNode edge from + * @param toNode edge to + * @param clazz class you wanted to add + */ + addClassToEdge(fromNode: string, toNode: string, clazz: string): void { + const { svgContainer } = this; + if (svgContainer) { + const edgeElement = svgContainer.querySelectorAll(`[data-to="${toNode}"][data-from="${fromNode}"]`); + + edgeElement.forEach((edge): void => edge.classList.add(clazz)); + } + } + + /** + * Will add a class to a node + * @param id of the node + * @param clazz class you wanted to add + */ + addClassToNode(id: string, clazz: string): Element | null | void { + const { svgContainer } = this; + if (svgContainer) { + const element = svgContainer.querySelector(`[data-entity-id="${id}"`); + element?.classList.add(clazz); + return element; + } + } + + /** + * Will select a node highlighting the path to reach that node. + * @param animate whether we need animation to focus on the node or not + */ + async selectNodeForLineage(animate: boolean): Promise { + const { svgPanZoom, svgContainer, maxZoom = 0 } = this; + const { selectedNodeId, graph } = this.args.state || {}; + const nodeId = selectedNodeId; + const node = svgContainer?.querySelector(`[data-entity-id="${nodeId}"`); + + if (nodeId && svgContainer && graph && graph.rootNode && node) { + const downstreams = getAllPaths(graph, graph.rootNode, nodeId); + const upstreams = getAllPaths(graph, nodeId, graph.rootNode); + const allDownstreamNodes = downstreams.reduce((nodes, downstream) => [...nodes, ...downstream.nodes], []); + const allUpstreamNodes = upstreams.reduce((nodes, upstream) => [...nodes, ...upstream.nodes], []); + const elements: Array = [...allDownstreamNodes, ...allUpstreamNodes] + .map(node => this.addClassToNode(node, 'node-related')) + .filter(Boolean) as Array; + + downstreams.forEach(downstream => + downstream.edges.forEach(edge => this.addClassToEdge(edge.fromNode, edge.toNode, 'edge-from-selected')) + ); + + upstreams.forEach(upstream => + upstream.edges.forEach(edge => this.addClassToEdge(edge.fromNode, edge.toNode, 'edge-to-selected')) + ); + + node.classList.add('selected'); + + svgPanZoom && + svgContainer && + (await focusElements(elements.length > 0 ? elements : [node], svgContainer, svgPanZoom, maxZoom, animate)); + } + } + + /** + * Will highlight the selected node and the outgoing and incoming edges from the node + * @param animate whether we need animation to focus on the node or not + */ + async selectNodeDefault(animate: boolean): Promise { + const { svgPanZoom, svgContainer, maxZoom = 0 } = this; + const { selectedNodeId, graph } = this.args.state || {}; + const nodeId = selectedNodeId; + const node = svgContainer?.querySelector(`[data-entity-id="${nodeId}"`); + + if (nodeId && svgContainer && graph && node) { + forEachNode(svgContainer, `[data-from="${nodeId}"]`, (edge): void => edge.classList.add('edge-from-selected')); + forEachNode(svgContainer, `[data-to="${nodeId}"]`, (edge): void => edge.classList.add('edge-to-selected')); + forEachNode(svgContainer, `[data-reference="${nodeId}"]`, (attribute): void => { + const relatedNode = attribute && attribute.closest('.node'); + relatedNode && relatedNode.classList.add('node-related'); + attribute.classList.add('attr-selected'); + }); + + node.classList.add('selected'); + + svgPanZoom && svgContainer && (await focusElements([node], svgContainer, svgPanZoom, maxZoom, animate)); + } + } + /** + * Will select an entity using an Id + * @param nodeId id of the entity + */ + async onChangeSelectedEntity(animate = true): Promise { + const { svgContainer } = this; + const { selectedNodeId, graph, lineageMode = false } = this.args.state || {}; + const nodeId = selectedNodeId; + + if (nodeId && graph) { + // Clear previous selections + forEachNode(svgContainer, '.edge-to-selected', (el): void => el.classList.remove('edge-to-selected')); + forEachNode(svgContainer, '.edge-from-selected', (el): void => el.classList.remove('edge-from-selected')); + forEachNode(svgContainer, '.selected', (el): void => el.classList.remove('selected')); + forEachNode(svgContainer, '.attr-selected', (el): void => el.classList.remove('attr-selected')); + forEachNode(svgContainer, '.node-related', (el): void => el.classList.remove('node-related')); + + if (lineageMode) { + await this.selectNodeForLineage(animate); + } else { + await this.selectNodeDefault(animate); + } + } + } + + /** + * Handle for clicking on the title of an entity + * @param _title title element (not used) + * @param node node that the title belongs to + */ + async onTitleClick(_title: HTMLElement, node: HTMLElement): Promise { + const nodeId = node.getAttribute('data-entity-id'); + if (nodeId) { + await this.selectEntity(nodeId); + } + } + + /** + * Handle when a reference is clicked + * @param reference reference element clicked + */ + async onReferenceClick(reference: HTMLElement): Promise { + const nodeId = reference.getAttribute('data-reference-link'); + if (nodeId) { + await this.selectEntity(nodeId); + } + } + + /** + * Generic click handler that will use clickBinds to invoke the corresponding method + * if selector matches + * @param event + */ + @action + async click(event: MyMouseEvent): Promise { + const { target } = event; + const { clickBinds } = this; + if (target) { + const node = target.closest('.node'); + + await Promise.all( + Object.keys(clickBinds).map( + async (selector: keyof typeof clickBinds): Promise => { + const selectedElement = target.closest(selector); + selectedElement && (await clickBinds[selector].apply(this, [selectedElement, node, event])); + } + ) + ); + } + } + + /** + * Will create the svg element and attach it to the dom. + * See description of component + */ + @action + renderGraph(svgContainer: Element): Promise { + const { selectedNodeId, showAttributes = false, graph } = this.args.state || {}; + this.clearResources(); + setProperties(this, { + svgContainer + }); + this.args.onStateChanged({ + ...this.args.state, + selectedNodeId: selectedNodeId || graph?.rootNode, + showAttributes + }); + return this.paintGraph(); + } + + /** + * Task wrapper around renderGraph. This will allow us to use both, task interface or promise interface. + */ + @(task(function*(this: GraphViewer, svgContainer: Element): IterableIterator> { + yield this.renderGraph(svgContainer); + }).restartable()) + renderGraphTask!: ETaskPromise; + + /** + * Handler when svgContainer changes in size + */ + onDomResize(): void { + const svg = this.svgContainer?.querySelector('svg'); + const { clientWidth, clientHeight } = this.svgContainer || {}; + svg && svg.setAttribute('width', `${clientWidth}px`); + svg && svg.setAttribute('height', `${clientHeight}px`); + this.svgPanZoom?.resize(); + } + + /** + * Will clean HTML and memory references + */ + @action + clearResources(): void { + const { svgContainer, svgPanZoom } = this; + + if (svgContainer) { + this.resizeObserver.unobserve(svgContainer); + // apparently this is the more efficient approach + while (svgContainer.firstChild) { + svgContainer.removeChild(svgContainer.firstChild); + } + + set(this, 'svgContainer', undefined); + } + + if (svgPanZoom) { + svgPanZoom.destroy(); + + set(this, 'svgPanZoom', undefined); + } + + set(this, 'rendered', false); + } + + /** + * For integration purposes, we need to remove the attribute + * 'viewBox' from the reference icon svg + * @param svg + */ + cleanIconSvg(svg: SVGElement): void { + svg.removeAttribute('viewBox'); + } + + /** + * Will create the graph in the dom + * See description of component + */ + async paintGraph(): Promise { + const { graphRenderer, svgContainer, resizeObserver } = this; + const { state } = this.args; + const { showAttributes = false, graph, lineageMode = false, fullscreenMode = false, excludeNodePattern } = + state || {}; + if (graph && svgContainer) { + const { clientWidth, clientHeight } = svgContainer; + const fixedGraph = moveAttributeEdgesToEdges(graph); + const graphWithoutExludedNodes = excludeNodes(fixedGraph, excludeNodePattern); + const graphWithoutSimpleAttributes = showAttributes + ? graphWithoutExludedNodes + : excludeSimpleAttributes(graphWithoutExludedNodes); + const str = await graphRenderer.render(graphWithoutSimpleAttributes, { lineageMode }); + const svgDoc = new DOMParser().parseFromString(str, 'image/svg+xml'); + const processedSvg = processGraphVizSvg((svgDoc.documentElement as unknown) as SVGSVGElement, baseClass); + const svg = svgContainer.appendChild(processedSvg); + + this.maxZoom = calculateMaxZoom(svg); + svg.setAttribute('width', `${clientWidth}px`); + svg.setAttribute('height', `${clientHeight}px`); + + this.svgPanZoom = svgPanZoom(svg, { + zoomScaleSensitivity: 0.25, + zoomEnabled: true, + controlIconsEnabled: true, + fit: true, + center: true, + minZoom: 0.95, + maxZoom: this.maxZoom + }); + + if (fullscreenMode) { + resizeObserver.observe(svgContainer); + } + + set(this, 'rendered', true); + + this.onChangeSelectedEntity(false); + + this.args.onStateChanged({ ...this.args.state, numberShowingNodes: graphWithoutExludedNodes.nodes.length }); + } + } +} diff --git a/datahub-web/@datahub/shared/addon/components/graph/toolbar.hbs b/datahub-web/@datahub/shared/addon/components/graph/toolbar.hbs new file mode 100644 index 0000000000000..b195a1500eee1 --- /dev/null +++ b/datahub-web/@datahub/shared/addon/components/graph/toolbar.hbs @@ -0,0 +1,115 @@ +
+ + {{#if numberOfHiddenNodes}} +
+ Hiding + +
+ {{/if}} + {{#if @state.lineageMode}} +
+ Showing + + of upstream and downstream +
+ {{/if}} + +
+
+ {{#if @state.isSearching}} + + {{suggestion.displayName}} + + {{/if}} + +
+ + + + + + +
+
+ + Show attributes + + + +
+ + {{#if @state.lineageMode}} +
+ + Level of lineage shown + + +
+ {{/if}} +
+ + Exclude nodes containing keywords + + + Type the name of the node or use a glob pattern. Learn More + +