UNPKG

cdk-iam-floyd

Version:

AWS IAM policy statement generator with fluent interface for AWS CDK

930 lines 85.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Geo = void 0; const shared_1 = require("../../shared"); /** * Statement provider for service [geo](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html). * * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement */ class Geo extends shared_1.PolicyStatement { /** * Grants permission to create an association between a geofence-collection and a tracker resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_AssociateTrackerConsumer.html */ toAssociateTrackerConsumer() { return this.to('AssociateTrackerConsumer'); } /** * Grants permission to delete a batch of device position histories from a tracker resource * * Access Level: Write * * Possible conditions: * - .ifDeviceIds() * * https://docs.aws.amazon.com/location/latest/APIReference/API_BatchDeleteDevicePositionHistory.html */ toBatchDeleteDevicePositionHistory() { return this.to('BatchDeleteDevicePositionHistory'); } /** * Grants permission to delete a batch of geofences from a geofence collection * * Access Level: Write * * Possible conditions: * - .ifGeofenceIds() * * https://docs.aws.amazon.com/location/latest/APIReference/API_BatchDeleteGeofence.html */ toBatchDeleteGeofence() { return this.to('BatchDeleteGeofence'); } /** * Grants permission to evaluate device positions against the position of geofences in a given geofence collection * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_BatchEvaluateGeofences.html */ toBatchEvaluateGeofences() { return this.to('BatchEvaluateGeofences'); } /** * Grants permission to send a batch request to retrieve device positions * * Access Level: Read * * Possible conditions: * - .ifDeviceIds() * * https://docs.aws.amazon.com/location/latest/APIReference/API_BatchGetDevicePosition.html */ toBatchGetDevicePosition() { return this.to('BatchGetDevicePosition'); } /** * Grants permission to send a batch request for adding geofences into a given geofence collection * * Access Level: Write * * Possible conditions: * - .ifGeofenceIds() * * https://docs.aws.amazon.com/location/latest/APIReference/API_BatchPutGeofence.html */ toBatchPutGeofence() { return this.to('BatchPutGeofence'); } /** * Grants permission to upload a position update for one or more devices to a tracker resource * * Access Level: Write * * Possible conditions: * - .ifDeviceIds() * * https://docs.aws.amazon.com/location/latest/APIReference/API_BatchUpdateDevicePosition.html */ toBatchUpdateDevicePosition() { return this.to('BatchUpdateDevicePosition'); } /** * Grants permission to calculate routes using a given route calculator resource * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_CalculateRoute.html */ toCalculateRoute() { return this.to('CalculateRoute'); } /** * Grants permission to calculate a route matrix using a given route calculator resource * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_CalculateRouteMatrix.html */ toCalculateRouteMatrix() { return this.to('CalculateRouteMatrix'); } /** * Grants permission to create a geofence-collection * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/location/latest/APIReference/API_CreateGeofenceCollection.html */ toCreateGeofenceCollection() { return this.to('CreateGeofenceCollection'); } /** * Grants permission to create an API key resource * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/location/latest/APIReference/API_CreateKey.html */ toCreateKey() { return this.to('CreateKey'); } /** * Grants permission to create a map resource * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/location/latest/APIReference/API_CreateMap.html */ toCreateMap() { return this.to('CreateMap'); } /** * Grants permission to create a place index resource * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/location/latest/APIReference/API_CreatePlaceIndex.html */ toCreatePlaceIndex() { return this.to('CreatePlaceIndex'); } /** * Grants permission to create a route calculator resource * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/location/latest/APIReference/API_CreateRouteCalculator.html */ toCreateRouteCalculator() { return this.to('CreateRouteCalculator'); } /** * Grants permission to create a tracker resource * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/location/latest/APIReference/API_CreateTracker.html */ toCreateTracker() { return this.to('CreateTracker'); } /** * Grants permission to delete a geofence-collection * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_DeleteGeofenceCollection.html */ toDeleteGeofenceCollection() { return this.to('DeleteGeofenceCollection'); } /** * Grants permission to delete an API key resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_DeleteKey.html */ toDeleteKey() { return this.to('DeleteKey'); } /** * Grants permission to delete a map resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_DeleteMap.html */ toDeleteMap() { return this.to('DeleteMap'); } /** * Grants permission to delete a place index resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_DeletePlaceIndex.html */ toDeletePlaceIndex() { return this.to('DeletePlaceIndex'); } /** * Grants permission to delete a route calculator resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_DeleteRouteCalculator.html */ toDeleteRouteCalculator() { return this.to('DeleteRouteCalculator'); } /** * Grants permission to delete a tracker resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_DeleteTracker.html */ toDeleteTracker() { return this.to('DeleteTracker'); } /** * Grants permission to retrieve geofence collection details * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_DescribeGeofenceCollection.html */ toDescribeGeofenceCollection() { return this.to('DescribeGeofenceCollection'); } /** * Grants permission to retrieve API key resource details and secret * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_DescribeKey.html */ toDescribeKey() { return this.to('DescribeKey'); } /** * Grants permission to retrieve map resource details * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_DescribeMap.html */ toDescribeMap() { return this.to('DescribeMap'); } /** * Grants permission to retrieve place-index resource details * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_DescribePlaceIndex.html */ toDescribePlaceIndex() { return this.to('DescribePlaceIndex'); } /** * Grants permission to retrieve route calculator resource details * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_DescribeRouteCalculator.html */ toDescribeRouteCalculator() { return this.to('DescribeRouteCalculator'); } /** * Grants permission to retrieve a tracker resource details * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_DescribeTracker.html */ toDescribeTracker() { return this.to('DescribeTracker'); } /** * Grants permission to remove the association between a tracker resource and a geofence-collection * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_DisassociateTrackerConsumer.html */ toDisassociateTrackerConsumer() { return this.to('DisassociateTrackerConsumer'); } /** * Grants permission to retrieve the latest device position * * Access Level: Read * * Possible conditions: * - .ifDeviceIds() * * https://docs.aws.amazon.com/location/latest/APIReference/API_GetDevicePosition.html */ toGetDevicePosition() { return this.to('GetDevicePosition'); } /** * Grants permission to retrieve the device position history * * Access Level: Read * * Possible conditions: * - .ifDeviceIds() * * https://docs.aws.amazon.com/location/latest/APIReference/API_GetDevicePositionHistory.html */ toGetDevicePositionHistory() { return this.to('GetDevicePositionHistory'); } /** * Grants permission to retrieve the geofence details from a geofence-collection * * Access Level: Read * * Possible conditions: * - .ifGeofenceIds() * * https://docs.aws.amazon.com/location/latest/APIReference/API_GetGeofence.html */ toGetGeofence() { return this.to('GetGeofence'); } /** * Grants permission to retrieve the glyph file for a map resource * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_GetMapGlyphs.html */ toGetMapGlyphs() { return this.to('GetMapGlyphs'); } /** * Grants permission to retrieve the sprite file for a map resource * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_GetMapSprites.html */ toGetMapSprites() { return this.to('GetMapSprites'); } /** * Grants permission to retrieve the map style descriptor from a map resource * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_GetMapStyleDescriptor.html */ toGetMapStyleDescriptor() { return this.to('GetMapStyleDescriptor'); } /** * Grants permission to retrieve the map tile from the map resource * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_GetMapTile.html */ toGetMapTile() { return this.to('GetMapTile'); } /** * Grants permission to find a place by its unique ID * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_GetPlace.html */ toGetPlace() { return this.to('GetPlace'); } /** * Grants permission to retrieve a list of devices and their latest positions from the given tracker resource * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_ListDevicePositions.html */ toListDevicePositions() { return this.to('ListDevicePositions'); } /** * Grants permission to lists geofence-collections * * Access Level: List * * https://docs.aws.amazon.com/location/latest/APIReference/API_ListGeofenceCollections.html */ toListGeofenceCollections() { return this.to('ListGeofenceCollections'); } /** * Grants permission to list geofences stored in a given geofence collection * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_ListGeofences.html */ toListGeofences() { return this.to('ListGeofences'); } /** * Grants permission to list API key resources * * Access Level: List * * https://docs.aws.amazon.com/location/latest/APIReference/API_ListKeys.html */ toListKeys() { return this.to('ListKeys'); } /** * Grants permission to list map resources * * Access Level: List * * https://docs.aws.amazon.com/location/latest/APIReference/API_ListMaps.html */ toListMaps() { return this.to('ListMaps'); } /** * Grants permission to return a list of place index resources * * Access Level: List * * https://docs.aws.amazon.com/location/latest/APIReference/API_ListPlaceIndexes.html */ toListPlaceIndexes() { return this.to('ListPlaceIndexes'); } /** * Grants permission to return a list of route calculator resources * * Access Level: List * * https://docs.aws.amazon.com/location/latest/APIReference/API_ListRouteCalculators.html */ toListRouteCalculators() { return this.to('ListRouteCalculators'); } /** * Grants permission to list the tags (metadata) which you have assigned to the resource * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_ListTagsForResource.html */ toListTagsForResource() { return this.to('ListTagsForResource'); } /** * Grants permission to retrieve a list of geofence collections currently associated to the given tracker resource * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_ListTrackerConsumers.html */ toListTrackerConsumers() { return this.to('ListTrackerConsumers'); } /** * Grants permission to return a list of tracker resources * * Access Level: List * * https://docs.aws.amazon.com/location/latest/APIReference/API_ListTrackers.html */ toListTrackers() { return this.to('ListTrackers'); } /** * Grants permission to add a new geofence or update an existing geofence to a given geofence-collection * * Access Level: Write * * Possible conditions: * - .ifGeofenceIds() * * https://docs.aws.amazon.com/location/latest/APIReference/API_PutGeofence.html */ toPutGeofence() { return this.to('PutGeofence'); } /** * Grants permission to reverse geocodes a given coordinate * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_SearchPlaceIndexForPosition.html */ toSearchPlaceIndexForPosition() { return this.to('SearchPlaceIndexForPosition'); } /** * Grants permission to generate suggestions for addresses and points of interest based on partial or misspelled free-form text * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_SearchPlaceIndexForSuggestions.html */ toSearchPlaceIndexForSuggestions() { return this.to('SearchPlaceIndexForSuggestions'); } /** * Grants permission to geocode free-form text, such as an address, name, city or region * * Access Level: Read * * https://docs.aws.amazon.com/location/latest/APIReference/API_SearchPlaceIndexForText.html */ toSearchPlaceIndexForText() { return this.to('SearchPlaceIndexForText'); } /** * Grants permission to adds to or modifies the tags of the given resource. Tags are metadata which can be used to manage a resource * * Access Level: Tagging * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/location/latest/APIReference/API_TagResource.html */ toTagResource() { return this.to('TagResource'); } /** * Grants permission to remove the given tags (metadata) from the resource * * Access Level: Tagging * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/location/latest/APIReference/API_UntagResource.html */ toUntagResource() { return this.to('UntagResource'); } /** * Grants permission to update a geofence collection * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_UpdateGeofenceCollection.html */ toUpdateGeofenceCollection() { return this.to('UpdateGeofenceCollection'); } /** * Grants permission to update an API key resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_UpdateKey.html */ toUpdateKey() { return this.to('UpdateKey'); } /** * Grants permission to update a map resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_UpdateMap.html */ toUpdateMap() { return this.to('UpdateMap'); } /** * Grants permission to update a place index resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_UpdatePlaceIndex.html */ toUpdatePlaceIndex() { return this.to('UpdatePlaceIndex'); } /** * Grants permission to update a route calculator resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_UpdateRouteCalculator.html */ toUpdateRouteCalculator() { return this.to('UpdateRouteCalculator'); } /** * Grants permission to update a tracker resource * * Access Level: Write * * https://docs.aws.amazon.com/location/latest/APIReference/API_UpdateTracker.html */ toUpdateTracker() { return this.to('UpdateTracker'); } /** * Adds a resource of type api-key to the statement * * https://docs.aws.amazon.com/location/latest/developerguide/using-apikeys.html * * @param keyName - Identifier for the keyName. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() */ onApiKey(keyName, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:api-key/${keyName}`); } /** * Adds a resource of type geofence-collection to the statement * * https://docs.aws.amazon.com/location/latest/developerguide/geofence-tracker-concepts.html * * @param geofenceCollectionName - Identifier for the geofenceCollectionName. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() * - .ifGeofenceIds() */ onGeofenceCollection(geofenceCollectionName, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:geofence-collection/${geofenceCollectionName}`); } /** * Adds a resource of type map to the statement * * https://docs.aws.amazon.com/location/latest/developerguide/map-concepts.html * * @param mapName - Identifier for the mapName. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() */ onMap(mapName, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:map/${mapName}`); } /** * Adds a resource of type place-index to the statement * * https://docs.aws.amazon.com/location/latest/developerguide/places-concepts.html * * @param indexName - Identifier for the indexName. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() */ onPlaceIndex(indexName, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:place-index/${indexName}`); } /** * Adds a resource of type route-calculator to the statement * * https://docs.aws.amazon.com/location/latest/developerguide/route-concepts.html * * @param calculatorName - Identifier for the calculatorName. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() */ onRouteCalculator(calculatorName, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:route-calculator/${calculatorName}`); } /** * Adds a resource of type tracker to the statement * * https://docs.aws.amazon.com/location/latest/developerguide/geofence-tracker-concepts.html * * @param trackerName - Identifier for the trackerName. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() * - .ifDeviceIds() */ onTracker(trackerName, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:tracker/${trackerName}`); } /** * Filters access by a tag's key and value in a request * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag * * Applies to actions: * - .toCreateGeofenceCollection() * - .toCreateKey() * - .toCreateMap() * - .toCreatePlaceIndex() * - .toCreateRouteCalculator() * - .toCreateTracker() * - .toTagResource() * - .toUntagResource() * * @param tagKey The tag key to check * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsRequestTag(tagKey, value, operator) { return this.if(`aws:RequestTag/${tagKey}`, value, operator ?? 'StringLike'); } /** * Filters access by the presence of tag key-value pairs in the request * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag * * Applies to resource types: * - api-key * - geofence-collection * - map * - place-index * - route-calculator * - tracker * * @param tagKey The tag key to check * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsResourceTag(tagKey, value, operator) { return this.if(`aws:ResourceTag/${tagKey}`, value, operator ?? 'StringLike'); } /** * Filters access by the tag keys in a request * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys * * Applies to actions: * - .toCreateGeofenceCollection() * - .toCreateKey() * - .toCreateMap() * - .toCreatePlaceIndex() * - .toCreateRouteCalculator() * - .toCreateTracker() * - .toTagResource() * - .toUntagResource() * * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsTagKeys(value, operator) { return this.if(`aws:TagKeys`, value, operator ?? 'StringLike'); } /** * Filters access by the presence of device ids in the request * * https://docs.aws.amazon.com/location/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-conditionkeys * * Applies to actions: * - .toBatchDeleteDevicePositionHistory() * - .toBatchGetDevicePosition() * - .toBatchUpdateDevicePosition() * - .toGetDevicePosition() * - .toGetDevicePositionHistory() * * Applies to resource types: * - tracker * * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifDeviceIds(value, operator) { return this.if(`DeviceIds`, value, operator ?? 'StringLike'); } /** * Filters access by the presence of geofence ids in the request * * https://docs.aws.amazon.com/location/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-conditionkeys * * Applies to actions: * - .toBatchDeleteGeofence() * - .toBatchPutGeofence() * - .toGetGeofence() * - .toPutGeofence() * * Applies to resource types: * - geofence-collection * * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifGeofenceIds(value, operator) { return this.if(`GeofenceIds`, value, operator ?? 'StringLike'); } /** * Statement provider for service [geo](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html). * */ constructor(props) { super(props); this.servicePrefix = 'geo'; this.accessLevelList = { Write: [ 'AssociateTrackerConsumer', 'BatchDeleteDevicePositionHistory', 'BatchDeleteGeofence', 'BatchEvaluateGeofences', 'BatchPutGeofence', 'BatchUpdateDevicePosition', 'CreateGeofenceCollection', 'CreateKey', 'CreateMap', 'CreatePlaceIndex', 'CreateRouteCalculator', 'CreateTracker', 'DeleteGeofenceCollection', 'DeleteKey', 'DeleteMap', 'DeletePlaceIndex', 'DeleteRouteCalculator', 'DeleteTracker', 'DisassociateTrackerConsumer', 'PutGeofence', 'UpdateGeofenceCollection', 'UpdateKey', 'UpdateMap', 'UpdatePlaceIndex', 'UpdateRouteCalculator', 'UpdateTracker' ], Read: [ 'BatchGetDevicePosition', 'CalculateRoute', 'CalculateRouteMatrix', 'DescribeGeofenceCollection', 'DescribeKey', 'DescribeMap', 'DescribePlaceIndex', 'DescribeRouteCalculator', 'DescribeTracker', 'GetDevicePosition', 'GetDevicePositionHistory', 'GetGeofence', 'GetMapGlyphs', 'GetMapSprites', 'GetMapStyleDescriptor', 'GetMapTile', 'GetPlace', 'ListDevicePositions', 'ListGeofences', 'ListTagsForResource', 'ListTrackerConsumers', 'SearchPlaceIndexForPosition', 'SearchPlaceIndexForSuggestions', 'SearchPlaceIndexForText' ], List: [ 'ListGeofenceCollections', 'ListKeys', 'ListMaps', 'ListPlaceIndexes', 'ListRouteCalculators', 'ListTrackers' ], Tagging: [ 'TagResource', 'UntagResource' ] }; } } exports.Geo = Geo; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsb2NhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBeUQ7QUFHekQ7Ozs7R0FJRztBQUNILE1BQWEsR0FBSSxTQUFRLHdCQUFlO0lBR3RDOzs7Ozs7T0FNRztJQUNJLDBCQUEwQjtRQUMvQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksa0NBQWtDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxxQkFBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHdCQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksd0JBQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLDJCQUEyQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJ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QUFFO2dCQUNKLHlCQUF5QjtnQkFDekIsVUFBVTtnQkFDVixVQUFVO2dCQUNWLGtCQUFrQjtnQkFDbEIsc0JBQXNCO2dCQUN0QixjQUFjO2FBQ2Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsYUFBYTtnQkFDYixlQUFlO2FBQ2hCO1NBQ0YsQ0FBQztJQTZORixDQUFDO0NBQ0Y7QUE3OUJELGtCQTY5QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY2Nlc3NMZXZlbExpc3QgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWNjZXNzLWxldmVsJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgYXdzX2lhbSBhcyBpYW0gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuLyoqXG4gKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW2dlb10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9ubG9jYXRpb24uaHRtbCkuXG4gKlxuICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBHZW8gZXh0ZW5kcyBQb2xpY3lTdGF0ZW1lbnQge1xuICBwdWJsaWMgc2VydmljZVByZWZpeCA9ICdnZW8nO1xuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gYXNzb2NpYXRpb24gYmV0d2VlbiBhIGdlb2ZlbmNlLWNvbGxlY3Rpb24gYW5kIGEgdHJhY2tlciByZXNvdXJjZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sb2NhdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9Bc3NvY2lhdGVUcmFja2VyQ29uc3VtZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQXNzb2NpYXRlVHJhY2tlckNvbnN1bWVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdBc3NvY2lhdGVUcmFja2VyQ29uc3VtZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgYSBiYXRjaCBvZiBkZXZpY2UgcG9zaXRpb24gaGlzdG9yaWVzIGZyb20gYSB0cmFja2VyIHJlc291cmNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZEZXZpY2VJZHMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbG9jYXRpb24vbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQmF0Y2hEZWxldGVEZXZpY2VQb3NpdGlvbkhpc3RvcnkuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQmF0Y2hEZWxldGVEZXZpY2VQb3NpdGlvbkhpc3RvcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0JhdGNoRGVsZXRlRGV2aWNlUG9zaXRpb25IaXN0b3J5Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIGEgYmF0Y2ggb2YgZ2VvZmVuY2VzIGZyb20gYSBnZW9mZW5jZSBjb2xsZWN0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZHZW9mZW5jZUlkcygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sb2NhdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9CYXRjaERlbGV0ZUdlb2ZlbmNlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0JhdGNoRGVsZXRlR2VvZmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0JhdGNoRGVsZXRlR2VvZmVuY2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBldmFsdWF0ZSBkZXZpY2UgcG9zaXRpb25zIGFnYWluc3QgdGhlIHBvc2l0aW9uIG9mIGdlb2ZlbmNlcyBpbiBhIGdpdmVuIGdlb2ZlbmNlIGNvbGxlY3Rpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbG9jYXRpb24vbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQmF0Y2hFdmFsdWF0ZUdlb2ZlbmNlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9CYXRjaEV2YWx1YXRlR2VvZmVuY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdCYXRjaEV2YWx1YXRlR2VvZmVuY2VzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc2VuZCBhIGJhdGNoIHJlcXVlc3QgdG8gcmV0cmlldmUgZGV2aWNlIHBvc2l0aW9uc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZEZXZpY2VJZHMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbG9jYXRpb24vbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQmF0Y2hHZXREZXZpY2VQb3NpdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9CYXRjaEdldERldmljZVBvc2l0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdCYXRjaEdldERldmljZVBvc2l0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc2VuZCBhIGJhdGNoIHJlcXVlc3QgZm9yIGFkZGluZyBnZW9mZW5jZXMgaW50byBhIGdpdmVuIGdlb2ZlbmNlIGNvbGxlY3Rpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkdlb2ZlbmNlSWRzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xvY2F0aW9uL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0JhdGNoUHV0R2VvZmVuY2UuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQmF0Y2hQdXRHZW9mZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQmF0Y2hQdXRHZW9mZW5jZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwbG9hZCBhIHBvc2l0aW9uIHVwZGF0ZSBmb3Igb25lIG9yIG1vcmUgZGV2aWNlcyB0byBhIHRyYWNrZXIgcmVzb3VyY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkRldmljZUlkcygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sb2NhdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9CYXRjaFVwZGF0ZURldmljZVBvc2l0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0JhdGNoVXBkYXRlRGV2aWNlUG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0JhdGNoVXBkYXRlRGV2aWNlUG9zaXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjYWxjdWxhdGUgcm91dGVzIHVzaW5nIGEgZ2l2ZW4gcm91dGUgY2FsY3VsYXRvciByZXNvdXJjZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xvY2F0aW9uL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NhbGN1bGF0ZVJvdXRlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NhbGN1bGF0ZVJvdXRlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDYWxjdWxhdGVSb3V0ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNhbGN1bGF0ZSBhIHJvdXRlIG1hdHJpeCB1c2luZyBhIGdpdmVuIHJvdXRlIGNhbGN1bGF0b3IgcmVzb3VyY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sb2NhdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DYWxjdWxhdGVSb3V0ZU1hdHJpeC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DYWxjdWxhdGVSb3V0ZU1hdHJpeCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ2FsY3VsYXRlUm91dGVNYXRyaXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSBnZW9mZW5jZS1jb2xsZWN0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xvY2F0aW9uL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUdlb2ZlbmNlQ29sbGVjdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVHZW9mZW5jZUNvbGxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUdlb2ZlbmNlQ29sbGVjdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBBUEkga2V5IHJlc291cmNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xvY2F0aW9uL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUtleS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUtleScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIG1hcCByZXNvdXJjZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sb2NhdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVNYXAuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlTWFwKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVNYXAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSBwbGFjZSBpbmRleCByZXNvdXJjZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sb2NhdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVQbGFjZUluZGV4Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0