{"id":37123532,"url":"https://github.com/skyflowapi/skyflow-go","last_synced_at":"2026-03-12T12:15:57.516Z","repository":{"id":38405695,"uuid":"399015602","full_name":"skyflowapi/skyflow-go","owner":"skyflowapi","description":"Skyflow SDK for the Go programming language.","archived":false,"fork":false,"pushed_at":"2026-01-13T15:14:50.000Z","size":1328,"stargazers_count":11,"open_issues_count":19,"forks_count":10,"subscribers_count":16,"default_branch":"main","last_synced_at":"2026-01-13T16:58:47.646Z","etag":null,"topics":["go","golang","skyflow","skyflow-sdk"],"latest_commit_sha":null,"homepage":"https://docs.skyflow.com","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skyflowapi.png","metadata":{"files":{"readme":"README-v1.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-08-23T07:42:30.000Z","updated_at":"2026-01-13T15:05:46.000Z","dependencies_parsed_at":"2023-10-03T14:15:03.858Z","dependency_job_id":"4781fed4-c254-4f88-baac-e58e0a007e3b","html_url":"https://github.com/skyflowapi/skyflow-go","commit_stats":{"total_commits":192,"total_committers":17,"mean_commits":"11.294117647058824","dds":0.7708333333333334,"last_synced_commit":"bd71f173f7302a158d8c4d653ce49023fa7e1ca3"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/skyflowapi/skyflow-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skyflowapi%2Fskyflow-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skyflowapi%2Fskyflow-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skyflowapi%2Fskyflow-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skyflowapi%2Fskyflow-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skyflowapi","download_url":"https://codeload.github.com/skyflowapi/skyflow-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skyflowapi%2Fskyflow-go/sbom","scorecard":{"id":542888,"data":{"date":"2025-08-11","repo":{"name":"github.com/skyflowapi/skyflow-go","commit":"3ff116765086331015b62ff39583a84834488b02"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.9,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"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":"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":"Maintained","score":10,"reason":"20 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Security-Policy","score":9,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Warn: One or no descriptive hints of disclosure, vulnerability, and/or timelines in security policy","Info: Found text in security policy: 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":"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":"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/Gitleaks.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/Gitleaks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/Gitleaks.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/Gitleaks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/GoSec.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/GoSec.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/GoSec.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/GoSec.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/GoSec.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/GoSec.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/GoSec.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/GoSec.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/codeql-analysis.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:69: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/semgrep.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/semgrep.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/semgrep.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/skyflowapi/skyflow-go/semgrep.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/semgrep.yml:22","Info:   0 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   1 pipCommand 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:14","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:15","Info: topLevel 'contents' permission set to 'read': .github/workflows/Gitleaks.yml:12","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/semgrep.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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: 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":"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":"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0493 / GHSA-p782-xgp4-8hr8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 5 commits out of 30 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"}}]},"last_synced_at":"2025-08-20T08:41:09.853Z","repository_id":38405695,"created_at":"2025-08-20T08:41:09.853Z","updated_at":"2025-08-20T08:41:09.853Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28422449,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T13:30:50.153Z","status":"ssl_error","status_checked_at":"2026-01-14T13:29:08.907Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["go","golang","skyflow","skyflow-sdk"],"created_at":"2026-01-14T14:15:48.578Z","updated_at":"2026-01-14T14:15:49.895Z","avatar_url":"https://github.com/skyflowapi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Description\nThis go SDK is designed to help developers easily implement Skyflow into their go backend. \n\n[![CI](https://img.shields.io/static/v1?label=CI\u0026message=passing\u0026color=green?style=plastic\u0026logo=github)](https://github.com/skyflowapi/skyflow-go/actions)\n[![GitHub release](https://img.shields.io/github/v/release/skyflowapi/skyflow-go.svg)](https://github.com/skyflowapi/skyflow-go/releases)\n[![License](https://img.shields.io/github/license/skyflowapi/skyflow-go)](https://github.com/skyflowapi/skyflow-go/blob/main/LICENSE)\n\n\n# Table of Contents\n\n- [Description](#description)\n- [Table of Contents](#table-of-contents)\n  - [Features](#features)\n  - [Installation](#installation)\n    - [Requirements](#requirements)\n    - [Configuration](#configuration)\n    - [Service Account Token Generation](#service-account-token-generation)\n    - [Vault APIs](#vault-apis)\n      - [Insert data into the vault](#insert-data-into-the-vault)\n      - [Detokenize](#detokenize)\n      - [GetById](#getbyid)\n      - [Get](#get)\n        - [Use Skyflow IDs](#use-skyflow-ids)\n        - [Use column name and values](#use-column-name-and-values)\n    - [InvokeConnection](#invokeconnection)\n    - [Logging](#logging)\n  - [Reporting a Vulnerability](#reporting-a-vulnerability)\n\n\n## Features\n\n- Authentication with a Skyflow Service Account and generation of a bearer token\n- Vault API operations to insert, retrieve and tokenize sensitive data\n- Invoking connections to call downstream third party APIs without directly handling sensitive data\n\n## Installation\n\n### Requirements\n- go 1.18 and above\n\n### Configuration\n\nMake sure your project is using Go Modules (it will have a go.mod file in its root if it already is):\n\n```go\ngo mod init\n```\n\nThen, reference skyflow-go in a Go program with import:\n\n```go\nimport (\n  saUtil \"github.com/skyflowapi/skyflow-go/serviceaccount/util\"\n  Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n  \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n  \"github.com/skyflowapi/skyflow-go/commonutils/logwrapper\"\n)\n```\nAlternatively, `go get \u003cpackage_name\u003e` can also be used to download the required dependencies \n\n### Service Account Token Generation\n[This](https://github.com/skyflowapi/skyflow-go/tree/main/serviceaccount) go module is used to generate service account tokens from service account credentials file which is downloaded upon creation of service account. The token generated from this module is valid for 60 minutes and can be used to make API calls to vault services as well as management API(s) based on the permissions of the service account.\n\nThe **GenerateBearerToken(filepath)** function takes the credentials file path for token generation, alternatively, you can also send the entire credentials as string, by using **GenerateBearerTokenFromCreds(credentials)**.\n\n[Example](https://github.com/skyflowapi/skyflow-go/blob/main/samples/serviceaccount/token/main/service_account_token.go):\n\n```go\npackage main\n    \nimport (\n    \"fmt\"\n    saUtil \"github.com/skyflowapi/skyflow-go/serviceaccount/util\"\n)\n    \nvar bearerToken = \"\"\n\nfunc GetSkyflowBearerToken() (string, error) {\n\n\tfilePath := \"\u003cfile_path\u003e\"\n\tif saUtil.IsExpired(bearerToken) {\n\t\tnewToken, err := saUtil.GenerateBearerToken(filePath)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t} else {\n\t\t\tbearerToken = newToken.AccessToken\n\t\t\treturn bearerToken, nil\n\t\t}\n\t}\n\treturn bearerToken, nil\n}\n```\n\n\n### Vault APIs\n\nThe [Vault](https://github.com/skyflowapi/skyflow-go/tree/main/skyflow/vaultapi) Go module is used to perform operations on the vault such as inserting records, detokenizing tokens, retrieving tokens for a skyflow_id and to invoke a connection.\n\nTo use this module, the skyflow client must first be initialized as follows.\n\n```go\nimport (\n     Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n     \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nconfiguration := common.Configuration {\n        VaultID: \"\u003cvauld_id\u003e\",      //Id of the vault that the client should connect to \n        VaultURL: \"\u003cvault_url\u003e\",    //URL of the vault that the client should connect to\n        TokenProvider: GetToken     //helper function that retrieves a Skyflow bearer token from your backend\n}\n\nskyflowClient := Skyflow.Init(configuration)\n```\n\nAll Vault APIs must be invoked using a skyflowClient instance.\n\n#### Insert data into the vault\n\nTo insert data into your vault, use the **Insert(records map[string]interface{}, options common.InsertOptions)** method of the Skyflow client. The **insertInput** parameter requires a `records` key and takes an array of records to insert as a value into the vault. The `options` parameter is a InsertOptions object that provides further options, including Upsert operations, for your insert call, as shown below.\n\nInsert call schema:\n\n```go\nimport (\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\n//Initialize the  SkyflowClient.\n\nvar records = make(map[string] interface {})\n\nvar record = make(map[string] interface {})\nrecord[\"table\"] = \"\u003cyour_table_name\u003e\"\nvar fields = make(map[string] interface {})\nfields[\"\u003cfield_name\u003e\"] = \"\u003cfield_value\u003e\"\nrecord[\"fields\"] = fields\n\nvar recordsArray[] interface {}\nrecordsArray = append(recordsArray, record)\n\nrecords[\"records\"] = recordsArray\n\nvar upsertArray []common.UpsertOptions\nvar upsertOption = common.UpsertOptions{Table:\"\u003ctable_name\u003e\",Column:\"\u003ccolumn_name\u003e\"}\nupsertArray = append(upsertArray,upsertOption)\n\noptions = common.InsertOptions {\n        Tokens: true //Optional, indicates whether tokens should be returned for the inserted data. This value defaults to \"true\".\n        Upsert: upsertArray //Optional, upsert support.\n        ContinueOnError: true // Optional, decides whether to continue if error encountered or not\n}\n\nres, err: = skyflowClient.Insert(records, options)\n```\n\n[Insert call example](https://github.com/skyflowapi/skyflow-go/blob/main/samples/vaultapi/insert.go):\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nfunc main() {\n\n    //Initialize the SkyflowClient.\n\n    var records = make(map[string] interface {})\n    var record = make(map[string] interface {})\n    record[\"table\"] = \"cards\"\n    var fields = make(map[string] interface {})\n    fields[\"cardNumber\"] = \"411111111111\"\n    fields[\"fullname\"] = \"name\"\n    record[\"fields\"] = fields\n    var recordsArray[] interface {}\n    recordsArray = append(recordsArray, record)\n    records[\"records\"] = recordsArray\n\n    var options = common.InsertOptions {\n        Tokens: true\n    }\n\n    res, err: = skyflowClient.Insert(records, options)\n\n    if err == nil {\n        fmt.Println(res.Records)\n    }\n}\n```\n\nSample response :\n\n```json\n{\n  \"records\": [\n    { \n      \"request_index\": 0,\n      \"table\": \"cards\",\n      \"fields\": {\n        \"cardNumber\": \"f37186-e7e2-466f-91e5-48e2bcbc1\",\n        \"fullname\": \"1989cb56-63a-4482-adf-1f74cd1a5\",\n        \"skyflow_id\": \"da26de53-95d5-4bdb-99db-8d8c66a35ff9\"\n      }\n    }\n  ]\n}\n\n```\n\n\n[Insert call example with ContinueOnError](https://github.com/skyflowapi/skyflow-go/blob/main/samples/vaultapi/insert_with_continueOnError.go):\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nfunc main() {\n\n    //Initialize the SkyflowClient.\n\n    var records = make(map[string] interface {})\n    var record = make(map[string] interface {})\n    record[\"table\"] = \"cards\"\n    var fields = make(map[string] interface {})\n    fields[\"cardNumber\"] = \"411111111111\"\n    fields[\"fullname\"] = \"name\"\n    record[\"fields\"] = fields\n\n    var record2 = make(map[string] interface {})\n    record2[\"table\"] = \"pii_field\"\n    var fields2 = make(map[string] interface {})\n    fields2[\"name\"] = \"name\"\n    record2[\"fields\"] = fields2\n\n    var recordsArray[] interface {}\n    recordsArray = append(recordsArray, record)\n\n    records[\"records\"] = recordsArray\n\n    var options = common.InsertOptions {\n        Tokens: true,\n        ContinueOnError: true\n    }\n\n    res, err: = skyflowClient.Insert(records, options)\n\n    if err == nil {\n        fmt.Println(res.Records)\n    }\n}\n```\n\nSample response :\n\n```json\n{\n  \"records\": [\n    {\n      \"request_index\": 0,\n      \"table\": \"cards\",\n      \"fields\": {\n        \"cardNumber\": \"f37186-e7e2-466f-91e5-48e2bcbc1\",\n        \"fullname\": \"1989cb56-63a-4482-adf-1f74cd1a5\",\n        \"skyflow_id\": \"da26de53-95d5-4bdb-99db-8d8c66a35ff9\"\n      }\n    }\n  ],\n  \"errors\": [\n    {\n      \"error\": {\n        \"request_index\": 1,\n        \"code\": 404,\n        \"description\": \"Object Name pii_field was not found for Vault - requestId : id1234\"\n      }\n    }\n  ]\n}\n\n```\n\n[Upsert call example](https://github.com/skyflowapi/skyflow-go/blob/main/samples/vaultapi/upsert.go):\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nfunc main() {\n\n    //Initialize the SkyflowClient.\n\n    var records = make(map[string] interface {})\n    var record = make(map[string] interface {})\n    record[\"table\"] = \"cards\"\n    var fields = make(map[string] interface {})\n    fields[\"cardNumber\"] = \"411111111111\"\n    fields[\"fullname\"] = \"name\"\n    record[\"fields\"] = fields\n    var recordsArray[] interface {}\n    recordsArray = append(recordsArray, record)\n    records[\"records\"] = recordsArray\n\n    //Create an upsert array.\n\n    var upsertArray []common.UpsertOptions\n    var upsertOption = common.UpsertOptions{Table:\"cards\",Column:\"cardNumber\"}\n    upsertArray = append(upsertArray,upsertOption)\n\n    var options = common.InsertOptions {\n        Tokens: true\n        Upsert: upsertArray\n    }\n\n    res, err: = skyflowClient.Insert(records, options)\n\n    if err == nil {\n        fmt.Println(res.Records)\n    }\n}\n```\n\nSample response :\n\n```json\n{\n  \"records\": [\n    {\n      \"request_index\": 0,\n      \"table\": \"cards\",\n      \"fields\": {\n        \"cardNumber\": \"f37186-e7e2-466f-91e5-48e2bcbc1\",\n        \"fullname\": \"1989cb56-63a-4482-adf-1f74cd1a5\",\n        \"skyflow_id\": \"da26de53-95d5-4bdb-99db-8d8c66a35ff9\"\n      }\n    }\n  ]\n}\n```\n\n#### Detokenize\nTo retrieve tokens from your vault, you can use the **Detokenize(records map[string]interface{},options common.DetokenizeOptions)** method.The `records` parameter takes an array of SkyflowIDs to return.The options parameter is a DetokenizeOptions object that provides further options, including `ContinueOnError` operation, for your detokenize call, as shown below:\n\n```go\nimport (\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\n//initialize skyflowClient\n\nvar records = make(map[string] interface {})\n\nvar record1 = make(map[string] interface {})\nrecord1[\"token\"] = \"\u003ctoken\u003e\"    // token for the record to be fetched\nvar record2 = make(map[string] interface {})\nrecord2[\"token\"] = \"\u003ctoken\u003e\"\nrecord2[\"redaction\"] = \"\u003cRedactionType\u003e\" // Optional. Redaction to be applied for retrieved data.\n\nvar recordsArray[] interface {}\nrecordsArray = append(recordsArray, record1)\nrecordsArray = append(recordsArray, record2)\n\nrecords[\"records\"] = recordsArray\noptions := common.DetokenizeOptions {\n        ContinueOnError: true //Optional, true indicates making individual API calls. false indicates to make a bulk API call.. This value defaults to \"true\".\n}\nres, err := skyflowClient.Detokenize(records, options)\n\nNote: `redaction` defaults to `common.PLAIN_TEXT`\n```\n\nAn [example](https://github.com/skyflowapi/skyflow-go/blob/main/samples/vaultapi/detokenize.go) of a Detokenize call:\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nfunc main() {\n\n    //initialize skyflowClient\n\n    var records = make(map[string] interface {})\n    var record1 = make(map[string] interface {})\n    record1[\"token\"] = \"45012507-f72b-4f5c-9bf9-86b133bae719\"\n    var record2 = make(map[string] interface {})\n    record2[\"token\"] = \"invalid-token\"\n    var recordsArray[] interface {}\n    recordsArray = append(recordsArray, record1)\n    recordsArray = append(recordsArray, record2)\n    records[\"records\"] = recordsArray\n\n    res, err: = skyflowClient.Detokenize(records)\n\n    if err == nil {\n        fmt.Println(\"Records:\",res.Records)\n        fmt.Println(\"Errors:\",res.Errors)\n    }\n}  \n```\n\nSample response:\n\n```json\n{\n  \"records\": [\n    {\n      \"token\": \"131e70dc-6f76-4319-bdd3-96281e051051\",\n      \"value\": \"1990-01-01\"\n    }\n  ],\n  \"errors\": [\n    {\n      \"token\": \"invalid-token\",\n      \"error\": {\n        \"code\": 404,\n        \"description\": \"Tokens not found for invalid-token\"\n      }\n    }\n  ]\n}\n```\n[Detokenize call with the ContinueOnError example.](https://github.com/skyflowapi/skyflow-go/blob/main/samples/vaultapi/detokenize.go):\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nfunc main() {\n\n    //initialize skyflowClient\n\n    var records = make(map[string] interface {})\n    var record1 = make(map[string] interface {})\n    record1[\"token\"] = \"45012507-f72b-4f5c-9bf9-86b133bae719\"\n    var record2 = make(map[string] interface {})\n    record2[\"token\"] = \"131e70dc-6f76-4319-bdd3-96281e051051\"\n    var recordsArray[] interface {}\n    recordsArray = append(recordsArray, record1)\n    recordsArray = append(recordsArray, record2)\n    records[\"records\"] = recordsArray\n    options := common.DetokenizeOptions {\n        ContinueOnError: false\n    }\n    res, err: = skyflowClient.Detokenize(records, options)\n\n    if err == nil {\n        fmt.Println(\"Records:\",res.Records)\n        fmt.Println(\"Errors:\",res.Errors)\n    }\n}  \n```\nSample response:\n```json\n{\n  \"records\": [\n    {\n      \"token\": \"45012507-f72b-4f5c-9bf9-86b133bae719\",\n      \"value\": \"Jhon\"\n    },\n    {\n      \"token\": \"131e70dc-6f76-4319-bdd3-96281e051051\",\n      \"value\": \"1990-01-01\"\n    }\n  ],\n}\n```\n\n#### GetById\n \nIn order to retrieve data from your vault using SkyflowIDs, use the **GetById(records map[string]interface{})** method. The `records` parameter takes a map that has an array of SkyflowIDs to return, as shown below:\n\n```go\nimport (\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\n//initialize skyflowClient\n\nvar records = make(map[string] interface {})\n\nvar record1 = make(map[string] interface {})\nrecord1[\"ids\"] = [] string {} {     // List of SkyflowID's of the records to be fetched\n    \"\u003cskyflow_id1\u003e\", \"\u003cskyflow_id2\u003e\"\n}\nrecord1[\"table\"] = \"\u003ctable_name\u003e\"   // name of table holding the above skyflow_id's\nrecord1[\"redaction\"] =  common.PLAIN_TEXT   // redaction to be applied to retrieved data\n\nvar recordsArray[] interface {}\nrecordsArray = append(recordsArray, record1)\nrecords[\"records\"] = recordsArray\n\nres, err := skyflowClient.GetById(records)\n```\n\nThere are 4 accepted values in Skyflow.RedactionTypes:\n\n-  `PLAIN_TEXT`\n-  `MASKED`\n-  `REDACTED`\n-  `DEFAULT`\n\n  \n\nAn [example](https://github.com/skyflowapi/skyflow-go/blob/main/samples/vaultapi/get_by_id.go) of GetById call:\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nfunc main() {\n\n    //initialize skyflowClient\n\n    var records = make(map[string] interface {})\n    var record1 = make(map[string] interface {})\n    record1[\"ids\"] = [] string {} {\n        \"f8d8a622-b557-4c6b-a12c-c5ebe0b0bfd9\", \"da26de53-95d5-4bdb-99db-8d8c66a35ff9\"\n    }\n    record1[\"table\"] = \"cards\"\n    record1[\"redaction\"] = common.PLAIN_TEXT\n\n    var recordsArray[] interface {}\n    recordsArray = append(recordsArray, record1)\n    records[\"records\"] = recordsArray\n\n    res, err: = skyflowClient.GetById(records)\n\n    if err == nil {\n      fmt.Println(\"Records:\",res.Records)\n      fmt.Println(\"Errors:\",res.Errors)\n    }\n}\n```\n\nSample response:\n\n```json\n{\n  \"records\": [\n    {\n      \"fields\": {\n        \"card_number\": \"4111111111111111\",\n        \"expiry_date\": \"11/35\",\n        \"fullname\": \"myname\",\n        \"skyflow_id\": \"f8d8a622-b557-4c6b-a12c-c5ebe0b0bfd9\"\n      },\n      \"table\": \"cards\"\n    },\n    {\n      \"fields\": {\n        \"card_number\": \"4111111111111111\",\n        \"expiry_date\": \"10/23\",\n        \"fullname\": \"sam\",\n        \"skyflow_id\": \"da26de53-95d5-4bdb-99db-8d8c66a35ff9\"\n      },\n      \"table\": \"cards\"\n    }\n  ]\n}\n```\n\n#### Get\n \nIn order to retrieve data from your vault using Skyflow IDs or by Unique Column Values, use the **Get(records map[string]interface{}, options common.GetOptions)** method. The `records` parameter takes a map that should contain\n\n1. Either an array of Skyflow IDs to fetch\n2. Or a column name and array of column values\n\nThe second parameter, options, is a GetOptions object that retrieves tokens of Skyflow IDs. \n\nNote: \n1. GetOptions parameter applicable only for retrieving tokens using Skyflow ID.\n2. You can't pass GetOptions along with the redaction type.\n3. `tokens` defaults to false.\n\n\n##### Use Skyflow IDs\n1. Retrieve data using Redaction type:\n\n```go\nimport (\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\n//initialize skyflowClient\n\nvar records = make(map[string] interface {})\n\nvar record1 = make(map[string] interface {})\nrecord1[\"ids\"] = [] string {} {              // List of SkyflowID's of the records to be fetched\n    \"\u003cskyflow_id1\u003e\", \"\u003cskyflow_id2\u003e\"\n}\nrecord1[\"table\"] = \"\u003ctable_name\u003e\"            // Name of table holding the records in the vault.\nrecord1[\"redaction\"] =  common.PLAIN_TEXT    // Redaction type to apply to retrieved data.\n\nvar recordsArray[] interface {}\nrecordsArray = append(recordsArray, record1)\nrecords[\"records\"] = recordsArray\n\nres, err := skyflowClient.Get(records)\n```\n\n2. Retrieve tokens using GetOptions:\n\n```go\nimport (\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\n//initialize skyflowClient\n\nvar records = make(map[string] interface {})\n\nvar record1 = make(map[string] interface {})\nrecord1[\"ids\"] = [] string {} {     // List of SkyflowID's of the records to be fetched\n    \"\u003cskyflow_id1\u003e\", \"\u003cskyflow_id2\u003e\"\n}\nrecord1[\"table\"] = \"\u003ctable_name\u003e\"   // // Name of table holding the records in the vault.\n\nvar recordsArray[] interface {}\nrecordsArray = append(recordsArray, record1)\nrecords[\"records\"] = recordsArray\n\nres, err := skyflowClient.Get(records, common.GetOptions{Tokens: true})\n```\n\n##### Use column name and values\n```go\nimport (\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\n//initialize skyflowClient\n\nvar records = make(map[string] interface {})\n\nvar record1 = make(map[string] interface {})\nrecord1[\"columnValues\"] = [] string {} {     // List of given unique column values.\n    \"\u003ccolumn_value1\u003e\", \"\u003ccolumn_value2\u003e\"\n}\nrecord1[\"columnName\"] = \"\u003ccolumn_name\u003e\"      // Unique column name in the vault.\nrecord1[\"redaction\"] =  common.PLAIN_TEXT \nrecord1[\"table\"] = \"\u003ctable_name\u003e\"            // Name of table holding the above skyflow_id's\n\nvar recordsArray[] interface {}\nrecordsArray = append(recordsArray, record1)\nrecords[\"records\"] = recordsArray\n\nres, err := skyflowClient.Get(records)\n```\n\nThere are 4 accepted values in Skyflow.RedactionTypes:\n\n-  `PLAIN_TEXT`\n-  `MASKED`\n-  `REDACTED`\n-  `DEFAULT`\n\nExamples\n\nAn example call using Skyflow IDs with RedactionType:\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nfunc main() {\n\n    //initialize skyflowClient\n\n    var records = make(map[string] interface {})\n    var record1 = make(map[string] interface {})\n    record1[\"ids\"] = [] string {} {\n        \"f8d8a622-b557-4c6b-a12c-c5ebe0b0bfd9\", \"da26de53-95d5-4bdb-99db-8d8c66a35ff9\"\n    }\n    record1[\"table\"] = \"cards\"\n    record1[\"redaction\"] = common.PLAIN_TEXT\n\n    var record2 = make(map[string] interface {})\n    record2[\"ids\"] = [] string {} { \"invalid-id\" }\n    record2[\"table\"] = \"cards\"\n    record2[\"redaction\"] = common.PLAIN_TEXT\n\n    var recordsArray[] interface {}\n    recordsArray = append(recordsArray, record1)\n    recordsArray = append(recordsArray, record2)\n\n    records[\"records\"] = recordsArray\n\n    res, err: = skyflowClient.Get(records)\n\n    if err == nil {\n      fmt.Println(\"Records:\",res.Records)\n      fmt.Println(\"Errors:\",res.Errors)\n    }\n}\n```\n\nSample response:\n\n```json\n{\n  \"records\": [\n    {\n      \"fields\": {\n        \"card_number\": \"4111111111111111\",\n        \"expiry_date\": \"11/35\",\n        \"fullname\": \"myname\",\n        \"skyflow_id\": \"f8d8a622-b557-4c6b-a12c-c5ebe0b0bfd9\"\n      },\n      \"table\": \"cards\"\n    },\n    {\n      \"fields\": {\n        \"card_number\": \"4111111111111111\",\n        \"expiry_date\": \"10/23\",\n        \"fullname\": \"sam\",\n        \"skyflow_id\": \"da26de53-95d5-4bdb-99db-8d8c66a35ff9\"\n      },\n      \"table\": \"cards\"\n    }\n  ],\n  \"errors\": [\n    {\n      \"error\": {\n        \"code\": \"404\",\n        \"description\": \"No Records Found - requestId: fc531b8d-412e-9775-b945-4feacc9b8616\"\n      },\n      \"ids\": [\"Invalid Skyflow ID\"]\n    }\n  ]\n}\n```\n\nAn example call using Skyflow IDs with GetOptions:\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nfunc main() {\n\n    //initialize skyflowClient\n\n    var records = make(map[string] interface {})\n    var record1 = make(map[string] interface {})\n    record1[\"ids\"] = [] string {} {\n        \"f8d8a622-b557-4c6b-a12c-c5ebe0b0bfd9\", \"da26de53-95d5-4bdb-99db-8d8c66a35ff9\"\n    }\n    record1[\"table\"] = \"cards\"\n\n    var record2 = make(map[string] interface {})\n    record2[\"ids\"] = [] string {} { \"Invalid Skyflow ID\" }\n    record2[\"table\"] = \"cards\"\n\n    var recordsArray[] interface {}\n    recordsArray = append(recordsArray, record1)\n    recordsArray = append(recordsArray, record2)\n\n    records[\"records\"] = recordsArray\n\n    res, err: = skyflowClient.Get(records, common.GetOptions{Tokens: true})\n\n    if err == nil {\n      fmt.Println(\"Records:\",res.Records)\n      fmt.Println(\"Errors:\",res.Errors)\n    }\n}\n```\n\nSample response:\n\n```json\n{\n  \"records\": [\n    {\n      \"fields\": {\n        \"card_number\": \"4555-5176-5936-1930\",\n        \"expiry_date\": \"23396425-93c9-419b-834b-7750b76a34b0\",\n        \"fullname\": \"d6bb7fe5-6b77-4842-b898-221c51c3cc20\",\n        \"id\": \"f8d8a622-b557-4c6b-a12c-c5ebe0b0bfd9\"\n      },\n      \"table\": \"cards\"\n    },\n    {\n      \"fields\": {\n        \"card_number\": \"8882-7418-2776-6660\",\n        \"expiry_date\": \"284fb1f6-3c29-449f-8899-83a7839821bc\",\n        \"fullname\": \"45a69af3-e22a-4668-9016-08bb2ef2259d\",\n        \"id\": \"da26de53-95d5-4bdb-99db-8d8c66a35ff9\"\n      },\n      \"table\": \"cards\"\n    }\n  ],\n  \"errors\": [\n    {\n      \"error\": {\n        \"code\": \"404\",\n        \"description\": \"No Records Found - requestId: fc531b8d-412e-9775-b945-4feacc9b8616\"\n      },\n      \"ids\": [\"Invalid Skyflow ID\"]\n    }\n  ]\n}\n```\nAn example call using column names and values. \n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nfunc main() {\n\n    //initialize skyflowClient\n\n    var records = make(map[string] interface {})\n    var record1 = make(map[string] interface {})\n    record1[\"columnValues\"] = [] string {} {\n        \"123455432112345\", \"123455432112346\"\n    }\n    record1[\"columnName\"] = \"bank_account_number\"\n    record1[\"table\"] = \"account_details\"\n    record1[\"redaction\"] = common.PLAIN_TEXT\n\n    var record2 = make(map[string] interface {})\n    record2[\"columnValues\"] = [] string {} { \"Invalid Skyflow column value\" }\n    record1[\"columnName\"] = \"bank_account_number\"\n    record2[\"table\"] = \"account_details\"\n    record2[\"redaction\"] = common.PLAIN_TEXT\n\n\n    var recordsArray[] interface {}\n    recordsArray = append(recordsArray, record1)\n    recordsArray = append(recordsArray, record2)\n\n    records[\"records\"] = recordsArray\n\n    res, err: = skyflowClient.Get(records)\n\n    if err == nil {\n      fmt.Println(\"Records:\",res.Records)\n      fmt.Println(\"Errors:\",res.Errors)\n    }\n}\n```\nSample response:\n\n```json\n{\n  \"records\": [\n    {\n      \"fields\": {\n        \"bank_account_number\": \"123455432112345\",\n        \"pin_code\": \"123123\",\n        \"name\": \"vivek jain\",\n        \"id\": \"492c21a1-107f-4d10-ba2c-3482a411827d\"\n      },\n      \"table\": \"account_details\"\n    },\n    {\n      \"fields\": {\n        \"bank_account_number\": \"123455432112346\",\n        \"pin_code\": \"123123\",\n        \"name\": \"vivek\",\n        \"id\": \"ac6c6221-bcd1-4265-8fc7-ae7a8fb6dfd5\"\n      },\n      \"table\": \"account_details\"\n    }\n  ],\n  \"errors\": [\n    {\n      \"columnName\": [\"bank_account_number\"],\n      \"error\": {\n        \"code\": 404,\n        \"description\": \"No Records Found - requestId: fc531b8d-412e-9775-b945-4feacc9b8616\"\n      }\n    }\n  ]\n}\n```\n\n### InvokeConnection\n\nEnd-user apps can use InvokeConnection to integrate checkout and card issuance flows with their apps and systems. To invoke a connection, use the invokeConnection(config ConnectionConfig) method of the Skyflow client. The config object must have `connectionURL`,`methodName` and the remaining are optional. \n\nThe InvokeConnection method lets you bypass handling sensitive data by integrating third-party server-side application using APIs. Before invoking the `InvokeConnection` method, you must create a connection and generate a connectionURL. Once you have the connectionURL, you can invoke a connection by using the **InvokeConnection(config ConnectionConfig)** method. The config parameter must include a `connectionURL` and `methodName`. The other fields are optional.\n\n```go\n\n  pathParams := make(map[string]string)\n  pathParams[\"\u003cpath_param_key\u003e\"] = \"\u003cpath_param_value\u003e\"\n\n  queryParams := make(map[string]interface{})\n  queryParams[\"\u003cquery_param_key\u003e\"] = \"\u003cquery_param_value\u003e\"\n\n  requestHeader := make(map[string]string)\n  requestHeader[\"\u003crequest_header_key\u003e\"] = \"\u003crequest_header_value\u003e\"\n\n  requestBody := make(map[string]interface{})\n  requestBody[\"\u003crequest_body_key\u003e\"] = \"\u003crequest_body_value\u003e\"\n\n  connectionConfig := common.ConnectionConfig{ConnectionURL : \"\u003cyour_connection_url\u003e\",MethodName : \"\u003cMethod_Name\u003e\",PathParams : pathParams,QueryParams : queryParams, RequestBody : requestBody, RequestHeaders : requestHeader}\n\n  skyflowClient.InvokeConnection(connectionConfig)  \n\n\n```\n\n`methodName` supports the following methods:\n- GET\n- POST\n- PUT\n- PATCH\n- DELETE\n\n**pathParams, queryParams, requestHeader, requestBody**  objects will be sent through the connection integration url as shown below.\n\nAn [example](https://github.com/skyflowapi/skyflow-go/blob/main/samples/vaultapi/invoke_connection.go) of InvokeConnection call:\n\n```go\n\npackage main\n\nimport (\n    \"fmt\"\n    Skyflow \"github.com/skyflowapi/skyflow-go/skyflow/client\"\n    \"github.com/skyflowapi/skyflow-go/skyflow/common\"\n)\n\nfunc main() {\n\n    //initialize skyflowClient\n\n    pathParams := make(map[string]string)\n    pathParams[\"card_number\"] = \"1852-344-234-34251\"\n\n    requestHeader := make(map[string]string)\n    requestHeaders[\"Authorization\"] = \"\u003cYOUR_CONNECTION_AUTH\u003e\"\n\n    requestBody := make(map[string]interface{})\n    requestBody[\"expirationDate\"] = \"12/2026\"\n\n    connectionConfig := common.ConnectionConfig{ConnectionURL : \"\u003cConnection_URL\u003e\",MethodName : \"\u003cMethod_Name\u003e\",PathParams : pathParams, RequestBody : requestBody, RequestHeaders : requestHeader}\n\n    res, err: = skyflowClient.InvokeConnection(connectionConfig)\n\n    if err == nil {\n          jsonRes, err: = json.Marshal(res)\n          if err == nil {\n                fmt.Println(\"result: \", string(jsonRes))\n          }\n    }\n}\n```\n\nSample invokeConnection Response\n```go\n{\n    \"receivedTimestamp\": \"2021-11-05 13:43:12.534\",\n    \"processingTimeinMs\": 12,\n    \"resource\": {\n        \"cvv2\": \"558\"\n    }\n}\n```\n\n### Logging\n\nThe skyflow-go SDK provides useful logging using go libray `github.com/sirupsen/logrus`. By default the logging level of the SDK is set to `LogLevel.ERROR`. This can be changed by using `SetLogLevel(LogLevel)` as shown below:\n\n```go\nimport \"github.com/skyflowapi/skyflow-go/commonutils/logwrapper\"\n\n// sets the skyflow-go SDK log level to INFO\nlogger.SetLogLevel(logger.LogLevel.INFO);\n```\n\nCurrently the following log levels are supported:\n\n- `DEBUG`:\n\n   When `LogLevel.DEBUG` is passed, all level of logs will be printed(DEBUG, INFO, WARN, ERROR)\n   \n- `INFO`: \n\n   When `LogLevel.INFO` is passed, INFO logs for every event that has occurred during the SDK flow execution will be printed along with WARN and ERROR logs\n   \n- `WARN`: \n\n   When `LogLevel.WARN` is passed, WARN and ERROR logs will be printed\n   \n- `ERROR`:\n\n   When `LogLevel.ERROR` is passed, only ERROR logs will be printed.\n\n- `OFF`:\n\n  `LogLevel.OFF` can be used to turn off all logging from the Skyflow SDK.\n\n`Note`:\n  - The ranking of logging levels is as follows :  `DEBUG` \u003c `INFO` \u003c `WARN` \u003c `ERROR`\u003c `OFF`\n\n.\n## Reporting a Vulnerability\n\nIf you discover a potential security issue in this project, please reach out to us at security@skyflow.com. Please do not create public GitHub issues or Pull Requests, as malicious actors could potentially view them.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyflowapi%2Fskyflow-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskyflowapi%2Fskyflow-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyflowapi%2Fskyflow-go/lists"}