Notifications for the AWS Partner Central Channel API
Events for the channel API provide real-time notifications about changes in the status or the details of channel-related activities. These events help keep your systems in sync with AWS Partner Central, and help ensure timely responses and updates.
Prerequisites
You need the appropriate IAM permissions to access and manage events from the AWS Partner Central Channel API. For information about the available actions, resources, and condition keys for EventBridge, see Using IAM policy conditions in Amazon EventBridge in the Amazon EventBridge User
Guide. One of the condition keys is events:detail-type,
which you can use to scope permissions to specific event types.
The following example policy demonstrates how to customize and scope permissions
for the events. The AllowPutRuleForPartnercentralChannelEvents
statement allows the creation of rules, but only for events from the
aws.partnercentral-channel source.
For detailed IAM policy examples, refer to the AWS documentation on EventBridge permissions.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleForPartnerCentralChannelEvents", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:source": "aws.partnercentral-channel" } } } ] }
Configure Amazon EventBridge to monitor events
To monitor channel API events, you create an EventBridge rule that matches the events that
you want to capture. You can use the AWS Management Console or the AWS SDKs to create and manage
rules. The following sections explain how to create rules using both methods. Regardless
of the method you use, you must create the rule in the US East (N. Virginia)
us-east-1 Region.
AWS Management Console setup
To set up an EventBridge rule using the AWS Management Console, follow the steps in Creating rules that react to events in Amazon EventBridge in the
Amazon EventBridge User Guide. When creating the rule, you must set
the event bus to default, and create the rule in the
US East (N. Virginia) us-east-1 Region.
Following is an example of an event rule:
{ "source": ["aws.partnercentral-channel"], "detail": { "catalog": ["AWS"] } }
AWS SDK setup
You can use the AWS SDKs to create and manage EventBridge rules programmatically. For more information, see PutRule in the Amazon EventBridge API Reference.
The following example uses the AWS SDK for Python (Boto3):
import boto3 client = boto3.client('events', region_name='us-east-1') response = client.put_rule( Name='ChannelHandshakeCreatedRule', EventPattern= '{ "source": ["aws.partnercentral-channel"], "detail-type": ["Channel Handshake Created"], "detail": {"catalog": ["AWS"]} }', State='ENABLED' ) print('Rule ARN:', response['RuleArn'])
Learn more about channel API events
The following sections describe the channel API event types, scenarios that trigger them, and event examples.
Event types
Following are the event types and their triggers.
-
Channel Handshake Created: Triggered when a new channel handshake is created.
-
Channel Handshake Accepted: Triggered when a new channel handshake is accepted.
-
Channel Handshake Rejected: Triggered when a new channel handshake is rejected.
Channel Handshake Created
The following examples show typical Channel Handshake Created events for different handshake types.
Start Service Period Handshake:
{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "Channel Handshake Created", "source": "aws.partnercentral-channel", "account": "789789789789", "time": "2025-02-01T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:partnercentral:us-east-1:123123123123:catalog/AWS/channel-handshake/ch-abc123def456g" ], "detail": { "requestId": "12345678-1234-1234-1234-123456789abc", "catalog": "AWS", "associatedResourceIdentifier": "rs-jkl012mno345p", "handshakeType": "START_SERVICE_PERIOD", "id": "ch-abc123def456g", "receiverAccountId": "789789789789", "ownerAccountId": "123123123123", "senderAccountId": "456456456456", "senderDisplayName": "TestDisplayName", "handshakeDetail": { "startServicePeriodHandshakeDetail": { "servicePeriodType": "MINIMUM_NOTICE_PERIOD", "minimumNoticeDays": "14", "endDate": null, "startDate": "2025-02-02T00:00:00Z", "note": "Test note example" } } } }
Revoke Service Period Handshake:
{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "Channel Handshake Created", "source": "aws.partnercentral-channel", "account": "789789789789", "time": "2025-02-01T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:partnercentral:us-east-1:123123123123:catalog/AWS/channel-handshake/ch-def456ghi789j" ], "detail": { "requestId": "12345678-1234-1234-1234-123456789abc", "catalog": "AWS", "associatedResourceIdentifier": "rs-jkl012mno345p", "handshakeType": "REVOKE_SERVICE_PERIOD", "id": "ch-def456ghi789j", "ownerAccountId": "123123123123", "receiverAccountId": "789789789789", "senderAccountId": "456456456456", "senderDisplayName": "TestDisplayName", "handshakeDetail": { "revokeServicePeriodHandshakeDetail": { "servicePeriodType": "MINIMUM_NOTICE_PERIOD", "minimumNoticeDays": "14", "endDate": null, "startDate": "2025-02-02T00:00:00Z", "note": "Test note example" } } } }
Program Management Account Handshake:
{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "Channel Handshake Created", "source": "aws.partnercentral-channel", "account": "456456456456", "time": "2025-02-01T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:partnercentral:us-east-1:123123123123:catalog/AWS/channel-handshake/ch-ghi789jkl012m" ], "detail": { "requestId": "12345678-1234-1234-1234-123456789abc", "catalog": "AWS", "associatedResourceIdentifier": "pma-abc123def456g", "handshakeType": "PROGRAM_MANAGEMENT_ACCOUNT", "id": "ch-ghi789jkl012m", "ownerAccountId": "123123123123", "receiverAccountId": "456456456456", "senderAccountId": "123123123123", "senderDisplayName": "TestDisplayName", "handshakeDetail": { "programManagementAccountHandshakeDetail": { "program": "SOLUTION_PROVIDER" } } } }
Channel Handshake Accepted
The following examples show typical Channel Handshake Accepted events for different handshake types.
Start Service Period Handshake:
{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "Channel Handshake Accepted", "source": "aws.partnercentral-channel", "account": "123123123123", "time": "2025-02-01T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:partnercentral:us-east-1:123123123123:catalog/AWS/channel-handshake/ch-abc123def456g" ], "detail": { "requestId": "12345678-1234-1234-1234-123456789abc", "catalog": "AWS", "associatedResourceIdentifier": "rs-jkl012mno345p", "handshakeType": "START_SERVICE_PERIOD", "id": "ch-abc123def456g", "ownerAccountId": "123123123123", "receiverAccountId": "789789789789", "senderAccountId": "456456456456", "senderDisplayName": "TestDisplayName", "handshakeDetail": { "startServicePeriodHandshakeDetail": { "servicePeriodType": "MINIMUM_NOTICE_PERIOD", "minimumNoticeDays": "14", "endDate": null, "startDate": "2025-02-02T00:00:00Z", "note": "Test note example" } } } }
Revoke Service Period Handshake:
{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "Channel Handshake Accepted", "source": "aws.partnercentral-channel", "account": "123123123123", "time": "2025-02-01T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:partnercentral:us-east-1:123123123123:catalog/AWS/channel-handshake/ch-def456ghi789j" ], "detail": { "requestId": "12345678-1234-1234-1234-123456789abc", "catalog": "AWS", "associatedResourceIdentifier": "rs-jkl012mno345p", "handshakeType": "REVOKE_SERVICE_PERIOD", "id": "ch-def456ghi789j", "ownerAccountId": "123123123123", "receiverAccountId": "789789789789", "senderAccountId": "456456456456", "senderDisplayName": "TestDisplayName", "handshakeDetail": { "revokeServicePeriodHandshakeDetail": { "servicePeriodType": "MINIMUM_NOTICE_PERIOD", "minimumNoticeDays": "14", "endDate": null, "startDate": "2025-02-02T00:00:00Z", "note": "Test note example" } } } }
Program Management Account Handshake:
{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "Channel Handshake Accepted", "source": "aws.partnercentral-channel", "account": "123123123123", "time": "2025-02-01T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:partnercentral:us-east-1:123123123123:catalog/AWS/channel-handshake/ch-ghi789jkl012m" ], "detail": { "requestId": "12345678-1234-1234-1234-123456789abc", "catalog": "AWS", "associatedResourceIdentifier": "pma-abc123def456g", "handshakeType": "PROGRAM_MANAGEMENT_ACCOUNT", "id": "ch-ghi789jkl012m", "ownerAccountId": "123123123123", "receiverAccountId": "456456456456", "senderAccountId": "123123123123", "senderDisplayName": "TestDisplayName", "handshakeDetail": { "programManagementAccountHandshakeDetail": { "program": "SOLUTION_PROVIDER" } } } }
Channel Handshake Rejected
The following examples show typical Channel Handshake Rejected events for different handshake types.
Start Service Period Handshake:
{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "Channel Handshake Rejected", "source": "aws.partnercentral-channel", "account": "123123123123", "time": "2025-02-01T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:partnercentral:us-east-1:123123123123:catalog/AWS/channel-handshake/ch-abc123def456g" ], "detail": { "requestId": "12345678-1234-1234-1234-123456789abc", "catalog": "AWS", "associatedResourceIdentifier": "rs-jkl012mno345p", "handshakeType": "START_SERVICE_PERIOD", "id": "ch-abc123def456g", "ownerAccountId": "123123123123", "receiverAccountId": "789789789789", "senderAccountId": "456456456456", "senderDisplayName": "TestDisplayName", "handshakeDetail": { "startServicePeriodHandshakeDetail": { "servicePeriodType": "MINIMUM_NOTICE_PERIOD", "minimumNoticeDays": "14", "endDate": null, "startDate": "2025-02-02T00:00:00Z", "note": "Test note example" } } } }
Revoke Service Period Handshake:
{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "Channel Handshake Rejected", "source": "aws.partnercentral-channel", "account": "123123123123", "time": "2025-02-01T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:partnercentral:us-east-1:123123123123:catalog/AWS/channel-handshake/ch-def456ghi789j" ], "detail": { "requestId": "12345678-1234-1234-1234-123456789abc", "catalog": "AWS", "associatedResourceIdentifier": "rs-jkl012mno345p", "handshakeType": "REVOKE_SERVICE_PERIOD", "id": "ch-def456ghi789j", "ownerAccountId": "123123123123", "receiverAccountId": "789789789789", "senderAccountId": "456456456456", "senderDisplayName": "TestDisplayName", "handshakeDetail": { "revokeServicePeriodHandshakeDetail": { "servicePeriodType": "MINIMUM_NOTICE_PERIOD", "minimumNoticeDays": "14", "endDate": null, "startDate": "2025-02-02T00:00:00Z", "note": "Test note example" } } } }
Program Management Account Handshake:
{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "Channel Handshake Rejected", "source": "aws.partnercentral-channel", "account": "123123123123", "time": "2025-02-01T00:00:00Z", "region": "us-east-1", "resources": [ "arn:aws:partnercentral:us-east-1:123123123123:catalog/AWS/channel-handshake/ch-ghi789jkl012m" ], "detail": { "requestId": "12345678-1234-1234-1234-123456789abc", "catalog": "AWS", "associatedResourceIdentifier": "pma-abc123def456g", "handshakeType": "PROGRAM_MANAGEMENT_ACCOUNT", "id": "ch-ghi789jkl012m", "ownerAccountId": "123123123123", "receiverAccountId": "456456456456", "senderAccountId": "123123123123", "senderDisplayName": "TestDisplayName", "handshakeDetail": { "programManagementAccountHandshakeDetail": { "program": "SOLUTION_PROVIDER" } } } }