/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace VerifiedPermissions { /** *

Amazon Verified Permissions is a permissions management service from Amazon * Web Services. You can use Verified Permissions to manage permissions for your * application, and authorize user access based on those permissions. Using * Verified Permissions, application developers can grant access based on * information about the users, resources, and requested actions. You can also * evaluate additional information like group membership, attributes of the * resources, and session context, such as time of request and IP addresses. * Verified Permissions manages these permissions by letting you create and store * authorization policies for your applications, such as consumer-facing web sites * and enterprise business systems.

Verified Permissions uses Cedar as the * policy language to express your permission requirements. Cedar supports both * role-based access control (RBAC) and attribute-based access control (ABAC) * authorization models.

For more information about configuring, * administering, and using Amazon Verified Permissions in your applications, see * the Amazon * Verified Permissions User Guide.

For more information about the Cedar * policy language, see the Cedar Policy * Language Guide.

When you write Cedar policies that * reference principals, resources and actions, you can define the unique * identifiers used for each of those elements. We strongly recommend that you * follow these best practices:

  • Use values like universally * unique identifiers (UUIDs) for all principal and resource identifiers.

    *

    For example, if user jane leaves the company, and you later let * someone else use the name jane, then that new user automatically * gets access to everything granted by policies that still reference * User::"jane". Cedar can’t distinguish between the new user and the * old. This applies to both principal and resource identifiers. Always use * identifiers that are guaranteed unique and never reused to ensure that you don’t * unintentionally grant access because of the presence of an old identifier in a * policy.

    Where you use a UUID for an entity, we recommend that you follow * it with the // comment specifier and the ‘friendly’ name of your entity. This * helps to make your policies easier to understand. For example: principal == * User::"a1b2c3d4-e5f6-a1b2-c3d4-EXAMPLE11111", // alice

  • Do * not include personally identifying, confidential, or sensitive information as * part of the unique identifier for your principals or resources. These * identifiers are included in log entries shared in CloudTrail trails.

  • *

Several operations return structures that appear similar, * but have different purposes. As new functionality is added to the product, the * structure used in a parameter of one operation might need to change in a way * that wouldn't make sense for the same parameter in a different operation. To * help you understand the purpose of each, the following naming convention is used * for the structures:

  • Parameter type structures that end in * Detail are used in Get operations.

  • *

    Parameter type structures that end in Item are used in * List operations.

  • Parameter type structures that * use neither suffix are used in the mutating (create and update) operations.

    *
*/ class AWS_VERIFIEDPERMISSIONS_API VerifiedPermissionsClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods { public: typedef Aws::Client::AWSJsonClient BASECLASS; static const char* SERVICE_NAME; static const char* ALLOCATION_TAG; typedef VerifiedPermissionsClientConfiguration ClientConfigurationType; typedef VerifiedPermissionsEndpointProvider EndpointProviderType; /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ VerifiedPermissionsClient(const Aws::VerifiedPermissions::VerifiedPermissionsClientConfiguration& clientConfiguration = Aws::VerifiedPermissions::VerifiedPermissionsClientConfiguration(), std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG)); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ VerifiedPermissionsClient(const Aws::Auth::AWSCredentials& credentials, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::VerifiedPermissions::VerifiedPermissionsClientConfiguration& clientConfiguration = Aws::VerifiedPermissions::VerifiedPermissionsClientConfiguration()); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ VerifiedPermissionsClient(const std::shared_ptr& credentialsProvider, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::VerifiedPermissions::VerifiedPermissionsClientConfiguration& clientConfiguration = Aws::VerifiedPermissions::VerifiedPermissionsClientConfiguration()); /* Legacy constructors due deprecation */ /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ VerifiedPermissionsClient(const Aws::Client::ClientConfiguration& clientConfiguration); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ VerifiedPermissionsClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ VerifiedPermissionsClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration); /* End of legacy constructors due deprecation */ virtual ~VerifiedPermissionsClient(); /** *

Creates a reference to an Amazon Cognito user pool as an external identity * provider (IdP).

After you create an identity source, you can use the * identities provided by the IdP as proxies for the principal in authorization * queries that use the IsAuthorizedWithToken * operation. These identities take the form of tokens that contain claims about * the user, such as IDs, attributes and group memberships. Amazon Cognito provides * both identity tokens and access tokens, and Verified Permissions can use either * or both. Any combination of identity and access tokens results in the same Cedar * principal. Verified Permissions automatically translates the information about * the identities into the standard Cedar attributes that can be evaluated by your * policies. Because the Amazon Cognito identity and access tokens can contain * different information, the tokens you choose to use determine which principal * attributes are available to access when evaluating Cedar policies.

*

If you delete a Amazon Cognito user pool or user, tokens from * that deleted pool or that deleted user continue to be usable until they * expire.

To reference a user from this identity source * in your Cedar policies, use the following syntax.

* IdentityType::"<CognitoUserPoolIdentifier>|<CognitoClientId> *

Where IdentityType is the string that you provide to the * PrincipalEntityType parameter for this operation. The * CognitoUserPoolId and CognitoClientId are defined by * the Amazon Cognito user pool.

See Also:

AWS * API Reference

*/ virtual Model::CreateIdentitySourceOutcome CreateIdentitySource(const Model::CreateIdentitySourceRequest& request) const; /** * A Callable wrapper for CreateIdentitySource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateIdentitySourceOutcomeCallable CreateIdentitySourceCallable(const CreateIdentitySourceRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::CreateIdentitySource, request); } /** * An Async wrapper for CreateIdentitySource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateIdentitySourceAsync(const CreateIdentitySourceRequestT& request, const CreateIdentitySourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::CreateIdentitySource, request, handler, context); } /** *

Creates a Cedar policy and saves it in the specified policy store. You can * create either a static policy or a policy linked to a policy template.

    *
  • To create a static policy, provide the Cedar policy text in the * StaticPolicy section of the PolicyDefinition.

    *
  • To create a policy that is dynamically linked to a policy * template, specify the policy template ID and the principal and resource to * associate with this policy in the templateLinked section of the * PolicyDefinition. If the policy template is ever updated, any * policies linked to the policy template automatically use the updated * template.

Creating a policy causes it to be validated * against the schema in the policy store. If the policy doesn't pass validation, * the operation fails and the policy isn't stored.

See * Also:

AWS * API Reference

*/ virtual Model::CreatePolicyOutcome CreatePolicy(const Model::CreatePolicyRequest& request) const; /** * A Callable wrapper for CreatePolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreatePolicyOutcomeCallable CreatePolicyCallable(const CreatePolicyRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::CreatePolicy, request); } /** * An Async wrapper for CreatePolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreatePolicyAsync(const CreatePolicyRequestT& request, const CreatePolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::CreatePolicy, request, handler, context); } /** *

Creates a policy store. A policy store is a container for policy * resources.

Although Cedar supports * multiple namespaces, Verified Permissions currently supports only one * namespace per policy store.

See Also:

AWS * API Reference

*/ virtual Model::CreatePolicyStoreOutcome CreatePolicyStore(const Model::CreatePolicyStoreRequest& request) const; /** * A Callable wrapper for CreatePolicyStore that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreatePolicyStoreOutcomeCallable CreatePolicyStoreCallable(const CreatePolicyStoreRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::CreatePolicyStore, request); } /** * An Async wrapper for CreatePolicyStore that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreatePolicyStoreAsync(const CreatePolicyStoreRequestT& request, const CreatePolicyStoreResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::CreatePolicyStore, request, handler, context); } /** *

Creates a policy template. A template can use placeholders for the principal * and resource. A template must be instantiated into a policy by associating it * with specific principals and resources to use for the placeholders. That * instantiated policy can then be considered in authorization decisions. The * instantiated policy works identically to any other policy, except that it is * dynamically linked to the template. If the template changes, then any policies * that are linked to that template are immediately updated as well.

See * Also:

AWS * API Reference

*/ virtual Model::CreatePolicyTemplateOutcome CreatePolicyTemplate(const Model::CreatePolicyTemplateRequest& request) const; /** * A Callable wrapper for CreatePolicyTemplate that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreatePolicyTemplateOutcomeCallable CreatePolicyTemplateCallable(const CreatePolicyTemplateRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::CreatePolicyTemplate, request); } /** * An Async wrapper for CreatePolicyTemplate that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreatePolicyTemplateAsync(const CreatePolicyTemplateRequestT& request, const CreatePolicyTemplateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::CreatePolicyTemplate, request, handler, context); } /** *

Deletes an identity source that references an identity provider (IdP) such as * Amazon Cognito. After you delete the identity source, you can no longer use * tokens for identities from that identity source to represent principals in * authorization queries made using IsAuthorizedWithToken. * operations.

See Also:

AWS * API Reference

*/ virtual Model::DeleteIdentitySourceOutcome DeleteIdentitySource(const Model::DeleteIdentitySourceRequest& request) const; /** * A Callable wrapper for DeleteIdentitySource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteIdentitySourceOutcomeCallable DeleteIdentitySourceCallable(const DeleteIdentitySourceRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::DeleteIdentitySource, request); } /** * An Async wrapper for DeleteIdentitySource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteIdentitySourceAsync(const DeleteIdentitySourceRequestT& request, const DeleteIdentitySourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::DeleteIdentitySource, request, handler, context); } /** *

Deletes the specified policy from the policy store.

This operation is * idempotent; if you specify a policy that doesn't exist, the request response * returns a successful HTTP 200 status code.

See Also:

* AWS * API Reference

*/ virtual Model::DeletePolicyOutcome DeletePolicy(const Model::DeletePolicyRequest& request) const; /** * A Callable wrapper for DeletePolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeletePolicyOutcomeCallable DeletePolicyCallable(const DeletePolicyRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::DeletePolicy, request); } /** * An Async wrapper for DeletePolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeletePolicyAsync(const DeletePolicyRequestT& request, const DeletePolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::DeletePolicy, request, handler, context); } /** *

Deletes the specified policy store.

This operation is idempotent. If * you specify a policy store that does not exist, the request response will still * return a successful HTTP 200 status code.

See Also:

AWS * API Reference

*/ virtual Model::DeletePolicyStoreOutcome DeletePolicyStore(const Model::DeletePolicyStoreRequest& request) const; /** * A Callable wrapper for DeletePolicyStore that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeletePolicyStoreOutcomeCallable DeletePolicyStoreCallable(const DeletePolicyStoreRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::DeletePolicyStore, request); } /** * An Async wrapper for DeletePolicyStore that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeletePolicyStoreAsync(const DeletePolicyStoreRequestT& request, const DeletePolicyStoreResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::DeletePolicyStore, request, handler, context); } /** *

Deletes the specified policy template from the policy store.

*

This operation also deletes any policies that were created from the specified * policy template. Those policies are immediately removed from all future API * responses, and are asynchronously deleted from the policy store.

*

See Also:

AWS * API Reference

*/ virtual Model::DeletePolicyTemplateOutcome DeletePolicyTemplate(const Model::DeletePolicyTemplateRequest& request) const; /** * A Callable wrapper for DeletePolicyTemplate that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeletePolicyTemplateOutcomeCallable DeletePolicyTemplateCallable(const DeletePolicyTemplateRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::DeletePolicyTemplate, request); } /** * An Async wrapper for DeletePolicyTemplate that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeletePolicyTemplateAsync(const DeletePolicyTemplateRequestT& request, const DeletePolicyTemplateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::DeletePolicyTemplate, request, handler, context); } /** *

Retrieves the details about the specified identity source.

See * Also:

AWS * API Reference

*/ virtual Model::GetIdentitySourceOutcome GetIdentitySource(const Model::GetIdentitySourceRequest& request) const; /** * A Callable wrapper for GetIdentitySource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetIdentitySourceOutcomeCallable GetIdentitySourceCallable(const GetIdentitySourceRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::GetIdentitySource, request); } /** * An Async wrapper for GetIdentitySource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetIdentitySourceAsync(const GetIdentitySourceRequestT& request, const GetIdentitySourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::GetIdentitySource, request, handler, context); } /** *

Retrieves information about the specified policy.

See Also:

* AWS * API Reference

*/ virtual Model::GetPolicyOutcome GetPolicy(const Model::GetPolicyRequest& request) const; /** * A Callable wrapper for GetPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetPolicyOutcomeCallable GetPolicyCallable(const GetPolicyRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::GetPolicy, request); } /** * An Async wrapper for GetPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetPolicyAsync(const GetPolicyRequestT& request, const GetPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::GetPolicy, request, handler, context); } /** *

Retrieves details about a policy store.

See Also:

AWS * API Reference

*/ virtual Model::GetPolicyStoreOutcome GetPolicyStore(const Model::GetPolicyStoreRequest& request) const; /** * A Callable wrapper for GetPolicyStore that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetPolicyStoreOutcomeCallable GetPolicyStoreCallable(const GetPolicyStoreRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::GetPolicyStore, request); } /** * An Async wrapper for GetPolicyStore that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetPolicyStoreAsync(const GetPolicyStoreRequestT& request, const GetPolicyStoreResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::GetPolicyStore, request, handler, context); } /** *

Retrieve the details for the specified policy template in the specified * policy store.

See Also:

AWS * API Reference

*/ virtual Model::GetPolicyTemplateOutcome GetPolicyTemplate(const Model::GetPolicyTemplateRequest& request) const; /** * A Callable wrapper for GetPolicyTemplate that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetPolicyTemplateOutcomeCallable GetPolicyTemplateCallable(const GetPolicyTemplateRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::GetPolicyTemplate, request); } /** * An Async wrapper for GetPolicyTemplate that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetPolicyTemplateAsync(const GetPolicyTemplateRequestT& request, const GetPolicyTemplateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::GetPolicyTemplate, request, handler, context); } /** *

Retrieve the details for the specified schema in the specified policy * store.

See Also:

AWS * API Reference

*/ virtual Model::GetSchemaOutcome GetSchema(const Model::GetSchemaRequest& request) const; /** * A Callable wrapper for GetSchema that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetSchemaOutcomeCallable GetSchemaCallable(const GetSchemaRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::GetSchema, request); } /** * An Async wrapper for GetSchema that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetSchemaAsync(const GetSchemaRequestT& request, const GetSchemaResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::GetSchema, request, handler, context); } /** *

Makes an authorization decision about a service request described in the * parameters. The information in the parameters can also define additional context * that Verified Permissions can include in the evaluation. The request is * evaluated against all matching policies in the specified policy store. The * result of the decision is either Allow or Deny, along * with a list of the policies that resulted in the decision.

See * Also:

AWS * API Reference

*/ virtual Model::IsAuthorizedOutcome IsAuthorized(const Model::IsAuthorizedRequest& request) const; /** * A Callable wrapper for IsAuthorized that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::IsAuthorizedOutcomeCallable IsAuthorizedCallable(const IsAuthorizedRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::IsAuthorized, request); } /** * An Async wrapper for IsAuthorized that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void IsAuthorizedAsync(const IsAuthorizedRequestT& request, const IsAuthorizedResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::IsAuthorized, request, handler, context); } /** *

Makes an authorization decision about a service request described in the * parameters. The principal in this request comes from an external identity * source. The information in the parameters can also define additional context * that Verified Permissions can include in the evaluation. The request is * evaluated against all matching policies in the specified policy store. The * result of the decision is either Allow or Deny, along * with a list of the policies that resulted in the decision.

If * you delete a Amazon Cognito user pool or user, tokens from that deleted pool or * that deleted user continue to be usable until they expire.

*

See Also:

AWS * API Reference

*/ virtual Model::IsAuthorizedWithTokenOutcome IsAuthorizedWithToken(const Model::IsAuthorizedWithTokenRequest& request) const; /** * A Callable wrapper for IsAuthorizedWithToken that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::IsAuthorizedWithTokenOutcomeCallable IsAuthorizedWithTokenCallable(const IsAuthorizedWithTokenRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::IsAuthorizedWithToken, request); } /** * An Async wrapper for IsAuthorizedWithToken that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void IsAuthorizedWithTokenAsync(const IsAuthorizedWithTokenRequestT& request, const IsAuthorizedWithTokenResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::IsAuthorizedWithToken, request, handler, context); } /** *

Returns a paginated list of all of the identity sources defined in the * specified policy store.

See Also:

AWS * API Reference

*/ virtual Model::ListIdentitySourcesOutcome ListIdentitySources(const Model::ListIdentitySourcesRequest& request) const; /** * A Callable wrapper for ListIdentitySources that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListIdentitySourcesOutcomeCallable ListIdentitySourcesCallable(const ListIdentitySourcesRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::ListIdentitySources, request); } /** * An Async wrapper for ListIdentitySources that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListIdentitySourcesAsync(const ListIdentitySourcesRequestT& request, const ListIdentitySourcesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::ListIdentitySources, request, handler, context); } /** *

Returns a paginated list of all policies stored in the specified policy * store.

See Also:

AWS * API Reference

*/ virtual Model::ListPoliciesOutcome ListPolicies(const Model::ListPoliciesRequest& request) const; /** * A Callable wrapper for ListPolicies that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListPoliciesOutcomeCallable ListPoliciesCallable(const ListPoliciesRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::ListPolicies, request); } /** * An Async wrapper for ListPolicies that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListPoliciesAsync(const ListPoliciesRequestT& request, const ListPoliciesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::ListPolicies, request, handler, context); } /** *

Returns a paginated list of all policy stores in the calling Amazon Web * Services account.

See Also:

AWS * API Reference

*/ virtual Model::ListPolicyStoresOutcome ListPolicyStores(const Model::ListPolicyStoresRequest& request) const; /** * A Callable wrapper for ListPolicyStores that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListPolicyStoresOutcomeCallable ListPolicyStoresCallable(const ListPolicyStoresRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::ListPolicyStores, request); } /** * An Async wrapper for ListPolicyStores that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListPolicyStoresAsync(const ListPolicyStoresRequestT& request, const ListPolicyStoresResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::ListPolicyStores, request, handler, context); } /** *

Returns a paginated list of all policy templates in the specified policy * store.

See Also:

AWS * API Reference

*/ virtual Model::ListPolicyTemplatesOutcome ListPolicyTemplates(const Model::ListPolicyTemplatesRequest& request) const; /** * A Callable wrapper for ListPolicyTemplates that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListPolicyTemplatesOutcomeCallable ListPolicyTemplatesCallable(const ListPolicyTemplatesRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::ListPolicyTemplates, request); } /** * An Async wrapper for ListPolicyTemplates that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListPolicyTemplatesAsync(const ListPolicyTemplatesRequestT& request, const ListPolicyTemplatesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::ListPolicyTemplates, request, handler, context); } /** *

Creates or updates the policy schema in the specified policy store. The * schema is used to validate any Cedar policies and policy templates submitted to * the policy store. Any changes to the schema validate only policies and templates * submitted after the schema change. Existing policies and templates are not * re-evaluated against the changed schema. If you later update a policy, then it * is evaluated against the new schema at that time.

See Also:

AWS * API Reference

*/ virtual Model::PutSchemaOutcome PutSchema(const Model::PutSchemaRequest& request) const; /** * A Callable wrapper for PutSchema that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::PutSchemaOutcomeCallable PutSchemaCallable(const PutSchemaRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::PutSchema, request); } /** * An Async wrapper for PutSchema that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void PutSchemaAsync(const PutSchemaRequestT& request, const PutSchemaResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::PutSchema, request, handler, context); } /** *

Updates the specified identity source to use a new identity provider (IdP) * source, or to change the mapping of identities from the IdP to a different * principal entity type.

See Also:

AWS * API Reference

*/ virtual Model::UpdateIdentitySourceOutcome UpdateIdentitySource(const Model::UpdateIdentitySourceRequest& request) const; /** * A Callable wrapper for UpdateIdentitySource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateIdentitySourceOutcomeCallable UpdateIdentitySourceCallable(const UpdateIdentitySourceRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::UpdateIdentitySource, request); } /** * An Async wrapper for UpdateIdentitySource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateIdentitySourceAsync(const UpdateIdentitySourceRequestT& request, const UpdateIdentitySourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::UpdateIdentitySource, request, handler, context); } /** *

Modifies a Cedar static policy in the specified policy store. You can change * only certain elements of the UpdatePolicyDefinition * parameter. You can directly update only static policies. To change a * template-linked policy, you must update the template instead, using UpdatePolicyTemplate.

*

If policy validation is enabled in the policy store, then updating a * static policy causes Verified Permissions to validate the policy against the * schema in the policy store. If the updated static policy doesn't pass * validation, the operation fails and the update isn't stored.

*

See Also:

AWS * API Reference

*/ virtual Model::UpdatePolicyOutcome UpdatePolicy(const Model::UpdatePolicyRequest& request) const; /** * A Callable wrapper for UpdatePolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdatePolicyOutcomeCallable UpdatePolicyCallable(const UpdatePolicyRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::UpdatePolicy, request); } /** * An Async wrapper for UpdatePolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdatePolicyAsync(const UpdatePolicyRequestT& request, const UpdatePolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::UpdatePolicy, request, handler, context); } /** *

Modifies the validation setting for a policy store.

See Also:

* AWS * API Reference

*/ virtual Model::UpdatePolicyStoreOutcome UpdatePolicyStore(const Model::UpdatePolicyStoreRequest& request) const; /** * A Callable wrapper for UpdatePolicyStore that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdatePolicyStoreOutcomeCallable UpdatePolicyStoreCallable(const UpdatePolicyStoreRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::UpdatePolicyStore, request); } /** * An Async wrapper for UpdatePolicyStore that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdatePolicyStoreAsync(const UpdatePolicyStoreRequestT& request, const UpdatePolicyStoreResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::UpdatePolicyStore, request, handler, context); } /** *

Updates the specified policy template. You can update only the description * and the some elements of the policyBody. *

Changes you make to the policy template content are * immediately reflected in authorization decisions that involve all * template-linked policies instantiated from this template.

*

See Also:

AWS * API Reference

*/ virtual Model::UpdatePolicyTemplateOutcome UpdatePolicyTemplate(const Model::UpdatePolicyTemplateRequest& request) const; /** * A Callable wrapper for UpdatePolicyTemplate that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdatePolicyTemplateOutcomeCallable UpdatePolicyTemplateCallable(const UpdatePolicyTemplateRequestT& request) const { return SubmitCallable(&VerifiedPermissionsClient::UpdatePolicyTemplate, request); } /** * An Async wrapper for UpdatePolicyTemplate that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdatePolicyTemplateAsync(const UpdatePolicyTemplateRequestT& request, const UpdatePolicyTemplateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&VerifiedPermissionsClient::UpdatePolicyTemplate, request, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const VerifiedPermissionsClientConfiguration& clientConfiguration); VerifiedPermissionsClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace VerifiedPermissions } // namespace Aws