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
Authentication\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
\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: Very good product! 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_package_ferrous_metal: type: number group_package_metal: type: number group_package_non_ferrous_metal: type: number group_package_paper: type: number group_package_plastic: type: number group_package_wood: type: number has_serial_numbers: type: integer height: type: number id: type: integer is_gift_card: description: 0 or 1 type: integer is_lot_product: type: boolean is_regular_gift_card: description: boolean flag 0 or 1 type: integer is_used_product: type: boolean labels_not_needed: description: boolean flag 0 or 1 type: integer length: description: Length is Item's physical dimensions. type: number location_in_warehouse_id: type: integer location_in_warehouse_text: type: string manufacturer_name: type: string name: description: /This field supports more languages. Please read Translatable names and descriptions block in the documentation. $ref: '#/definitions/Translatable' net_weight: type: number non_discountable: description: 0 or 1 type: integer non_refundable: description: 0 or 1 type: integer non_stock_product: description: boolean flag 0 or 1 type: integer packaging_type: type: string packing_not_required: type: integer parent_product_id: type: integer price: type: number price_with_tax: type: number priority_group_id: type: integer product_item_level_promotions_disabled: type: integer product_reorder_multiples: type: integer revenue_account: type: string reward_points_not_allowed: description: boolean flag 0 or 1 type: integer sales_package_cardboard: type: number sales_package_clear_brown_glass: type: number sales_package_green_other_glass: type: number sales_package_metal_al: type: number sales_package_metal_fe: type: number sales_package_other_metal: type: number sales_package_paper_and_cardboard_mono: description: Product package materials type: number sales_package_plastic_pet: type: number sales_package_plastic_pp_pe: type: number sales_package_wood: type: number serial_number: type: string shelf_life_days: type: integer sold_in_packages: type: integer status: description: 'Status is a classifier with four possible values: ''ACTIVE'' (DEFAULT), ''NO_LONGER_ORDERED'', ''NOT_FOR_SALE'' and ''ARCHIVED''.' type: string example: ACTIVE suggested_retail_price: type: number supplier_code: type: string supplier_id: type: integer tax_free: description: boolean flag 0 or 1 type: integer tax_rate_id: type: integer transport_package_cardboard: type: number transport_package_ferrous_metal: type: number transport_package_non_ferrous_metal: type: number transport_package_plastic: type: number transport_package_wood: type: number type: type: string unit_id: type: integer volume: type: number webshop_description: type: string webshop_keywords: type: string webshop_title: type: string webshop_url_slug: type: string width: type: number securityDefinitions: AccessToken: type: apiKey name: accessToken in: header ErplyClientCode: type: apiKey name: clientCode in: header ErplyJWT: type: apiKey name: jwt in: header ErplySession: type: apiKey name: sessionKey in: header RequestKey: type: apiKey name: requestKey in: header