An idiomatic C++ client library for theContainer Analysis API, an implementation of theGrafeas API, which stores, and enables querying and retrieval of critical metadata about all of your software artifacts.
While this library isGA, please note Google Cloud C++ client libraries donotfollowSemantic Versioning.
Quickstart
The following shows the code that you'll run in thegoogle/cloud/containeranalysis/quickstart/directory, which should give you a taste of the Container Analysis API C++ client library API.
This library offers multiple*Clientclasses, which are listed below. Each one of these classes exposes all the RPCs for a service as member functions of the class. This library groups multiple services because they are part of the same product or are often used together. A typical example may be the administrative and data plane operations for a single product.
The library also has other classes that provide helpers, configuration parameters, and infrastructure to mock the*Clientclasses when testing your application.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThis webpage provides documentation for the Container Analysis API C++ client library, which is an implementation of the Grafeas API for managing software artifact metadata.\u003c/p\u003e\n"],["\u003cp\u003eThe library's latest version is 2.37.0-rc, with numerous previous versions available, however, Google Cloud C++ client libraries do not follow Semantic Versioning.\u003c/p\u003e\n"],["\u003cp\u003eThe library offers several client classes, such as \u003ccode\u003econtaineranalysis_v1::ContainerAnalysisClient\u003c/code\u003e and \u003ccode\u003econtaineranalysis_v1::GrafeasClient\u003c/code\u003e, each providing access to RPCs for the services it's responsible for.\u003c/p\u003e\n"],["\u003cp\u003eThe provided quickstart code example demonstrates basic usage of the \u003ccode\u003eGrafeasClient\u003c/code\u003e to list notes associated with a given project, illustrating a simple API interaction.\u003c/p\u003e\n"],["\u003cp\u003eThe documentation includes information on error handling, overriding the default endpoint and authentication credentials, and customizing retry, backoff, and idempotency policies, as well as relevant environment variables.\u003c/p\u003e\n"]]],[],null,["Version 2.16.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/containeranalysis/latest)\n- [2.41.0](/cpp/docs/reference/containeranalysis/2.41.0)\n- [2.40.0](/cpp/docs/reference/containeranalysis/2.40.0)\n- [2.39.0](/cpp/docs/reference/containeranalysis/2.39.0)\n- [2.38.0](/cpp/docs/reference/containeranalysis/2.38.0)\n- [2.37.0](/cpp/docs/reference/containeranalysis/2.37.0)\n- [2.36.0](/cpp/docs/reference/containeranalysis/2.36.0)\n- [2.35.0](/cpp/docs/reference/containeranalysis/2.35.0)\n- [2.34.0](/cpp/docs/reference/containeranalysis/2.34.0)\n- [2.33.0](/cpp/docs/reference/containeranalysis/2.33.0)\n- [2.32.0](/cpp/docs/reference/containeranalysis/2.32.0)\n- [2.31.0](/cpp/docs/reference/containeranalysis/2.31.0)\n- [2.30.0](/cpp/docs/reference/containeranalysis/2.30.0)\n- [2.29.0](/cpp/docs/reference/containeranalysis/2.29.0)\n- [2.28.0](/cpp/docs/reference/containeranalysis/2.28.0)\n- [2.27.0](/cpp/docs/reference/containeranalysis/2.27.0)\n- [2.26.0](/cpp/docs/reference/containeranalysis/2.26.0)\n- [2.25.1](/cpp/docs/reference/containeranalysis/2.25.1)\n- [2.24.0](/cpp/docs/reference/containeranalysis/2.24.0)\n- [2.23.0](/cpp/docs/reference/containeranalysis/2.23.0)\n- [2.22.1](/cpp/docs/reference/containeranalysis/2.22.1)\n- [2.21.0](/cpp/docs/reference/containeranalysis/2.21.0)\n- [2.20.0](/cpp/docs/reference/containeranalysis/2.20.0)\n- [2.19.0](/cpp/docs/reference/containeranalysis/2.19.0)\n- [2.18.0](/cpp/docs/reference/containeranalysis/2.18.0)\n- [2.17.0](/cpp/docs/reference/containeranalysis/2.17.0)\n- [2.16.0](/cpp/docs/reference/containeranalysis/2.16.0)\n- [2.15.1](/cpp/docs/reference/containeranalysis/2.15.1)\n- [2.14.0](/cpp/docs/reference/containeranalysis/2.14.0)\n- [2.13.0](/cpp/docs/reference/containeranalysis/2.13.0)\n- [2.12.0](/cpp/docs/reference/containeranalysis/2.12.0)\n- [2.11.0](/cpp/docs/reference/containeranalysis/2.11.0) \n\nContainer Analysis API C++ Client Library\n=========================================\n\nAn idiomatic C++ client library for the [Container Analysis API](https://cloud.google.com/container-analysis), an implementation of the [Grafeas API](https://grafeas.io), which stores, and enables querying and retrieval of critical metadata about all of your software artifacts.\n\nWhile this library is **GA** , please note Google Cloud C++ client libraries do **not** follow [Semantic Versioning](https://semver.org/).\n\n### Quickstart\n\nThe following shows the code that you'll run in the `google/cloud/containeranalysis/quickstart/` directory, which should give you a taste of the Container Analysis API C++ client library API. \n\n #include \"google/cloud/containeranalysis/v1/grafeas_client.h\"\n #include \"google/cloud/project.h\"\n #include \u003ciostream\u003e\n\n int main(int argc, char* argv[]) try {\n if (argc != 2) {\n std::cerr \u003c\u003c \"Usage: \" \u003c\u003c argv[0] \u003c\u003c \" project-id\\n\";\n return 1;\n }\n\n namespace containeranalysis = ::google::cloud::containeranalysis_v1;\n auto client = containeranalysis::GrafeasClient(\n containeranalysis::MakeGrafeasConnection());\n\n auto const project = google::cloud::Project(argv[1]);\n for (auto n : client.ListNotes(project.FullName(), /*filter=*/\"\")) {\n if (!n) throw std::move(n).status();\n std::cout \u003c\u003c n-\u003eDebugString() \u003c\u003c \"\\n\";\n }\n\n return 0;\n } catch (google::cloud::Status const& status) {\n std::cerr \u003c\u003c \"google::cloud::Status thrown: \" \u003c\u003c status \u003c\u003c \"\\n\";\n return 1;\n }\n\n### Main classes\n\nThis library offers multiple `*Client` classes, which are listed below. Each one of these classes exposes all the RPCs for a service as member functions of the class. This library groups multiple services because they are part of the same product or are often used together. A typical example may be the administrative and data plane operations for a single product.\n\nThe library also has other classes that provide helpers, configuration parameters, and infrastructure to mock the `*Client` classes when testing your application.\n\n- [`containeranalysis_v1::ContainerAnalysisClient`](/cpp/docs/reference/containeranalysis/2.16.0/classgoogle_1_1cloud_1_1containeranalysis__v1_1_1ContainerAnalysisClient)\n- [`containeranalysis_v1::GrafeasClient`](/cpp/docs/reference/containeranalysis/2.16.0/classgoogle_1_1cloud_1_1containeranalysis__v1_1_1GrafeasClient)\n\n### More Information\n\n- [Error Handling](https://cloud.google.com/cpp/docs/reference/common/latest/common-error-handling.html) - describes how the library reports errors.\n- [How to Override the Default Endpoint](/cpp/docs/reference/containeranalysis/2.16.0/containeranalysis-override-endpoint) - describes how to override the default endpoint.\n- [How to Override the Authentication Credentials](/cpp/docs/reference/containeranalysis/2.16.0/containeranalysis-override-authentication) - describes how to change the authentication credentials used by the library.\n- [Override Retry, Backoff, and Idempotency Policies](/cpp/docs/reference/containeranalysis/2.16.0/containeranalysis-override-retry) - describes how to change the default retry policies.\n- [Environment Variables](/cpp/docs/reference/containeranalysis/2.16.0/containeranalysis-env) - describes environment variables that can configure the behavior of the library."]]