Opply Companies API
The Companies API from Opply — 27 operation(s) for companies.
The Companies API from Opply — 27 operation(s) for companies.
openapi: 3.0.3
info:
title: Opply Activity Feed Companies API
version: 0.0.0
tags:
- name: Companies
paths:
/api/v1/companies/documents/:
get:
operationId: api_v1_companies_documents_list
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:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedCompanyDocumentList'
description: ''
post:
operationId: api_v1_companies_documents_create
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyDocument'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CompanyDocument'
multipart/form-data:
schema:
$ref: '#/components/schemas/CompanyDocument'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyDocument'
description: ''
/api/v1/companies/documents/{uuid}/:
get:
operationId: api_v1_companies_documents_retrieve
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyDocument'
description: ''
delete:
operationId: api_v1_companies_documents_destroy
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'204':
description: No response body
/api/v1/companies/documents/{uuid}/create-resumable-upload-session/:
post:
operationId: api_v1_companies_documents_create_resumable_upload_session_create
summary: Request a resumable file upload URL
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleUpload'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/GoogleUpload'
multipart/form-data:
schema:
$ref: '#/components/schemas/GoogleUpload'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleUploadResponse'
description: ''
/api/v1/companies/documents/{uuid}/upload-complete/:
post:
operationId: api_v1_companies_documents_upload_complete_create
summary: Set an upload as done
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleUploadComplete'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/GoogleUploadComplete'
multipart/form-data:
schema:
$ref: '#/components/schemas/GoogleUploadComplete'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/URL'
description: ''
/api/v1/companies/merchant-of-record-brands/:
get:
operationId: api_v1_companies_merchant_of_record_brands_list
description: Retrieve a list of brand companies where the current user's company serves as the Merchant of Record.
summary: List brands associated with Merchant of Record
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: query
name: search
schema:
type: string
description: Filter brands by name (case-insensitive partial match)
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedMerchantOfRecordCompanyList'
description: ''
/api/v1/companies/merchant-of-record-buyers/:
post:
operationId: api_v1_companies_merchant_of_record_buyers_create
description: Create a new buyer/brand company with associated user and address
summary: Create a new buyer/brand
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MoRBuyerCreate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/MoRBuyerCreate'
multipart/form-data:
schema:
$ref: '#/components/schemas/MoRBuyerCreate'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/MoRBuyerDetailResponse'
description: ''
/api/v1/companies/merchant-of-record-buyers/{uuid}/:
get:
operationId: api_v1_companies_merchant_of_record_buyers_retrieve
description: Retrieve detailed information about a buyer/brand company
summary: Get buyer/brand details
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordBuyerDetail'
description: ''
patch:
operationId: api_v1_companies_merchant_of_record_buyers_partial_update
description: Partially update buyer/brand company information. User email cannot be changed after creation.
summary: Update buyer/brand details
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedMoRBuyerUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedMoRBuyerUpdate'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedMoRBuyerUpdate'
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MoRBuyerDetailResponse'
description: ''
/api/v1/companies/merchant-of-record-buyers/{uuid}/compliance-documents/:
get:
operationId: api_v1_companies_merchant_of_record_buyers_compliance_documents_list
description: 'Returns the buyer''s certification/compliance documents (sales tax exemption certificates, organic/quality certifications, etc.) with their lifecycle status and free-text notes. Documents filed by the onboarding extraction agent also carry a structured `extraction` object (jurisdiction, certificate number, issuing authority); manually uploaded documents have `extraction: null`. Read-only; ordered newest-first.'
summary: List compliance documents held by this buyer
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
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedMoRBuyerComplianceDocumentList'
description: ''
/api/v1/companies/merchant-of-record-buyers/{uuid}/connect-allianz/:
post:
operationId: api_v1_companies_merchant_of_record_buyers_connect_allianz_create
description: Validate the given Allianz company ID against the Allianz API and, on success, persist allianz_company_id and is_connected_to_allianz=True on the buyer. Set skip_validation=true to bypass the API call (for local/staging environments).
summary: Connect buyer to Allianz
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AllianzConnect'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/AllianzConnect'
multipart/form-data:
schema:
$ref: '#/components/schemas/AllianzConnect'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MoRBuyerDetailResponse'
description: ''
'400':
description: Invalid Allianz company ID or API error
/api/v1/companies/merchant-of-record-buyers/{uuid}/financial-documents/:
get:
operationId: api_v1_companies_merchant_of_record_buyers_financial_documents_list
description: Returns the financial documents (P&L, balance sheet, management accounts, etc.) the buyer has uploaded to support credit reviews. Read-only; ordered newest-first.
summary: List financial documents uploaded by this buyer
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
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedBuyerFinancialDocumentList'
description: ''
/api/v1/companies/merchant-of-record-buyers/{uuid}/onboarding-suppliers/:
get:
operationId: api_v1_companies_merchant_of_record_buyers_onboarding_suppliers_retrieve
description: ViewSet for MoR users to view, create, and update buyer/brand details and their suppliers
summary: Manage Buyer/Brand details for Merchant of Record
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordBuyerDetail'
description: ''
/api/v1/companies/merchant-of-record-buyers/{uuid}/suppliers/:
get:
operationId: api_v1_companies_merchant_of_record_buyers_suppliers_list
description: Get a list of suppliers associated with this buyer
summary: Get suppliers for a buyer
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
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedBuyerSupplierList'
description: ''
/api/v1/companies/merchant-of-record-buyers/{uuid}/users/:
post:
operationId: api_v1_companies_merchant_of_record_buyers_users_create
description: 'Create an additional user on an existing buyer company scoped to the requesting MoR. The user is created without a password and emailed a set-password link once the transaction commits: buyers still onboarding (`onboarding_state=in_progress`) receive the buyer-onboarding invite whose link points at the buyer web app; active buyers receive the standard password-create email. Pass `is_admin=true` to grant the new user the company admin permission; otherwise they join as a member.'
summary: Add a user to a buyer/brand
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MoRBuyerUserCreate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/MoRBuyerUserCreate'
multipart/form-data:
schema:
$ref: '#/components/schemas/MoRBuyerUserCreate'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/MoRBuyerUserResponse'
description: ''
'400':
description: Invalid input data (e.g. email already registered)
'403':
description: User is not a Merchant of Record
'404':
description: Buyer not found for this MoR
/api/v1/companies/merchant-of-record-company-addresses/:
get:
operationId: api_v1_companies_merchant_of_record_company_addresses_list
description: 'ViewSet for retrieving and creating company addresses filtered by company UUID.
Intended for use by Merchant of Record users.'
summary: List company addresses by company UUID
parameters:
- in: query
name: address_type
schema:
type: string
description: Optional address-type filter (e.g. 'delivery_address' for delivery pickers)
- in: query
name: company_uuid
schema:
type: string
format: uuid
description: UUID of the company to filter addresses by
required: true
- 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:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedCompanyAddressList'
description: ''
post:
operationId: api_v1_companies_merchant_of_record_company_addresses_create
description: 'ViewSet for retrieving and creating company addresses filtered by company UUID.
Intended for use by Merchant of Record users.'
summary: Create a new company address for a given company UUID
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCompanyAddress'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CreateCompanyAddress'
multipart/form-data:
schema:
$ref: '#/components/schemas/CreateCompanyAddress'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyAddress'
description: ''
/api/v1/companies/merchant-of-record-company-addresses/{uuid}/:
put:
operationId: api_v1_companies_merchant_of_record_company_addresses_update
description: 'ViewSet for retrieving and creating company addresses filtered by company UUID.
Intended for use by Merchant of Record users.'
summary: Manage company addresses filtered by Merchant of Record
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyAddress'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CompanyAddress'
multipart/form-data:
schema:
$ref: '#/components/schemas/CompanyAddress'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyAddress'
description: ''
patch:
operationId: api_v1_companies_merchant_of_record_company_addresses_partial_update
description: 'ViewSet for retrieving and creating company addresses filtered by company UUID.
Intended for use by Merchant of Record users.'
summary: Manage company addresses filtered by Merchant of Record
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedCompanyAddress'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedCompanyAddress'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedCompanyAddress'
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyAddress'
description: ''
delete:
operationId: api_v1_companies_merchant_of_record_company_addresses_destroy
description: 'ViewSet for retrieving and creating company addresses filtered by company UUID.
Intended for use by Merchant of Record users.'
summary: Manage company addresses filtered by Merchant of Record
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'204':
description: No response body
/api/v1/companies/merchant-of-record-suppliers/:
get:
operationId: api_v1_companies_merchant_of_record_suppliers_list
description: Retrieve a list of supplier companies where the current user's company serves as the Merchant of Record.
summary: List suppliers associated with Merchant of Record
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: query
name: search
schema:
type: string
description: Filter suppliers by name (case-insensitive partial match)
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedMerchantOfRecordCompanyList'
description: ''
/api/v1/companies/merchant-of-record-suppliers/{uuid}/:
get:
operationId: api_v1_companies_merchant_of_record_suppliers_retrieve
description: Retrieve supplier details for a given company UUID.
summary: Get supplier basic information
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantOfRecordSupplier'
description: ''
/api/v1/companies/merchant-of-record-suppliers/{uuid}/add-buyer/:
post:
operationId: api_v1_companies_merchant_of_record_suppliers_add_buyer_create
description: Add a new buyer to this supplier by creating a referral relationship
summary: Add buyer to supplier
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SupplierAddBuyer'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SupplierAddBuyer'
multipart/form-data:
schema:
$ref: '#/components/schemas/SupplierAddBuyer'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
description: Buyer added successfully
description: ''
/api/v1/companies/merchant-of-record-suppliers/{uuid}/buyer-payment-terms/:
get:
operationId: api_v1_companies_merchant_of_record_suppliers_buyer_payment_terms_retrieve
description: Lookup payment terms for a buyer-supplier pair. Returns 204 No Content if none set.
summary: Get buyer-supplier payment terms
parameters:
- in: query
name: buyer_uuid
schema:
type: string
format: uuid
description: UUID of the buyer company
required: true
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BuyerSupplierPaymentTerms'
description: ''
'204':
description: No payment terms found for this pair
post:
operationId: api_v1_companies_merchant_of_record_suppliers_buyer_payment_terms_create
description: Create payment terms for a buyer-supplier pair. Returns 400 if terms already exist.
summary: Create buyer-supplier payment terms
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BuyerSupplierPaymentTermsCreate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BuyerSupplierPaymentTermsCreate'
multipart/form-data:
schema:
$ref: '#/components/schemas/BuyerSupplierPaymentTermsCreate'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/BuyerSupplierPaymentTerms'
description: ''
'400':
description: Validation error or terms already exist
patch:
operationId: api_v1_companies_merchant_of_record_suppliers_buyer_payment_terms_partial_update
description: Partially update payment terms for a buyer-supplier pair.
summary: Update buyer-supplier payment terms
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedBuyerSupplierPaymentTermsCreate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedBuyerSupplierPaymentTermsCreate'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedBuyerSupplierPaymentTermsCreate'
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BuyerSupplierPaymentTerms'
description: ''
'404':
description: No payment terms found for this pair
delete:
operationId: api_v1_companies_merchant_of_record_suppliers_buyer_payment_terms_destroy
description: Remove payment terms for a buyer-supplier pair.
summary: Delete buyer-supplier payment terms
parameters:
- in: query
name: buyer_uuid
schema:
type: string
format: uuid
description: UUID of the buyer company
required: true
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'204':
description: Deleted
'404':
description: No payment terms found for this pair
/api/v1/companies/merchant-of-record-suppliers/{uuid}/buyers/:
get:
operationId: api_v1_companies_merchant_of_record_suppliers_buyers_list
description: Get a list of buyers (brands) associated with this supplier through referrals
summary: Get buyers for supplier
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
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedSupplierBuyerList'
description: ''
/api/v1/companies/merchant-of-record-suppliers/{uuid}/contacts/:
get:
operationId: api_v1_companies_merchant_of_record_suppliers_contacts_list
description: List all contacts for this supplier.
summary: List supplier contacts
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
required: true
tags:
- Companies
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedSupplierContactList'
description: ''
post:
operationId: api_v1_companies_merchant_of_record_suppliers_contacts_create
description: Create a new supplier contact.
summary: Create supplier contact
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SupplierContact'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SupplierContact'
multipart/form-data:
schema:
$ref: '#/components/schemas/SupplierContact'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/SupplierContact'
description: ''
'400':
description: Validation error
/api/v1/companies/merchant-of-record-suppliers/{uuid}/contacts/{contact_uuid}/:
put:
operationId: api_v1_companies_merchant_of_record_suppliers_contacts_update
description: Full update (replace) of a supplier contact.
summary: Replace supplier contact
parameters:
- in: path
name: contact_uuid
schema:
type: string
required: true
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SupplierContact'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SupplierContact'
multipart/form-data:
schema:
$ref: '#/components/schemas/SupplierContact'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SupplierContact'
description: ''
'400':
description: Validation error
'404':
description: Not found
patch:
operationId: api_v1_companies_merchant_of_record_suppliers_contacts_partial_update
description: Partial update of a supplier contact.
summary: Partially update supplier contact
parameters:
- in: path
name: contact_uuid
schema:
type: string
required: true
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Companies
requestBody:
content:
# --- truncated at 32 KB (120 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opply/refs/heads/main/openapi/opply-companies-api-openapi.yml