Opply Agreements API
The Agreements API from Opply — 10 operation(s) for agreements.
The Agreements API from Opply — 10 operation(s) for agreements.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/opply-agreements-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Opply Activity Feed Agreements API
version: 0.0.0
servers:
- url: https://api.opply.com
description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Agreements
paths:
/api/v1/agreements/brand/:
get:
operationId: api_v1_agreements_brand_list
description: Returns a paginated list of all agreements where the current user's company is the buyer
summary: List all agreements for the buyer's company
parameters:
- in: query
name: agreement_number
schema:
type: string
description: Case-insensitive exact match on the agreement number. Used by the buyer chat ContractNumberChip to resolve UUID-by-number.
- in: query
name: exclude_legacy
schema:
type: boolean
description: When true, exclude agreements migrated from the legacy quotes system (rows where legacy_agreement is set).
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- in: query
name: product
schema:
type: string
description: Case-insensitive substring match against any line item's product name. E.g. `?product=sugar` returns contracts with a line item whose name contains "sugar".
- in: query
name: status
schema:
type: string
enum:
- active
- draft
- expired
- renewal
description: 'Filter by lifecycle status derived from contract dates: `active` (within dates), `renewal` (within dates and ending within 90 days), `expired` (end date in the past), `draft` (start date in the future).'
- in: query
name: supplier_company_uuid
schema:
type: string
description: Filter to a specific supplier by their company UUID.
tags:
- Agreements
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedBuyerAgreementListList'
description: ''
'401':
description: Authentication credentials were not provided or are invalid
'403':
description: User is not authorized to view these agreements
/api/v1/agreements/brand/{uuid}/:
get:
operationId: api_v1_agreements_brand_retrieve
description: Returns detailed information about a specific agreement
summary: Retrieve a specific agreement
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Agreements
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BuyerAgreementDetails'
description: ''
'401':
description: Authentication credentials were not provided or are invalid
'403':
description: User is not authorized to view this agreement
'404':
description: Agreement not found
/api/v1/agreements/brand/{uuid}/place-order/:
post:
operationId: api_v1_agreements_brand_place_order_create
description: Creates a new order based on the agreement with specified delivery details and line items.
summary: Place an order from an agreement
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Agreements
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AgreementOrderCreate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/AgreementOrderCreate'
multipart/form-data:
schema:
$ref: '#/components/schemas/AgreementOrderCreate'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/AgreementOrderResponse'
description: ''
'400':
description: Invalid request data
'404':
description: Agreement or delivery address not found
/api/v1/agreements/brand/aggregate/:
get:
operationId: api_v1_agreements_brand_aggregate_retrieve
description: Returns a per-currency aggregate (sum / avg / min / max) of `total_in_buyer_currency` over the filtered agreements, computed in full-precision Decimal micro-units and rounded to integer cents once per currency. The per-agreement value matches what the list endpoint surfaces today — line-item totals computed at each agreement's per-order quantity (`AgreementLineItem.quantity` = `total_quantity_agreed / estimated_number_of_orders`) plus shipping and tax. Use this for cross-agreement sum/total/average questions so the answer isn't biased by the per-row rounding the list endpoint applies (SC-3627). Filters mirror the `list` endpoint exactly. Alternatively pass `agreement_uuids` (repeated query param) to aggregate over an explicit set of agreement UUIDs — filters are ignored when uuids are present. Every UUID must resolve inside the caller's scope or the whole call is rejected with a 403.
summary: Aggregate agreement totals across the filtered set in full precision
parameters:
- in: query
name: agreement_number
schema:
type: string
description: Exact (case-insensitive) contract number match.
- in: query
name: agreement_uuids
schema:
type: array
items:
type: string
format: uuid
description: Optional explicit set of agreement UUIDs to aggregate. Pass as a repeated query param (`?agreement_uuids=<uuid>&agreement_uuids=<uuid>`). When present and non-empty, filters are ignored. Every UUID must resolve inside the caller's scope — otherwise the call is rejected with `403 forbidden` to avoid leaking which UUIDs the caller can see.
- in: query
name: exclude_legacy
schema:
type: boolean
description: When true, omit legacy-migrated agreements.
- in: query
name: field
schema:
type: string
enum:
- total_in_buyer_currency
description: Numeric field to aggregate. Currently only `total_in_buyer_currency` is supported. Defaults to that value.
- in: query
name: operation
schema:
type: string
enum:
- avg
- max
- min
- sum
description: 'Aggregation operation. One of: sum, avg, min, max.'
required: true
- in: query
name: product
schema:
type: string
description: Substring match on any line item's product name.
- in: query
name: status
schema:
type: string
enum:
- active
- draft
- expired
- renewal
description: Lifecycle bucket from contract dates.
- in: query
name: supplier_company_uuid
schema:
type: string
format: uuid
description: Supplier company UUID.
- in: query
name: supplier_name
schema:
type: string
description: Substring match on supplier company name.
- in: query
name: supplier_uuid
schema:
type: string
format: uuid
description: Supplier company UUID (relational key alias).
tags:
- Agreements
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BuyerAgreementAggregateResult'
description: ''
'400':
description: Invalid `operation`, `field`, or `agreement_uuids` query param.
'403':
description: One or more `agreement_uuids` are not in the caller's scope.
/api/v1/agreements/merchant-of-record/:
get:
operationId: api_v1_agreements_merchant_of_record_list
description: Returns a paginated list of all agreements where the current user's company is the merchant of record. Supports search by agreement_number, buyer_company name, or supplier_company name; buyer/supplier/date_after/date_before/active filters; and ordering by contract_start_date or contract_end_date.
summary: List all agreements for the merchant of record company
parameters:
- in: query
name: active
schema:
type: boolean
- in: query
name: buyer
schema:
type: string
format: uuid
- in: query
name: date_after
schema:
type: string
format: date
- in: query
name: date_before
schema:
type: string
format: date
- name: ordering
required: false
in: query
description: Which field to use when ordering the results.
schema:
type: string
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- in: query
name: product
schema:
type: string
- name: search
required: false
in: query
description: A search term.
schema:
type: string
- in: query
name: status
schema:
type: string
enum:
- active
- draft
- expired
- renewal
description: '* `active` - Active
* `renewal` - Renewal
* `expired` - Expired
* `draft` - Draft'
- in: query
name: supplier
schema:
type: string
format: uuid
tags:
- Agreements
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedMerchantOfRecordAgreementListList'
description: ''
'401':
description: Authentication credentials were not provided or are invalid
'403':
description: User is not authorized to view these agreements
post:
operationId: api_v1_agreements_merchant_of_record_create
description: Creates a new agreement as merchant of record. The buyer currency is always set to GBP.
summary: Create a new agreement
tags:
- Agreements
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementCreate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementCreate'
multipart/form-data:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementCreate'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementDetails'
description: ''
'400':
description: Validation error
/api/v1/agreements/merchant-of-record/{uuid}/:
get:
operationId: api_v1_agreements_merchant_of_record_retrieve
description: Returns detailed information about a specific agreement
summary: Retrieve a specific agreement
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Agreements
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementDetails'
description: ''
'401':
description: Authentication credentials were not provided or are invalid
'403':
description: User is not authorized to view this agreement
'404':
description: Agreement not found
put:
operationId: api_v1_agreements_merchant_of_record_update
summary: Merchant of Record endpoints for Agreements
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Agreements
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementList'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementList'
multipart/form-data:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementList'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementList'
description: ''
patch:
operationId: api_v1_agreements_merchant_of_record_partial_update
summary: Merchant of Record endpoints for Agreements
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Agreements
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedMerchantOfRecordAgreementList'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedMerchantOfRecordAgreementList'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedMerchantOfRecordAgreementList'
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementList'
description: ''
delete:
operationId: api_v1_agreements_merchant_of_record_destroy
summary: Merchant of Record endpoints for Agreements
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Agreements
security:
- tokenAuth: []
- cookieAuth: []
responses:
'204':
description: No response body
/api/v1/agreements/merchant-of-record/{uuid}/line-item/{line_item_uuid}/documents/:
post:
operationId: api_v1_agreements_merchant_of_record_line_item_documents_create
description: Uploads a document (spec sheet or signed agreement) for a specific line item
summary: Upload a document for an agreement line item
parameters:
- in: path
name: line_item_uuid
schema:
type: string
required: true
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Agreements
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AgreementLineItemDocumentUpload'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/AgreementLineItemDocumentUpload'
multipart/form-data:
schema:
$ref: '#/components/schemas/AgreementLineItemDocumentUpload'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/AgreementLineItemDocument'
description: ''
'400':
description: Validation error
'403':
description: User is not authorized to upload documents for this line item
'404':
description: Line item not found
/api/v1/agreements/merchant-of-record/{uuid}/line-item/{line_item_uuid}/documents/{document_uuid}/:
delete:
operationId: api_v1_agreements_merchant_of_record_line_item_documents_destroy
description: Deletes a document (spec sheet or signed agreement) for a specific line item
summary: Delete a document for an agreement line item
parameters:
- in: path
name: document_uuid
schema:
type: string
required: true
- in: path
name: line_item_uuid
schema:
type: string
required: true
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Agreements
security:
- tokenAuth: []
- cookieAuth: []
responses:
'204':
description: Document deleted successfully
'400':
description: Validation error
'403':
description: User is not authorized to delete documents for this line item
'404':
description: Document not found
/api/v1/agreements/merchant-of-record/{uuid}/orders/:
get:
operationId: api_v1_agreements_merchant_of_record_orders_list
description: Returns the orders linked to this agreement (tenant-scoped to the MoR), newest first — powers the contract detail's Linked Orders table.
summary: List orders placed against this agreement
parameters:
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Agreements
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedMerchantOfRecordAgreementLinkedOrderList'
description: ''
'401':
description: Authentication credentials were not provided or are invalid
'404':
description: Agreement not found
/api/v1/agreements/merchant-of-record/{uuid}/place-order/:
post:
operationId: api_v1_agreements_merchant_of_record_place_order_create
description: 'Creates a new order from the contract on behalf of the buyer. Mirrors the buyer self-service flow: quantities + delivery date/address are supplied; prices, currencies, terms, shipping/fees and product details are derived from the contract. The buyer contact the order is placed for is given via `ordered_by_uuid`.'
summary: Place an order from a contract (agreement)
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Agreements
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementOrderCreate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementOrderCreate'
multipart/form-data:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementOrderCreate'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordAgreementOrderResponse'
description: ''
'400':
description: Invalid request data
'404':
description: Contract or delivery address not found
components:
schemas:
PayoutTermsEnum:
enum:
- payout_before_dispatch
- payout_after_dispatch
type: string
description: '* `payout_before_dispatch` - Payout Before Dispatch
* `payout_after_dispatch` - Payout After Dispatch'
LifecycleStateEnum:
enum:
- initializing
- confirmed
- canceled
- pending_merchant_of_record_approval
- order_received
- order_sent_to_supplier
- order_confirming_price
- forecasted
type: string
description: '* `initializing` - Initializing
* `confirmed` - Confirmed
* `canceled` - Cancelled
* `pending_merchant_of_record_approval` - Pending Merchant of Record Approval
* `order_received` - Order Received
* `order_sent_to_supplier` - Order Sent To Supplier
* `order_confirming_price` - Order Confirming Price
* `forecasted` - Forecasted'
MerchantOfRecordAgreementCreate:
type: object
properties:
buyer_company:
type: string
format: uuid
buyer_currency:
$ref: '#/components/schemas/AvailableCurrenciesEnum'
supplier_company:
type: string
format: uuid
delivery_address_uuid:
type: string
format: uuid
supplier_currency:
$ref: '#/components/schemas/AvailableCurrenciesEnum'
payment_provider:
$ref: '#/components/schemas/PaymentProviderEnum'
supplier_to_buyer_currency_conversion_rate:
type: string
format: decimal
pattern: ^-?\d{0,9}(?:\.\d{0,6})?$
shipping_price_in_supplier_currency:
type: integer
maximum: 9223372036854775807
minimum: 0
format: int64
supplier_shipping_tax_rate:
type: string
format: decimal
pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
buyer_shipping_tax_rate:
type: string
format: decimal
pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
import_fee_price_in_buyer_currency:
type: integer
maximum: 9223372036854775807
minimum: 0
format: int64
export_fee_price_in_supplier_currency:
type: integer
maximum: 9223372036854775807
minimum: 0
format: int64
payment_terms:
$ref: '#/components/schemas/AppOrderPaymentTermsEnum'
payout_terms:
$ref: '#/components/schemas/PayoutTermsEnum'
days_until_payment_due:
type: integer
maximum: 2147483647
minimum: 0
days_until_payout_due:
type: integer
maximum: 2147483647
minimum: 0
estimated_number_of_orders:
type: integer
maximum: 2147483647
minimum: 0
minimum_lead_time_for_first_order_in_days:
type: integer
maximum: 2147483647
minimum: 0
minimum_lead_time_for_following_orders_in_days:
type: integer
maximum: 2147483647
minimum: 0
line_items:
type: array
items:
$ref: '#/components/schemas/MerchantOfRecordAgreementLineItemCreate'
contract_start_date:
type: string
format: date
contract_end_date:
type: string
format: date
order_management_contract_uuid:
type:
- string
- 'null'
format: uuid
required:
- buyer_company
- contract_end_date
- contract_start_date
- delivery_address_uuid
- estimated_number_of_orders
- line_items
- minimum_lead_time_for_first_order_in_days
- minimum_lead_time_for_following_orders_in_days
- shipping_price_in_supplier_currency
- supplier_company
BuyerAgreementDetails:
type: object
properties:
uuid:
type: string
format: uuid
readOnly: true
agreement_number:
type: string
readOnly: true
payment_terms:
$ref: '#/components/schemas/AppOrderPaymentTermsEnum'
payment_provider:
$ref: '#/components/schemas/PaymentProviderEnum'
buyer_currency:
type: string
line_items:
type: array
items:
$ref: '#/components/schemas/BuyerAgreementLineItem'
shipping_price_for_buyer_in_cents:
type: number
readOnly: true
buyer_total_shipping_tax_amount_in_buyer_currency_in_cents:
type: number
readOnly: true
delivery_address:
allOf:
- $ref: '#/components/schemas/DeliveryAddressResponse'
buyer_shipping_tax_rate:
type: number
format: double
estimated_number_of_orders:
type: integer
maximum: 2147483647
minimum: 0
minimum_lead_time_for_first_order_in_days:
type: integer
maximum: 2147483647
minimum: 0
minimum_lead_time_for_following_orders_in_days:
type: integer
maximum: 2147483647
minimum: 0
days_until_payment_due:
type: integer
maximum: 2147483647
minimum: 0
has_at_least_one_order:
type: boolean
description: Checks if there is at least one AppOrder associated with this Agreement.
readOnly: true
channel_uuid:
type: string
format: uuid
legacy_contract_uuid:
type: string
readOnly: true
summary:
allOf:
- $ref: '#/components/schemas/AgreementSummary'
readOnly: true
contract_start_date:
type: string
format: date
contract_end_date:
type: string
format: date
supplier_company_name:
type: string
readOnly: true
supplier_company_uuid:
type: string
readOnly: true
required:
- agreement_number
- buyer_currency
- buyer_shipping_tax_rate
- buyer_total_shipping_tax_amount_in_buyer_currency_in_cents
- channel_uuid
- contract_end_date
- contract_start_date
- delivery_address
- estimated_number_of_orders
- has_at_least_one_order
- legacy_contract_uuid
- line_items
- minimum_lead_time_for_first_order_in_days
- minimum_lead_time_for_following_orders_in_days
- shipping_price_for_buyer_in_cents
- summary
- supplier_company_name
- supplier_company_uuid
- uuid
Country:
enum:
- AF
- AX
- AL
- DZ
- AS
- AD
- AO
- AI
- AQ
- AG
- AR
- AM
- AW
- AU
- AT
- AZ
- BS
- BH
- BD
- BB
- BY
- BE
- BZ
- BJ
- BM
- BT
- BO
- BQ
- BA
- BW
- BV
- BR
- IO
- BN
- BG
- BF
- BI
- CV
- KH
- CM
- CA
- KY
- CF
- TD
- CL
- CN
- CX
- CC
- CO
- KM
- CG
- CD
- CK
- CR
- CI
- HR
- CU
- CW
- CY
- CZ
- DK
- DJ
- DM
- DO
- EC
- EG
- SV
- GQ
- ER
- EE
- SZ
- ET
- FK
- FO
- FJ
- FI
- FR
- GF
- PF
- TF
- GA
- GM
- GE
- DE
- GH
- GI
- GR
- GL
- GD
- GP
- GU
- GT
- GG
- GN
- GW
- GY
- HT
- HM
- VA
- HN
- HK
- HU
- IS
- IN
- ID
- IR
- IQ
- IE
- IM
- IL
- IT
- JM
- JP
- JE
- JO
- KZ
- KE
- KI
- KW
- KG
- LA
- LV
- LB
- LS
- LR
- LY
- LI
- LT
- LU
- MO
- MG
- MW
- MY
- MV
- ML
- MT
- MH
- MQ
- MR
- MU
- YT
- MX
- FM
- MD
- MC
- MN
- ME
- MS
- MA
- MZ
- MM
- NA
- NR
- NP
- NL
- NC
- NZ
- NI
- NE
- NG
- NU
- NF
- KP
- MK
- XI
- MP
- 'NO'
- OM
- PK
- PW
- PS
- PA
- PG
- PY
- PE
- PH
- PN
- PL
- PT
- PR
- QA
- RE
- RO
- RU
- RW
- BL
- SH
- KN
- LC
- MF
- PM
- VC
- WS
- SM
- ST
- SA
- SN
- RS
- SC
- SL
- SG
- SX
- SK
- SI
- SB
- SO
- ZA
- GS
- KR
- SS
- ES
- LK
- SD
- SR
- SJ
- SE
- CH
- SY
- TW
- TJ
- TZ
- TH
- TL
- TG
- TK
- TO
- TT
- TN
- TR
- TM
- TC
- TV
- UG
- UA
- AE
- GB
- UM
- US
- UY
- UZ
- VU
- VE
- VN
- VG
- VI
- WF
- EH
- YE
- ZM
- ZW
type: string
description: '* `AF` - Afghanistan
* `AX` - Åland Islands
* `AL` - Albania
* `DZ` - Algeria
* `AS` - American Samoa
* `AD` - Andorra
* `AO` - Angola
* `AI` - Anguilla
* `AQ` - Antarctica
* `AG` - Antigua and Barbuda
* `AR` - Argentina
* `AM` - Armenia
* `AW` - Aruba
* `AU` - Australia
* `AT` - Austria
* `AZ` - Azerbaijan
* `BS` - Bahamas
* `BH` - Bahrain
* `BD` - Bangladesh
* `BB` - Barbados
* `BY` - Belarus
* `BE` - Belgium
* `BZ` - Belize
* `BJ` - Benin
* `BM` - Bermuda
* `BT` - Bhutan
* `BO` - Bolivia
* `BQ` - Bonaire, Sint Eustatius and Saba
* `BA` - Bosnia and Herzegovina
* `BW` - Botswana
* `BV` - Bouvet Island
* `BR` - Brazil
* `IO` - British Indian Ocean Territory
* `BN` - Brunei
* `BG` - Bulgaria
* `BF` - Burkina Faso
* `BI` - Burundi
* `CV` - Cabo Verde
* `KH` - Cambodia
* `CM` - Cameroon
* `CA` - Canada
* `KY` - Cayman Islands
* `CF` - Central African Republic
* `TD` - Chad
* `CL` - Chile
* `CN` - China
* `CX` - Christmas Island
* `CC` - Cocos (Keeling) Islands
* `CO` - Colombia
* `KM` - Comoros
* `CG` - Congo
* `CD` - Congo (the Democratic Republic of the)
* `CK` - Cook Islands
* `CR` - Costa Rica
* `CI` - Côte d''Ivoire
* `HR` - Croatia
* `CU` - Cuba
* `CW` - Curaçao
* `CY` - Cyprus
* `CZ` - Czechia
* `DK` - Denmark
* `DJ` - Djibouti
* `DM` - Dominica
* `DO` - Dominican Republic
* `EC` - Ecuador
* `EG` - Egypt
* `SV` - El Salvador
* `GQ` - Equatorial Guinea
* `ER` - Eritrea
* `EE` - Estonia
* `SZ` - Eswatini
* `ET` - Ethiopia
* `FK` - Falkland Islands (Malvinas)
* `FO` - Faroe Islands
* `FJ` - Fiji
* `FI` - Finland
* `FR` - France
* `GF` - French Guiana
* `PF` - French Polynesia
* `TF` - French Southern Te
# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opply/refs/heads/main/openapi/opply-agreements-api-openapi.yml