{"id":25523477,"url":"https://github.com/lockerpm/secrets-sdk-go","last_synced_at":"2026-02-11T08:03:21.584Z","repository":{"id":278110411,"uuid":"932097734","full_name":"lockerpm/secrets-sdk-go","owner":"lockerpm","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-19T05:08:13.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-19T05:30:43.481Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lockerpm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-02-13T11:08:24.000Z","updated_at":"2025-02-19T05:08:16.000Z","dependencies_parsed_at":"2025-02-19T05:30:45.349Z","dependency_job_id":null,"html_url":"https://github.com/lockerpm/secrets-sdk-go","commit_stats":null,"previous_names":["lockerpm/secrets-go-sdk","lockerpm/secrets-sdk-go"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lockerpm%2Fsecrets-sdk-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lockerpm%2Fsecrets-sdk-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lockerpm%2Fsecrets-sdk-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lockerpm%2Fsecrets-sdk-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lockerpm","download_url":"https://codeload.github.com/lockerpm/secrets-sdk-go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239718416,"owners_count":19685725,"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","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":[],"created_at":"2025-02-19T19:19:20.128Z","updated_at":"2026-02-11T08:03:21.564Z","avatar_url":"https://github.com/lockerpm.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Locker Secret NodeJS SDK\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://cystack.net/images/logo-black.svg\" alt=\"CyStack\" width=\"50%\"/\u003e\n\u003c/p\u003e\n\n\n---\n\nThe Locker Secret Go SDK provides convenient access to the Locker Secret API from applications written in the \nGo language. It includes a pre-defined set of classes for API resources that initialize themselves dynamically \nfrom API responses which makes it compatible with a wide range of versions of the Locker Secret API.\n\n\n## The Developer - CyStack\n\nThe Locker Secret Go SDK is developed by CyStack, one of the leading cybersecurity companies in Vietnam. \nCyStack is a member of Vietnam Information Security Association (VNISA) and Vietnam Association of CyberSecurity \nProduct Development. CyStack is a partner providing security solutions and services for many large domestic and \ninternational enterprises.\n\nCyStack’s research has been featured at the world’s top security events such as BlackHat USA (USA), \nBlackHat Asia (Singapore), T2Fi (Finland), XCon - XFocus (China)... CyStack experts have been honored by global \ncorporations such as Microsoft, Dell, Deloitte, D-link...\n\n\n## Documentation\n\nThe documentation will be updated later.\n\n## Requirements\n\n- Go 1.12+\n\n## Installation\n\nInstall with go get:\n\n```bash\ngo get github.com/lockerpm/secrets-sdk-go\n```\n\n## Usages\n\n### Set up access key\n\nThe SDK needs to be configured with your access key which is available in your Locker Secret Dashboard. \nEither setup a .env file or use the `SetAccessKeyID` and `SetSecretAccessKey` setters directly. \nYou may also need to set `APIBase` value (default value is `https://api.locker.io/locker_secrets`).\n\n```go\nimport (\n\t\"github.com/lockerpm/secrets-sdk-go/locker\"\n)\n\nfunc main() {\n\tvar lockerClient locker.Locker\n\tlockerClient.NewLockerClient()\n\tlockerClient.SetAccessKeyID(\"YOUR_ACCESS_KEY_ID\")\n\tlockerClient.SetSecretAccessKey(\"YOUR_SECRET_ACCESS_KEY\")\n}\n```\n\nAll initialization options are listed below:\n\n| Key                   | Description                                                                                  | Type                   | Required |\n| --------------------- | ---------------------------------------------------------------------------------------------| -----------------------| :--:     |\n| SetAccessKeyID        | Your access key id                                                                           | `string`               | ✅       | \n| SetSecretAccessKey    | Your access key secret                                                                       | `string`               | ✅       | \n| SetAPIBase            | Your server base API URL, default value is `https://api.locker.io/locker_secrets`            | `string`               | ❌       | \n| SetHeaders            | Custom headers for API calls                                                                 | `map[string]string`    | ❌       | \n| SetCooldown           | Timeout between API calls, default is `120` (seconds)                                        | `int`                  | ❌       | \n| SetFetch              | Force fetching data from the server, can override SetCooldown, default is `true`             | `boolean`              | ❌       |\n| SetUnsafe             | Set TLS to unsafe if you use a server with self-signed certificate, default value is `false` | `boolean`              | ❌       |\n| SetWorkingDir         | Secret's working directory, containing sqlite database, default is `$home/.locker`           | `string`               | ❌       |\n\nNow, you can use SDK to get or set values:\n\n```go\n// Get list secrets quickly\nsecrets, err := lockerClient.ListSecret(nil)\n\n// List secrets by environment\ntargetEnv := \"production\"\nsecret, err := lockerClient.ListSecret(*targetedEnv)\n\n// Get a secret value by secret key\n// Replace 'ENVIRONMENT' with nil to get secret from the environment ALL\nsecretValue1, err := lockerClient.GetSecret(\"SECRET_NAME_1\", nil)\nsecretValue2, err := lockerClient.GetSecret(\"SECRET_NAME_2\", \"ENVIRONMENT\")\n\n// Create new secret\nkey := \"key\"\nvalue := \"value\"\ndesc := \"description\"\nenv := \"environment\"\ninput := locker.InputSecData{\n    Key:   \u0026key,\n    Value: \u0026value,\n    Desc:  \u0026desc,\n    Env:   \u0026env,\n}\nresult, err := lockerClient.CreateSecret(\u0026input)\n\n// Update secret\nnewKey := \"new key\"\nnewValue := \"new value\"\nnewEnv := \"new env\" \ntargetKey := \"target key\"\ntargetEnv := \"target env\"\ninput := locker.InputSecData{\n    Key:   \u0026newKey,\n    Value: \u0026newValue,\n    Env:   \u0026newEnv, // use nil to set environment to ALL\n}\nresp, err := lockerClient.UpdateSecret(targetKey, \u0026targetEnv, \u0026input)\n\n// List environments\nenvs, err := lockerClient.ListEnvironment()\n\n// Get an environment object by name\nenv, err := lockerClient.ListSecret(\"production\")\n\n// Create new environment\nname := \"name\"\nurl := \"externalUrl\"\ndesc := \"description\"\ninput := locker.InputEnvData{\n    Name: \u0026name,\n    Url:  \u0026url,\n    Desc: \u0026desc,\n}\nresp, err := lockerClient.CreateEnvironment(\u0026input)\n\n// Update an environment by name\nname := \"new name\"\nurl := \"new externalUrl\"\ndesc := \"new description\"\ninput := locker.InputEnvData{\n    Name: \u0026name,\n    Url:  \u0026url,\n    Desc: \u0026desc\n}\nresp, err := lockerClient.UpdateEnvironment(\"target env\", \u0026input)\n```\n\n### Caching\n\nBy default, Locker fetches data from the cloud server once and stores it in local storage. It only checks for updates every 120 seconds to prevent unnecessary API calls. You can change this behavior by using `SetFetch` and `SetCooldown`\n\n```go\n// Object level, this config will apply to all methods\nvar lockerClient locker.Locker\n// ...\nlockerClient.SetFetch(true)   // setting it to true will force Locker to fetch from the cloud server instead of local storage\nlockerClient.SetCooldown(5)   // seconds, only accept integer value\n\n## Development\n\nInstall required packages.\n```bash\ngo get github.com/lockerpm/secrets-sdk-go\n```\n\n### Run tests\n\nCreate a .env file with required access keys (refer to `.env.example`)\n\nTo run all tests, use:\n```bash\ngo test\n```\n\n## Reporting security issues\n\nWe take the security and our users' trust very seriously. If you found a security issue in Locker SDK Python, please \nreport the issue by contacting us at \u003ccontact@locker.io\u003e. Do not file an issue on the tracker. \n\n\n## Contributing\n\nPlease check [CONTRIBUTING](CONTRIBUTING.md) before making a contribution.\n\n\n## Help and media\n\n- FAQ: https://support.locker.io\n\n- Community Q\u0026A: https://forum.locker.io\n\n- News: https://locker.io/blog\n\n\n## License","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flockerpm%2Fsecrets-sdk-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flockerpm%2Fsecrets-sdk-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flockerpm%2Fsecrets-sdk-go/lists"}