Notifications for the AWS Partner Central Channel API - AWS Partner Central

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

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" } } } }