# WARNING: DO NOT EDIT, AUTO-GENERATED CODE! # See https://github.com/aws-beam/aws-codegen for more details. defmodule AWS.PartnerCentralBenefits do @moduledoc """ AWS Partner Central Benefits Service provides APIs for managing partner benefits, applications, and allocations within the AWS Partner Network ecosystem. """ alias AWS.Client alias AWS.Request @typedoc """ ## Example: benefit_summary() :: %{ "Arn" => [String.t() | atom()], "Catalog" => String.t() | atom(), "Description" => [String.t() | atom()], "FulfillmentTypes" => list(list(any())()), "Id" => [String.t() | atom()], "Name" => [String.t() | atom()], "Programs" => list(String.t() | atom()), "Status" => list(any()) } """ @type benefit_summary() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: get_benefit_application_output() :: %{ "Arn" => String.t() | atom(), "AssociatedResources" => list(String.t() | atom()), "BenefitApplicationDetails" => [any()], "BenefitId" => String.t() | atom(), "Catalog" => String.t() | atom(), "CreatedAt" => non_neg_integer(), "Description" => String.t() | atom(), "FileDetails" => list(file_detail()), "FulfillmentTypes" => list(list(any())()), "Id" => String.t() | atom(), "Name" => String.t() | atom(), "PartnerContacts" => list(contact()), "Programs" => list(String.t() | atom()), "Revision" => [String.t() | atom()], "Stage" => String.t() | atom(), "Status" => list(any()), "StatusReason" => [String.t() | atom()], "StatusReasonCode" => String.t() | atom(), "StatusReasonCodes" => list(String.t() | atom()), "UpdatedAt" => non_neg_integer() } """ @type get_benefit_application_output() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: get_benefit_input() :: %{ required("Catalog") => String.t() | atom(), required("Identifier") => [String.t() | atom()] } """ @type get_benefit_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: submit_benefit_application_input() :: %{ required("Catalog") => String.t() | atom(), required("Identifier") => String.t() | atom() } """ @type submit_benefit_application_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: throttling_exception() :: %{ "Message" => [String.t() | atom()] } """ @type throttling_exception() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: disassociate_benefit_application_resource_input() :: %{ required("BenefitApplicationIdentifier") => String.t() | atom(), required("Catalog") => String.t() | atom(), required("ResourceArn") => String.t() | atom() } """ @type disassociate_benefit_application_resource_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: credit_code() :: %{ "AwsAccountId" => [String.t() | atom()], "AwsCreditCode" => [String.t() | atom()], "ExpiresAt" => non_neg_integer(), "IssuedAt" => non_neg_integer(), "Status" => list(any()), "Value" => monetary_value() } """ @type credit_code() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: access_denied_exception() :: %{ "Message" => [String.t() | atom()] } """ @type access_denied_exception() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: credit_details() :: %{ "AllocatedAmount" => monetary_value(), "Codes" => list(credit_code()), "IssuedAmount" => monetary_value() } """ @type credit_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: benefit_application_summary() :: %{ "Arn" => [String.t() | atom()], "AssociatedResources" => list(String.t() | atom()), "BenefitApplicationDetails" => map(), "BenefitId" => String.t() | atom(), "Catalog" => String.t() | atom(), "CreatedAt" => non_neg_integer(), "FulfillmentTypes" => list(list(any())()), "Id" => String.t() | atom(), "Name" => String.t() | atom(), "Programs" => list(String.t() | atom()), "Stage" => String.t() | atom(), "Status" => list(any()), "UpdatedAt" => non_neg_integer() } """ @type benefit_application_summary() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: update_benefit_application_output() :: %{ "Arn" => [String.t() | atom()], "Id" => String.t() | atom(), "Revision" => [String.t() | atom()] } """ @type update_benefit_application_output() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: access_details() :: %{ "Description" => [String.t() | atom()] } """ @type access_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: tag() :: %{ "Key" => String.t() | atom(), "Value" => String.t() | atom() } """ @type tag() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: consumable_details() :: %{ "AllocatedAmount" => monetary_value(), "IssuanceDetails" => issuance_detail(), "RemainingAmount" => monetary_value(), "UtilizedAmount" => monetary_value() } """ @type consumable_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: file_input() :: %{ "BusinessUseCase" => [String.t() | atom()], "FileURI" => String.t() | atom() } """ @type file_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: disbursement_details() :: %{ "DisbursedAmount" => monetary_value(), "IssuanceDetails" => issuance_detail() } """ @type disbursement_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: amendment() :: %{ "FieldPath" => [String.t() | atom()], "NewValue" => [String.t() | atom()] } """ @type amendment() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: cancel_benefit_application_output() :: %{} """ @type cancel_benefit_application_output() :: %{} @typedoc """ ## Example: get_benefit_allocation_output() :: %{ "ApplicableBenefitIds" => list(String.t() | atom()), "Arn" => String.t() | atom(), "BenefitApplicationId" => String.t() | atom(), "BenefitId" => String.t() | atom(), "Catalog" => String.t() | atom(), "CreatedAt" => non_neg_integer(), "Description" => [String.t() | atom()], "ExpiresAt" => non_neg_integer(), "FulfillmentDetail" => list(), "FulfillmentType" => list(any()), "Id" => String.t() | atom(), "Name" => [String.t() | atom()], "StartsAt" => non_neg_integer(), "Status" => list(any()), "StatusReason" => [String.t() | atom()], "UpdatedAt" => non_neg_integer() } """ @type get_benefit_allocation_output() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: validation_exception() :: %{ "FieldList" => list(validation_exception_field()), "Message" => [String.t() | atom()], "Reason" => list(any()) } """ @type validation_exception() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: get_benefit_output() :: %{ "Arn" => [String.t() | atom()], "BenefitRequestSchema" => [any()], "Catalog" => String.t() | atom(), "Description" => [String.t() | atom()], "FulfillmentTypes" => list(list(any())()), "Id" => [String.t() | atom()], "Name" => [String.t() | atom()], "Programs" => list(String.t() | atom()), "Status" => list(any()) } """ @type get_benefit_output() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: cancel_benefit_application_input() :: %{ optional("Reason") => [String.t() | atom()], required("Catalog") => String.t() | atom(), required("ClientToken") => [String.t() | atom()], required("Identifier") => String.t() | atom() } """ @type cancel_benefit_application_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: associate_benefit_application_resource_output() :: %{ "Arn" => [String.t() | atom()], "Id" => String.t() | atom(), "Revision" => [String.t() | atom()] } """ @type associate_benefit_application_resource_output() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_benefit_allocations_output() :: %{ "BenefitAllocationSummaries" => list(benefit_allocation_summary()), "NextToken" => [String.t() | atom()] } """ @type list_benefit_allocations_output() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: internal_server_exception() :: %{ "Message" => [String.t() | atom()] } """ @type internal_server_exception() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: recall_benefit_application_output() :: %{} """ @type recall_benefit_application_output() :: %{} @typedoc """ ## Example: get_benefit_application_input() :: %{ required("Catalog") => String.t() | atom(), required("Identifier") => String.t() | atom() } """ @type get_benefit_application_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: resource_not_found_exception() :: %{ "Message" => [String.t() | atom()] } """ @type resource_not_found_exception() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: tag_resource_request() :: %{ required("resourceArn") => String.t() | atom(), required("tags") => list(tag()) } """ @type tag_resource_request() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: amend_benefit_application_output() :: %{} """ @type amend_benefit_application_output() :: %{} @typedoc """ ## Example: tag_resource_response() :: %{} """ @type tag_resource_response() :: %{} @typedoc """ ## Example: get_benefit_allocation_input() :: %{ required("Catalog") => String.t() | atom(), required("Identifier") => String.t() | atom() } """ @type get_benefit_allocation_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: file_detail() :: %{ "BusinessUseCase" => [String.t() | atom()], "CreatedAt" => non_neg_integer(), "CreatedBy" => [String.t() | atom()], "FileName" => [String.t() | atom()], "FileStatus" => [String.t() | atom()], "FileStatusReason" => [String.t() | atom()], "FileType" => list(any()), "FileURI" => String.t() | atom() } """ @type file_detail() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: update_benefit_application_input() :: %{ optional("BenefitApplicationDetails") => [any()], optional("Description") => String.t() | atom(), optional("FileDetails") => list(file_input()), optional("Name") => String.t() | atom(), optional("PartnerContacts") => list(contact()), required("Catalog") => String.t() | atom(), required("ClientToken") => [String.t() | atom()], required("Identifier") => String.t() | atom(), required("Revision") => [String.t() | atom()] } """ @type update_benefit_application_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: amend_benefit_application_input() :: %{ required("AmendmentReason") => [String.t() | atom()], required("Amendments") => list(amendment()), required("Catalog") => String.t() | atom(), required("ClientToken") => [String.t() | atom()], required("Identifier") => String.t() | atom(), required("Revision") => [String.t() | atom()] } """ @type amend_benefit_application_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: conflict_exception() :: %{ "Message" => [String.t() | atom()] } """ @type conflict_exception() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: untag_resource_response() :: %{} """ @type untag_resource_response() :: %{} @typedoc """ ## Example: issuance_detail() :: %{ "IssuanceAmount" => monetary_value(), "IssuanceId" => [String.t() | atom()], "IssuedAt" => non_neg_integer() } """ @type issuance_detail() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: validation_exception_field() :: %{ "Code" => list(any()), "Message" => [String.t() | atom()], "Name" => [String.t() | atom()] } """ @type validation_exception_field() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: untag_resource_request() :: %{ required("resourceArn") => String.t() | atom(), required("tagKeys") => list(String.t() | atom()) } """ @type untag_resource_request() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_benefit_applications_output() :: %{ "BenefitApplicationSummaries" => list(benefit_application_summary()), "NextToken" => [String.t() | atom()] } """ @type list_benefit_applications_output() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: associate_benefit_application_resource_input() :: %{ required("BenefitApplicationIdentifier") => String.t() | atom(), required("Catalog") => String.t() | atom(), required("ResourceArn") => String.t() | atom() } """ @type associate_benefit_application_resource_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_tags_for_resource_response() :: %{ "tags" => list(tag()) } """ @type list_tags_for_resource_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: recall_benefit_application_input() :: %{ optional("ClientToken") => [String.t() | atom()], required("Catalog") => String.t() | atom(), required("Identifier") => String.t() | atom(), required("Reason") => [String.t() | atom()] } """ @type recall_benefit_application_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: contact() :: %{ "BusinessTitle" => [String.t() | atom()], "Email" => String.t() | atom(), "FirstName" => String.t() | atom(), "LastName" => String.t() | atom(), "Phone" => String.t() | atom() } """ @type contact() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: submit_benefit_application_output() :: %{} """ @type submit_benefit_application_output() :: %{} @typedoc """ ## Example: disassociate_benefit_application_resource_output() :: %{ "Arn" => [String.t() | atom()], "Id" => String.t() | atom(), "Revision" => [String.t() | atom()] } """ @type disassociate_benefit_application_resource_output() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: associated_resource() :: %{ "ResourceArn" => String.t() | atom(), "ResourceIdentifier" => [String.t() | atom()], "ResourceType" => list(any()) } """ @type associated_resource() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_benefits_output() :: %{ "BenefitSummaries" => list(benefit_summary()), "NextToken" => [String.t() | atom()] } """ @type list_benefits_output() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_benefit_allocations_input() :: %{ optional("BenefitApplicationIdentifiers") => list(String.t() | atom()), optional("BenefitIdentifiers") => list(String.t() | atom()), optional("FulfillmentTypes") => list(list(any())()), optional("MaxResults") => [integer()], optional("NextToken") => [String.t() | atom()], optional("Status") => list(list(any())()), required("Catalog") => String.t() | atom() } """ @type list_benefit_allocations_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: create_benefit_application_output() :: %{ "Arn" => [String.t() | atom()], "Id" => String.t() | atom(), "Revision" => [String.t() | atom()] } """ @type create_benefit_application_output() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: benefit_allocation_summary() :: %{ "ApplicableBenefitIds" => list(String.t() | atom()), "Arn" => [String.t() | atom()], "BenefitApplicationId" => String.t() | atom(), "BenefitId" => String.t() | atom(), "Catalog" => String.t() | atom(), "CreatedAt" => non_neg_integer(), "ExpiresAt" => non_neg_integer(), "FulfillmentTypes" => list(list(any())()), "Id" => String.t() | atom(), "Name" => String.t() | atom(), "Status" => list(any()), "StatusReason" => [String.t() | atom()] } """ @type benefit_allocation_summary() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_benefit_applications_input() :: %{ optional("AssociatedResourceArns") => list(String.t() | atom()), optional("AssociatedResources") => list(associated_resource()), optional("BenefitIdentifiers") => list(String.t() | atom()), optional("FulfillmentTypes") => list(list(any())()), optional("MaxResults") => [integer()], optional("NextToken") => [String.t() | atom()], optional("Programs") => list(String.t() | atom()), optional("Stages") => list(String.t() | atom()), optional("Status") => list(list(any())()), required("Catalog") => String.t() | atom() } """ @type list_benefit_applications_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_benefits_input() :: %{ optional("FulfillmentTypes") => list(list(any())()), optional("MaxResults") => [integer()], optional("NextToken") => [String.t() | atom()], optional("Programs") => list(String.t() | atom()), optional("Status") => list(list(any())()), required("Catalog") => String.t() | atom() } """ @type list_benefits_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: create_benefit_application_input() :: %{ optional("AssociatedResources") => list(String.t() | atom()), optional("BenefitApplicationDetails") => [any()], optional("Description") => String.t() | atom(), optional("FileDetails") => list(file_input()), optional("FulfillmentTypes") => list(list(any())()), optional("Name") => String.t() | atom(), optional("PartnerContacts") => list(contact()), optional("Tags") => list(tag()), required("BenefitIdentifier") => [String.t() | atom()], required("Catalog") => String.t() | atom(), required("ClientToken") => [String.t() | atom()] } """ @type create_benefit_application_input() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_tags_for_resource_request() :: %{ required("resourceArn") => String.t() | atom() } """ @type list_tags_for_resource_request() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: monetary_value() :: %{ "Amount" => [String.t() | atom()], "CurrencyCode" => list(any()) } """ @type monetary_value() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: service_quota_exceeded_exception() :: %{ "Message" => [String.t() | atom()], "QuotaCode" => [String.t() | atom()], "ResourceId" => [String.t() | atom()], "ResourceType" => [String.t() | atom()] } """ @type service_quota_exceeded_exception() :: %{(String.t() | atom()) => any()} @type amend_benefit_application_errors() :: conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type associate_benefit_application_resource_errors() :: conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type cancel_benefit_application_errors() :: conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type create_benefit_application_errors() :: conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type disassociate_benefit_application_resource_errors() :: conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type get_benefit_errors() :: resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type get_benefit_allocation_errors() :: resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type get_benefit_application_errors() :: conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type list_benefit_allocations_errors() :: resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type list_benefit_applications_errors() :: resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type list_benefits_errors() :: resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type list_tags_for_resource_errors() :: resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type recall_benefit_application_errors() :: conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type submit_benefit_application_errors() :: conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type tag_resource_errors() :: service_quota_exceeded_exception() | conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type untag_resource_errors() :: service_quota_exceeded_exception() | conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() @type update_benefit_application_errors() :: conflict_exception() | resource_not_found_exception() | internal_server_exception() | validation_exception() | access_denied_exception() | throttling_exception() def metadata do %{ api_version: "2018-05-10", content_type: "application/x-amz-json-1.0", credential_scope: nil, endpoint_prefix: "partnercentral-benefits", global?: false, hostname: nil, protocol: "json", service_id: "PartnerCentral Benefits", signature_version: "v4", signing_name: "partnercentral-benefits", target_prefix: "PartnerCentralBenefitsService" } end @doc """ Modifies an existing benefit application by applying amendments to specific fields while maintaining revision control. """ @spec amend_benefit_application(map(), amend_benefit_application_input(), list()) :: {:ok, amend_benefit_application_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, amend_benefit_application_errors()} def amend_benefit_application(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "AmendBenefitApplication", input, options) end @doc """ Links an AWS resource to an existing benefit application for tracking and management purposes. """ @spec associate_benefit_application_resource( map(), associate_benefit_application_resource_input(), list() ) :: {:ok, associate_benefit_application_resource_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, associate_benefit_application_resource_errors()} def associate_benefit_application_resource(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "AssociateBenefitApplicationResource", input, options) end @doc """ Cancels a benefit application that is currently in progress, preventing further processing. """ @spec cancel_benefit_application(map(), cancel_benefit_application_input(), list()) :: {:ok, cancel_benefit_application_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, cancel_benefit_application_errors()} def cancel_benefit_application(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "CancelBenefitApplication", input, options) end @doc """ Creates a new benefit application for a partner to request access to AWS benefits and programs. """ @spec create_benefit_application(map(), create_benefit_application_input(), list()) :: {:ok, create_benefit_application_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, create_benefit_application_errors()} def create_benefit_application(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "CreateBenefitApplication", input, options) end @doc """ Removes the association between an AWS resource and a benefit application. """ @spec disassociate_benefit_application_resource( map(), disassociate_benefit_application_resource_input(), list() ) :: {:ok, disassociate_benefit_application_resource_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, disassociate_benefit_application_resource_errors()} def disassociate_benefit_application_resource(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "DisassociateBenefitApplicationResource", input, options) end @doc """ Retrieves detailed information about a specific benefit available in the partner catalog. """ @spec get_benefit(map(), get_benefit_input(), list()) :: {:ok, get_benefit_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, get_benefit_errors()} def get_benefit(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "GetBenefit", input, options) end @doc """ Retrieves detailed information about a specific benefit allocation that has been granted to a partner. """ @spec get_benefit_allocation(map(), get_benefit_allocation_input(), list()) :: {:ok, get_benefit_allocation_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, get_benefit_allocation_errors()} def get_benefit_allocation(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "GetBenefitAllocation", input, options) end @doc """ Retrieves detailed information about a specific benefit application. """ @spec get_benefit_application(map(), get_benefit_application_input(), list()) :: {:ok, get_benefit_application_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, get_benefit_application_errors()} def get_benefit_application(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "GetBenefitApplication", input, options) end @doc """ Retrieves a paginated list of benefit allocations based on specified filter criteria. """ @spec list_benefit_allocations(map(), list_benefit_allocations_input(), list()) :: {:ok, list_benefit_allocations_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, list_benefit_allocations_errors()} def list_benefit_allocations(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "ListBenefitAllocations", input, options) end @doc """ Retrieves a paginated list of benefit applications based on specified filter criteria. """ @spec list_benefit_applications(map(), list_benefit_applications_input(), list()) :: {:ok, list_benefit_applications_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, list_benefit_applications_errors()} def list_benefit_applications(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "ListBenefitApplications", input, options) end @doc """ Retrieves a paginated list of available benefits based on specified filter criteria. """ @spec list_benefits(map(), list_benefits_input(), list()) :: {:ok, list_benefits_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, list_benefits_errors()} def list_benefits(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "ListBenefits", input, options) end @doc """ Retrieves all tags associated with a specific resource. """ @spec list_tags_for_resource(map(), list_tags_for_resource_request(), list()) :: {:ok, list_tags_for_resource_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, list_tags_for_resource_errors()} def list_tags_for_resource(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "ListTagsForResource", input, options) end @doc """ Recalls a submitted benefit application, returning it to draft status for further modifications. """ @spec recall_benefit_application(map(), recall_benefit_application_input(), list()) :: {:ok, recall_benefit_application_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, recall_benefit_application_errors()} def recall_benefit_application(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "RecallBenefitApplication", input, options) end @doc """ Submits a benefit application for review and processing by AWS. """ @spec submit_benefit_application(map(), submit_benefit_application_input(), list()) :: {:ok, submit_benefit_application_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, submit_benefit_application_errors()} def submit_benefit_application(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "SubmitBenefitApplication", input, options) end @doc """ Adds or updates tags for a specified resource. """ @spec tag_resource(map(), tag_resource_request(), list()) :: {:ok, tag_resource_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, tag_resource_errors()} def tag_resource(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "TagResource", input, options) end @doc """ Removes specified tags from a resource. """ @spec untag_resource(map(), untag_resource_request(), list()) :: {:ok, untag_resource_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, untag_resource_errors()} def untag_resource(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "UntagResource", input, options) end @doc """ Updates an existing benefit application with new information while maintaining revision control. """ @spec update_benefit_application(map(), update_benefit_application_input(), list()) :: {:ok, update_benefit_application_output(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} | {:error, update_benefit_application_errors()} def update_benefit_application(%Client{} = client, input, options \\ []) do meta = metadata() Request.request_post(client, meta, "UpdateBenefitApplication", input, options) end end