Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

phrase-js

Package Overview
Dependencies
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

phrase-js

OpenAPI client for Phrase

  • 1.0.15
  • npm
  • Socket score

Version published
Weekly downloads
17K
increased by1.12%
Maintainers
1
Weekly downloads
 
Created
Source

phrase-js@1.0.15

Phrase is a translation management platform for software projects. You can collaborate on language file translation with your team or order translations through our platform. The API allows you to import locale files, download locale files, tag keys or interact in other ways with the localization data stored in Phrase for your account.

This SDK is automatically generated by the OpenAPI Generator project:

  • API version: 2.0.0
  • Package version: 1.0.15
  • Build package: phrase-js For more information, please visit https://developers.phrase.com/api/

This generator creates TypeScript/JavaScript client that utilizes Fetch API. The generated Node module can be used in the following environments:

Environment

  • Node.js
  • Webpack
  • Browserify

Language level

  • ES5 - you must have a Promises/A+ library installed
  • ES6

Module system

  • CommonJS
  • ES6 module system

It can be used in both TypeScript and JavaScript. In TypeScript, the definition should be automatically resolved via package.json. (Reference)

Building

To build and compile the typescript sources to javascript use:

npm install
npm run build

Publishing

First build the package then run npm publish

Installation

navigate to the folder of your consuming project and run one of the following commands.

published:

npm install phrase-js@1.0.15 --save

if you are using yarn

yarn install phrase-js@1.0.15

unPublished (not recommended):

npm install PATH_TO_GENERATED_PACKAGE --save

Getting Started

Please follow the installation procedure and then run the following code:

import {Configuration, SpacesApi} from "phrase-js"

const configuration = new Configuration({apiKey: 'token API_TOKEN'})

const spaceApi = new SpacesApi(configuration)

let requestParameters = {
  accountId: 'ACCOUNT_ID'
}

spaceApi.spacesList(requestParameters).then(function (data) { console.log(data) })

Getting Started in Node.js

This package is using window and FormData so make sure to have polyfills for it

here is the example package.json

{
  "name": "openapi_typescript_test",
  "version": "1.0.0",
  "description": "",
  "main": "dist/index.js",
  "scripts": {
    "start": "tsc && node dist/index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/node": "^14.0.1",
    "form-data": "^3.0.0",
    "node-fetch": "^2.6.0",
    "phrase-js": "^1.0.15"
  },
  "devDependencies": {
    "tslint": "^5.20.1",
    "typescript": "^3.9.2"
  }
}

and you can use it as follows

import {Configuration, SpacesApi} from "phrase-js"
var FormData = require("form-data")
var fetch = require("node-fetch")


const globalAny: any = global;
globalAny.window = {
  fetch
}
globalAny.FormData = FormData

const configuration = new Configuration({apiKey: 'token API_TOKEN'})

const spaceApi = new SpacesApi(configuration)

let requestParameters = {
  accountId: 'YOUR_ACCOUNT_ID'
}

spaceApi.spacesList(requestParameters).then(function (data) {console.log(data)})

API Endpoints

All URIs are relative to https://api.phrase.com/v2

