

Die AWS Marketplace-API-Referenz wurde umstrukturiert. Weitere Informationen zu den unterstützten API-Vorgängen finden Sie in der [ AWS Marketplace-API-Referenz. ](https://docs.aws.amazon.com/marketplace/latest/APIReference/Welcome.html)

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Arbeiten Sie als Käufer mit der Agreement API
<a name="work-with-agreement-api-buyer"></a>

Eine Vereinbarung ist ein Dokument, das zwei Parteien bindet, darunter den Anbieter und den Akzeptierenden (in der Regel der Käufer), und das die zwischen ihnen geltenden Bedingungen und Konditionen festlegt.

Der Käufer erstellt ein AgreementRequest, wodurch ein Angebot generiert wird. Dieses Angebot enthält alle relevanten Informationen, z. B. die geschätzten Kosten, die während der Laufzeit des Vertrags anfallen werden, was für die Kaufentscheidung des Käufers von entscheidender Bedeutung ist. Wenn der Käufer mit dem Angebot zufrieden ist, kann er es annehmen, AgreementRequest bevor es abläuft. Die Vereinbarung entsteht mit der Annahme der AgreementRequest. Während dieses Vorgangs kann der Käuferadministrator oder die Käuferperson die Bestellung den Gebühren zuordnen. Schließlich wird dem Käufer auf der Grundlage der Bedingungen der aktuellen Vereinbarung eine Rechnung ausgestellt und ihm wird eine Lizenz zur Nutzung des Produkts erteilt.

## Voraussetzungen: Entdecken Sie Produkte und Angebote
<a name="agreement-buyer-prerequisites"></a>

Bevor Sie eine Vereinbarung erstellen, verwenden Sie die AWS Marketplace Discovery-API, um das Produkt zu ermitteln und die für die Erstellung einer Vereinbarung erforderlichen `agreementProposalId``pricingModel`, und Begriffsdetails abzurufen`CreateAgreementRequest`.


| Schritt | Discovery-API-Aktion | Ausgabe | Wird verwendet für | 
| --- | --- | --- | --- | 
| 1 | [ListPurchaseOptions](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_ListPurchaseOptions.html) | offerId | Suche nach verfügbaren Angeboten für ein Produkt | 
| 2 | [GetOffer](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOffer.html) | agreementProposalId, pricingModel | Konstruieren agreementProposalIdentifier | 
| 3 | [GetOfferTerms](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferTerms.html) | Begriffs-IDs und Preisangaben | Konstruieren requestedTerms | 

Ausführliche Informationen zum Entdecken von Produkten und zur Preisgestaltung finden Sie unter[Entdecken Sie Produkte und Preise](work-with-catalog-to-discover-products.md).

Ein Akzeptor kann mit dieser API die folgenden Aufgaben ausführen:


| Aufgabe | Description | Aktion (en) | Absicht | 
| --- | --- | --- | --- | 
| [Generieren Sie ein Angebot](#buyer-generate-quote) | Acceptor kann ein Angebot erstellen, das alle relevanten Informationen enthält, z. B. die Gebühren, die während der Laufzeit des Vertrags anfallen, was für die Kaufentscheidung des Käufers von entscheidender Bedeutung ist. | CreateAgreementRequest | NEW | 
| [Nehmen Sie ein Angebot an](#buyer-accept-offer) | Der Akzeptor kann die vom Antragsteller vorgeschlagenen Bedingungen akzeptieren, wodurch eine neue Vereinbarung entsteht. Diese Annahme kann die Übergabe von Parametern für bestimmte Bedingungen beinhalten, z. B. die Auswahl der Menge oder Dauer, das Hinzufügen einer Bestellung usw. Acceptor kann auch eine neue Vereinbarung erstellen, in der die Produktnutzung zu einem future Zeitpunkt beginnt. Das Datum der Vertragsunterzeichnung ist der Zeitpunkt, an dem das Angebot angenommen und der Vertrag erstellt wird. Das Startdatum der Vereinbarung ist ein future Datum, an dem die Produktnutzung beginnt. Dies ist das Datum, an dem license/entitlement es aktiviert wird. Den aktuellen Status Ihrer Nutzungsberechtigung finden Sie in der [GetAgreementEntitlements](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-agreements_GetAgreementEntitlements.html)API. | CreateAgreementRequest, AcceptAgreementRequest | NEW | 
| [Ersetzen Sie eine bestehende Vereinbarung](#buyer-replace-agreement) | Der Akzeptor kann ein mittelfristiges Upgrade seiner Vereinbarung durchführen, um entweder zu günstigeren Konditionen zu wechseln oder den Verkäufer für seine Verträge zu wechseln. Diese Aktion beendet die bestehende Vereinbarung, die als Eingabe übergeben wurde, und es entsteht eine neue Vereinbarung. Diese Aktion entspricht logischerweise einer STORNIERUNG, gefolgt von einer NEUEN Vereinbarung, stellt jedoch die Kontinuität der Rechte für den Akzeptor sicher und der Akzeptor bleibt zu keinem Zeitpunkt ohne Rechte. | CreateAgreementRequest, AcceptAgreementRequest | REPLACE | 
| [Ändern Sie eine bestehende Vereinbarung](#buyer-amend-agreement) | Der Akzeptor darf nur die Konfiguration für die akzeptierten Bedingungen ändern. Sie können beispielsweise die automatische Verlängerung aktivieren oder deaktivieren oder die gekaufte Menge ändern, sofern die Preisänderung nach der Änderung nicht zu Rückerstattungen führt. Wir unterstützen die Änderung der Gebühren nur, wenn der Vertrag noch nicht abgeschlossen wurde. Hinweis: Der Antragsteller ist berechtigt, die Preise im Rahmen der nutzungsabhängigen Preisgestaltung zu ändern. Jede Erhöhung der Pay-as-you-go-Preise wird erst nach 90 Tagen wirksam, nachdem der Käufer über die Preiserhöhung informiert wurde. Jede Senkung der Pay-as-you-go-Preise wird sofort wirksam. | CreateAgreementRequest, AcceptAgreementRequest | ÄNDERN | 
| [Automatische Verlängerung aktivieren oder deaktivieren](#buyer-auto-renew) | Der Akzeptor kann ON/Off die automatische Verlängerung seines Vertrags kennzeichnen, wenn der Verkäufer die Bedingungen für das Verlängerungsangebot aktiviert hat. Falls diese Option aktiviert ist, wird der Verlängerungsvertrag vom Vertragsservice am Tag des Ablaufs der ursprünglichen Vereinbarung erstellt, wobei die letzte Angebotsversion verwendet wird. Das Startdatum dieser erstellten Vereinbarung entspricht dem Enddatum der ursprünglichen Vereinbarung. | CreateAgreementRequest, AcceptAgreementRequest | ÄNDERN | 
| [Kündigen Sie eine Vereinbarung](#buyer-cancel-agreement) | Der Akzeptor kann den Nutzungsvertrag kündigen. Für alles andere muss sich der Käufer an den Verkäufer wenden, um die Stornierung einzuleiten. Wenn Sie Ihren Vertrag kündigen, werden Ihre Lizenz und Ihr Anspruch deaktiviert. | CancelAgreement | N/A | 
| [Suchen Sie nach Verträgen](#buyer-search-agreements) | Acceptor kann eine Suche in allen Vereinbarungen durchführen, an denen er als Akzeptor teilgenommen hat. AWS Marketplace Die Suche gibt eine Liste von Vereinbarungen mit grundlegenden Vertragsinformationen zurück. | SearchAgreements | N/A | 
| [Beschreiben Sie eine Vereinbarung](#buyer-describe-agreement) | Der Akzeptor kann Details zu einer Vereinbarung einsehen, z. B. den Antragsteller, den Antragsteller, das Start- und das Enddatum. | DescribeAgreement | N/A | 
| [Vereinbarungsbedingungen abrufen](#buyer-get-terms) | Der Akzeptor kann Einzelheiten zu den Bedingungen einer Vereinbarung abrufen, an der er als Akzeptor teilgenommen hat. | GetAgreementTerms | N/A | 
| [Holen Sie sich die Rechte an der Vereinbarung](#buyer-get-entitlements) | Der Akzeptor kann sich auf Vereinbarungsebene einen Überblick über den Status und die Einzelheiten der mit seiner Vereinbarung verbundenen Rechte verschaffen — beispielsweise, ob der Vertrag gerade gewährt wird oder ob er abgelehnt wurde (und falls ja, aus welchen Gründen), welche Rechte seinen Kunden gewährt wurden. | GetAgreementEntitlements | N/A | 
| [Holen Sie sich ein Registrierungstoken](#buyer-get-registration-token) | Das Registrierungstoken ist ein kurzlebiges Token, das von Akzeptoren benötigt wird, um ein Konto bei den Antragstellern einzurichten. Dieses Token wird sowohl für extern gemessene als auch für berechtigte Dimensionstypen verwendet. Das Token ist nach der Erstellung nur 30 Minuten gültig und gilt derzeit nur für SaaS-Kaufverträge. | GetAgreementEntitlements | N/A | 
| [Gebühren für die Vereinbarung auflisten](#buyer-list-charges) | Der Akzeptor kann die mit ihm verbundenen Gebühren und Bestelldetails für seinen Vertrag einsehen. | ListAgreementCharges | N/A | 
| [Bestellungen aktualisieren](#buyer-update-purchase-orders) | Der Akzeptor kann nach dem Abonnieren eines Produkts eine Bestellnummer hinzufügen. Sobald eine Bestellung mit einer Gebühr verknüpft ist, enthält die für diese Gebühr generierte Rechnung die Bestellnummer. | UpdatePurchaseOrders | N/A | 
| [Stornierungsanfragen auflisten](#buyer-list-cancellations) | Acceptor kann alle Stornierungsanfragen für Verträge auflisten, an denen er beteiligt ist. Die Liste kann nach Vereinbarung, Status und anderen Kriterien gefiltert werden. | ListAgreementCancellationRequests | N/A | 
| [Einzelheiten zur Stornierungsanfrage abrufen](#buyer-get-cancellation) | Der Akzeptor kann detaillierte Informationen zu einer bestimmten Stornierungsanfrage abrufen, die vom Verkäufer (Antragsteller) initiiert wurde, einschließlich Status, Zeitstempel und Ursachencodes. | GetAgreementCancellationRequest | N/A | 
| [Akzeptieren Sie eine Stornierungsanfrage](#buyer-accept-cancellation) | Der Akzeptor kann einen vom Verkäufer (Vorschlagenden) initiierten Stornierungsantrag für eine aktive Vereinbarung genehmigen. Nach der Genehmigung wird der Workflow zur Kündigung des Vertrags asynchron ausgeführt und der Vertragsstatus ändert sich in Storniert. Hinweis: Benutzer benötigen außerdem eine entsprechende CancelAgreement Genehmigung, da die Genehmigung der Stornierungsanfrage zur Kündigung der Vereinbarung führt. | AcceptAgreementCancellationRequest, CancelAgreement | N/A | 
| [Lehnen Sie eine Stornierungsanfrage ab](#buyer-reject-cancellation) | Der Akzeptor kann eine vom Verkäufer (Antragsteller) initiierte Stornierungsanfrage ablehnen. Nach der Ablehnung bleibt die Vereinbarung aktiv und die Stornierungsanfrage geht in den Endzustand über. Der Verkäufer kann bei Bedarf eine neue Stornierungsanfrage erstellen. | RejectAgreementCancellationRequest | N/A | 
| [Zahlungsanfragen auflisten](#buyer-list-payments) | Der Akzeptor kann alle Zahlungsanfragen für Verträge auflisten, an denen er beteiligt ist. Die Liste kann nach Vereinbarung, Status und anderen Kriterien gefiltert werden. | ListAgreementPaymentRequests | N/A | 
| [Details zur Zahlungsanfrage abrufen](#buyer-get-payment) | Der Akzeptor kann detaillierte Informationen zu einer bestimmten Zahlungsanforderung abrufen, die vom Verkäufer (Antragsteller) initiiert wurde, einschließlich Status, Zeitstempel und damit verbundener Gebühren. | GetAgreementPaymentRequest | N/A | 
| [Akzeptieren Sie eine Zahlungsanforderung](#buyer-accept-payment) | Der Akzeptor kann eine vom Verkäufer (Antragsteller) initiierte Zahlungsanforderung für eine aktive Vereinbarung genehmigen. | AcceptAgreementPaymentRequest | N/A | 
| [Lehnen Sie eine Zahlungsanforderung ab](#buyer-reject-payment) | Der Akzeptor kann eine vom Verkäufer (Antragsteller) initiierte Zahlungsanforderung ablehnen. Nach der Ablehnung geht die Zahlungsanforderung in einen Endzustand über. Der Verkäufer kann bei Bedarf eine neue Zahlungsanforderung erstellen. | RejectAgreementPaymentRequest | N/A | 

## Generieren Sie ein Angebot
<a name="buyer-generate-quote"></a>

Verwenden Sie`CreateAgreementRequest`, um ein Angebot zu generieren. Sie müssen die folgenden Informationen angeben:
+ `agreementProposalIdentifier`— das `agreementProposalId` aus der [GetOffer](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOffer.html)Antwort.
+ `requestedTerms`— aus den Begriffen in der [GetOfferTerms](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferTerms.html)Antwort aufgebaut. Jeder Begriff erfordert seinen`id`, und einige erfordern zusätzliche`configuration`. Siehe [RequestedTerms erstellen](#car-requested-term-overview).

```
response = client.create_agreement_request(
    agreementProposalIdentifier='at-edhtjnbilupjv3xqbphtom77y',
    intent='NEW',
    requestedTerms=[
        {'id': 'term-legal-abc123'},
        {'id': 'term-validity-def456'},
        {
            'id': 'term-configurable-pricing-789',
            'configuration': {
                'configurableUpfrontPricingTermConfiguration': {
                    'selectorValue': 'P12M',
                    'dimensions': [
                        {'dimensionKey': 'Users', 'dimensionValue': 50}
                    ]
                }
            }
        },
        {
            'id': 'term-renewal-012',
            'configuration': {
                'renewalTermConfiguration': {'enableAutoRenew': True}
            }
        }
    ]
)

print(f"Agreement Request ID: {response['agreementRequestId']}")
for charge in response['chargeSummary']['expectedCharges']:
    print(f"  Charge ID: {charge['id']}, Amount: ${charge['amount']}")
```

### RequestedTerms erstellen
<a name="car-requested-term-overview"></a>

Um zu konstruieren`requestedTerms`, müssen Sie zwei Dinge bestimmen:

1. **Welche Bedingungen aufgenommen** werden sollen, hängt vom Preismodell des Angebots ab. Siehe [Erforderliche Bedingungen je nach Preismodell](#car-required-terms-by-pricing-model).

1. **Welche Begriffe müssen konfiguriert** werden — die meisten Begriffe benötigen nur die`id`, aber drei Begriffstypen erfordern eine zusätzliche Konfiguration, die vom Käufer bereitgestellt wird. Siehe [Begriffskonfigurationen](#car-term-configurations).

### Erforderliche Bedingungen je nach Preismodell
<a name="car-required-terms-by-pricing-model"></a>

Das `pricingModel.[PricingModel](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_PricingModel.html)` Feld in der [GetOffer](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOffer.html)Antwort bestimmt, welche Begriffe in Ihrem enthalten sein müssen`CreateAgreementRequest`.

Die folgenden Bedingungen müssen in **jeder** Vereinbarung enthalten sein, sofern sie im Angebot enthalten sind: `LegalTerm``SupportTerm`,`ValidityTerm`, und`RenewalTerm`.

**Anmerkung**  
`FreeTrialPricingTerm`kann nur **einmal** pro Produkt akzeptiert werden — `CreateAgreementRequest` es wird eine Fehlermeldung zurückgegeben, wenn der Käufer bereits eine kostenlose Testversion genutzt hat.

**VERTRAG**

Alle von zurückgegebenen Bedingungen müssen in einem **einzigen** Dokument zusammengefasst [GetOfferTerms](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferTerms.html)werden`CreateAgreementRequest`.

**VERWENDUNG**

Die Erstellung der Vereinbarung hängt von den im Angebot enthaltenen Bedingungen ab:

1. **Erste Vereinbarung** — Akzeptieren Sie `UsageBasedPricingTerm` and/or `RecurringPaymentTerm` (je nachdem, was das Angebot beinhaltet) zusammen mit den verbindlichen Bedingungen. Dadurch werden Rechte zur Produktnutzung gewährt.

1. **Nachfolgende Vereinbarung (en)** (optional) — Wenn das Angebot, oder beinhaltet `ConfigurableUpfrontPricingTerm``FixedUpfrontPricingTerm`, können Sie optional eine separate Vereinbarung zum jährlichen Kauf abschließen`PaymentScheduleTerm`, um vergünstigte Preise zu erhalten.

**Anmerkung**  
Wenn Sie beide Verträge erstellen und später kündigen möchten, kündigen Sie zuerst die nachfolgende Vereinbarung (mit`ConfigurableUpfrontPricingTerm`) und dann die erste Vereinbarung (mit `UsageBasedPricingTerm` and/or `RecurringPaymentTerm`).

**BYOL**

Akzeptieren `ByolPricingTerm` Sie zusammen mit den verbindlichen Bedingungen.

### Begriffskonfigurationen
<a name="car-term-configurations"></a>

Für die meisten Begriffe ist nur die Angabe `id` von erforderlich [GetOfferTerms](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferTerms.html). Für die folgenden Begriffstypen ist zusätzlich ein vom Käufer `configuration` bereitgestelltes Dokument erforderlich: `id`


| Art des Begriffs | Konfiguration | Was der Käufer bietet | 
| --- | --- | --- | 
| ConfigurableUpfrontPricingTerm | [ConfigurableUpfrontPricingTermConfiguration](#car-configurable-upfront-pricing-term) | Vertragsdauer und Anzahl der Einheiten pro Dimension | 
| RenewalTerm | [RenewalTermConfiguration](#car-renewal-term) | Ob die Vereinbarung automatisch verlängert werden soll, wenn der Vertrag abläuft | 
| VariablePaymentTerm | [VariablePaymentTermConfiguration](#car-variable-payment-term) | Wie werden Zahlungsanfragen des Verkäufers genehmigt | 

#### ConfigurableUpfrontPricingTermConfiguration
<a name="car-configurable-upfront-pricing-term"></a>

Verwenden Sie das folgende Beispiel, um die benötigten Werte für zu finden`ConfigurableUpfrontPricingTermConfiguration`.

Beispiel für `GetOfferTerms` eine Antwort:

```
{
  "offerTerms": [
    {
      "configurableUpfrontPricingTerm": {
        "id": "term-34dfb665ebd38eb2d0269a4af454c4f33cd90292ecc7b0f71058175594f67394",
        "currencyCode": "USD",
        "rateCards": [
          {
            "constraints": {
              "multipleDimensionSelection": "Allowed",
              "quantityConfiguration": "Allowed"
            },
            "selector": {
              "type": "Duration",
              "value": "P1M"
            },
            "rateCard": [
              {
                "dimensionKey": "BasicService",
                "displayName": "Basic Service",
                "price": "0",
                "unit": "Units"
              },
              {
                "dimensionKey": "PremiumService",
                "displayName": "Premium Service",
                "price": "0",
                "unit": "Units"
              }
            ]
          }
        ],
        "type": "ConfigurableUpfrontPricingTerm"
      }
    }
  ]
}
```


| Feld | Wert/Quelle | 
| --- | --- | 
| ConfigurableUpfrontPricingTermConfiguration.selectorValue | offerTerms[].configurableUpfrontPricingTerm.rateCards[].selector.value | 
| Dimension.dimensionKey | offerTerms[].configurableUpfrontPricingTerm.rateCards[].rateCard[].dimensionKey | 
| Dimension.dimensionValue | Buyer-supplied Ganzzahl (Anzahl der Einheiten, die für diese Dimension gekauft werden müssen) | 

**Anmerkung**  
Das `constraints` Feld in der Preisliste bestimmt, wie Sie die erstellen können `ConfigurableUpfrontPricingTermConfiguration` — zum Beispiel, ob Sie mehrere Dimensionen oder nur eine auswählen können. Einzelheiten finden Sie unter dem Datentyp [Einschränkungen](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-agreements_Constraints.html).

`RequestedTerm`Beispielnutzlast für`ConfigurableUpfrontPricingTerm`:

```
{
  "id": "term-43ab7a2445f89dfcb7e1a6a81c92fe08c124125ffad126bea5e5b7915c065166",
  "configuration": {
    "configurableUpfrontPricingTermConfiguration": {
      "selectorValue": "P12M",
      "dimensions": [
        {
          "dimensionKey": "AdminUsers",
          "dimensionValue": 5
        },
        {
          "dimensionKey": "ReadOnlyUsers",
          "dimensionValue": 10
        }
      ]
    }
  }
}
```

#### RenewalTermConfiguration
<a name="car-renewal-term"></a>


| Feld | Wert/Quelle | 
| --- | --- | 
| enableAutoRenew | Buyer-supplied boolean (trueoderfalse) — erforderlich | 

Beispiel für eine `RequestedTerm` Payload für: `RenewalTerm`

```
{
  "id": "term-ffcc0100ce0c5468426dc07d0b05cff09ab8447640108d9c95ce1591f0949738",
  "configuration": {
    "renewalTermConfiguration": {
      "enableAutoRenew": false
    }
  }
}
```

#### VariablePaymentTermConfiguration
<a name="car-variable-payment-term"></a>


| Feld | Wert/Quelle | 
| --- | --- | 
| RequestedTerm.configuration.variablePaymentTermConfiguration.paymentRequestApprovalStrategy | Buyer-supplied: AUTO\_APPROVE\_ON\_EXPIRATION oder WAIT\_FOR\_APPROVAL — erforderlich | 
| RequestedTerm.configuration.variablePaymentTermConfiguration.expirationDuration | Buyer-supplied Dauer (zum BeispielP10D); nur erforderlich, wenn die Strategie AUTO\_APPROVE\_ON\_EXPIRATION | 

Beispiel für eine `RequestedTerm` Nutzlast für`VariablePaymentTerm`:

```
{
  "id": "term-9ab34376c51cd5b4dc995aa0f410b657d58bd577b3f09b34d38afb6964aaaf12",
  "configuration": {
    "variablePaymentTermConfiguration": {
      "paymentRequestApprovalStrategy": "AUTO_APPROVE_ON_EXPIRATION",
      "expirationDuration": "P10D"
    }
  }
}
```

## Nehmen Sie ein Angebot an
<a name="buyer-accept-offer"></a>

Generieren Sie zunächst ein Angebot, wie unter beschrieben[Generieren Sie ein Angebot](#buyer-generate-quote). Verwenden Sie dann, `AcceptAgreementRequest` um das Angebot anzunehmen und die Vereinbarung zu erstellen. Sie müssen anrufen, `AcceptAgreementRequest` bevor die Vertragsanfrage abläuft. Sie können bei der Annahme optional eine Bestellnummer zuordnen.

```
# Use chargeId from CreateAgreementRequest response
response = client.accept_agreement_request(
    agreementRequestId='agrq-abc123',
    purchaseOrders=[
        {
            'chargeId': 'charge-xyz',  # From chargeSummary.expectedCharges[].id
            'purchaseOrderReference': 'PO-2024-001'
        }
    ]
)

print(f"Agreement ID: {response['agreementId']}")
```

## Ersetzen Sie eine bestehende Vereinbarung
<a name="buyer-replace-agreement"></a>

Konstruieren Sie eine `CreateAgreementRequest` wie unter beschrieben[Generieren Sie ein Angebot](#buyer-generate-quote), legen Sie jedoch fest, dass sie ersetzt werden `intent` soll, `REPLACE` und legen Sie die Vereinbarung `sourceAgreementIdentifier` bei. Rufen Sie dann `AcceptAgreementRequest` an, um den Austausch abzuschließen.

```
response = client.create_agreement_request(
    agreementProposalIdentifier='at-edhtjnbilupjv3xqbphtom77y',
    intent='REPLACE',
    sourceAgreementIdentifier='agmt-existing123'
)

print(f"Agreement Request ID: {response['agreementRequestId']}")
```

## Ändern Sie eine bestehende Vereinbarung
<a name="buyer-amend-agreement"></a>

Um die Laufzeitkonfiguration in einer bestehenden Vereinbarung zu ändern, setzen Sie `intent` auf `AMEND` und geben Sie an`sourceAgreementIdentifier`. Im Gegensatz zu einer neuen Vereinbarung `agreementProposalIdentifier` ist keine erforderlich. Geben Sie nur die Begriffe an, deren Konfiguration Sie ändern möchten. Rufen Sie dann `AcceptAgreementRequest` an, um die Änderung anzuwenden.

```
response = client.create_agreement_request(
    intent='AMEND',
    sourceAgreementIdentifier='agmt-existing123',
    requestedTerms=[
        {
            'id': 'term-configurable-pricing-789',
            'configuration': {
                'configurableUpfrontPricingTermConfiguration': {
                    'selectorValue': 'P12M',
                    'dimensions': [
                        {'dimensionKey': 'Users', 'dimensionValue': 100}
                    ]
                }
            }
        }
    ]
)

print(f"Agreement Request ID: {response['agreementRequestId']}")
```

## Automatische Verlängerung aktivieren oder deaktivieren
<a name="buyer-auto-renew"></a>

Verwenden Sie es `CreateAgreementRequest` mit der `AMEND` Absicht, die automatische Verlängerung umzuschalten.

```
response = client.create_agreement_request(
    intent='AMEND',
    sourceAgreementIdentifier='agmt-existing123',
    requestedTerms=[
        {
            'id': 'term-renewal-456',
            'configuration': {
                'renewalTermConfiguration': {'enableAutoRenew': True}
            }
        }
    ]
)

print(f"Agreement Request ID: {response['agreementRequestId']}")
```

## Kündigen Sie eine Vereinbarung
<a name="buyer-cancel-agreement"></a>

Wird verwendet`CancelAgreement`, um eine Nutzungsvereinbarung zu kündigen. Bei anderen Vertragsarten muss sich der Käufer an den Verkäufer wenden, um die Kündigung einzuleiten.

```
client.cancel_agreement(
    agreementId='agmt-abc123'
)
```

## Suchen Sie nach Verträgen
<a name="buyer-search-agreements"></a>

Verwenden Sie diese Option`SearchAgreements`, um in allen Vereinbarungen zu suchen, an denen Sie als Akzeptor teilnehmen. Die Suche gibt eine Liste von Vereinbarungen mit grundlegenden Vertragsinformationen zurück.

```
response = client.search_agreements(
    catalog='AWSMarketplace',
    filters=[
        {'name': 'PartyType', 'values': ['Acceptor']},
        {'name': 'AgreementType', 'values': ['PurchaseAgreement']},
        {'name': 'Status', 'values': ['ACTIVE']}
    ]
)

for agmt in response['agreementViewSummaries']:
    print(f"  {agmt['agreementId']}: {agmt['status']}")
```

## Beschreiben Sie eine Vereinbarung
<a name="buyer-describe-agreement"></a>

Dient `DescribeAgreement` zum Anzeigen von Details zu einer Vereinbarung, z. B. dem Antragsteller, dem Annahmedatum, dem Startdatum und dem Enddatum.

```
response = client.describe_agreement(
    agreementId='agmt-abc123'
)

print(f"Status: {response['status']}")
print(f"Start: {response['startTime']}")
print(f"End: {response['endTime']}")
```

## Vereinbarungsbedingungen abrufen
<a name="buyer-get-terms"></a>

Verwenden Sie diese Option`GetAgreementTerms`, um Einzelheiten zu den Bedingungen einer Vereinbarung zu erhalten, an der Sie als Akzeptor teilnehmen.

```
response = client.get_agreement_terms(
    agreementId='agmt-abc123'
)

for term in response['acceptedTerms']:
    print(f"  Term: {term}")
```

## Holen Sie sich die Rechte an der Vereinbarung
<a name="buyer-get-entitlements"></a>

Verwenden Sie diese Option`GetAgreementEntitlements`, um sich einen Überblick über den Status und die Einzelheiten der mit Ihrer Vereinbarung verbundenen Rechte auf Vertragsebene zu verschaffen.

```
response = client.get_agreement_entitlements(
    agreementId='agmt-abc123'
)

for ent in response['agreementEntitlements']:
    print(f"  {ent['resource']}: {ent['status']}")
```

## Holen Sie sich ein Registrierungstoken
<a name="buyer-get-registration-token"></a>

Verwenden Sie`GetAgreementEntitlements`, um ein Registrierungstoken zu erhalten. Dieses kurzlebige Token (gültig für 30 Minuten) wird von den Akzeptoren benötigt, um ein Konto bei den Antragstellern einzurichten. Gilt derzeit nur für SaaS-Kaufverträge.

```
response = client.get_agreement_entitlements(
    agreementId='agmt-abc123'
)

for ent in response['agreementEntitlements']:
    if 'registrationToken' in ent:
        print(f"Registration Token: {ent['registrationToken']}")
        # Token is valid for 30 minutes
```

## Gebühren für die Vereinbarung auflisten
<a name="buyer-list-charges"></a>

Verwenden Sie diese Option`ListAgreementCharges`, um Gebühren und Bestelldetails im Zusammenhang mit Ihrer Vereinbarung einzusehen.

```
response = client.list_agreement_charges(
    agreementId='agmt-abc123'
)

for charge in response['items']:
    print(f"  {charge['id']} (rev {charge['revision']}): ${charge['amount']}")
    print(f"  PO: {charge.get('purchaseOrderReference', 'N/A')}")
```

## Bestellungen aktualisieren
<a name="buyer-update-purchase-orders"></a>

Verwenden Sie diese Option`UpdatePurchaseOrders`, um eine Bestellnummer hinzuzufügen, nachdem Sie ein Produkt abonniert haben. Verwenden Sie das `chargeId` und `chargeRevision` aus der [Gebühren für die Vereinbarung auflisten](#buyer-list-charges) Antwort. Sobald eine Bestellung mit einer Gebühr verknüpft wurde, enthält die für diese Gebühr generierte Rechnung die Bestellnummer.

```
client.update_purchase_orders(
    agreementId='agmt-abc123',
    purchaseOrders=[
        {
            'chargeId': 'charge-xyz',
            'chargeRevision': 1,
            'purchaseOrderReference': 'PO-2024-001'
        }
    ]
)
```

## Stornierungsanfragen auflisten
<a name="buyer-list-cancellations"></a>

Verwenden Sie diese `ListAgreementCancellationRequests` Option, um alle Stornierungsanfragen für Verträge aufzulisten, an denen Sie teilnehmen. Sie können nach Vereinbarung, Status und anderen Kriterien filtern.

```
response = client.list_agreement_cancellation_requests(
    partyType='Acceptor',
    agreementId='agmt-abc123'
)

for req in response['agreementCancellationRequests']:
    print(f"  {req['agreementCancellationRequestId']}: {req['status']}")
```

## Einzelheiten zur Stornierungsanfrage abrufen
<a name="buyer-get-cancellation"></a>

Dient `GetAgreementCancellationRequest` zum Abrufen detaillierter Informationen zu einer bestimmten Stornierungsanfrage, einschließlich Status, Zeitstempel und Ursachencodes.

```
response = client.get_agreement_cancellation_request(
    agreementId='agmt-abc123',
    agreementCancellationRequestId='acr-abc123'
)

print(f"Status: {response['status']}")
print(f"Reason: {response['reasonCode']}")
```

## Akzeptieren Sie eine Stornierungsanfrage
<a name="buyer-accept-cancellation"></a>

Wird verwendet`AcceptAgreementCancellationRequest`, um eine vom Verkäufer initiierte Stornierungsanfrage zu genehmigen. Nach der Genehmigung wird der Workflow zur Kündigung des Vertrags asynchron ausgeführt. Sie benötigen außerdem eine `CancelAgreement` Genehmigung, da die Genehmigung der Stornierungsanfrage zur Kündigung der Vereinbarung führt.

```
client.accept_agreement_cancellation_request(
    agreementId='agmt-abc123',
    agreementCancellationRequestId='acr-abc123'
)
```

## Lehnen Sie eine Stornierungsanfrage ab
<a name="buyer-reject-cancellation"></a>

Wird verwendet`RejectAgreementCancellationRequest`, um eine vom Verkäufer initiierte Stornierungsanfrage abzulehnen. Nach der Ablehnung bleibt die Vereinbarung aktiv und der Verkäufer kann bei Bedarf eine neue Stornierungsanfrage stellen.

```
client.reject_agreement_cancellation_request(
    agreementId='agmt-abc123',
    agreementCancellationRequestId='acr-abc123'
)
```

## Zahlungsanfragen auflisten
<a name="buyer-list-payments"></a>

Verwenden Sie diese `ListAgreementPaymentRequests` Option, um alle Zahlungsanfragen für Vereinbarungen aufzulisten, an denen Sie teilnehmen. Sie können nach Vereinbarung, Status und anderen Kriterien filtern.

```
response = client.list_agreement_payment_requests(
    partyType='Acceptor',
    agreementId='agmt-abc123'
)

for req in response['agreementPaymentRequests']:
    print(f"  {req['agreementPaymentRequestId']}: {req['status']}")
```

## Details zur Zahlungsanfrage abrufen
<a name="buyer-get-payment"></a>

Dient `GetAgreementPaymentRequest` zum Abrufen detaillierter Informationen zu einer bestimmten Zahlungsanforderung, einschließlich Status, Zeitstempel und damit verbundener Gebühren.

```
response = client.get_agreement_payment_request(
    paymentRequestId='apr-abc123',
    agreementId='agmt-abc123'
)

print(f"Status: {response['status']}")
print(f"Amount: ${response['amount']}")
```

## Akzeptieren Sie eine Zahlungsanforderung
<a name="buyer-accept-payment"></a>

Wird verwendet`AcceptAgreementPaymentRequest`, um eine vom Verkäufer initiierte Zahlungsanforderung für eine aktive Vereinbarung zu genehmigen.

```
client.accept_agreement_payment_request(
    paymentRequestId='apr-abc123',
    agreementId='agmt-abc123'
)
```

## Lehnen Sie eine Zahlungsanforderung ab
<a name="buyer-reject-payment"></a>

Wird verwendet`RejectAgreementPaymentRequest`, um eine vom Verkäufer initiierte Zahlungsanforderung abzulehnen. Nach der Ablehnung kann der Verkäufer bei Bedarf eine neue Zahlungsanforderung erstellen.

```
client.reject_agreement_payment_request(
    paymentRequestId='apr-abc123',
    agreementId='agmt-abc123'
)
```