{"id":31769957,"url":"https://github.com/jfrog/jfrog-client-js","last_synced_at":"2025-10-10T02:55:57.863Z","repository":{"id":39378662,"uuid":"200794176","full_name":"jfrog/jfrog-client-js","owner":"jfrog","description":"Xray Javascript Client","archived":false,"fork":false,"pushed_at":"2024-11-10T09:27:57.000Z","size":494,"stargazers_count":13,"open_issues_count":9,"forks_count":16,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-09-13T04:08:54.618Z","etag":null,"topics":["ide","javascript","jfrog","jfrog-xray"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jfrog.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-06T06:54:12.000Z","updated_at":"2024-11-10T09:28:00.000Z","dependencies_parsed_at":"2024-12-03T23:03:27.216Z","dependency_job_id":"424f56d9-cd82-4fa4-914b-c482571efc81","html_url":"https://github.com/jfrog/jfrog-client-js","commit_stats":{"total_commits":115,"total_committers":14,"mean_commits":8.214285714285714,"dds":0.5913043478260869,"last_synced_commit":"4052caabdf45c10807f535e51b517d28881bc7c1"},"previous_names":["jfrog/xray-client-js"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/jfrog/jfrog-client-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfrog%2Fjfrog-client-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfrog%2Fjfrog-client-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfrog%2Fjfrog-client-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfrog%2Fjfrog-client-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jfrog","download_url":"https://codeload.github.com/jfrog/jfrog-client-js/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfrog%2Fjfrog-client-js/sbom","scorecard":{"id":517678,"data":{"date":"2025-08-11","repo":{"name":"github.com/jfrog/jfrog-client-js","commit":"4052caabdf45c10807f535e51b517d28881bc7c1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"checks":[{"name":"Dangerous-Workflow","score":0,"reason":"dangerous workflow patterns detected","details":["Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/frogbot-scan-pr.yml:15","Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/test.yml:22"],"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":4,"reason":"Found 12/30 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/cla.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/frogbot-scan-and-fix.yml:11","Warn: topLevel 'security-events' permission set to 'write': .github/workflows/frogbot-scan-and-fix.yml:13","Info: topLevel 'contents' permission set to 'read': .github/workflows/frogbot-scan-pr.yml:7","Warn: no topLevel permission defined: .github/workflows/removeLabel.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/cla.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/cla.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cla.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/cla.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/frogbot-scan-and-fix.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/frogbot-scan-and-fix.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/frogbot-scan-and-fix.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/frogbot-scan-and-fix.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/frogbot-scan-and-fix.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/frogbot-scan-and-fix.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/frogbot-scan-pr.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/frogbot-scan-pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/frogbot-scan-pr.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/frogbot-scan-pr.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/frogbot-scan-pr.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/frogbot-scan-pr.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/removeLabel.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/removeLabel.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/jfrog/jfrog-client-js/test.yml/master?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   6 third-party GitHubAction dependencies pinned","Info:   1 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/jfrog/.github/SECURITY.md:1","Info: Found linked content: github.com/jfrog/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/jfrog/.github/SECURITY.md:1","Info: Found text in security policy: github.com/jfrog/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"15 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T02:13:57.154Z","repository_id":39378662,"created_at":"2025-08-20T02:13:57.154Z","updated_at":"2025-08-20T02:13:57.154Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002527,"owners_count":26083403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ide","javascript","jfrog","jfrog-xray"],"created_at":"2025-10-10T02:55:54.586Z","updated_at":"2025-10-10T02:55:57.855Z","avatar_url":"https://github.com/jfrog.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JFrog Javascript Client\n\n[![Scanned by Frogbot](https://raw.github.com/jfrog/frogbot/master/images/frogbot-badge.svg)](https://github.com/jfrog/frogbot#readme)\n[![Tests](https://github.com/jfrog/jfrog-client-js/actions/workflows/test.yml/badge.svg)](https://github.com/jfrog/jfrog-client-js/actions/workflows/test.yml)\n[![Code coverage](https://codecov.io/github/jfrog/jfrog-client-js/coverage.svg?branch=master)](https://codecov.io/github/jfrog/jfrog-client-js?branch=master)\n\nJFrog Javascript Client is a Javascript library, which wraps some REST APIs exposed by JFrog's different services.\n\n## Contributions\n\nWe welcome pull requests from the community. To help us improve this project, please read our [contribution](./CONTRIBUTING.md#guidelines) guide.\n\n## Getting started\n\nAdd jfrog-client-js as a dependency to your package.json file:\n\n```json\n\"dependencies\": {\n  \"jfrog-client-js\": \"^2.0.0\"\n}\n```\n\n## APIs\n\n- [Setting up JFrog client](#setting-up-jfrog-client)\n- [Xray](#xray)\n  - [Pinging Xray](#pinging-xray)\n  - [Getting Xray Version](#getting-xray-version)\n  - [Checking Xray Entitlement](#checking-xray-entitlement)\n  - [Scanning Bulk of Dependencies](#scanning-bulk-of-dependencies)\n  - [Scanning a Dependency Tree with Consideration to the JFrog Project](#scanning-a-dependency-tree-with-consideration-to-the-jfrog-project)\n  - [Scanning a Dependency Tree with Consideration to the Xray Watches](#scanning-a-dependency-tree-with-consideration-to-the-xray-watches)\n  - [Retrieving Xray Build Details](#retrieving-xray-build-details)\n  - [Retrieving JAS configuration](#retrieving-jas-configuration)\n- [Artifactory](#artifactory)\n  - [Pinging Artifactory](#pinging-artifactory)\n  - [Getting Artifactory Version](#getting-artifactory-version)\n  - [Downloading an Artifact](#downloading-an-artifact)\n  - [Downloading an Artifact content](#downloading-an-artifact-content)\n  - [Downloading an Artifact to file](#downloading-an-artifact-to-file)\n  - [Downloading an Artifact checksum](#downloading-an-artifact-checksum)\n  - [Searching by AQL](#searching-by-aql)\n- [Platform](#platform)\n  - [Register For Web Login](#register-for-web-login)\n  - [Get Access Token From Web Login](#get-access-token-from-web-login)\n- [Xray Source Control](#xray-source-control)\n  - [Getting Xsc Version](#getting-xsc-version)\n  - [Sending Log Message Event](#sending-log-mesage-event)\n  - [Sending Start Scan Event](#sending-start-scan-event)\n  - [Sending End Scan Event](#sending-end-scan-event)\n  - [Getting Scan Event Details](#getting-scan-event-details)\n\n### Setting up JFrog client\n\n```javascript\nlet jfrogClient = new JfrogClient({\n  platformUrl: 'https://my-platform-url.jfrog.io/',\n  // artifactoryUrl - Set to use a custom Artifactory URL.\n  // xrayUrl - Set to use a custom Xray URL.\n  username: 'username',\n  password: 'password',\n  // OR\n  accessToken: 'accessToken',\n\n  // Optional parameters\n  proxy: { host: '\u003corganization\u003e-xray.jfrog.io', port: 8081, protocol: 'https' },\n  headers: { key1: 'value1', key2: 'value2' },\n  // Connection retries. If not defined, the default value is 5.\n  retries: 5,\n  // Timeout before the connection is terminated in milliseconds, the default value is 60 seconds\n  timeout: 60000,\n  // Status codes that trigger retries. the default is network error or a 5xx status code.\n  retryOnStatusCode: (statusCode: number) =\u003e statusCode \u003e= 500;,\n  // Delay between retries, in milliseconds. The default is 1000 milliseconds.\n  retryDelay: 1000,\n});\n```\n\n### Xray\n\n#### Pinging Xray\n\n```javascript\njfrogClient\n  .xray()\n  .system()\n  .ping()\n  .then((result) =\u003e {\n    console.log(result);\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Getting Xray Version\n\n```javascript\njfrogClient\n  .xray()\n  .system()\n  .version()\n  .then((result) =\u003e {\n    console.log(result);\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Checking Xray Entitlement\n\n```javascript\nlet feature = 'contextual_analysis';\njfrogClient\n  .xray()\n  .entitlements()\n  .feature(feature)\n  .then((result) =\u003e {\n    console.log(result);\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Scanning Bulk of Dependencies\n\n```javascript\nlet express = new ComponentDetails('npm://express:4.0.0');\nlet request = new ComponentDetails('npm://request:2.0.0');\njfrogClient\n  .xray()\n  .summary()\n  .component({\n    component_details: [express, request],\n  })\n  .then((result) =\u003e {\n    console.log(JSON.stringify(result));\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Scanning a Dependency Tree with Consideration to the JFrog Project\n\n```javascript\nconst progress: XrayScanProgress = {\n    setPercentage(percentage: number): void {\n        // Add progress\n    },\n} as XrayScanProgress;\n\njfrogClient.xray().scan().graph({\n  component_id: 'root-node',\n  nodes: [{component_id: 'npm://express:4.0.0'}, {component_id: 'npm://request:2.0.0'}]\n  }, progress, () =\u003e { /* if (something) throw Error('Aborted')*/ }, 'projectKey', [])\n  .then(result =\u003e {\n    console.log(JSON.stringify(result));\n  })\n  .catch(error =\u003e {\n    console.error(error);\n  });\n```\n\n#### Scanning a Dependency Tree with Consideration to the Xray Watches\n\n```javascript\nconst progress: XrayScanProgress = {\n    setPercentage(percentage: number): void {\n        // Add progress\n    },\n} as XrayScanProgress;\n\njfrogClient.xray().scan().graph({\n  component_id: 'root-node',\n  nodes: [{component_id: 'npm://express:4.0.0'}, {component_id: 'npm://request:2.0.0'}]\n  }, progress, () =\u003e { /* if (something) throw Error('Aborted')*/ }, '', ['watch-1', 'watch-2'])\n  .then(result =\u003e {\n    console.log(JSON.stringify(result));\n  })\n  .catch(error =\u003e {\n    console.error(error);\n  });\n```\n\n#### Retrieving Xray Build Details\n\n```javascript\njfrogClient\n  .xray()\n  .details()\n  .build('Build Name', '1', 'Optional Project Key')\n  .then((result) =\u003e {\n    console.log(JSON.stringify(result));\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Retrieving JAS configuration\n```javascript\njfrogClient\n  .xray()\n  .jasconfig()\n  .getJasConfig()      \n  .then((result) =\u003e {\n    console.log(JSON.stringify(result));\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n### Artifactory\n\n#### Pinging Artifactory\n\n```javascript\njfrogClient\n  .artifactory()\n  .system()\n  .ping()\n  .then((result) =\u003e {\n    console.log(result);\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Getting Artifactory Version\n\n```javascript\njfrogClient\n  .artifactory()\n  .system()\n  .version()\n  .then((result) =\u003e {\n    console.log(result);\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Downloading an Artifact\n\n```javascript\njfrogClient\n  .artifactory()\n  .download()\n  .downloadArtifact('path/to/artifact')\n  .then((result) =\u003e {\n    console.log(JSON.stringify(result));\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Downloading an Artifact content\n\nThe content of the Artifact will be returned as a string.\n\n```javascript\njfrogClient\n  .artifactory()\n  .download()\n  .downloadArtifact('path/to/artifact')\n  .then((result) =\u003e {\n    console.log(JSON.stringify(result));\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Downloading an Artifact to file\n\n```javascript\njfrogClient\n  .artifactory()\n  .download()\n  .downloadArtifactToFile('path/to/artifact', 'local/path/to/download')\n  .then((result) =\u003e {\n    console.log(JSON.stringify(result));\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Downloading an Artifact checksum\n\n```javascript\njfrogClient\n  .artifactory()\n  .download()\n  .getArtifactChecksum('path/to/artifact')\n  .then((result) =\u003e {\n    console.log('sha1:' + result.sha1 + 'sha256:' + result.sha256 + 'md5:' + result.md5);\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Searching by AQL\n\n```javascript\njfrogClient.artifactory()\n    .search()\n    .aqlSearch(\n        'items.find({' +\n        '\"repo\":\"my-repo-name\",' +\n        '\"path\":{\"$match\":\"*\"}}' +\n        ').include(\"name\",\"repo\",\"path\",\"created\").sort({\"$desc\":[\"created\"]}).limit(10)'\n    );\n  .then(result =\u003e {\n    console.log(JSON.stringify(result));\n  })\n  .catch(error =\u003e {\n    console.error(error);\n  });\n```\n\n### Platform\n\n#### Web Login\n\n##### Register For Web Login\n\n```javascript\nconst sessionId = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX // UUID\njfrogClient\n  .platform()\n  .webLogin()\n  .registerSessionId(sessionId)\n  .then((result) =\u003e {\n    ...\n  })\n  .catch((error) =\u003e {\n    ...\n  });\n```\n\n##### Get Access Token From Web Login\n\n```javascript\nconst sessionId = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX // UUID\njfrogClient\n  .platform()\n  .webLogin()\n  .getToken(sessionId)\n  .then((result) =\u003e {\n    ...\n  })\n  .catch((error) =\u003e {\n    ...\n  });\n```\n\nPlease note that you need to replace 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' with the actual session ID that you've generated for `registerSessionId`.\n\n### Xray Source Control\n\n#### System\n\n##### Getting Xsc Version\n\n```javascript\njfrogClient\n  .xsc()\n  .system()\n  .version()\n  .then((result) =\u003e {\n    console.log(result);\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n#### Event\n\n##### Sending Log Message Event\n\n```javascript\njfrogClient\n  .xsc()\n  .event()\n  .log({log_level: 'error', source: 'js-client', message: 'error message to report as an event'})\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n##### Sending Start Scan Event\n\n```javascript\njfrogClient\n  .xsc()\n  .event()\n  .startScan({product: 'product', os_platform: 'windows', jfrog_user: 'user-name'})\n  .then((result) =\u003e {\n    console.log(result);\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n##### Sending End Scan Event\n\n```javascript\nconst scanEvent = {multi_scan_id: 'some-scan-id', event_status: 'completed'}\njfrogClient\n  .xsc()\n  .event()\n  .endScan({product: 'product', os_platform: 'windows', jfrog_user: 'user-name'})\n  .then((result) =\u003e {\n    console.log(result);\n  })\n  .catch((error) =\u003e {\n    console.error(error);\n  });\n```\n\n##### Getting Scan Event Details\n\n```javascript\nconst multiScanId = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX // UUID\njfrogClient\n  .xsc()\n  .event()\n  .getScanEvent(multiScanId)\n  .then((result) =\u003e {\n    ...\n  })\n  .catch((error) =\u003e {\n    ...\n  });\n```\n\nPlease note that you need to replace 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' with the actual multi scan ID that you've generated with `startScan`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjfrog%2Fjfrog-client-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjfrog%2Fjfrog-client-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjfrog%2Fjfrog-client-js/lists"}