{"id":20543550,"url":"https://github.com/bavix/gripmock-sdk-go","last_synced_at":"2026-03-08T19:04:42.950Z","repository":{"id":224352862,"uuid":"763039009","full_name":"bavix/gripmock-sdk-go","owner":"bavix","description":"GripMock Go SDK","archived":false,"fork":false,"pushed_at":"2025-07-18T18:13:31.000Z","size":122,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-18T21:01:26.103Z","etag":null,"topics":["gripmock","sdk","sdk-go"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"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/bavix.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"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,"zenodo":null}},"created_at":"2024-02-25T11:55:53.000Z","updated_at":"2025-07-18T18:13:29.000Z","dependencies_parsed_at":"2024-02-25T14:28:41.317Z","dependency_job_id":"754d754f-2cb3-4e68-979b-76bff0a86d17","html_url":"https://github.com/bavix/gripmock-sdk-go","commit_stats":{"total_commits":37,"total_committers":4,"mean_commits":9.25,"dds":0.6486486486486487,"last_synced_commit":"96d44c497f709fa4a8993a281a800106c3f9a71a"},"previous_names":["bavix/gripmock-sdk-go"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/bavix/gripmock-sdk-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bavix%2Fgripmock-sdk-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bavix%2Fgripmock-sdk-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bavix%2Fgripmock-sdk-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bavix%2Fgripmock-sdk-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bavix","download_url":"https://codeload.github.com/bavix/gripmock-sdk-go/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bavix%2Fgripmock-sdk-go/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267385351,"owners_count":24078769,"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-07-27T02:00:11.917Z","response_time":82,"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":["gripmock","sdk","sdk-go"],"created_at":"2024-11-16T01:38:46.632Z","updated_at":"2026-03-08T19:04:37.929Z","avatar_url":"https://github.com/bavix.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gripmock-sdk-go\n\nGo client library for interacting with the [GripMock API](https://bavix.github.io/gripmock-openapi/), generated from OpenAPI specification. Simplifies programmatic management of gRPC mock stubs and service health checks.\n\n## Installation\n\n```bash\ngo get github.com/bavix/gripmock-sdk-go\n```\n\n## Initialization\n\n```go\nimport \"github.com/bavix/gripmock-sdk-go\"\n\nclient, err := gripmock_sdk_go.NewClient(\"http://localhost:4771\",\n    gripmock_sdk_go.WithHTTPClient(http.DefaultClient),\n)\nif err != nil {\n    log.Fatal(err)\n}\n```\n\n## Core Features\n\n### Health Checks\nVerify server status:\n```go\n// Check liveness\nlivenessResp, _ := client.LivenessWithResponse(context.Background())\nfmt.Println(\"Liveness:\", livenessResp.JSON200.Message)\n\n// Check readiness\nreadinessResp, _ := client.ReadinessWithResponse(context.Background())\nfmt.Println(\"Readiness:\", readinessResp.JSON200.Message)\n```\n\n### Service Discovery\nList available services and methods:\n```go\n// Get all services\nservicesResp, _ := client.ServicesListWithResponse(context.Background())\nfor _, svc := range *servicesResp.JSON200 {\n    fmt.Printf(\"Service: %s (%s)\\n\", svc.Name, svc.Package)\n    \n    // Get service methods\n    methodsResp, _ := client.ServiceMethodsListWithResponse(context.Background(), svc.Id)\n    for _, method := range *methodsResp.JSON200 {\n        fmt.Printf(\"  - %s\\n\", method.Name)\n    }\n}\n```\n\n### Stub Management\n\n#### Create Stub\n```go\nstub := gripmock_sdk_go.Stub{\n    Service: \"YourService\",\n    Method:  \"YourMethod\",\n    Input: gripmock_sdk_go.StubInput{\n        Equals: map[string]interface{}{\n            \"key\": \"expected_value\",\n        },\n    },\n    Output: gripmock_sdk_go.StubOutput{\n        Data: map[string]interface{}{\n            \"response_key\": \"mock_value\",\n        },\n        Code: (*codes.Code)(proto.Int32(int32(codes.OK))),\n    },\n}\n\nresp, _ := client.AddStubWithResponse(context.Background(), stub)\nfmt.Println(\"Created stub ID:\", resp.HTTPResponse.Header.Get(\"Stub-Id\"))\n```\n\n#### List Stubs\n```go\nstubsResp, _ := client.ListStubsWithResponse(context.Background())\nfor _, stub := range *stubsResp.JSON200 {\n    fmt.Printf(\"Stub: %s | %s.%s\\n\", stub.Id, stub.Service, stub.Method)\n}\n```\n\n#### Find Stub by ID\n```go\nstubID := \"a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8\"\nresp, _ := client.FindByIDWithResponse(context.Background(), stubID)\nif resp.JSON200 != nil {\n    fmt.Printf(\"Found stub: %+v\\n\", resp.JSON200)\n}\n```\n\n#### Delete Stub\n```go\ndeleteResp, _ := client.DeleteStubByIDWithResponse(context.Background(), stubID)\nif deleteResp.StatusCode() == http.StatusOK {\n    fmt.Println(\"Stub deleted successfully\")\n}\n```\n\n### Advanced Operations\n\n#### Batch Delete\n```go\nids := []gripmock_sdk_go.ID{\"id1\", \"id2\"}\nclient.BatchStubsDeleteWithResponse(context.Background(), ids)\n```\n\n#### Search Stubs\n```go\nsearchReq := gripmock_sdk_go.SearchStubsJSONRequestBody{\n    Service: \"YourService\",\n    Method:  \"YourMethod\",\n    Data: map[string]interface{}{\n        \"search_key\": \"value\",\n    },\n}\n\nresultsResp, _ := client.SearchStubsWithResponse(context.Background(), searchReq)\nfor _, result := range resultsResp.JSON200.Data {\n    fmt.Printf(\"Match: %+v\\n\", result)\n}\n```\n\n#### Purge All Stubs\n```go\nclient.PurgeStubsWithResponse(context.Background())\n```\n\n## Configuration Options\n\n### Custom HTTP Client\n```go\nhttpClient := \u0026http.Client{\n    Timeout: 10 * time.Second,\n}\n\nclient, _ = gripmock_sdk_go.NewClient(\"http://localhost:4771\",\n    gripmock_sdk_go.WithHTTPClient(httpClient),\n)\n```\n\n### Request Interceptors\nAdd authentication headers:\n```go\nauthMiddleware := func(ctx context.Context, req *http.Request) error {\n    req.Header.Add(\"Authorization\", \"Bearer YOUR_TOKEN\")\n    return nil\n}\n\nclient, _ = gripmock_sdk_go.NewClient(\"http://localhost:4771\",\n    gripmock_sdk_go.WithRequestEditorFn(authMiddleware),\n)\n```\n\n## Error Handling\n```go\nresp, err := client.FindByIDWithResponse(context.Background(), \"invalid-id\")\nif err != nil {\n    log.Fatal(\"Request failed:\", err)\n}\n\nif resp.StatusCode() == http.StatusNotFound {\n    fmt.Println(\"Stub not found\")\n} else if resp.StatusCode() \u003e= 400 {\n    fmt.Printf(\"Error: %s\\n\", string(resp.Body))\n}\n```\n\n## Response Handling\nStructured data access example:\n```go\nsearchResp, _ := client.SearchStubsWithResponse(context.Background(), searchReq)\nif searchResp.JSON200 != nil {\n    fmt.Printf(\"Found %d matches\\n\", len(searchResp.JSON200.Data))\n    for _, item := range searchResp.JSON200.Data {\n        fmt.Printf(\"Response data: %+v\\n\", item)\n    }\n}\n```\n\n## Documentation\n- [GripMock API Reference](https://bavix.github.io/gripmock-openapi/)\n- [GripMock Documentation](https://bavix.github.io/gripmock/)\n\n## License\nThis project is licensed under the [Apache License 2.0](https://github.com/bavix/gripmock/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbavix%2Fgripmock-sdk-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbavix%2Fgripmock-sdk-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbavix%2Fgripmock-sdk-go/lists"}