

L'API Reference di AWS Marketplace è stato ristrutturato. Per ulteriori informazioni sulle operazioni API supportate, consulta l'[AWS Marketplace API Reference](https://docs.aws.amazon.com/marketplace/latest/APIReference/Welcome.html).

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Lavora con l'API Agreement come acquirente
<a name="work-with-agreement-api-buyer"></a>

Un accordo è un documento che vincola due parti, tra cui il proponente e l'accettante (in genere, l'acquirente) e definisce i termini e le condizioni applicabili tra di esse.

L'acquirente crea un AgreementRequest, che genera un preventivo. Questo preventivo include tutte le informazioni pertinenti, come le spese stimate che verranno sostenute nel corso della durata del contratto, fondamentali per la decisione di acquisto dell'acquirente. Se l'acquirente è soddisfatto del preventivo, può accettarlo AgreementRequest prima della scadenza. L'accordo viene creato dopo l'accettazione del AgreementRequest. Durante questo processo, l'amministratore o la persona dell'acquirente possono associare l'ordine di acquisto agli addebiti. Infine, in base ai termini e alle condizioni del contratto attivo, all'acquirente viene emessa una fattura e viene concessa una licenza per l'utilizzo del prodotto.

## Prerequisiti: scopri prodotti e offerte
<a name="agreement-buyer-prerequisites"></a>

Prima di creare un accordo, utilizza l'API Marketplace AWS Discovery per scoprire il prodotto e ottenere `agreementProposalId` i `pricingModel` dettagli e i termini necessari per creare un. `CreateAgreementRequest`


| Fase | Azione dell'API Discovery | Output | Usato per | 
| --- | --- | --- | --- | 
| 1 | [ListPurchaseOptions](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_ListPurchaseOptions.html) | offerId | Individuazione delle offerte disponibili per un prodotto | 
| 2 | [GetOffer](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOffer.html) | agreementProposalId, pricingModel | Costruendo agreementProposalIdentifier | 
| 3 | [GetOfferTerms](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferTerms.html) | ID dei termini e dettagli sui prezzi | Costruendo requestedTerms | 

Per informazioni dettagliate sulla scoperta di prodotti e prezzi, consulta[Scopri prodotti e prezzi](work-with-catalog-to-discover-products.md).

Un accettatore può eseguire le seguenti attività utilizzando questa API:


