Opply Buyer self-onboarding API
The Buyer self-onboarding API from Opply — 16 operation(s) for buyer self-onboarding.
The Buyer self-onboarding API from Opply — 16 operation(s) for buyer self-onboarding.
openapi: 3.0.3
info:
title: Opply Activity Feed Buyer self-onboarding API
version: 0.0.0
tags:
- name: Buyer self-onboarding
paths:
/api/v1/companies/me/business-profile/update/:
patch:
operationId: api_v1_companies_me_business_profile_update_partial_update
description: 'Write-only buyer onboarding endpoints scoped to `request.user_company`.
Business profile + IBAN updates land here.'
summary: Update the buyer Business Profile section.
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedBusinessProfile'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedBusinessProfile'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedBusinessProfile'
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BusinessProfile'
description: ''
'400':
description: Validation errors.
/api/v1/companies/me/delivery-locations/:
post:
operationId: api_v1_companies_me_delivery_locations_create
description: 'Short-circuit a buyer-confirmed dedup: when the buyer picked "Use my
saved address" on a "might be X" delivery card, link the external id to
that existing address and return it — no new row, and no need for the
full required-address validation (we''re not creating one).'
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryLocation'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/DeliveryLocation'
multipart/form-data:
schema:
$ref: '#/components/schemas/DeliveryLocation'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryLocation'
description: ''
/api/v1/companies/me/delivery-locations/match-preview/:
post:
operationId: api_v1_companies_me_delivery_locations_match_preview_create
description: 'Preview which discovered delivery addresses the buyer already has
saved, so the import review can show "already saved / might be your saved
address" hints. Results are aligned by index to the request order.'
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryAddressMatchPreviewRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/DeliveryAddressMatchPreviewRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/DeliveryAddressMatchPreviewRequest'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryAddressMatchPreviewResponse'
description: ''
/api/v1/companies/me/onboarding-banking/update/:
patch:
operationId: api_v1_companies_me_onboarding_banking_update_partial_update
description: 'Write-only buyer onboarding endpoints scoped to `request.user_company`.
Business profile + IBAN updates land here.'
summary: Update the buyer's IBAN (Banking & payments section).
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedOnboardingBanking'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedOnboardingBanking'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedOnboardingBanking'
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingBanking'
description: ''
/api/v1/companies/me/onboarding-compliance-documents/:
post:
operationId: api_v1_companies_me_onboarding_compliance_documents_create
description: '``POST /companies/me/onboarding-compliance-documents/`` — commit a
staged compliance document (e.g. a sales tax exemption certificate).
Copies the scrubbed source file out of the onboarding bucket into a
``companies.BuyerDocument`` with the matching ``DocumentType``, applies
any buyer edits from the review screen, and (for sales tax exemptions)
best-effort flips ``AccountDetail.tax_exemption_certificate``.
Idempotent: re-committing the same staged row returns the existing
document.'
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingComplianceDocumentCommit'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OnboardingComplianceDocumentCommit'
multipart/form-data:
schema:
$ref: '#/components/schemas/OnboardingComplianceDocumentCommit'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingComplianceCommitResult'
description: ''
/api/v1/companies/me/onboarding-extractions/:
get:
operationId: api_v1_companies_me_onboarding_extractions_list
description: '``/companies/me/onboarding-extractions/`` — the staging table the
FE persists the agent''s proposal to so Step 2 survives a reload.
Re-staging for the same batch destructively overwrites the
previous proposal (OneToOne to batch). The FE never re-runs
extraction silently — every overwrite happens after a new
``opplyExtractionComplete`` event.'
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
tags:
- Buyer self-onboarding
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedOnboardingExtractionList'
description: ''
post:
operationId: api_v1_companies_me_onboarding_extractions_create
description: '``/companies/me/onboarding-extractions/`` — the staging table the
FE persists the agent''s proposal to so Step 2 survives a reload.
Re-staging for the same batch destructively overwrites the
previous proposal (OneToOne to batch). The FE never re-runs
extraction silently — every overwrite happens after a new
``opplyExtractionComplete`` event.'
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingExtractionWrite'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OnboardingExtractionWrite'
multipart/form-data:
schema:
$ref: '#/components/schemas/OnboardingExtractionWrite'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingExtractionWrite'
description: ''
/api/v1/companies/me/onboarding-extractions/{uuid}/:
get:
operationId: api_v1_companies_me_onboarding_extractions_retrieve
description: '``/companies/me/onboarding-extractions/`` — the staging table the
FE persists the agent''s proposal to so Step 2 survives a reload.
Re-staging for the same batch destructively overwrites the
previous proposal (OneToOne to batch). The FE never re-runs
extraction silently — every overwrite happens after a new
``opplyExtractionComplete`` event.'
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Buyer self-onboarding
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingExtraction'
description: ''
/api/v1/companies/me/onboarding-ingredients/:
post:
operationId: api_v1_companies_me_onboarding_ingredients_create
description: 'Create `catalog.BuyerItem` rows for the buyer''s company. The
post-onboarding Materials page reads from the same model
(`/api/v1/catalog/items/`) so anything created here shows up
immediately. `kind` discriminates ingredients from packaging.'
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingIngredient'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OnboardingIngredient'
multipart/form-data:
schema:
$ref: '#/components/schemas/OnboardingIngredient'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingIngredient'
description: ''
/api/v1/companies/me/onboarding-ingredients/match-preview/:
post:
operationId: api_v1_companies_me_onboarding_ingredients_match_preview_create
description: 'Preview which discovered materials already exist in the buyer''s
catalogue, so the import review can show "already in your materials"
(exact — merges at commit) / "might be your existing X" (fuzzy) hints.
Scoped to the buyer''s own `BuyerItem` rows.'
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ItemMatchPreviewRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/ItemMatchPreviewRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/ItemMatchPreviewRequest'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ItemMatchPreviewResponse'
description: ''
/api/v1/companies/me/onboarding-invoice-batches/:
post:
operationId: api_v1_companies_me_onboarding_invoice_batches_create
description: '``/companies/me/onboarding-invoice-batches/`` — create or read a
batch the buyer uploads invoices into.'
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingInvoiceBatch'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OnboardingInvoiceBatch'
multipart/form-data:
schema:
$ref: '#/components/schemas/OnboardingInvoiceBatch'
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingInvoiceBatch'
description: ''
/api/v1/companies/me/onboarding-invoice-batches/{uuid}/:
get:
operationId: api_v1_companies_me_onboarding_invoice_batches_retrieve
description: '``/companies/me/onboarding-invoice-batches/`` — create or read a
batch the buyer uploads invoices into.'
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Buyer self-onboarding
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingInvoiceBatch'
description: ''
/api/v1/companies/me/onboarding-invoices/:
post:
operationId: api_v1_companies_me_onboarding_invoices_create
description: '``/companies/me/onboarding-invoices/`` — multipart upload, read,
and soft-delete for a single invoice file.
The bytes themselves are written to a private S3 bucket via
``invoice_storage.upload_to_private_bucket``; the row stores only
the object key. ``content`` returns a 15-minute signed URL when
the agent (or the buyer''s FE) needs to read the file.'
tags:
- Buyer self-onboarding
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/OnboardingInvoiceUpload'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OnboardingInvoiceUpload'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingInvoiceUpload'
description: ''
/api/v1/companies/me/onboarding-invoices/{uuid}/:
get:
operationId: api_v1_companies_me_onboarding_invoices_retrieve
description: '``/companies/me/onboarding-invoices/`` — multipart upload, read,
and soft-delete for a single invoice file.
The bytes themselves are written to a private S3 bucket via
``invoice_storage.upload_to_private_bucket``; the row stores only
the object key. ``content`` returns a 15-minute signed URL when
the agent (or the buyer''s FE) needs to read the file.'
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Buyer self-onboarding
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingInvoiceDetail'
description: ''
delete:
operationId: api_v1_companies_me_onboarding_invoices_destroy
description: '``/companies/me/onboarding-invoices/`` — multipart upload, read,
and soft-delete for a single invoice file.
The bytes themselves are written to a private S3 bucket via
``invoice_storage.upload_to_private_bucket``; the row stores only
the object key. ``content`` returns a 15-minute signed URL when
the agent (or the buyer''s FE) needs to read the file.'
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Buyer self-onboarding
security:
- tokenAuth: []
- cookieAuth: []
responses:
'204':
description: No response body
/api/v1/companies/me/onboarding-invoices/{uuid}/content/:
get:
operationId: api_v1_companies_me_onboarding_invoices_content_retrieve
description: '``/companies/me/onboarding-invoices/`` — multipart upload, read,
and soft-delete for a single invoice file.
The bytes themselves are written to a private S3 bucket via
``invoice_storage.upload_to_private_bucket``; the row stores only
the object key. ``content`` returns a 15-minute signed URL when
the agent (or the buyer''s FE) needs to read the file.'
summary: Return a short-TTL signed URL the agent uses to read the invoice bytes.
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Buyer self-onboarding
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/OnboardingInvoiceContent'
description: ''
/api/v1/companies/me/onboarding-suppliers/:
get:
operationId: api_v1_companies_me_onboarding_suppliers_list
description: 'Create + list `Supplier` rows attached to the buyer''s `BuyerOnboarding`.
The agent commits one row per extracted supplier. The list action backs
the post-onboarding "Suppliers in progress" tab, which surfaces rows the
buyer submitted that the MoR has not yet reviewed (`pending_review`).'
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
tags:
- Buyer self-onboarding
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedBuyerOnboardingSupplierSubmissionList'
description: ''
post:
operationId: api_v1_companies_me_onboarding_suppliers_create
description: 'Create + list `Supplier` rows attached to the buyer''s `BuyerOnboarding`.
The agent commits one row per extracted supplier. The list action backs
the post-onboarding "Suppliers in progress" tab, which surfaces rows the
buyer submitted that the MoR has not yet reviewed (`pending_review`).'
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BuyerOnboardingSupplierSubmissionRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BuyerOnboardingSupplierSubmissionRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/BuyerOnboardingSupplierSubmissionRequest'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/BuyerOnboardingSupplierSubmission'
description: ''
/api/v1/companies/me/onboarding-suppliers/match-preview/:
post:
operationId: api_v1_companies_me_onboarding_suppliers_match_preview_create
description: 'Preview which discovered suppliers the buyer ALREADY has — onboarded,
mid-onboarding, or a pending submission — so the import review can show
"you already have this / it''s already being set up" hints before commit.
Scoped to the buyer''s own suppliers only — a graph match the buyer
doesn''t have at all is the MoR''s concern (surfaced at commit via the
submission''s `suggested_supplier_company`), never shown to the buyer.'
tags:
- Buyer self-onboarding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SupplierMatchPreviewRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SupplierMatchPreviewRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/SupplierMatchPreviewRequest'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SupplierMatchPreviewResponse'
description: ''
components:
schemas:
ExtractedComplianceDocumentRead:
type: object
description: Nested read shape for ``OnboardingExtractionSerializer``.
properties:
uuid:
type: string
format: uuid
readOnly: true
source_invoice_uuid:
type: string
format: uuid
readOnly: true
nullable: true
compliance_type:
allOf:
- $ref: '#/components/schemas/ComplianceDocumentTypeEnum'
readOnly: true
type_hint:
type: string
readOnly: true
description: Certification scheme/type as commonly named (e.g. 'ISO 9001'); matched against the DocumentType taxonomy at commit time.
title:
type: string
readOnly: true
description: Display title as printed on the document.
holder_name:
type: string
readOnly: true
description: Entity the exemption/certificate is issued to — usually the buyer.
issuing_authority:
type: string
readOnly: true
description: Entity that issued the certificate (e.g. 'Texas Comptroller of Public Accounts').
jurisdiction:
type: string
readOnly: true
description: State/region as printed on the certificate, e.g. 'Texas'.
us_state:
type: string
readOnly: true
description: USPS two-letter code for the US state/territory the certificate applies in (e.g. 'TX'). Stored as sent by the agent; validated against companies.enums.USState at commit time, mirroring how country is validated.
country:
type: string
readOnly: true
description: ISO-3166-1 alpha-2 country code.
certificate_number:
type: string
readOnly: true
description: Certificate/exemption number as printed on the document.
issue_date:
type: string
format: date
readOnly: true
nullable: true
expiry_date:
type: string
format: date
readOnly: true
nullable: true
description: Null when the certificate shows no expiry (common for US exemption certificates).
confidence:
allOf:
- $ref: '#/components/schemas/ExtractionConfidenceEnum'
readOnly: true
evidence:
type: string
readOnly: true
description: Verbatim snippet from the source document (capped at 300 chars by the serializer).
gaps:
type: array
items:
type: object
additionalProperties: {}
readOnly: true
committed_document_uuid:
type: string
format: uuid
readOnly: true
nullable: true
required:
- certificate_number
- committed_document_uuid
- compliance_type
- confidence
- country
- evidence
- expiry_date
- gaps
- holder_name
- issue_date
- issuing_authority
- jurisdiction
- source_invoice_uuid
- title
- type_hint
- us_state
- uuid
ExtractionConfidenceEnum:
enum:
- high
- medium
- low
- manual
type: string
description: '* `high` - High
* `medium` - Medium
* `low` - Low
* `manual` - Manual'
LegalEntityTypeEnum:
enum:
- ltd
- llp
- plc
- sole_trader
- partnership
- other
type: string
description: '* `ltd` - Limited Company (Ltd)
* `llp` - Limited Liability Partnership (LLP)
* `plc` - Public Limited Company (PLC)
* `sole_trader` - Sole Trader
* `partnership` - Partnership
* `other` - Other'
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 Territories
* `GA` - Gabon
* `GM` - Gambia
* `GE` - Georgia
* `DE` - Germany
* `GH` - Ghana
* `GI` - Gibraltar
* `GR` - Greece
* `GL` - Greenland
* `GD` - Grenada
* `GP` - Guadeloupe
* `GU` - Guam
* `GT` - Guatemala
* `GG` - Guernsey
* `GN` - Guinea
* `GW` - Guinea-Bissau
* `GY` - Guyana
* `HT` - Haiti
* `HM` - Heard Island and McDonald Islands
* `VA` - Holy See
* `HN` - Honduras
* `HK` - Hong Kong
* `HU` - Hungary
* `IS` - Iceland
* `IN` - India
* `ID` - Indonesia
* `IR` - Iran
* `IQ` - Iraq
* `IE` - Ireland
* `IM` - Isle of Man
* `IL` - Israel
* `IT` - Italy
* `JM` - Jamaica
* `JP` - Japan
* `JE` - Jersey
* `JO` - Jordan
* `KZ` - Kazakhstan
* `KE` - Kenya
* `KI` - Kiribati
* `KW` - Kuwait
* `KG` - Kyrgyzstan
* `LA` - Laos
* `LV` - Latvia
* `LB` - Lebanon
* `LS` - Lesotho
* `LR` - Liberia
* `LY` - Libya
* `LI` - Liechtenstein
* `LT` - Lithuania
* `LU` - Luxembourg
* `MO` - Macao
* `MG` - Madagascar
* `MW` - Malawi
* `MY` - Malaysia
* `MV` - Maldives
* `ML` - Mali
* `MT` - Malta
* `MH` - Marshall Islands
* `MQ` - Martinique
* `MR` - Mauritania
* `MU` - Mauritius
* `YT` - Mayotte
* `MX` - Mexico
* `FM` - Micronesia
* `MD` - Moldova
* `MC` - Monaco
* `MN` - Mongolia
* `ME` - Montenegro
* `MS` - Montserrat
* `MA` - Morocco
* `MZ` - Mozambique
* `MM` - Myanmar
* `NA` - Namibia
* `NR` - Nauru
* `NP` - Nepal
* `NL` - Netherlands
* `NC` - New Caledonia
* `NZ` - New Zealand
* `NI` - Nicaragua
* `NE` - Niger
* `NG` - Nigeria
* `NU` - Niue
* `NF` - Norfolk Island
* `KP` - North Korea
* `MK` - North Macedonia
* `XI` - Northern Ireland
* `MP` - Northern Mariana Islands
* `NO` - Norway
* `OM` - Oman
* `PK` - Pakistan
* `PW` - Palau
* `PS` - Palestine, State of
* `PA` -
# --- truncated at 32 KB (103 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opply/refs/heads/main/openapi/opply-buyer-self-onboarding-api-openapi.yml