Procurify catalog API
The catalog API from Procurify — 3 operation(s) for catalog.
The catalog API from Procurify — 3 operation(s) for catalog.
openapi: 3.0.3
info:
title: Procurify API Documentation account-codes catalog API
version: ''
description: '
# Disclaimer
- Procurify’s API is evolving and is subject to change at any time. Additionally, aspects of the API are undocumented, including certain methods, events, and properties. Given that both documented and undocumented aspects of the Procurify API may change at any time, the client relies on the API at their own risk.
- Client (and/or client’s representative) is responsible for building, testing, and maintaining any API connection between Procurify and any other tool. Procurify’s responsibility strictly involves providing support on clarifications in regards to the issued API document.
- Procurify’s API is offered on an “as is” and “as available” basis, without warranties of any kind. By accepting this agreement, you agree that you have read the current API documentation, and accept the API functionality in its current state including current limitations. For questions and clarification around the documentation, please contact support@procurify.com.
- In accordance with Section 2.(b) of our Subscription Services Agreement, Procurify reserves the right to deny access to our API at any time. If your API requests are too large and time out, contact us immediately to avoid possible suspension of access.
- You may not attempt to reverse engineer or otherwise derive source code, trade secrets, or know-how in the Procurify API or portion thereof. You may not use the Procurify API to replicate or compete with core products or services offered by Procurify.
'
servers:
- url: https://{user_domain}.procurify.com
description: Your Procurify domain
variables:
user_domain:
default: your-domain
description: Your procurify domain
tags:
- name: catalog
paths:
/api/v3/catalog-bundles/:
get:
operationId: catalog_bundles_list
summary: Get All Catalog Bundles
parameters:
- in: query
name: format
schema:
type: string
enum:
- csv
- json
- name: order_by
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
- name: search
required: false
in: query
description: A search term.
schema:
type: string
tags:
- catalog
security:
- RemoteAuthentication: []
- M2MAuthentication: []
- BasicAuthentication: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedCatalogItemBundleReadList'
text/csv:
schema:
$ref: '#/components/schemas/PaginatedCatalogItemBundleReadList'
description: ''
/api/v3/catalog-items/:
get:
operationId: catalog_items_list
summary: Get All Catalog Items
parameters:
- in: query
name: bundle
schema:
type: integer
- in: query
name: currency
schema:
type: integer
- in: query
name: department
schema:
type: string
description: A comma-separated list of integers.
- in: query
name: format
schema:
type: string
enum:
- csv
- json
- in: query
name: internalSKU
schema:
type: string
- in: query
name: location
schema:
type: string
description: A comma-separated list of integers.
- in: query
name: max_price
schema:
type: number
- in: query
name: min_price
schema:
type: number
- name: order_by
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: pref_vendor
schema:
type: integer
- name: search
required: false
in: query
description: A search term.
schema:
type: string
tags:
- catalog
security:
- RemoteAuthentication: []
- M2MAuthentication: []
- BasicAuthentication: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedCatalogItemReadList'
text/csv:
schema:
$ref: '#/components/schemas/PaginatedCatalogItemReadList'
description: ''
post:
operationId: catalog_items_create
summary: Create Catalog Item
parameters:
- in: query
name: format
schema:
type: string
enum:
- csv
- json
tags:
- catalog
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogItemUpsertRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CatalogItemUpsertRequest'
? ''
: schema:
$ref: '#/components/schemas/CatalogItemUpsertRequest'
application/xml:
schema:
$ref: '#/components/schemas/CatalogItemUpsertRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/CatalogItemUpsertRequest'
required: true
security:
- RemoteAuthentication: []
- M2MAuthentication: []
- BasicAuthentication: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogItemReadSerializerSingleCreate'
text/csv:
schema:
$ref: '#/components/schemas/CatalogItemReadSerializerSingleCreate'
description: ''
/api/v3/catalog-items/{id}/:
put:
operationId: catalog_items_update
summary: Update Catalog Item
parameters:
- in: query
name: format
schema:
type: string
enum:
- csv
- json
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this catalog items.
required: true
tags:
- catalog
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogItemUpsertRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CatalogItemUpsertRequest'
? ''
: schema:
$ref: '#/components/schemas/CatalogItemUpsertRequest'
application/xml:
schema:
$ref: '#/components/schemas/CatalogItemUpsertRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/CatalogItemUpsertRequest'
required: true
security:
- RemoteAuthentication: []
- M2MAuthentication: []
- BasicAuthentication: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogItemReadSerializerSingleUpdate'
text/csv:
schema:
$ref: '#/components/schemas/CatalogItemReadSerializerSingleUpdate'
description: ''
components:
schemas:
CreditCardTypeEnum:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
type: integer
description: '* `0` - other-credit-card
* `1` - Visa
* `2` - Mastercard
* `3` - American Express
* `4` - Discover
* `5` - JCB
* `6` - Diner''s Club
* `7` - Procurify'
CreditCard:
type: object
properties:
id:
type: integer
readOnly: true
uuid:
type: string
format: uuid
is_active:
type: boolean
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
name:
type: string
maxLength: 255
number:
type: string
pattern: ^[0-9]{4}$
maxLength: 19
balance:
type: integer
maximum: 2147483647
minimum: -2147483648
nullable: true
gl_code:
type: string
maxLength: 100
type:
allOf:
- $ref: '#/components/schemas/CreditCardTypeEnum'
minimum: -2147483648
maximum: 2147483647
category:
nullable: true
minimum: -2147483648
maximum: 2147483647
oneOf:
- $ref: '#/components/schemas/CategoryEnum'
- $ref: '#/components/schemas/NullEnum'
type: integer
external_id:
type: string
description: External id of the Credit Card
maxLength: 100
status:
nullable: true
description: 'The status of the Credit Card
* `pending` - Pending
* `active` - Active
* `inactive` - Inactive
* `canceled` - Canceled
* `lost` - Lost
* `stolen` - Stolen'
oneOf:
- $ref: '#/components/schemas/CreditCardStatusEnum'
- $ref: '#/components/schemas/BlankEnum'
- $ref: '#/components/schemas/NullEnum'
type: integer
require_activation:
type: boolean
title: Require new activation?
description: Does this card require new activation?
last_changed_by:
type: integer
nullable: true
title: Last changed by user
vendor:
type: integer
payment_method:
type: integer
nullable: true
currency:
type: integer
currency_name:
type: string
readOnly: true
creator:
type: integer
nullable: true
title: Card Issuer
assignees:
type: array
items:
$ref: '#/components/schemas/CreditCardAssignee'
required:
- assignees
- currency
- uuid
- vendor
PaginatedCatalogItemBundleReadList:
type: object
properties:
metadata:
type: object
properties:
pagination:
type: object
properties:
count:
type: integer
example: 10
next:
type: string
nullable: true
format: uri
example: null
previous:
type: string
nullable: true
format: uri
example: null
page_size:
type: integer
example: 10
num_pages:
type: integer
example: 1
current_page:
type: integer
example: 1
example:
pagination:
count: 10
next: null
previous: null
page_size: 10
num_pages: 1
current_page: 1
data:
type: array
items:
$ref: '#/components/schemas/CatalogItemBundleRead'
PaymentMethod:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 100
description:
type: string
nullable: true
active:
type: boolean
required:
- name
VendorTypeEnum:
enum:
- 2
- 3
- 4
- 6
- 7
type: integer
description: '* `2` - amazon punchout
* `3` - preferred
* `4` - regular
* `6` - credit card provider
* `7` - checkout'
PaymentMethodTypeEnum:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
type: integer
description: '* `0` - OTHER
* `1` - CHECK
* `2` - ACH
* `3` - EFT
* `4` - WIRE
* `5` - PROCURIFY_CHECK
* `6` - PROCURIFY_ACH
* `7` - PROCURIFY_WIRE
* `8` - AIRWALLEX'
EmailConfiguration:
type: object
properties:
auto_po:
type: boolean
payment_remittance:
type: boolean
BlankEnum:
enum:
- ''
PaymentTerm:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 100
description:
type: string
nullable: true
active:
type: boolean
required:
- name
CustomFieldRead:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 200
content_type:
type: integer
default_value:
type: string
maxLength: 5000
is_required:
type: boolean
field_choices:
type: array
items:
type: string
readOnly: true
field_type:
$ref: '#/components/schemas/FieldTypeEnum'
field_label:
type: string
readOnly: true
is_active:
type: boolean
readOnly: true
required:
- content_type
- name
CatalogItemReadSerializerSingleCreate:
type: object
properties:
metadata:
type: object
additionalProperties: {}
default: {}
data:
$ref: '#/components/schemas/CatalogItemRead'
required:
- data
CatalogItemBundleRead:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 100
description:
type: string
maxLength: 250
image:
type: string
active:
type: boolean
items:
type: array
items:
$ref: '#/components/schemas/CatalogItemReadSerializerWithQuantity'
readOnly: true
items_count:
type: integer
readOnly: true
required:
- name
Currency:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 10
description:
type: string
maxLength: 100
rate:
type: string
format: decimal
pattern: ^-?\d{0,9}(?:\.\d{0,6})?$
base:
type: boolean
active:
type: boolean
required:
- name
- rate
AccountCodeRead:
type: object
properties:
id:
type: integer
readOnly: true
applied_accounts_count:
type: integer
readOnly: true
code:
type: string
maxLength: 50
code_length:
type: integer
maximum: 2147483647
minimum: -2147483648
description:
type: string
maxLength: 200
account_type:
allOf:
- $ref: '#/components/schemas/AccountTypeEnum'
minimum: -2147483648
maximum: 2147483647
active:
type: boolean
parent:
type: integer
nullable: true
required:
- code
- description
ShippingTerm:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 100
description:
type: string
nullable: true
active:
type: boolean
required:
- name
CatalogItemReadSerializerWithQuantity:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 255
image:
type: string
unitType:
type: string
maxLength: 30
pref_vendor:
$ref: '#/components/schemas/VendorRead'
account_code:
$ref: '#/components/schemas/AccountCodeRead'
internalSKU:
type: string
maxLength: 50
description:
type: string
nullable: true
product_url:
type: string
nullable: true
currency:
$ref: '#/components/schemas/CurrencySummary'
price:
type: string
format: decimal
pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
rfo_lock:
type: boolean
departments:
type: array
items:
type: integer
readOnly: true
custom_fields:
type: array
items:
$ref: '#/components/schemas/CustomFieldValueRead'
readOnly: true
requested_count:
type: integer
maximum: 2147483647
minimum: -2147483648
last_requested_date:
type: string
format: date-time
nullable: true
selected_account:
type: object
additionalProperties: {}
readOnly: true
quantity:
type: number
format: double
required:
- account_code
- currency
- name
- pref_vendor
- quantity
AccountTypeEnum:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
description: '* `0` - Assets
* `1` - Liability
* `2` - Expense
* `3` - Income
* `4` - Equity
* `5` - Other'
VendorRead:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
description: Name of the vendor
maxLength: 150
active:
type: boolean
addressLineOne:
type: string
nullable: true
title: Address line 1
description: First line of address
maxLength: 300
addressLineTwo:
type: string
nullable: true
title: Address line 2
description: Second line of address
maxLength: 300
postalCode:
type: string
nullable: true
title: Postal Code
description: Postal or Zip code of the vendor
maxLength: 20
city:
type: string
nullable: true
description: City of the vendor
maxLength: 50
state_province:
type: string
nullable: true
title: State/Province
description: State or Province of the vendor
maxLength: 40
country:
type: string
nullable: true
description: Country of the vendor
maxLength: 80
phoneOne:
type: string
nullable: true
description: Primary phone no. of the vendor
maxLength: 20
phoneTwo:
type: string
nullable: true
description: Secondary phone no. of the vendor
maxLength: 20
fax:
type: string
nullable: true
description: Fax no. of the vendor
maxLength: 20
email:
type: array
items:
type: string
format: email
comments:
type: string
nullable: true
description: Notes about the vendor
contact:
type: string
nullable: true
description: Contact person of the vendor
maxLength: 50
url:
type: string
nullable: true
description: Website of the vendor
maxLength: 200
external_id:
type: string
nullable: true
description: External id of the vendor
maxLength: 100
dateModified:
type: string
format: date-time
readOnly: true
currency:
type: integer
nullable: true
payment_term_ref:
allOf:
- $ref: '#/components/schemas/PaymentTerm'
nullable: true
type: object
shipping_term_ref:
allOf:
- $ref: '#/components/schemas/ShippingTerm'
nullable: true
type: object
payment_method_ref:
allOf:
- $ref: '#/components/schemas/PaymentMethod'
nullable: true
type: object
shipping_method_ref:
allOf:
- $ref: '#/components/schemas/ShippingMethod'
nullable: true
type: object
payment_methods:
type: array
items:
$ref: '#/components/schemas/PaymentMethodRead'
readOnly: true
tax:
type: integer
nullable: true
type:
$ref: '#/components/schemas/VendorTypeEnum'
default_payment_method:
type: integer
nullable: true
creditcards:
type: array
items:
$ref: '#/components/schemas/CreditCard'
readOnly: true
is_1099_eligible:
type: boolean
nullable: true
title: 1099 Eligible?
overall_score:
type: number
format: double
nullable: true
readOnly: true
is_auto_email_po_enabled:
type: boolean
po_pdf_labels:
type: string
description: Placeholder for a KVStore value
maxLength: 200
email_configurations:
type: object
additionalProperties:
$ref: '#/components/schemas/EmailConfiguration'
required:
- name
- type
FieldTypeEnum:
enum:
- t
- a
- i
- f
- b
- m
- d
- h
type: string
description: '* `t` - Text
* `a` - Large Text Field
* `i` - Integer
* `f` - Floating point decimal
* `b` - Boolean (Yes/No)
* `m` - Dropdown Choices
* `d` - Date
* `h` - Date Time'
PaymentMethodRead:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 255
type:
allOf:
- $ref: '#/components/schemas/PaymentMethodTypeEnum'
title: Payment Method
minimum: 0
maximum: 4294967295
data: {}
currency:
$ref: '#/components/schemas/Currency'
payment_rail:
type: string
readOnly: true
bank_account_country_code:
type: string
nullable: true
readOnly: true
required:
- currency
- data
CatalogItemReadSerializerSingleUpdate:
type: object
properties:
metadata:
type: object
additionalProperties: {}
default: {}
data:
$ref: '#/components/schemas/CatalogItemRead'
required:
- data
CreditCardAssignee:
type: object
properties:
id:
type: integer
readOnly: true
firstName:
type: string
maxLength: 100
lastName:
type: string
maxLength: 100
email:
type: string
format: email
maxLength: 254
profile_image:
type: string
nullable: true
required:
- email
NullEnum:
enum:
- null
CategoryEnum:
enum:
- 0
- 1
type: integer
description: '* `0` - Physical
* `1` - Virtual'
PaginatedCatalogItemReadList:
type: object
properties:
metadata:
type: object
properties:
pagination:
type: object
properties:
count:
type: integer
example: 10
next:
type: string
nullable: true
format: uri
example: null
previous:
type: string
nullable: true
format: uri
example: null
page_size:
type: integer
example: 10
num_pages:
type: integer
example: 1
current_page:
type: integer
example: 1
example:
pagination:
count: 10
next: null
previous: null
page_size: 10
num_pages: 1
current_page: 1
data:
type: array
items:
$ref: '#/components/schemas/CatalogItemRead'
CatalogItemRead:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 255
image:
type: string
unitType:
type: string
maxLength: 30
pref_vendor:
$ref: '#/components/schemas/VendorRead'
account_code:
$ref: '#/components/schemas/AccountCodeRead'
internalSKU:
type: string
maxLength: 50
description:
type: string
nullable: true
product_url:
type: string
nullable: true
currency:
$ref: '#/components/schemas/CurrencySummary'
price:
type: string
format: decimal
pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
rfo_lock:
type: boolean
departments:
type: array
items:
type: integer
readOnly: true
custom_fields:
type: array
items:
$ref: '#/components/schemas/CustomFieldValueRead'
readOnly: true
requested_count:
type: integer
maximum: 2147483647
minimum: -2147483648
last_requested_date:
type: string
format: date-time
nullable: true
selected_account:
type: object
additionalProperties: {}
readOnly: true
required:
- account_code
- currency
- name
- pref_vendor
ShippingMethod:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 100
description:
type: string
nullable: true
active:
type: boolean
required:
- name
CatalogItemUpsertRequest:
type: object
properties:
id:
type: integer
name:
type: string
minLength: 1
maxLength: 255
image:
type: string
unitType:
type: string
maxLength: 30
pref_vendor:
type: integer
nullable: true
account_code:
type: integer
nullable: true
internalSKU:
type: string
maxLength: 50
description:
type: string
nullable: true
product_url:
type: string
nullable: true
currency:
type: integer
price:
type: string
format: decimal
pattern: ^-?\d{0,13}(?:\.\d{0,8})?$
rfo_lock:
type: boolean
departments:
type: array
items:
type: integer
custom_fields:
type: array
items:
type: object
additionalProperties: {}
required:
- currency
- custom_fields
- name
CurrencySummary:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 10
rate:
type: string
format: decimal
pattern: ^-?\d{0,9}(?:\.\d{0,6})?$
base:
type: boolean
required:
- name
- rate
CustomFieldValueRead:
type: object
properties:
id:
type: integer
readOnly: true
value:
oneOf:
- type: string
- type: boolean
description: 'Given the *incoming* primitive data, return the value for this field
that should be validated and transformed to a native value.'
readOnly: true
field:
$ref: '#/components/schemas/CustomFieldRead'
required:
- field
CreditCardStatusEnum:
enum:
- pending
- active
- inactive
- canceled
- lost
- stolen
type: string
description: '* `pending` - Pending
* `active` - Active
* `inactive` - Inactive
* `canceled` - Canceled
* `lost` - Lost
* `stolen` - Stolen'
securitySchemes:
BasicAuthentication:
type: http
scheme: basic
M2MAuthentication:
type: http
scheme: bearer
bearerFormat: JWT
RemoteAuthentication:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://<your-domain>.procurify.com/oauth/authorize
tokenUrl: https://<your-domain>.procurify.com/oauth/token
scopes: {}
cookieAuth:
type: apiKey
in: cookie
name: sessionid