| Operazione | Description | Azione/i | Intento | 
| --- | --- | --- | --- | 
| [Genera un preventivo](#buyer-generate-quote) | Acceptor può generare un preventivo che includa tutte le informazioni pertinenti, come gli addebiti che verranno sostenuti per tutta la durata del contratto, fondamentali per la decisione di acquisto dell'acquirente. | CreateAgreementRequest | NEW | 
| [Accetta un'offerta](#buyer-accept-offer) | L'Accettatore può accettare le condizioni proposte dal proponente che creano un nuovo accordo. Questa accettazione può comportare il passaggio di parametri per determinati termini, come la selezione della quantità o della durata, l'aggiunta di un ordine di acquisto ecc. Acceptor può anche creare un nuovo accordo in cui l'utilizzo del prodotto inizia in date future. La data di firma dell'accordo sarà quella in cui l'offerta viene accettata e quando l'accordo viene creato. La data di inizio del contratto è la data futura in cui inizia l'utilizzo del prodotto. Questa è la data in cui license/entitlement viene attivato. Per conoscere lo stato più recente dei tuoi diritti d'uso, consulta l'API. [GetAgreementEntitlements](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-agreements_GetAgreementEntitlements.html) | CreateAgreementRequest, AcceptAgreementRequest | NEW | 
| [Sostituire un contratto esistente](#buyer-replace-agreement) | L'Acceptor può eseguire un aggiornamento a medio termine del contratto per passare a condizioni più favorevoli o cambiare venditore per i contratti. Questa azione pone fine all'accordo esistente passato come input e crea un nuovo accordo netto. Questa azione è logicamente equivalente a un CANCEL seguito da un NUOVO accordo, ma garantisce la continuità dei diritti per l'Accettatore e in nessun momento l'Accettatore rimane senza diritti. | CreateAgreementRequest, AcceptAgreementRequest | REPLACE | 
| [Modificare un accordo esistente](#buyer-amend-agreement) | L'accettatore è autorizzato a modificare solo la configurazione per i termini accettati. Ad esempio, possono abilitare o disabilitare il rinnovo automatico o modificare la quantità acquistata, a condizione che la modifica del prezzo successiva alla modifica non comporti rimborsi. Supporteremo la modifica dell'addebito solo se il contratto non è stato avviato. Nota: il proponente è autorizzato a modificare i prezzi in base al periodo di tariffazione con pagamento in base al consumo. Qualsiasi aumento dei prezzi con pagamento in base al consumo impiega 90 giorni per entrare in vigore dopo la notifica all'acquirente dell'aumento del prezzo. Qualsiasi riduzione dei prezzi del pagamento in base al consumo ha effetto immediato. | CreateAgreementRequest, AcceptAgreementRequest | EMENDARE | 
| [Attivare o disattivare il rinnovo automatico](#buyer-auto-renew) | L'Accettatore può attivare ON/Off l'opzione di rinnovo automatico sul contratto se il venditore ha abilitato i termini dell'offerta di rinnovo. Se abilitato, il contratto di rinnovo verrà creato dal servizio Contratto alla data di scadenza del contratto originale utilizzando l'ultima revisione dell'offerta. La data di inizio del presente Contratto di creazione sarà la stessa data di fine del contratto originale. | CreateAgreementRequest, AcceptAgreementRequest | EMENDARE | 
| [Annullare un contratto](#buyer-cancel-agreement) | L'accettatore può annullare il contratto di utilizzo. Per tutto il resto, l'acquirente deve contattare il venditore per avviare l'annullamento. Quando annulli il contratto, la licenza e i diritti vengono disattivati. | CancelAgreement | N/A | 
| [Cerca accordi](#buyer-search-agreements) | Acceptor può eseguire ricerche in tutti gli accordi a cui ha partecipato come accettatore. Marketplace AWS La ricerca restituisce un elenco di accordi con informazioni di base sugli accordi. | SearchAgreements | N/A | 
| [Descrivi un accordo](#buyer-describe-agreement) | L'accettatore può visualizzare i dettagli di un accordo, ad esempio il proponente, l'accettante, la data di inizio e la data di fine. | DescribeAgreement | N/A | 
| [Ottieni i termini del contratto](#buyer-get-terms) | L'accettante può ottenere dettagli sui termini di un accordo a cui ha partecipato in qualità di accettatore. | GetAgreementTerms | N/A | 
| [Ottieni i diritti contrattuali](#buyer-get-entitlements) | Acceptor può ottenere una visione a livello di accordo dello stato e dei dettagli dei diritti legati al contratto, ad esempio se il contratto è in fase di concessione o se è stato rifiutato (e, in caso affermativo, per quali motivi), quali diritti vengono concessi ai clienti. | GetAgreementEntitlements | N/A | 
| [Ottieni un token di registrazione](#buyer-get-registration-token) | Il token di registrazione è un token di breve durata richiesto dagli accettatori per creare un account con i proponenti. Questo token viene utilizzato sia per i tipi di dimensione contabilizzati esternamente che per quelli autorizzati. Il token è valido solo per 30 minuti dopo la creazione e attualmente è applicabile solo per i contratti di acquisto SaaS. | GetAgreementEntitlements | N/A | 
| [Elenca i costi del contratto](#buyer-list-charges) | Acceptor può visualizzare gli addebiti e i dettagli degli ordini di acquisto ad essi associati per il relativo Contratto. | ListAgreementCharges | N/A | 
| [Aggiornare gli ordini di acquisto](#buyer-update-purchase-orders) | Acceptor può aggiungere un numero d'ordine di acquisto dopo aver sottoscritto un prodotto. Una volta che un ordine di acquisto è associato a un addebito, la fattura generata per tale addebito includerà il numero dell'ordine di acquisto. | UpdatePurchaseOrders | N/A | 
| [Elenca le richieste di cancellazione](#buyer-list-cancellations) | Acceptor può elencare tutte le richieste di annullamento degli accordi a cui partecipa. L'elenco può essere filtrato per contratto, stato e altri criteri. | ListAgreementCancellationRequests | N/A | 
| [Ottieni i dettagli della richiesta di annullamento](#buyer-get-cancellation) | Acceptor può recuperare informazioni dettagliate su una specifica richiesta di annullamento avviata dal venditore (proponente), inclusi lo stato, i timestamp e i codici motivo. | GetAgreementCancellationRequest | N/A | 
| [Accetta una richiesta di cancellazione](#buyer-accept-cancellation) | L'accettatore può approvare una richiesta di annullamento avviata dal venditore (proponente) per un accordo attivo. Dopo l'approvazione, il flusso di lavoro di cancellazione dell'accordo viene eseguito in modo asincrono e lo stato dell'accordo diventa annullato. Nota: anche gli utenti necessitano dell'CancelAgreementautorizzazione perché l'approvazione della richiesta di annullamento comporta l'annullamento dell'accordo. | AcceptAgreementCancellationRequest, CancelAgreement | N/A | 
| [Rifiuta una richiesta di cancellazione](#buyer-reject-cancellation) | L'accettatore può rifiutare una richiesta di annullamento avviata dal venditore (proponente). Dopo il rifiuto, l'accordo rimane attivo e la richiesta di cancellazione entra in uno stato terminale. Il venditore può creare una nuova richiesta di annullamento, se necessario. | RejectAgreementCancellationRequest | N/A | 
| [Elenca le richieste di pagamento](#buyer-list-payments) | Acceptor può elencare tutte le richieste di pagamento per gli accordi a cui partecipa. L'elenco può essere filtrato per contratto, stato e altri criteri. | ListAgreementPaymentRequests | N/A | 
| [Ottieni i dettagli della richiesta di pagamento](#buyer-get-payment) | Acceptor può recuperare informazioni dettagliate su una specifica richiesta di pagamento avviata dal venditore (proponente), inclusi lo stato, i timestamp e gli addebiti associati. | GetAgreementPaymentRequest | N/A | 
| [Accetta una richiesta di pagamento](#buyer-accept-payment) | L'accettatore può approvare una richiesta di pagamento avviata dal venditore (proponente) per un accordo attivo. | AcceptAgreementPaymentRequest | N/A | 
| [Rifiuta una richiesta di pagamento](#buyer-reject-payment) | L'accettatore può rifiutare una richiesta di pagamento avviata dal venditore (proponente). Dopo il rifiuto, la richiesta di pagamento entra in uno stato terminale. Il venditore può creare una nuova richiesta di pagamento, se necessario. | RejectAgreementPaymentRequest | N/A | 

## Genera un preventivo
<a name="buyer-generate-quote"></a>

Utilizza `CreateAgreementRequest` per generare un preventivo. È necessario fornire:
+ `agreementProposalIdentifier`— il `agreementProposalId` risultato della [GetOffer](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOffer.html)risposta.
+ `requestedTerms`— costruito sulla base dei termini della [GetOfferTerms](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferTerms.html)risposta. Ogni termine richiede il suo`id`, e alcuni ne richiedono uno aggiuntivo`configuration`. Per informazioni, consulta [Costruire RequestedTerms](#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']}")
```

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

Per costruire`requestedTerms`, devi determinare due cose:

1. **Quali termini includere**: determinati dal modello di prezzo dell'offerta. Per informazioni, consulta [Termini richiesti per modello di prezzo](#car-required-terms-by-pricing-model).

1. **Quali termini richiedono una configurazione**: la maggior parte dei termini richiede solo la configurazione`id`, ma tre tipi di termine richiedono una configurazione aggiuntiva fornita dall'acquirente. Per informazioni, consulta [Configurazioni dei termini](#car-term-configurations).

### Termini richiesti per modello di prezzo
<a name="car-required-terms-by-pricing-model"></a>

Il `pricingModel.[PricingModel](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_PricingModel.html)` campo nella [GetOffer](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOffer.html)risposta determina quali termini devono essere inclusi nel tuo`CreateAgreementRequest`.

I seguenti termini devono essere inclusi in **ogni** contratto quando sono presenti nell'offerta: `LegalTerm``SupportTerm`,`ValidityTerm`, e`RenewalTerm`.

**Nota**  
`FreeTrialPricingTerm`può essere accettato solo **una volta** per prodotto: `CreateAgreementRequest` restituirà un errore se l'acquirente ha già utilizzato una prova gratuita.

**CONTRATTO**

Tutti i termini restituiti da [GetOfferTerms](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferTerms.html)sono obbligatori in un **unico documento**`CreateAgreementRequest`.

**UTILIZZO**

La creazione del contratto dipende dai termini presenti nell'offerta:

1. **Primo accordo**: accetta `UsageBasedPricingTerm` and/or `RecurringPaymentTerm` (a seconda di cosa include l'offerta) insieme ai termini obbligatori. Ciò concede i diritti di utilizzo del prodotto.

1. **Contratti successivi (facoltativi)**: se l'offerta include o`ConfigurableUpfrontPricingTerm`, facoltativamente `FixedUpfrontPricingTerm``PaymentScheduleTerm`, è possibile creare un contratto di acquisto annuale separato per ottenere prezzi scontati.

**Nota**  
Se crei entrambi gli accordi e successivamente desideri annullarli, annulla prima il contratto successivo (con`ConfigurableUpfrontPricingTerm`), quindi annulla il primo accordo (con `UsageBasedPricingTerm` and/or `RecurringPaymentTerm`).

**BYOL**

Accetta `ByolPricingTerm` insieme ai termini obbligatori.

### Configurazioni dei termini
<a name="car-term-configurations"></a>

La maggior parte dei termini richiede solo il modulo`id`. [GetOfferTerms](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferTerms.html) I seguenti tipi di termine richiedono un documento fornito dall'acquirente `configuration` in aggiunta a: `id`


| Tipo di termine | Configurazione | Cosa fornisce l'acquirente | 
| --- | --- | --- | 
| ConfigurableUpfrontPricingTerm | [ConfigurableUpfrontPricingTermConfiguration](#car-configurable-upfront-pricing-term) | Durata del contratto e numero di unità per dimensione | 
| RenewalTerm | [RenewalTermConfiguration](#car-renewal-term) | Se effettuare il rinnovo automatico alla scadenza del contratto | 
| VariablePaymentTerm | [VariablePaymentTermConfiguration](#car-variable-payment-term) | Come vengono approvate le richieste di pagamento del venditore | 

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

Utilizza l'esempio seguente per individuare i valori necessari per`ConfigurableUpfrontPricingTermConfiguration`.

Esempio `GetOfferTerms` di risposta:

```
{
  "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"
      }
    }
  ]
}
```


| Campo | Valore/fonte | 
| --- | --- | 
| ConfigurableUpfrontPricingTermConfiguration.selectorValue | offerTerms[].configurableUpfrontPricingTerm.rateCards[].selector.value | 
| Dimension.dimensionKey | offerTerms[].configurableUpfrontPricingTerm.rateCards[].rateCard[].dimensionKey | 
| Dimension.dimensionValue | Buyer-supplied numero intero (numero di unità da acquistare per quella dimensione) | 

**Nota**  
Il `constraints` campo nella scheda tariffaria determina il modo in cui è possibile crearla`ConfigurableUpfrontPricingTermConfiguration`, ad esempio se è possibile selezionare più dimensioni o solo una. Per i dettagli, consulta il tipo di dati [Constraints](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-agreements_Constraints.html).

Esempio di `RequestedTerm` payload per: `ConfigurableUpfrontPricingTerm`

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

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


| Campo | Valore/fonte | 
| --- | --- | 
| enableAutoRenew | Buyer-supplied boolean (trueorfalse) — obbligatorio | 

Esempio di `RequestedTerm` payload per: `RenewalTerm`

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

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


| Campo | Valore/fonte | 
| --- | --- | 
| RequestedTerm.configuration.variablePaymentTermConfiguration.paymentRequestApprovalStrategy | Buyer-supplied: AUTO\_APPROVE\_ON\_EXPIRATION o WAIT\_FOR\_APPROVAL — obbligatorio | 
| RequestedTerm.configuration.variablePaymentTermConfiguration.expirationDuration | Buyer-supplied durata (ad esempio,P10D); richiesto solo quando la strategia è AUTO\_APPROVE\_ON\_EXPIRATION | 

`RequestedTerm`Payload di esempio per`VariablePaymentTerm`:

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

## Accetta un'offerta
<a name="buyer-accept-offer"></a>

Innanzitutto, genera un preventivo come descritto in[Genera un preventivo](#buyer-generate-quote). Quindi, utilizza `AcceptAgreementRequest` per accettare il preventivo e creare l'accordo. È necessario chiamare `AcceptAgreementRequest` prima della scadenza della richiesta di contratto. Facoltativamente, è possibile associare un numero d'ordine di acquisto durante l'accettazione.

```
# 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']}")
```

## Sostituire un contratto esistente
<a name="buyer-replace-agreement"></a>

Costruisci un accordo `CreateAgreementRequest` come descritto in[Genera un preventivo](#buyer-generate-quote), ma imposta `intent` `REPLACE` e fornisci l'`sourceAgreementIdentifier`accordo da sostituire. Quindi chiama `AcceptAgreementRequest` per completare la sostituzione.

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

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

## Modificare un accordo esistente
<a name="buyer-amend-agreement"></a>

Per modificare la configurazione dei termini su un accordo esistente, imposta `intent` `AMEND` e fornisci`sourceAgreementIdentifier`. A differenza di un nuovo accordo, non `agreementProposalIdentifier` è necessario. Includi solo i termini di cui desideri modificare la configurazione. Quindi chiama `AcceptAgreementRequest` per applicare l'emendamento.

```
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']}")
```

## Attivare o disattivare il rinnovo automatico
<a name="buyer-auto-renew"></a>

Utilizzare `CreateAgreementRequest` con l'`AMEND`intento di attivare il rinnovo automatico.

```
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']}")
```

## Annullare un contratto
<a name="buyer-cancel-agreement"></a>

Utilizzare `CancelAgreement` per annullare un contratto di utilizzo. Per altri tipi di contratto, l'acquirente deve contattare il venditore per avviare l'annullamento.

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

## Cerca accordi
<a name="buyer-search-agreements"></a>

`SearchAgreements`Utilizzalo per cercare tra tutti gli accordi a cui partecipi come accettatore. La ricerca restituisce un elenco di accordi con informazioni di base sugli accordi.

```
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']}")
```

## Descrivi un accordo
<a name="buyer-describe-agreement"></a>

`DescribeAgreement`Da utilizzare per visualizzare i dettagli di un accordo, ad esempio il proponente, l'accettante, la data di inizio e la data di fine.

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

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

## Ottieni i termini del contratto
<a name="buyer-get-terms"></a>

`GetAgreementTerms`Utilizzalo per ottenere dettagli sui termini di un accordo a cui partecipi in qualità di accettatore.

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

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

## Ottieni i diritti contrattuali
<a name="buyer-get-entitlements"></a>

`GetAgreementEntitlements`Utilizzalo per ottenere una visione a livello di contratto dello stato e dei dettagli dei diritti legati al contratto.

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

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

## Ottieni un token di registrazione
<a name="buyer-get-registration-token"></a>

`GetAgreementEntitlements`Utilizzalo per ottenere un token di registrazione. Questo token di breve durata (valido per 30 minuti) è necessario agli accettanti per creare un account con i proponenti. Attualmente applicabile solo per i contratti di acquisto SaaS.

```
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
```

## Elenca i costi del contratto
<a name="buyer-list-charges"></a>

Utilizzalo `ListAgreementCharges` per visualizzare gli addebiti e i dettagli degli ordini di acquisto associati al contratto.

```
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')}")
```

## Aggiornare gli ordini di acquisto
<a name="buyer-update-purchase-orders"></a>

Utilizzato `UpdatePurchaseOrders` per aggiungere un numero d'ordine di acquisto dopo l'iscrizione a un prodotto. Usa l'`chargeId`e `chargeRevision` della [Elenca i costi del contratto](#buyer-list-charges) risposta. Una volta che un ordine di acquisto è associato a un addebito, la fattura generata per tale addebito include il numero dell'ordine di acquisto.

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

## Elenca le richieste di cancellazione
<a name="buyer-list-cancellations"></a>

Utilizza `ListAgreementCancellationRequests` per elencare tutte le richieste di cancellazione per gli accordi a cui partecipi. Puoi filtrare per contratto, stato e altri criteri.

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

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

## Ottieni i dettagli della richiesta di annullamento
<a name="buyer-get-cancellation"></a>

`GetAgreementCancellationRequest`Utilizzalo per recuperare informazioni dettagliate su una specifica richiesta di cancellazione, inclusi lo stato, i timestamp e i codici motivo.

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

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

## Accetta una richiesta di cancellazione
<a name="buyer-accept-cancellation"></a>

Utilizzato `AcceptAgreementCancellationRequest` per approvare una richiesta di annullamento avviata dal venditore. Dopo l'approvazione, il flusso di lavoro di annullamento del contratto viene eseguito in modo asincrono. È inoltre necessaria `CancelAgreement` l'autorizzazione perché l'approvazione della richiesta di annullamento comporta la cancellazione dell'accordo.

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

## Rifiuta una richiesta di cancellazione
<a name="buyer-reject-cancellation"></a>

Utilizzato `RejectAgreementCancellationRequest` per rifiutare una richiesta di annullamento avviata dal venditore. Dopo il rifiuto, l'accordo rimane attivo e il venditore può creare una nuova richiesta di annullamento, se necessario.

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

## Elenca le richieste di pagamento
<a name="buyer-list-payments"></a>

Utilizza `ListAgreementPaymentRequests` per elencare tutte le richieste di pagamento per gli accordi a cui partecipi. Puoi filtrare per contratto, stato e altri criteri.

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

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

## Ottieni i dettagli della richiesta di pagamento
<a name="buyer-get-payment"></a>

Consente `GetAgreementPaymentRequest` di recuperare informazioni dettagliate su una specifica richiesta di pagamento, tra cui lo stato, la data e l'ora e gli addebiti associati.

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

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

## Accetta una richiesta di pagamento
<a name="buyer-accept-payment"></a>

Utilizzato `AcceptAgreementPaymentRequest` per approvare una richiesta di pagamento avviata dal venditore per un contratto attivo.

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

## Rifiuta una richiesta di pagamento
<a name="buyer-reject-payment"></a>

Utilizzato `RejectAgreementPaymentRequest` per rifiutare una richiesta di pagamento avviata dal venditore. Dopo il rifiuto, il venditore può creare una nuova richiesta di pagamento, se necessario.

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