Erply Product Group API
The Product Group API from Erply — 15 operation(s) for product group.
The Product Group API from Erply — 15 operation(s) for product group.
swagger: '2.0'
info:
description: "\n\n## Overview\n\n\n\nThis application offers an API for managing assignments and tasks.\n\n\n\nGraphQL endpoint for the same API is [also available](/graph)\n\n\n\n<details><summary>Authentication</summary>\n\n\n\n> \n\n> Authenticate using your Erply credentials and get a sessionKey. This sessionKey and your Erply clientCode must be provided in the HTTP headers of every request. You do not have to authenticate against this API - valid Erply sessionKey-s from other sources are also acceptable. To authenticate using this API, use the `POST /api/v1/auth` endpoint.\n\n>\n\n</details>\n\n"
title: assignments Assortment Product Group API
contact: {}
version: 2.36.5
host: ''
basePath: ''
schemes: []
tags:
- name: Product Group
paths:
/v1/product/group:
get:
security:
- sk: []
- cc: []
- jwt: []
description: Get Product Groups. The fields `quick_books_debit_account`, `quick_books_credit_account`, `reward_points` and `location_tax_rates` will be on the object only if there are values for them
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Get Groups
parameters:
- type: integer
description: skip n records
name: skip
in: query
- type: integer
description: 'items to take, default: 20, max: 100000'
name: take
in: query
- type: string
description: the sort parameter is explained in the `Filtering & Sorting` section on top of the Swagger documentation
name: sort
in: query
- type: string
description: the filter parameter is explained in the `Filtering & Sorting` section on top of the Swagger documentation
name: filter
in: query
- type: boolean
description: optionally return total number of records in the X-Total-Count response header
name: withTotalCount
in: query
responses:
'200':
description: OK
schema:
type: array
items:
$ref: '#/definitions/groupmodels.GroupResponse'
headers:
X-Total-Count:
type: uint
description: total number of records (ignores skip & take parameters)
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
post:
security:
- sk: []
- cc: []
- jwt: []
description: Create Product Group
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Create Product Group
parameters:
- description: productGroupRequest
name: productGroupRequest
in: body
required: true
schema:
$ref: '#/definitions/groupmodels.GroupRequest'
responses:
'201':
description: Created
schema:
$ref: '#/definitions/responses.Response'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/group/bulk:
post:
security:
- sk: []
- cc: []
- jwt: []
description: each request contains the created resource data
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Create groups in bulk
parameters:
- description: bulk create request
name: request
in: body
required: true
schema:
$ref: '#/definitions/groupmodels.BulkCreateGroupsRequest'
responses:
'200':
description: OK
schema:
$ref: '#/definitions/responses.BulkResponseWithResults'
/v1/product/group/bulk/get:
post:
security:
- sk: []
- cc: []
- jwt: []
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Get groups in bulk
parameters:
- description: requests have the parameters that the original get request has, but in json format. This way you can apply the parameters to each request separately.
name: request
in: body
required: true
schema:
$ref: '#/definitions/parammodels.BulkReadRequest'
responses:
'200':
description: OK
schema:
$ref: '#/definitions/groupmodels.BulkReadGroupsResponse'
/v1/product/group/external-ids:
get:
security:
- sk: []
- cc: []
- jwt: []
description: External IDs are the ones from different commerce systems. This endpoint enables the API user to read the external IDs of the Erply product groups.
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Read external group IDs of Product Groups
parameters:
- type: array
items:
type: string
description: up to 100 external IDs. Cannot be provided with the product group ID parameter
name: externalIDs
in: query
- type: array
items:
type: string
description: up to 100 product group IDs. Cannot be provided with the external ID parameter
name: groupIDs
in: query
- type: string
description: integration name
name: integrationName
in: query
- type: integer
description: skip n records
name: skip
in: query
- type: integer
description: 'items to take, default: 20, max: 100000'
name: take
in: query
responses:
'200':
description: OK
schema:
type: array
items:
$ref: '#/definitions/groupmodels.ExternalIDResponse'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/group/external-ids/{groupIds}:
delete:
security:
- sk: []
- cc: []
- jwt: []
description: Requesting the endpoint will delete all the external IDs of selected product groups. With the integrationName parameter you can delete only integration-specific external IDs.
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Delete external group IDs of Product Groups
parameters:
- type: string
description: Specify the integration name to delete the external ID associated with the integration only.
name: integrationName
in: query
- type: string
description: up to 100 semicolon delimited Group IDs
name: groupIds
in: path
required: true
responses:
'201':
description: Created
schema:
$ref: '#/definitions/responses.Response'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/group/external-ids/{groupId}:
post:
security:
- sk: []
- cc: []
- jwt: []
description: External IDs are the ones from different commerce systems. This endpoint enables the API user to attach the external IDs to the Erply product groups.
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Attach external group ID to a Product Group
parameters:
- description: external ID with the integration name
name: externalIdWithIntegrationName
in: body
required: true
schema:
$ref: '#/definitions/groupmodels.ExternalIDRequest'
- type: integer
description: Group ID
name: groupId
in: path
required: true
responses:
'201':
description: Created
schema:
$ref: '#/definitions/responses.Response'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
patch:
security:
- sk: []
- cc: []
- jwt: []
description: 'External IDs are the ones from different commerce systems that have to be stored in ERPLY
This call allows to update the external ID using the integration name and group ID.'
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Update external group ID of a Product Group
parameters:
- description: external ID with the integration name
name: externalIdWithIntegrationName
in: body
required: true
schema:
$ref: '#/definitions/groupmodels.ExternalIDRequest'
- type: integer
description: Group ID
name: groupId
in: path
required: true
responses:
'201':
description: Created
schema:
$ref: '#/definitions/responses.Response'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/group/indented:
get:
security:
- sk: []
- cc: []
- jwt: []
description: The result is a indented list of group ids and names sorted by orders and prefixed by the dash (―) sign if is a parent
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Get Indented List of Groups
parameters:
- type: string
description: Language code (ISO 639). Return the name in the requested language or leave empty for account default language.
name: lang
in: query
responses:
'200':
description: OK
schema:
type: array
items:
$ref: '#/definitions/indentation.Result'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/group/tree:
get:
security:
- sk: []
- cc: []
- jwt: []
description: 'Optionally you can get products that belong to each group
You must specify the fields to you want to get from the groups and products (models can be found under GET /product/group and GET /product)'
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Get Tree of product groups
parameters:
- type: array
items:
type: string
description: You must specify the fields to you want to get from the groups and products (models can be found under GET /product/group and GET /product)
name: groupFields
in: query
- type: array
items:
type: string
description: You must specify the fields to you want to get from the groups and products (models can be found under GET /product/group and GET /product)
name: productFields
in: query
- type: boolean
description: Optionally you can get products that belong to each group
name: withProducts
in: query
- type: string
description: Optionally specify the language ISO 639-1 code for the translatable fields. Default is the default language of the account.
name: languageCode
in: query
- type: integer
description: skip n records
name: skip
in: query
- type: integer
description: 'items to take, default: 20, max: 100000'
name: take
in: query
- type: boolean
description: optionally return total number of records in the X-Total-Count response header
name: withTotalCount
in: query
- type: string
description: the sort parameter is explained in the `Filtering & Sorting` section on top of the Swagger documentation
name: sort
in: query
- type: string
description: the filter parameter is explained in the `Filtering & Sorting` section on top of the Swagger documentation
name: itemFilters
in: query
- type: string
description: the filter parameter is explained in the `Filtering & Sorting` section on top of the Swagger documentation
name: productFilters
in: query
responses:
'200':
description: OK
schema:
type: array
items:
$ref: '#/definitions/indentation.GroupTreeResultSample'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/group/{groupId}/location-tax/{warehouseId}:
delete:
security:
- sk: []
- cc: []
- jwt: []
description: Delete Location Specific Tax To Product Group
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Delete Location Specific Tax From Product Group
parameters:
- type: string
description: group ID
name: groupId
in: path
required: true
- type: string
description: warehouse ID
name: warehouseId
in: path
required: true
responses:
'200':
description: OK
schema:
$ref: '#/definitions/responses.Response'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/group/{ids}:
delete:
security:
- sk: []
- cc: []
- jwt: []
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Delete Product Groups
parameters:
- type: string
description: up to 100 semicolon delimited Group IDs
name: ids
in: path
required: true
responses:
'200':
description: OK
schema:
$ref: '#/definitions/responses.Response'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/group/{id}:
put:
security:
- sk: []
- cc: []
- jwt: []
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Update Product Group
parameters:
- type: integer
description: Group ID
name: id
in: path
required: true
- description: productGroupRequest
name: productGroupRequest
in: body
required: true
schema:
$ref: '#/definitions/groupmodels.GroupRequest'
responses:
'200':
description: OK
schema:
$ref: '#/definitions/responses.Response'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/group/{id}/location-tax:
patch:
security:
- sk: []
- cc: []
- jwt: []
description: Add Location Specific Tax To Product Group
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Add Location Specific Tax
parameters:
- type: string
description: group ID
name: id
in: path
required: true
- description: productGroupRequest
name: request
in: body
required: true
schema:
$ref: '#/definitions/groupmodels.LocationSpecificTaxRequest'
responses:
'200':
description: OK
schema:
$ref: '#/definitions/responses.Response'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/group/{id}/move:
put:
security:
- sk: []
- cc: []
- jwt: []
description: 'position has to be one of the following: `lastChild` | `before` | `after`'
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Move Product Group
parameters:
- type: integer
description: Group ID
name: id
in: path
required: true
- description: moveRequest
name: moveRequest
in: body
required: true
schema:
$ref: '#/definitions/models.MoveRequest'
responses:
'200':
description: OK
schema:
$ref: '#/definitions/responses.Response'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/{ids}/additional-groups:
get:
security:
- sk: []
- cc: []
- jwt: []
description: Get Product's Additional Groups
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Get Product's Additional Groups
parameters:
- type: string
description: up to 100 semicolon delimited product IDs
name: ids
in: path
required: true
- type: integer
description: skip n records
name: skip
in: query
- type: integer
description: 'items to take, default: 20, max: 100000'
name: take
in: query
responses:
'200':
description: OK
schema:
$ref: '#/definitions/groupmodels.AdditionalGroupsResponse'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
/v1/product/{id}/additional-groups:
put:
security:
- sk: []
- cc: []
- jwt: []
description: this request allows you to attach or delete additional groups to the product. To delete just pass an empty IDs array
consumes:
- application/json
produces:
- application/json
tags:
- Product Group
summary: Attach Additional Groups to Product
parameters:
- type: integer
description: product ID
name: id
in: path
required: true
- description: group IDs
name: product
in: body
required: true
schema:
$ref: '#/definitions/groupmodels.AdditionalGroupRequest'
responses:
'200':
description: OK
schema:
$ref: '#/definitions/responses.Response'
'400':
description: Bad Request
schema:
$ref: '#/definitions/responses.MessageResponse'
'500':
description: Internal Server Error
schema:
$ref: '#/definitions/responses.MessageResponse'
definitions:
groupmodels.AdditionalGroupsResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/definitions/groupmodels.AdditionalGroupJSON'
parammodels.SortRequest:
type: object
properties:
desc:
description: If true - descending, if false - ascending
type: boolean
language:
description: Language in ISO 639-1 standard. Is needed only for translatable properties like description and name.
type: string
example: en
selector:
description: 'JSON field. For description: description_plain or description_html'
type: string
example: name
Translatable:
type: object
properties:
en:
description: This field supports more languages. Please read Translatable names and descriptions block in the documentation.
type: string
indentation.Result:
type: object
properties:
id:
description: ID of the element
type: integer
example: 64
name:
description: The name is the name in the client's default language. Will be prefixed n times if the element is a child of another element.
type: string
example: element 1
groupmodels.LocationTaxRate:
type: object
properties:
tax_rate_id:
type: integer
warehouse_id:
type: integer
groupmodels.GroupRequest:
type: object
properties:
description:
$ref: '#/definitions/Translatable'
formula_identifier:
type: string
main_id:
description: ParentGroupID Refers to the parent group
type: integer
name:
description: /This field supports more languages. Please read Translatable names and descriptions block in the documentation.
$ref: '#/definitions/Translatable'
non_discountable:
description: 'Binary flag (1/0): if set to true, products of this group (and also products belonging to all its sub-groups and sub-sub-groups) must not be discounted by promotions (eg. “15% off all items”)'
type: integer
quick_books_credit_account:
type: string
quick_books_debit_account:
type: string
reward_points:
type: number
show_in_webshop:
description: 'Binary flag (1/0): should products of this group be displayed in a web shop or not.'
type: integer
indentation.GroupTreeResultSample:
type: object
properties:
children:
type: array
items:
$ref: '#/definitions/indentation.GroupTreeResultSampleNoChildren'
item:
$ref: '#/definitions/groupmodels.GroupResponse'
products:
type: array
items:
$ref: '#/definitions/products.ProductResponse'
parammodels.FilterJSON:
type: object
properties:
fieldName:
type: string
example: group_id
operandBefore:
description: supported values are "and", "or"
type: string
example: or
operator:
type: string
example: '='
sliceValue:
description: to be used if the value is a slice
type: array
items: {}
value:
type: object
responses.Response:
type: object
properties:
id:
type: integer
example: 73
ProductDescription:
type: object
properties:
html:
description: Description supports more languages. Please read Translatable names and descriptions block in the documentation.
type: string
example: <b>Very good product!</b>
plain_text:
description: Description supports more languages. Please read Translatable names and descriptions block in the documentation.
type: string
example: Very good product!
parammodels.ReadRequestWithTotalCount:
type: object
properties:
filters:
type: array
items:
$ref: '#/definitions/parammodels.FilterJSON'
paginationParameters:
$ref: '#/definitions/parammodels.PaginationParameters'
sortingParameters:
$ref: '#/definitions/parammodels.SortRequest'
withTotalCount:
type: boolean
indentation.GroupTreeResultSampleNoChildren:
type: object
properties:
item:
$ref: '#/definitions/groupmodels.GroupResponse'
products:
type: array
items:
$ref: '#/definitions/products.ProductResponse'
groupmodels.GroupResponse:
type: object
properties:
added:
description: Unix timestamp
type: integer
example: 1595230999
addedby:
description: username
type: string
example: k@erp.xyz
changed:
description: Unix timestamp
type: integer
example: 1595230999
changedby:
description: username
type: string
example: k@erp.xyz
description:
$ref: '#/definitions/Translatable'
formula_identifier:
type: string
id:
type: integer
location_tax_rates:
type: array
items:
$ref: '#/definitions/groupmodels.LocationTaxRate'
name:
description: /This field supports more languages. Please read Translatable names and descriptions block in the documentation.
$ref: '#/definitions/Translatable'
non_discountable:
type: integer
order:
type: integer
parent_id:
type: integer
quick_books_credit_account:
type: string
quick_books_debit_account:
type: string
reward_points:
type: number
show_in_webshop:
type: integer
groupmodels.AdditionalGroupRequest:
type: object
properties:
group_ids:
type: array
items:
type: integer
groupmodels.BulkReadGroupsResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/definitions/groupmodels.BulkReadGroupsResponseItem'
models.MoveRequest:
type: object
properties:
position:
description: Position has to be lastChild | before | after
type: string
example: after
target_id:
description: Target ID represents the object that the requested object is put after, or before, or becomes the last child of
type: integer
groupmodels.ExternalIDRequest:
type: object
properties:
external_id:
type: string
integration_name:
type: string
responses.MessageResponse:
type: object
properties:
message:
type: string
example: some message
groupmodels.AdditionalGroupJSON:
type: object
properties:
added:
description: Unix timestamp
type: integer
example: 1595230999
addedby_id:
description: user ID
type: integer
example: 1
changed:
description: Unix timestamp
type: integer
example: 1595230999
changedby_id:
description: user ID
type: integer
example: 1
group_id:
type: integer
id:
type: integer
product_id:
type: integer
responses.BulkResult:
type: object
properties:
message:
type: string
example: some message
resourceId:
description: identifier of the REST-ful response
type: integer
example: 2
resultId:
description: identifier of the result item
type: integer
example: 2
groupmodels.ExternalIDResponse:
type: object
properties:
added:
description: Unix timestamp
type: integer
example: 1595230999
addedby_id:
description: user ID
type: integer
example: 1
changed:
description: Unix timestamp
type: integer
example: 1595230999
changedby_id:
description: user ID
type: integer
example: 1
external_id:
type: string
group_id:
type: integer
integration_name:
type: string
responses.BulkResponseWithResults:
type: object
properties:
results:
type: array
items:
$ref: '#/definitions/responses.BulkResult'
parammodels.BulkReadRequest:
type: object
properties:
requests:
type: array
items:
$ref: '#/definitions/parammodels.ReadRequestWithTotalCount'
Description:
type: object
properties:
en:
description: Description supports more languages. Please read Translatable names and descriptions block in the documentation.
$ref: '#/definitions/ProductDescription'
parammodels.PaginationParameters:
type: object
properties:
skip:
type: integer
take:
type: integer
groupmodels.LocationSpecificTaxRequest:
type: object
properties:
taxrate_id:
type: integer
warehouse_id:
type: integer
groupmodels.BulkCreateGroupsRequest:
type: object
properties:
requests:
type: array
items:
$ref: '#/definitions/groupmodels.GroupRequest'
groupmodels.BulkReadGroupsResponseItem:
type: object
properties:
groups:
type: array
items:
$ref: '#/definitions/groupmodels.GroupResponse'
message:
type: string
example: some message
resultId:
description: id of the response, if requested 3 read requests each ID represents 1 response item
type: integer
totalCount:
description: total number of records (ignores skip & take parameters)
type: integer
products.ProductResponse:
type: object
properties:
added:
description: Unix timestamp
type: integer
example: 1595230999
addedby:
description: username
type: string
example: k@erp.xyz
age_restriction:
type: integer
alcohol_percentage:
type: string
alcohol_registry_number:
type: string
batches:
type: string
brand_id:
type: integer
cashier_must_enter_price:
description: boolean flag 0 or 1
type: integer
category_id:
type: integer
changed:
description: Unix timestamp
type: integer
example: 1595230999
changedby:
description: username
type: string
example: k@erp.xyz
code:
type: string
code2:
type: string
code3:
type: string
code5:
type: string
code6:
type: string
code7:
type: string
code8:
type: string
cost:
type: number
country_of_origin_id:
type: integer
delivery_time:
type: string
deposit_fee_amount:
type: integer
deposit_fee_id:
type: integer
description:
$ref: '#/definitions/Description'
displayed_in_webshop:
description: 0 or 1
type: integer
excise_declaration_number:
type: string
extra_field1_id:
type: integer
extra_field2_id:
type: integer
extra_field3_id:
type: integer
extra_field4_id:
type: integer
family_id:
type: integer
formula_identifier:
type: string
gross_weight:
description: GrossWeight is Item's gross weight (with packaging). Unit depends on region, check your Erply account (typically lbs or kg).
type: number
group_id:
type: integer
group_pack
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/erply/refs/heads/main/openapi/erply-product-group-api-openapi.yml