ClassMethodHTTP requestDescription
AccountsApiaccountShowGET /accounts/{id}Get a single account
AccountsApiaccountsListGET /accountsList accounts
AuthorizationsApiauthorizationCreatePOST /authorizationsCreate an authorization
AuthorizationsApiauthorizationDeleteDELETE /authorizations/{id}Delete an authorization
AuthorizationsApiauthorizationShowGET /authorizations/{id}Get a single authorization
AuthorizationsApiauthorizationUpdatePATCH /authorizations/{id}Update an authorization
AuthorizationsApiauthorizationsListGET /authorizationsList authorizations
BitbucketSyncApibitbucketSyncExportPOST /bitbucket_syncs/{id}/exportExport from Phrase to Bitbucket
BitbucketSyncApibitbucketSyncImportPOST /bitbucket_syncs/{id}/importImport to Phrase from Bitbucket
BitbucketSyncApibitbucketSyncsListGET /bitbucket_syncsList Bitbucket syncs
BlacklistedKeysApiblacklistedKeyCreatePOST /projects/{project_id}/blacklisted_keysCreate a blacklisted key
BlacklistedKeysApiblacklistedKeyDeleteDELETE /projects/{project_id}/blacklisted_keys/{id}Delete a blacklisted key
BlacklistedKeysApiblacklistedKeyShowGET /projects/{project_id}/blacklisted_keys/{id}Get a single blacklisted key
BlacklistedKeysApiblacklistedKeyUpdatePATCH /projects/{project_id}/blacklisted_keys/{id}Update a blacklisted key
BlacklistedKeysApiblacklistedKeysListGET /projects/{project_id}/blacklisted_keysList blacklisted keys
BranchesApibranchCompareGET /projects/{project_id}/branches/{name}/compareCompare branches
BranchesApibranchCreatePOST /projects/{project_id}/branchesCreate a branch
BranchesApibranchDeleteDELETE /projects/{project_id}/branches/{name}Delete a branch
BranchesApibranchMergePATCH /projects/{project_id}/branches/{name}/mergeMerge a branch
BranchesApibranchShowGET /projects/{project_id}/branches/{name}Get a single branch
BranchesApibranchUpdatePATCH /projects/{project_id}/branches/{name}Update a branch
BranchesApibranchesListGET /projects/{project_id}/branchesList branches
CommentsApicommentCreatePOST /projects/{project_id}/keys/{key_id}/commentsCreate a comment
CommentsApicommentDeleteDELETE /projects/{project_id}/keys/{key_id}/comments/{id}Delete a comment
CommentsApicommentMarkCheckGET /projects/{project_id}/keys/{key_id}/comments/{id}/readCheck if comment is read
CommentsApicommentMarkReadPATCH /projects/{project_id}/keys/{key_id}/comments/{id}/readMark a comment as read
CommentsApicommentMarkUnreadDELETE /projects/{project_id}/keys/{key_id}/comments/{id}/readMark a comment as unread
CommentsApicommentShowGET /projects/{project_id}/keys/{key_id}/comments/{id}Get a single comment
CommentsApicommentUpdatePATCH /projects/{project_id}/keys/{key_id}/comments/{id}Update a comment
CommentsApicommentsListGET /projects/{project_id}/keys/{key_id}/commentsList comments
DistributionsApidistributionCreatePOST /accounts/{account_id}/distributionsCreate a distribution
DistributionsApidistributionDeleteDELETE /accounts/{account_id}/distributions/{id}Delete a distribution
DistributionsApidistributionShowGET /accounts/{account_id}/distributions/{id}Get a single distribution
DistributionsApidistributionUpdatePATCH /accounts/{account_id}/distributions/{id}Update a distribution
DistributionsApidistributionsListGET /accounts/{account_id}/distributionsList distributions
DocumentsApidocumentDeleteDELETE /projects/{project_id}/documents/{id}Delete document
DocumentsApidocumentsListGET /projects/{project_id}/documentsList documents
FormatsApiformatsListGET /formatsList formats
GitHubSyncApigithubSyncExportPOST /github_syncs/exportExport from Phrase to GitHub
GitHubSyncApigithubSyncImportPOST /github_syncs/importImport to Phrase from GitHub
GitLabSyncApigitlabSyncDeleteDELETE /gitlab_syncs/{id}Delete single Sync Setting
GitLabSyncApigitlabSyncExportPOST /gitlab_syncs/{gitlab_sync_id}/exportExport from Phrase to GitLab
GitLabSyncApigitlabSyncHistoryGET /gitlab_syncs/{gitlab_sync_id}/historyHistory of single Sync Setting
GitLabSyncApigitlabSyncImportPOST /gitlab_syncs/{gitlab_sync_id}/importImport from GitLab to Phrase
GitLabSyncApigitlabSyncListGET /gitlab_syncsList GitLab syncs
GitLabSyncApigitlabSyncShowGET /gitlab_syncs/{id}Get single Sync Setting
GitLabSyncApigitlabSyncUpdatePUT /gitlab_syncs/{id}Update single Sync Setting
GlossariesApiglossariesListGET /accounts/{account_id}/glossariesList glossaries
GlossariesApiglossaryCreatePOST /accounts/{account_id}/glossariesCreate a glossary
GlossariesApiglossaryDeleteDELETE /accounts/{account_id}/glossaries/{id}Delete a glossary
GlossariesApiglossaryShowGET /accounts/{account_id}/glossaries/{id}Get a single glossary
GlossariesApiglossaryUpdatePATCH /accounts/{account_id}/glossaries/{id}Update a glossary
GlossaryTermTranslationsApiglossaryTermTranslationCreatePOST /accounts/{account_id}/glossaries/{glossary_id}/terms/{term_id}/translationsCreate a glossary term translation
GlossaryTermTranslationsApiglossaryTermTranslationDeleteDELETE /accounts/{account_id}/glossaries/{glossary_id}/terms/{term_id}/translations/{id}Delete a glossary term translation
GlossaryTermTranslationsApiglossaryTermTranslationUpdatePATCH /accounts/{account_id}/glossaries/{glossary_id}/terms/{term_id}/translations/{id}Update a glossary term translation
GlossaryTermsApiglossaryTermCreatePOST /accounts/{account_id}/glossaries/{glossary_id}/termsCreate a glossary term
GlossaryTermsApiglossaryTermDeleteDELETE /accounts/{account_id}/glossaries/{glossary_id}/terms/{id}Delete a glossary term
GlossaryTermsApiglossaryTermShowGET /accounts/{account_id}/glossaries/{glossary_id}/terms/{id}Get a single glossary term
GlossaryTermsApiglossaryTermUpdatePATCH /accounts/{account_id}/glossaries/{glossary_id}/terms/{id}Update a glossary term
GlossaryTermsApiglossaryTermsListGET /accounts/{account_id}/glossaries/{glossary_id}/termsList glossary terms
InvitationsApiinvitationCreatePOST /accounts/{account_id}/invitationsCreate a new invitation
InvitationsApiinvitationDeleteDELETE /accounts/{account_id}/invitations/{id}Delete an invitation
InvitationsApiinvitationResendPOST /accounts/{account_id}/invitations/{id}/resendResend an invitation
InvitationsApiinvitationShowGET /accounts/{account_id}/invitations/{id}Get a single invitation
InvitationsApiinvitationUpdatePATCH /accounts/{account_id}/invitations/{id}Update an invitation
InvitationsApiinvitationUpdateSettingsPATCH /projects/{project_id}/invitations/{id}Update a member's invitation access
InvitationsApiinvitationsListGET /accounts/{account_id}/invitationsList invitations
JobLocalesApijobLocaleCompletePOST /projects/{project_id}/jobs/{job_id}/locales/{id}/completeComplete a job locale
JobLocalesApijobLocaleDeleteDELETE /projects/{project_id}/jobs/{job_id}/locales/{id}Delete a job locale
JobLocalesApijobLocaleReopenPOST /projects/{project_id}/jobs/{job_id}/locales/{id}/reopenReopen a job locale
JobLocalesApijobLocaleShowGET /projects/{project_id}/jobs/{job_id}/locale/{id}Get a single job locale
JobLocalesApijobLocaleUpdatePATCH /projects/{project_id}/jobs/{job_id}/locales/{id}Update a job locale
JobLocalesApijobLocalesCreatePOST /projects/{project_id}/jobs/{job_id}/localesCreate a job locale
JobLocalesApijobLocalesListGET /projects/{project_id}/jobs/{job_id}/localesList job locales
JobsApijobCompletePOST /projects/{project_id}/jobs/{id}/completeComplete a job
JobsApijobCreatePOST /projects/{project_id}/jobsCreate a job
JobsApijobDeleteDELETE /projects/{project_id}/jobs/{id}Delete a job
JobsApijobKeysCreatePOST /projects/{project_id}/jobs/{id}/keysAdd keys to job
JobsApijobKeysDeleteDELETE /projects/{project_id}/jobs/{id}/keysRemove keys from job
JobsApijobReopenPOST /projects/{project_id}/jobs/{id}/reopenReopen a job
JobsApijobShowGET /projects/{project_id}/jobs/{id}Get a single job
JobsApijobStartPOST /projects/{project_id}/jobs/{id}/startStart a job
JobsApijobUpdatePATCH /projects/{project_id}/jobs/{id}Update a job
JobsApijobsByAccountGET /accounts/{account_id}/jobsList account jobs
JobsApijobsListGET /projects/{project_id}/jobsList jobs
KeysApikeyCreatePOST /projects/{project_id}/keysCreate a key
KeysApikeyDeleteDELETE /projects/{project_id}/keys/{id}Delete a key
KeysApikeyShowGET /projects/{project_id}/keys/{id}Get a single key
KeysApikeyUpdatePATCH /projects/{project_id}/keys/{id}Update a key
KeysApikeysDeleteCollectionDELETE /projects/{project_id}/keysDelete collection of keys
KeysApikeysExcludePATCH /projects/{project_id}/keys/excludeExclude a locale on a collection of keys
KeysApikeysIncludePATCH /projects/{project_id}/keys/includeInclude a locale on a collection of keys
KeysApikeysListGET /projects/{project_id}/keysList keys
KeysApikeysSearchPOST /projects/{project_id}/keys/searchSearch keys
KeysApikeysTagPATCH /projects/{project_id}/keys/tagAdd tags to collection of keys
KeysApikeysUntagPATCH /projects/{project_id}/keys/untagRemove tags from collection of keys
LocalesApiaccountLocalesGET /accounts/{account_id}/localesList locales used in account
LocalesApilocaleCreatePOST /projects/{project_id}/localesCreate a locale
LocalesApilocaleDeleteDELETE /projects/{project_id}/locales/{id}Delete a locale
LocalesApilocaleDownloadGET /projects/{project_id}/locales/{id}/downloadDownload a locale
LocalesApilocaleShowGET /projects/{project_id}/locales/{id}Get a single locale
LocalesApilocaleUpdatePATCH /projects/{project_id}/locales/{id}Update a locale
LocalesApilocalesListGET /projects/{project_id}/localesList locales
MembersApimemberDeleteDELETE /accounts/{account_id}/members/{id}Remove a user from the account
MembersApimemberShowGET /accounts/{account_id}/members/{id}Get single member
MembersApimemberUpdatePATCH /accounts/{account_id}/members/{id}Update a member
MembersApimemberUpdateSettingsPATCH /projects/{project_id}/members/{id}Update a member's project settings
MembersApimembersListGET /accounts/{account_id}/membersList members
NotificationGroupsApinotificationGroupsListGET /notification_groupsList notification groups
NotificationGroupsApinotificationGroupsMarkAllAsReadPATCH /notification_groups/mark_all_as_readMark all notification groups as read
NotificationGroupsApinotificationGroupsMarkAsReadPATCH /notification_groups/{id}/mark_as_readMark a notification group as read
NotificationsApinotificationsListGET /notificationsList notifications
NotificationsApinotificationsMarkAllAsReadPOST /notifications/mark_all_as_readMark all notifications as read
NotificationsApinotificationsShowGET /notifications/{id}Get a single notification
OrdersApiorderConfirmPATCH /projects/{project_id}/orders/{id}/confirmConfirm an order
OrdersApiorderCreatePOST /projects/{project_id}/ordersCreate a new order
OrdersApiorderDeleteDELETE /projects/{project_id}/orders/{id}Cancel an order
OrdersApiorderShowGET /projects/{project_id}/orders/{id}Get a single order
OrdersApiordersListGET /projects/{project_id}/ordersList orders
ProjectsApiprojectCreatePOST /projectsCreate a project
ProjectsApiprojectDeleteDELETE /projects/{id}Delete a project
ProjectsApiprojectShowGET /projects/{id}Get a single project
ProjectsApiprojectUpdatePATCH /projects/{id}Update a project
ProjectsApiprojectsListGET /projectsList projects
ReleasesApireleaseCreatePOST /accounts/{account_id}/distributions/{distribution_id}/releasesCreate a release
ReleasesApireleaseDeleteDELETE /accounts/{account_id}/distributions/{distribution_id}/releases/{id}Delete a release
ReleasesApireleasePublishPOST /accounts/{account_id}/distributions/{distribution_id}/releases/{id}/publishPublish a release
ReleasesApireleaseShowGET /accounts/{account_id}/distributions/{distribution_id}/releases/{id}Get a single release
ReleasesApireleaseUpdatePATCH /accounts/{account_id}/distributions/{distribution_id}/releases/{id}Update a release
ReleasesApireleasesListGET /accounts/{account_id}/distributions/{distribution_id}/releasesList releases
ScreenshotMarkersApiscreenshotMarkerCreatePOST /projects/{project_id}/screenshots/{screenshot_id}/markersCreate a screenshot marker
ScreenshotMarkersApiscreenshotMarkerDeleteDELETE /projects/{project_id}/screenshots/{screenshot_id}/markersDelete a screenshot marker
ScreenshotMarkersApiscreenshotMarkerShowGET /projects/{project_id}/screenshots/{screenshot_id}/markers/{id}Get a single screenshot marker
ScreenshotMarkersApiscreenshotMarkerUpdatePATCH /projects/{project_id}/screenshots/{screenshot_id}/markersUpdate a screenshot marker
ScreenshotMarkersApiscreenshotMarkersListGET /projects/{project_id}/screenshots/{id}/markersList screenshot markers
ScreenshotsApiscreenshotCreatePOST /projects/{project_id}/screenshotsCreate a screenshot
ScreenshotsApiscreenshotDeleteDELETE /projects/{project_id}/screenshots/{id}Delete a screenshot
ScreenshotsApiscreenshotShowGET /projects/{project_id}/screenshots/{id}Get a single screenshot
ScreenshotsApiscreenshotUpdatePATCH /projects/{project_id}/screenshots/{id}Update a screenshot
ScreenshotsApiscreenshotsListGET /projects/{project_id}/screenshotsList screenshots
SearchApisearchInAccountPOST /accounts/{account_id}/searchSearch across projects
SpacesApispaceCreatePOST /accounts/{account_id}/spacesCreate a Space
SpacesApispaceDeleteDELETE /accounts/{account_id}/spaces/{id}Delete Space
SpacesApispaceShowGET /accounts/{account_id}/spaces/{id}Get Space
SpacesApispaceUpdatePATCH /accounts/{account_id}/spaces/{id}Update Space
SpacesApispacesListGET /accounts/{account_id}/spacesList Spaces
SpacesApispacesProjectsCreatePOST /accounts/{account_id}/spaces/{space_id}/projectsAdd Project
SpacesApispacesProjectsDeleteDELETE /accounts/{account_id}/spaces/{space_id}/projects/{id}Remove Project
SpacesApispacesProjectsListGET /accounts/{account_id}/spaces/{space_id}/projectsList Projects
StyleGuidesApistyleguideCreatePOST /projects/{project_id}/styleguidesCreate a style guide
StyleGuidesApistyleguideDeleteDELETE /projects/{project_id}/styleguides/{id}Delete a style guide
StyleGuidesApistyleguideShowGET /projects/{project_id}/styleguides/{id}Get a single style guide
StyleGuidesApistyleguideUpdatePATCH /projects/{project_id}/styleguides/{id}Update a style guide
StyleGuidesApistyleguidesListGET /projects/{project_id}/styleguidesList style guides
TagsApitagCreatePOST /projects/{project_id}/tagsCreate a tag
TagsApitagDeleteDELETE /projects/{project_id}/tags/{name}Delete a tag
TagsApitagShowGET /projects/{project_id}/tags/{name}Get a single tag
TagsApitagsListGET /projects/{project_id}/tagsList tags
TeamsApiteamCreatePOST /accounts/{account_id}/teamsCreate a Team
TeamsApiteamDeleteDELETE /accounts/{account_id}/teams/{team_id}Delete Team
TeamsApiteamShowGET /accounts/{account_id}/teams/{team_id}Get Team
TeamsApiteamUpdatePATCH /accounts/{account_id}/teams/{team_id}Update Team
TeamsApiteamsListGET /accounts/{account_id}/teamsList Teams
TeamsApiteamsProjectsCreatePOST /accounts/{account_id}/teams/{team_id}/projectsAdd Project
TeamsApiteamsProjectsDeleteDELETE /accounts/{account_id}/teams/{team_id}/projects/{id}Remove Project
TeamsApiteamsSpacesCreatePOST /accounts/{account_id}/teams/{team_id}/spacesAdd Space
TeamsApiteamsSpacesDeleteDELETE /accounts/{account_id}/teams/{team_id}/spaces/{id}Remove Space
TeamsApiteamsUsersCreatePOST /accounts/{account_id}/teams/{team_id}/usersAdd User
TeamsApiteamsUsersDeleteDELETE /accounts/{account_id}/teams/{team_id}/users/{id}Remove User
TranslationsApitranslationCreatePOST /projects/{project_id}/translationsCreate a translation
TranslationsApitranslationExcludePATCH /projects/{project_id}/translations/{id}/excludeExclude a translation from export
TranslationsApitranslationIncludePATCH /projects/{project_id}/translations/{id}/includeRevoke exclusion of a translation in export
TranslationsApitranslationReviewPATCH /projects/{project_id}/translations/{id}/reviewReview a translation
TranslationsApitranslationShowGET /projects/{project_id}/translations/{id}Get a single translation
TranslationsApitranslationUnverifyPATCH /projects/{project_id}/translations/{id}/unverifyMark a translation as unverified
TranslationsApitranslationUpdatePATCH /projects/{project_id}/translations/{id}Update a translation
TranslationsApitranslationVerifyPATCH /projects/{project_id}/translations/{id}/verifyVerify a translation
TranslationsApitranslationsByKeyGET /projects/{project_id}/keys/{key_id}/translationsList translations by key
TranslationsApitranslationsByLocaleGET /projects/{project_id}/locales/{locale_id}/translationsList translations by locale
TranslationsApitranslationsExcludeCollectionPATCH /projects/{project_id}/translations/excludeSet exclude from export flag on translations selected by query
TranslationsApitranslationsIncludeCollectionPATCH /projects/{project_id}/translations/includeRemove exlude from import flag from translations selected by query
TranslationsApitranslationsListGET /projects/{project_id}/translationsList all translations
TranslationsApitranslationsReviewCollectionPATCH /projects/{project_id}/translations/reviewReview translations selected by query
TranslationsApitranslationsSearchPOST /projects/{project_id}/translations/searchSearch translations
TranslationsApitranslationsUnverifyCollectionPATCH /projects/{project_id}/translations/unverifyMark translations selected by query as unverified
TranslationsApitranslationsVerifyCollectionPATCH /projects/{project_id}/translations/verifyVerify translations selected by query
UploadsApiuploadCreatePOST /projects/{project_id}/uploadsUpload a new file
UploadsApiuploadShowGET /projects/{project_id}/uploads/{id}View upload details
UploadsApiuploadsListGET /projects/{project_id}/uploadsList uploads
UsersApishowUserGET /userShow current User
VariablesApivariableCreatePOST /projects/{project_id}/variablesCreate a variable
VariablesApivariableDeleteDELETE /projects/{project_id}/variables/{name}Delete a variable
VariablesApivariableShowGET /projects/{project_id}/variables/{name}Get a single variable
VariablesApivariableUpdatePATCH /projects/{project_id}/variables/{name}Update a variable
VariablesApivariablesListGET /projects/{project_id}/variablesList variables
VersionsHistoryApiversionShowGET /projects/{project_id}/translations/{translation_id}/versions/{id}Get a single version
VersionsHistoryApiversionsListGET /projects/{project_id}/translations/{translation_id}/versionsList all versions
WebhooksApiwebhookCreatePOST /projects/{project_id}/webhooksCreate a webhook
WebhooksApiwebhookDeleteDELETE /projects/{project_id}/webhooks/{id}Delete a webhook
WebhooksApiwebhookShowGET /projects/{project_id}/webhooks/{id}Get a single webhook
WebhooksApiwebhookTestPOST /projects/{project_id}/webhooks/{id}/testTest a webhook
WebhooksApiwebhookUpdatePATCH /projects/{project_id}/webhooks/{id}Update a webhook
WebhooksApiwebhooksListGET /projects/{project_id}/webhooksList webhooks

Author

support@phrase.com

FAQs

Package last updated on 30 Jun 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc