Opply Inquiries API
The Inquiries API from Opply — 20 operation(s) for inquiries.
The Inquiries API from Opply — 20 operation(s) for inquiries.
openapi: 3.0.3
info:
title: Opply Activity Feed Inquiries API
version: 0.0.0
tags:
- name: Inquiries
paths:
/api/v1/inquiries/{inquiry_uuid}/documents/{uuid}/:
delete:
operationId: api_v1_inquiries_documents_destroy
summary: '[''Delete documents of unpublished inquiry.'']'
parameters:
- in: path
name: inquiry_uuid
schema:
type: string
required: true
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'204':
description: No response body
/api/v1/inquiries/brand/:
get:
operationId: api_v1_inquiries_brand_list
summary: List of all inquiries for a brand
parameters:
- in: query
name: name
schema:
type: string
description: Supports searching using a string/substring of product_name
- in: query
name: ordering
schema:
type: string
description: Supports sorting by name state due_date created. Use - to filter backwards
- 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: state
schema:
type: string
description: 'Supported status: awaiting_quotes quotes_available ordered expired proceeded contract_confirmed supplier_decline_to_quote cancelled.'
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedInquiryListList'
description: ''
post:
operationId: api_v1_inquiries_brand_create
summary: Inquiry creation endpoint.
tags:
- Inquiries
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Inquiry'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Inquiry'
multipart/form-data:
schema:
$ref: '#/components/schemas/Inquiry'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Inquiry'
description: ''
/api/v1/inquiries/brand/{uuid}/:
get:
operationId: api_v1_inquiries_brand_retrieve
summary: Retrieve details of a request for a brand
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InquiryResponse'
description: ''
put:
operationId: api_v1_inquiries_brand_update
summary: Endpoint to fully update a brand's inquiry.
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InquiryUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/InquiryUpdate'
multipart/form-data:
schema:
$ref: '#/components/schemas/InquiryUpdate'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InquiryUpdate'
description: ''
patch:
operationId: api_v1_inquiries_brand_partial_update
summary: Endpoint to partially update a brand's inquiry.
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedInquiry'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedInquiry'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedInquiry'
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Inquiry'
description: ''
delete:
operationId: api_v1_inquiries_brand_destroy
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'204':
description: No response body
/api/v1/inquiries/brand/{uuid}/all-quotes/:
get:
operationId: api_v1_inquiries_brand_all_quotes_list
summary: Endpoint to retrieve all quotes list for request details page. Marks all quotes as viewed on request details page.
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AllAndFeaturedQuotesForInquiry'
description: ''
/api/v1/inquiries/brand/{uuid}/channels/:
get:
operationId: api_v1_inquiries_brand_channels_list
parameters:
- 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: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedChannelExpandedList'
description: ''
/api/v1/inquiries/brand/{uuid}/create-purchase-request/:
post:
operationId: api_v1_inquiries_brand_create_purchase_request_create
summary: Create a purchase request for a contract
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseRequestCreate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PurchaseRequestCreate'
multipart/form-data:
schema:
$ref: '#/components/schemas/PurchaseRequestCreate'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseRequestResponse'
description: ''
/api/v1/inquiries/brand/{uuid}/documents/:
get:
operationId: api_v1_inquiries_brand_documents_list
parameters:
- in: query
name: active_inquiries
schema:
type: boolean
- in: query
name: autocomplete_filter
schema:
type: string
- in: query
name: category
schema:
type: string
- in: query
name: name
schema:
type: string
- 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: state
schema:
type: array
items:
type: string
enum:
- awaiting_quotes
- cancelled
- contract_confirmed
- expired
- ordered
- proceeded
- quotes_available
- supplier_decline_to_quote
description: '* `awaiting_quotes` - Awaiting Quotes
* `quotes_available` - Quotes Available
* `ordered` - Ordered
* `expired` - Expired
* `proceeded` - Proceeded
* `contract_confirmed` - Contract Confirmed
* `supplier_decline_to_quote` - Supplier Decline To Quote
* `cancelled` - Cancelled'
explode: true
style: form
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedInquiryDocumentList'
description: ''
/api/v1/inquiries/brand/{uuid}/expire/:
post:
operationId: api_v1_inquiries_brand_expire_create
summary: Force inquiry expiry. FOR QA USE ONLY!
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
requestBody:
content:
application/json:
schema:
type: object
additionalProperties: {}
description: Unspecified request body
application/x-www-form-urlencoded:
schema:
type: object
additionalProperties: {}
description: Unspecified request body
multipart/form-data:
schema:
type: object
additionalProperties: {}
description: Unspecified request body
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
description: No response body
/api/v1/inquiries/brand/{uuid}/featured-quotes/:
get:
operationId: api_v1_inquiries_brand_featured_quotes_list
summary: Endpoint to retrieve featured quotes list for request details page.
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AllAndFeaturedQuotesForInquiry'
description: ''
/api/v1/inquiries/brand/{uuid}/publish/:
post:
operationId: api_v1_inquiries_brand_publish_create
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'204':
description: No response body
/api/v1/inquiries/brand/{uuid}/upload/:
post:
operationId: api_v1_inquiries_brand_upload_create
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InquiryDocument'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/InquiryDocument'
multipart/form-data:
schema:
$ref: '#/components/schemas/InquiryDocument'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'204':
description: No response body
/api/v1/inquiries/brand/dashboard-inquiries/:
get:
operationId: api_v1_inquiries_brand_dashboard_inquiries_list
summary: Endpoint to retrieve requests list for Brand's dashboard.
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:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedDashboardInquiriesList'
description: ''
/api/v1/inquiries/internal/:
get:
operationId: api_v1_inquiries_internal_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:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedInquiryList'
description: ''
/api/v1/inquiries/internal/{uuid}/:
get:
operationId: api_v1_inquiries_internal_retrieve
parameters:
- in: path
name: uuid
schema:
type: string
format: uuid
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Inquiry'
description: ''
/api/v1/inquiries/supplier/:
get:
operationId: api_v1_inquiries_supplier_list
summary: List of all inquiries for a supplier
parameters:
- in: query
name: category
schema:
type: string
description: 'Supported categories: non_recurring recurring purchase_request ingredient ingredient_copy.'
- in: query
name: name
schema:
type: string
description: Supports searching using a string/substring of product_name
- in: query
name: ordering
schema:
type: string
description: Supports sorting by name state due_date. Use - to filter backwards
- 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: supplier_state
schema:
type: string
description: 'Supported status: awaiting_quotes quotes_available ordered expired proceeded contract_confirmed supplier_decline_to_quote cancelled.'
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedSupplierInquiryListList'
description: ''
/api/v1/inquiries/supplier/{uuid}/:
get:
operationId: api_v1_inquiries_supplier_retrieve
summary: Retrieve details of a request for a supplier
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SupplierInquiryResponse'
description: ''
/api/v1/inquiries/supplier/{uuid}/channel/:
get:
operationId: api_v1_inquiries_supplier_channel_retrieve
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ChannelExpanded'
description: ''
/api/v1/inquiries/supplier/{uuid}/decline/:
post:
operationId: api_v1_inquiries_supplier_decline_create
summary: Supplier decline to provide a quote for this inquiry
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InquiryDeclinedResponse'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/InquiryDeclinedResponse'
multipart/form-data:
schema:
$ref: '#/components/schemas/InquiryDeclinedResponse'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InquiryDeclinedResponse'
description: ''
/api/v1/inquiries/supplier/dashboard-inquiries/:
get:
operationId: api_v1_inquiries_supplier_dashboard_inquiries_list
summary: Endpoint to retrieve awaiting quotes requests list for Supplier's dashboard.
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:
- Inquiries
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedDashboardInquiriesForSupplierList'
description: ''
/api/v1/inquiries/update_purchase_request/{uuid}/:
put:
operationId: api_v1_inquiries_update_purchase_request_update
description: 'Update a purchase request after it has been created.
https://app.clickup.com/t/863ghjhjj'
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePurchaseRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UpdatePurchaseRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/UpdatePurchaseRequest'
required: true
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePurchaseRequest'
description: ''
patch:
operationId: api_v1_inquiries_update_purchase_request_partial_update
description: 'Update a purchase request after it has been created.
https://app.clickup.com/t/863ghjhjj'
parameters:
- in: path
name: uuid
schema:
type: string
required: true
tags:
- Inquiries
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedUpdatePurchaseRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedUpdatePurchaseRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedUpdatePurchaseRequest'
security:
- tokenAuth: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePurchaseRequest'
description: ''
components:
schemas:
SupplierInquiryResponse:
type: object
properties:
id:
type: integer
readOnly: true
uuid:
type: string
format: uuid
readOnly: true
state:
$ref: '#/components/schemas/InquiryState'
category:
$ref: '#/components/schemas/InquiryCategory'
name:
type: string
maxLength: 255
current_unit_price:
type: string
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
target_unit_price:
type: string
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
currency:
$ref: '#/components/schemas/Currencies'
description:
type: string
quantity:
type: string
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
unit_of_measurement:
$ref: '#/components/schemas/UnitOfMeasurementEnum'
allergen_requirements:
type: array
items:
oneOf:
- $ref: '#/components/schemas/AllergenRequirementsEnum'
- $ref: '#/components/schemas/BlankEnum'
allergen_declaration:
type: boolean
dietary_certificate:
type: boolean
diet_requirements:
type: array
items:
oneOf:
- $ref: '#/components/schemas/DietRequirementsEnum'
- $ref: '#/components/schemas/BlankEnum'
forecast:
nullable: true
oneOf:
- $ref: '#/components/schemas/ForecastEnum'
- $ref: '#/components/schemas/BlankEnum'
- $ref: '#/components/schemas/NullEnum'
due_date:
type: string
format: date
delivery_address:
allOf:
- $ref: '#/components/schemas/DeliveryAddressForSupplier'
readOnly: true
supplier_countries:
type: array
items:
oneOf:
- $ref: '#/components/schemas/Country'
- $ref: '#/components/schemas/BlankEnum'
maxItems: 250
current_supplier:
type: string
published:
type: string
format: date-time
nullable: true
description: Datetime when the inquiry becomes published. Leave empty to keep it unpublished.
logo_url:
type: string
format: uri
maxLength: 2048
is_new:
type: boolean
readOnly: true
article:
type: string
format: uuid
nullable: true
existing_suppliers:
type: array
items:
type: string
format: uuid
readOnly: true
nullable: true
supply_priorities:
type: array
items:
$ref: '#/components/schemas/SupplyPriorities'
first_order_delivery_date:
type: string
format: date
nullable: true
opply_brand_commission:
type: string
format: decimal
pattern: ^-?\d{0,7}(?:\.\d{0,2})?$
opply_supplier_commission:
type: string
format: decimal
pattern: ^-?\d{0,7}(?:\.\d{0,2})?$
is_recurring:
type: boolean
default: false
frequency:
nullable: true
oneOf:
- $ref: '#/components/schemas/FrequencyEnum'
- $ref: '#/components/schemas/BlankEnum'
- $ref: '#/components/schemas/NullEnum'
desired_contract_length:
type: integer
minimum: 0
nullable: true
is_delivery_date_flexible:
type: boolean
parent_uuid:
type: string
format: uuid
nullable: true
ingredient:
type: integer
nullable: true
reason_for_request:
type: string
nullable: true
desired_packaging_format:
type: string
desired_packaging_format_is_flexible:
type: boolean
ai_generated:
type: boolean
documents_to_copy:
type: array
items:
type: string
format: uuid
nullable: true
orders_uuid:
type: array
items:
type: string
format: uuid
readOnly: true
existing_supplier_uuid:
type: string
format: uuid
total_forecast_quantity:
type: string
readOnly: true
original_quote_uuid:
type: string
format: uuid
readOnly: true
declined:
type: string
readOnly: true
decline_reason:
type: string
readOnly: true
company_address:
allOf:
- $ref: '#/components/schemas/Address'
readOnly: true
progress:
type: string
readOnly: true
possible_suppliers:
type: string
readOnly: true
suppliers_found:
type: string
readOnly: true
number_of_quotes:
type: string
readOnly: true
company:
allOf:
- $ref: '#/components/schemas/Company'
readOnly: true
existing_supplier_name:
type: string
readOnly: true
supplier_matching:
type: string
readOnly: true
total_forecast_spend:
type: string
readOnly: true
published_quote_uuid:
type: string
default: ''
supplier_state:
allOf:
- $ref: '#/components/schemas/SupplierStateEnum'
readOnly: true
buyer_contact_name:
type: string
readOnly: true
buyer_full_name:
type: string
readOnly: true
commission_payout_vat_rate:
type: string
readOnly: true
required:
- buyer_contact_name
- buyer_full_name
- commission_payout_vat_rate
- company
- company_address
- current_unit_price
- decline_reason
- declined
- delivery_address
- description
- due_date
- existing_supplier_name
- existing_supplier_uuid
- existing_suppliers
- id
- is_new
- name
- number_of_quotes
- orders_uuid
- original_quote_uuid
- possible_suppliers
- progress
- quantity
- supplier_countries
- supplier_matching
- supplier_state
- suppliers_found
- target_unit_price
- total_forecast_quantity
- total_forecast_spend
- uuid
QuoteState:
enum:
- available
- ordered
- expired
- declined
- pending_payment
- proceeded
- contract_created
- contract_proceeded
- contract_confirmed
type: string
description: '* `available` - available
* `ordered` - ordered
* `expired` - expired
* `declined` - declined
* `pending_payment` - pending_payment
* `proceeded` - proceeded
* `contract_created` - Contract Created
* `contract_proceeded` - contract_proceeded
* `contract_confirmed` - contract_confirmed'
ProductTypeEnum:
enum:
- confect_snacks
- conv_food
- bread_cereals
- sauces_spices
- spreads
- tea
- coffee
- water
- carb_drinks
- alc_drinks
- juice_drinks
- energy_drinks
- cosmetics
- milk_dairy
- free_form_alt
- other
type: string
description: '* `confect_snacks` - Confectionery & Snacks
* `conv_food` - Convenience Food
* `bread_cereals` - Bread & Cereals
* `sauces_spices` - Sauces & Spices
* `spreads` - Spreads
* `tea` - Tea
* `coffee` - Coffee
* `water` - Water
* `carb_drinks` - Carbonated Drinks
* `alc_drinks` - Alcoholic Drinks
* `juice_drinks` - Juice Drinks
* `energy_drinks` - Energy Drinks
* `cosmetics` - Cosmetics
* `milk_dairy` - Milk & Dairy
* `free_form_alt` - Free Form Alternative
* `other` - Other'
InquiryList:
type: object
properties:
id:
type: integer
readOnly: true
uuid:
type: string
format: uuid
readOnly: true
state:
$ref: '#/components/schemas/InquiryState'
category:
$ref: '#/components/schemas/InquiryCategory'
name:
type: string
maxLength: 255
current_unit_price:
type: string
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
target_unit_price:
type: string
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
currency:
$ref: '#/components/schemas/Currencies'
description:
type: string
quantity:
type: string
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
unit_of_measurement:
$ref: '#/components/schemas/UnitOfMeasurementEnum'
allergen_requirements:
type: array
items:
oneOf:
- $ref: '#/components/schemas/AllergenRequirementsEnum'
- $ref: '#/components/schemas/BlankEnum'
allergen_declaration:
type: boolean
dietary_certificate:
type: boolean
diet_requirements:
type: array
items:
oneOf:
- $ref: '#/components/schemas/DietRequirementsEnum'
- $ref: '#/components/schemas/BlankEnum'
forecast:
nullable: true
oneOf:
- $ref: '#/components/schemas/ForecastEnum'
- $ref: '#/components/schemas/BlankEnum'
- $ref: '#/components/schemas/NullEnum'
due_date:
type: string
format: date
delivery_address:
type: integer
nullable: true
supplier_countries:
type: array
items:
oneOf:
- $ref: '#/components/schemas/Country'
- $ref: '#/components/schemas/BlankEnum'
maxItems: 250
current_supplier:
type: string
published:
type: string
format: date-time
nullable: true
description: Datetime when the inquiry becomes published. Leave empty to keep it unpublished.
logo_url:
type: string
format: uri
maxLength: 2048
is_new:
type: boolean
readOnly: true
article:
type: string
# --- truncated at 32 KB (101 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opply/refs/heads/main/openapi/opply-inquiries-api-openapi.yml