openapi: 3.0.3 info: title: 'PSI Backend API (2.0.0)' description: 'This is the PSI Backend API Documentation.' version: 1.0.0 servers: - url: 'https://api.psiproductfinder.de' paths: /v2/auth: post: summary: Authenticate operationId: authenticate description: "This endpoint allows you to authenticate and retrieve an access_token and a refresh_token.\nThe access_token must be included in the header of every API request to access protected resources.\nYou can log in using your standard PSI account credentials. However, to avoid potential issues caused by password changes of regular user accounts,\nwe strongly recommend creating a dedicated Sub-Account for API access. You can set up a Sub-Account in your PSI account settings (https://www.psi-network.de/)." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: access_token: eyJ0eXAidemoV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwcLmRlIiwiYXVkIjoicHNpcHJvZHVjdansmRlci5kZSIsImp0adIeoQzNjMwIiwiaWF0IjoxNzM3MDE5NTQ2LjE2OTkyMiwibmJmIjoxNzM3MDE5NTQ2LjE2OTkyMiwiZXhwIjoxNzM3MDE5NTQ2LjE2OTkyMiwicGF5bG9hZCI6eyJwc2lubyI6NDM2MzAsInVzZXJfaWQiOjEyNDcyOSwiZ3JvdXBzIjoiMTQiLCJlbWFpbCI6ImZyYW5rQHJoZWluc2NoYWZlLmRlIn19 refresh_token: 07070512341eacdemo3a64267c377cdcf06501 expires_in: 1737019546 properties: access_token: type: string example: eyJ0eXAidemoV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwcLmRlIiwiYXVkIjoicHNpcHJvZHVjdansmRlci5kZSIsImp0adIeoQzNjMwIiwiaWF0IjoxNzM3MDE5NTQ2LjE2OTkyMiwibmJmIjoxNzM3MDE5NTQ2LjE2OTkyMiwiZXhwIjoxNzM3MDE5NTQ2LjE2OTkyMiwicGF5bG9hZCI6eyJwc2lubyI6NDM2MzAsInVzZXJfaWQiOjEyNDcyOSwiZ3JvdXBzIjoiMTQiLCJlbWFpbCI6ImZyYW5rQHJoZWluc2NoYWZlLmRlIn19 refresh_token: type: string example: 07070512341eacdemo3a64267c377cdcf06501 expires_in: type: integer example: 1737019546 400: description: '' content: application/json: schema: type: object example: errors: 'Username or Password is wrong.' properties: errors: type: string example: 'Username or Password is wrong.' tags: - Authentication requestBody: required: true content: application/json: schema: type: object properties: username: type: string description: 'Your Username - is the same as you login to other PSI Services (Productfinder, Network..), can be an E-Mail Adress or the PSI-Number.' example: demo@psi-network.de nullable: false password: type: string description: 'Your Password.' example: password nullable: false required: - username - password security: [] /v2/refresh: post: summary: 'Refresh Token' operationId: refreshToken description: 'Your access_token is valid for the duration specified in the expires_in field of the authentication response (e.g., typically 1 hour). Once the token expires, you must generate a new one to continue accessing protected resources.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: access_token: eyJ0eXAidemoV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwcLmRlIiwiYXVkIjoicHNpcHJvZHVjdansmRlci5kZSIsImp0adIeoQzNjMwIiwiaWF0IjoxNzM3MDE5NTQ2LjE2OTkyMiwibmJmIjoxNzM3MDE5NTQ2LjE2OTkyMiwiZXhwIjoxNzM3MDE5NTQ2LjE2OTkyMiwicGF5bG9hZCI6eyJwc2lubyI6NDM2MzAsInVzZXJfaWQiOjEyNDcyOSwiZ3JvdXBzIjoiMTQiLCJlbWFpbCI6ImZyYW5rQHJoZWluc2NoYWZlLmRlIn19 expires_in: 1737020073 properties: access_token: type: string example: eyJ0eXAidemoV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwcLmRlIiwiYXVkIjoicHNpcHJvZHVjdansmRlci5kZSIsImp0adIeoQzNjMwIiwiaWF0IjoxNzM3MDE5NTQ2LjE2OTkyMiwibmJmIjoxNzM3MDE5NTQ2LjE2OTkyMiwiZXhwIjoxNzM3MDE5NTQ2LjE2OTkyMiwicGF5bG9hZCI6eyJwc2lubyI6NDM2MzAsInVzZXJfaWQiOjEyNDcyOSwiZ3JvdXBzIjoiMTQiLCJlbWFpbCI6ImZyYW5rQHJoZWluc2NoYWZlLmRlIn19 expires_in: type: integer example: 1737020073 tags: - Authentication requestBody: required: true content: application/json: schema: type: object properties: username: type: string description: 'Your E-Mail Adress or the PSI-Number, at the moment you can not use a sub account here.' example: demo@psi-network.de nullable: false refresh_token: type: string description: 'Your refresh token.' example: 07070512341eacdemo3a64267c377cdcf06501 nullable: false required: - username - refresh_token security: [] /v2/products: get: summary: 'Get Entities' operationId: getEntities description: 'The Get Entities endpoint allows you to retrieve all products associated with your PSI number. It returns all products that belong to your account, but you can customize the results using optional query parameters.' parameters: - in: query name: language description: '' example: en required: false schema: type: string description: '' example: en nullable: false enum: - de - en - in: query name: locale description: '' example: en required: false schema: type: string description: '' example: en nullable: false enum: - de - en - in: query name: filter description: '' example: outdated required: false schema: type: string description: '' example: outdated nullable: true - in: query name: search description: '' example: Suchen required: false schema: type: string description: '' example: Suchen nullable: true - in: query name: page description: 'Must be at least 1.' example: 1.0 required: false schema: type: number description: 'Must be at least 1.' example: 1.0 nullable: false - in: query name: size description: 'Must be at least 1. Must not be greater than 100.' example: 24 required: false schema: type: number description: 'Must be at least 1. Must not be greater than 100.' example: 24 nullable: false responses: 200: description: '' content: application/json: schema: type: object example: code: 200 status: OK data: [] meta: { } properties: code: type: integer example: 200 status: type: string example: OK data: type: array example: [] meta: type: object properties: { } 400: description: '' content: application/json: schema: type: object example: code: '404' status: 'Not found' message: 'No products found.' properties: code: type: string example: '404' status: type: string example: 'Not found' message: type: string example: 'No products found.' tags: - 'Product Controller' /v2/products/store: post: summary: 'Create Entity' operationId: createEntity description: "To create a variant or translation, simply post a payload containing the required parameters. If you specify a language other than the default (en), a new translation for the specified language will be added.
\n" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: code: 200 status: OK message: "Product with identifier 'v-1b93b0c9' has been successfully created." data: product_id: 9df97825-f13f-44b0-a20f-126b463d25eb product_identifier: p-9a33ae89 selected_identifier: v-1b93b0c9 variant_id: 9df97825-f2c2-43ea-9f3d-e2b3c8a1ebf5 variant_identifier: v-1b93b0c9 master_article_number: 43630S31463938362D64424946456578573178 master_product_number: 1F986-dBIFEexW1x available_translations: - en brand: null certificates: [] color_description: null colors: [] country_origin: null delivery_information: null delivery_time_max: null delivery_time_min: null description: null ean_code: null finishings_information: null finishings: [] images: [] legal_information: null made_in: null material_description: null materials: [] measurement_height: null measurement_information: null measurement_length: null measurement_volume: null measurement_width: null minimum_order_amount: null name: 'Demo Product' packaging: null price_ranges_information: null price_ranges: [] product_groups: [] product_information: null product_number: demo-001 stock_available: false tags: null target_group: null video: null weight_brutto: null weight_netto: null properties: code: type: integer example: 200 status: type: string example: OK message: type: string example: "Product with identifier 'v-1b93b0c9' has been successfully created." data: type: object properties: product_id: type: string example: 9df97825-f13f-44b0-a20f-126b463d25eb product_identifier: type: string example: p-9a33ae89 selected_identifier: type: string example: v-1b93b0c9 variant_id: type: string example: 9df97825-f2c2-43ea-9f3d-e2b3c8a1ebf5 variant_identifier: type: string example: v-1b93b0c9 master_article_number: type: string example: 43630S31463938362D64424946456578573178 master_product_number: type: string example: 1F986-dBIFEexW1x available_translations: type: array example: - en items: type: string brand: type: string example: null certificates: type: array example: [] color_description: type: string example: null colors: type: array example: [] country_origin: type: string example: null delivery_information: type: string example: null delivery_time_max: type: string example: null delivery_time_min: type: string example: null description: type: string example: null ean_code: type: string example: null finishings_information: type: string example: null finishings: type: array example: [] images: type: array example: [] legal_information: type: string example: null made_in: type: string example: null material_description: type: string example: null materials: type: array example: [] measurement_height: type: string example: null measurement_information: type: string example: null measurement_length: type: string example: null measurement_volume: type: string example: null measurement_width: type: string example: null minimum_order_amount: type: string example: null name: type: string example: 'Demo Product' packaging: type: string example: null price_ranges_information: type: string example: null price_ranges: type: array example: [] product_groups: type: array example: [] product_information: type: string example: null product_number: type: string example: demo-001 stock_available: type: boolean example: false tags: type: string example: null target_group: type: string example: null video: type: string example: null weight_brutto: type: string example: null weight_netto: type: string example: null 400: description: '' content: application/json: schema: type: object example: code: 400 status: 'Bad Request' errors: [] properties: code: type: integer example: 400 status: type: string example: 'Bad Request' errors: type: array example: [] tags: - 'Product Controller' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the entity.' example: 'Demo Product' nullable: false product_number: type: string description: 'The product_number.' example: demo-001 nullable: false language: type: enum description: '' example: en nullable: false enum: - de - en locale: type: enum description: '' example: en nullable: false enum: - de - en master_product_number: type: string description: 'The master product number for creating a variant' example: demo-001 nullable: false brand: type: string description: '' example: PSI-Demo nullable: false description: type: string description: '' example: 'This is just a demo product' nullable: false tags: type: string description: '' example: 'demo1, demo2' nullable: false ean_code: type: string description: '' example: '1234567890' nullable: false product_groups: type: array description: 'Items Enum number of the PSI productgroup value' example: - '05138008' - '08094001' items: type: string certificates: type: array description: 'Items Enum of the PSI certificate code value' example: - CERT-04200000 items: type: string colors: type: array description: 'Items Enum of the PSI color groups value' example: - CG-BLAK5 items: type: string color_description: type: string description: '' example: red nullable: false country_origin: type: string description: 'Item Enum of the PSI countries value' example: CC-DE nullable: false made_in: type: string description: 'Item Enum of the PSI countries value' example: CC-DE nullable: false images: type: array description: '' example: - src: 'https://psiproductfinder.de/images/logo/logo.svg' name: 'Demo logo image' description: 'Custom description' items: type: string delivery_time_max: type: integer description: '' example: 3 nullable: false delivery_time_min: type: integer description: '' example: 1 nullable: false finishings: type: array description: "Items Enum of the PSI finishing groups.
included is for this finishing method is included in the product's price." example: - group: FG-APPN11 included: true description: 'Demo application' items: type: string finishings_information: type: string description: '' example: 'Finishing information' nullable: false legal_information: type: string description: '' example: 'Legal information' nullable: false material_description: type: string description: '' example: 'Material description' nullable: false materials: type: array description: 'Items Enum of the PSI materials groups' example: - MG-ACRC7 items: type: string measurement_length: type: integer description: '' example: 100 nullable: false measurement_volume: type: integer description: '' example: 10 nullable: false measurement_height: type: integer description: '' example: 150 nullable: false measurement_width: type: integer description: '' example: 135 nullable: false measurement_information: type: string description: '' example: 'Measurement information' nullable: false weight_netto: type: integer description: '' example: 10 nullable: false weight_brutto: type: integer description: '' example: 13 nullable: false minimum_order_amount: type: integer description: '' example: 1 nullable: false packaging: type: integer description: '' example: 2 nullable: false price_ranges: type: array description: '' example: - amount: 1 price_ek: 1.5 price_uvp: 2 - amount: 5 price_ek: 1 price_uvp: 1.5 items: type: string price_ranges_information: type: string description: '' example: 'Price ranges information' nullable: false product_information: type: string description: '' example: 'Product information' nullable: false stock_available: type: boolean description: 'Is this product is always in stock?' example: true nullable: false delivery_information: type: string description: '' example: 'Delivery information' nullable: false target_group: type: string description: '' example: 'Target group' nullable: false video: type: string description: '' example: 'https://www.youtube.com/watch?v=pCHJAj5oPu0' nullable: false required: - name - product_number '/v2/products/{identifier}': get: summary: 'Get Entity' operationId: getEntity description: 'This endpoint is used to retrieve a specific product or variant. You can identify the entity using one of the following methods: Internal Identifier: A unique identifier generated from your master_product_number, PSI number, and product_number. Identifiers starting with p- refer to a master product, and identifiers starting with v- refer to a variant. Product Number: You can also use your custom product_number as an identifier. Note: If you request a master product (p-), the response will include all associated variants.' parameters: - in: query name: language description: '' example: en required: false schema: type: string description: '' example: en nullable: false enum: - de - en - in: query name: locale description: '' example: en required: false schema: type: string description: '' example: en nullable: false enum: - de - en responses: 400: description: '' content: application/json: schema: type: object example: code: 400 status: 'Bad request' properties: code: type: integer example: 400 status: type: string example: 'Bad request' 404: description: '' content: application/json: schema: type: object example: code: 404 status: 'Not found' message: "No product found with identifier 'v-demo'." properties: code: type: integer example: 404 status: type: string example: 'Not found' message: type: string example: "No product found with identifier 'v-demo'." 500: description: '' content: application/json: schema: type: object example: message: 'Server Error' properties: message: type: string example: 'Server Error' tags: - 'Product Controller' parameters: - in: path name: identifier description: 'Optional parameter. required.' required: true schema: type: string examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: p-c2a1cf5x '/v2/products/update/{identifier}': patch: summary: 'Update Entity' operationId: updateEntity description: "To update variants and translations, you need to specify the variant_identifier (e.g., v-88c62663). For updating a translation, you must also include the language parameter.\n
All parameters available in the \"Create Entity\" endpoint can also be used when updating an entity, allowing for flexible modifications." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: code: 200 status: OK message: "Product with identifier 'v-88c62663' has been successfully updated." data: product_id: 9dfb33f7-03b7-4598-9178-9799e3710560 product_identifier: p-76ca02e6 selected_identifier: v-88c62663 variant_id: 9dfb33f7-061d-4737-93fb-71e62bc9b25d variant_identifier: v-88c62663 master_article_number: 43630S64656D6F2D303031 master_product_number: 1F43C-UQlQJ9yMwQ available_translations: - en brand: PSI-Demo certificates: - group: CERT-04200000 label: 'Fair for life' color_description: red colors: - group: CG-BLAK5 label: Black country_origin: null delivery_information: 'Delivery information' delivery_time_max: 3 delivery_time_min: 1 description: 'This is just a demo product - updated' ean_code: '1234567890' finishings_information: 'Finishing information' finishings: - group: FG-APPN11 label: Application description: 'Demo application' included: true images: - src: 'https://psiproductfinder.de/images/logo/logo.svg' name: 'Demo logo image' description: 'Custom description' - src: null name: null description: null legal_information: 'Legal information' made_in: null material_description: 'Material description' materials: - group: MG-ACRC7 label: Acrylic measurement_height: 150 measurement_information: 'Measurement information' measurement_length: 100 measurement_volume: '10.00' measurement_width: 135 minimum_order_amount: 1 name: 'Demo Product updated' packaging: 2 price_ranges_information: 'Price ranges information' price_ranges: - amount: 1 price_ek: 1.5 price_uvp: 2 - amount: 5 price_ek: 1 price_uvp: 1.5 product_groups: - label: 'Kitchen Items > Slicer' group: '05138008' - label: 'Beverages > Beer' group: '08094001' product_information: 'Product information' product_number: demo-001 stock_available: true tags: 'demo1, demo2' target_group: 'Target group' video: 'https://www.youtube.com/watch?v=pCHJAj5oPu0' weight_brutto: 13 weight_netto: 10 properties: code: type: integer example: 200 status: type: string example: OK message: type: string example: "Product with identifier 'v-88c62663' has been successfully updated." data: type: object properties: product_id: type: string example: 9dfb33f7-03b7-4598-9178-9799e3710560 product_identifier: type: string example: p-76ca02e6 selected_identifier: type: string example: v-88c62663 variant_id: type: string example: 9dfb33f7-061d-4737-93fb-71e62bc9b25d variant_identifier: type: string example: v-88c62663 master_article_number: type: string example: 43630S64656D6F2D303031 master_product_number: type: string example: 1F43C-UQlQJ9yMwQ available_translations: type: array example: - en items: type: string brand: type: string example: PSI-Demo certificates: type: array example: - group: CERT-04200000 label: 'Fair for life' items: type: object properties: group: type: string example: CERT-04200000 label: type: string example: 'Fair for life' color_description: type: string example: red colors: type: array example: - group: CG-BLAK5 label: Black items: type: object properties: group: type: string example: CG-BLAK5 label: type: string example: Black country_origin: type: string example: null delivery_information: type: string example: 'Delivery information' delivery_time_max: type: integer example: 3 delivery_time_min: type: integer example: 1 description: type: string example: 'This is just a demo product - updated' ean_code: type: string example: '1234567890' finishings_information: type: string example: 'Finishing information' finishings: type: array example: - group: FG-APPN11 label: Application description: 'Demo application' included: true items: type: object properties: group: type: string example: FG-APPN11 label: type: string example: Application description: type: string example: 'Demo application' included: type: boolean example: true images: type: array example: - src: 'https://psiproductfinder.de/images/logo/logo.svg' name: 'Demo logo image' description: 'Custom description' - src: null name: null description: null items: type: object properties: src: type: string example: 'https://psiproductfinder.de/images/logo/logo.svg' name: type: string example: 'Demo logo image' description: type: string example: 'Custom description' legal_information: type: string example: 'Legal information' made_in: type: string example: null material_description: type: string example: 'Material description' materials: type: array example: - group: MG-ACRC7 label: Acrylic items: type: object properties: group: type: string example: MG-ACRC7 label: type: string example: Acrylic measurement_height: type: integer example: 150 measurement_information: type: string example: 'Measurement information' measurement_length: type: integer example: 100 measurement_volume: type: string example: '10.00' measurement_width: type: integer example: 135 minimum_order_amount: type: integer example: 1 name: type: string example: 'Demo Product updated' packaging: type: integer example: 2 price_ranges_information: type: string example: 'Price ranges information' price_ranges: type: array example: - amount: 1 price_ek: 1.5 price_uvp: 2 - amount: 5 price_ek: 1 price_uvp: 1.5 items: type: object properties: amount: type: integer example: 1 price_ek: type: number example: 1.5 price_uvp: type: integer example: 2 product_groups: type: array example: - label: 'Kitchen Items > Slicer' group: '05138008' - label: 'Beverages > Beer' group: '08094001' items: type: object properties: label: type: string example: 'Kitchen Items > Slicer' group: type: string example: '05138008' product_information: type: string example: 'Product information' product_number: type: string example: demo-001 stock_available: type: boolean example: true tags: type: string example: 'demo1, demo2' target_group: type: string example: 'Target group' video: type: string example: 'https://www.youtube.com/watch?v=pCHJAj5oPu0' weight_brutto: type: integer example: 13 weight_netto: type: integer example: 10 400: description: '' content: application/json: schema: type: object example: code: 400 status: 'Bad Request' message: [] properties: code: type: integer example: 400 status: type: string example: 'Bad Request' message: type: array example: [] 404: description: '' content: application/json: schema: type: object example: code: 404 status: 'Not found' message: "No product found with identifier 'sapiente'." properties: code: type: integer example: 404 status: type: string example: 'Not found' message: type: string example: "No product found with identifier 'sapiente'." tags: - 'Product Controller' requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'The name of the entity.' example: 'Demo Product updated' nullable: false language: type: enum description: '' example: en nullable: false enum: - de - en locale: type: enum description: '' example: en nullable: false enum: - de - en description: type: string description: '' example: 'This is just a demo product - updated' nullable: false parameters: - in: path name: identifier description: 'Optional parameter.' required: true schema: type: string examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: v-88c62663 '/v2/products/delete/{identifier}': delete: summary: 'Delete Entity' operationId: deleteEntity description: 'To delete a variant, translation, or product, you need to provide the identifier (e.g., p-88c62663 for a product or v-88c62663 for a variant). If you want to delete a translation in a language other than the default (English), you must also specify the language parameter.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: code: 200 status: success message: "Product with identifier ':identifier' has been successfully deleted." properties: code: type: integer example: 200 status: type: string example: success message: type: string example: "Product with identifier ':identifier' has been successfully deleted." 404: description: '' content: application/json: schema: type: object example: code: '404' status: 'Not found' message: "No translation found for the product with identifier 'v-88c62663' in locale 'en'." properties: code: type: string example: '404' status: type: string example: 'Not found' message: type: string example: "No translation found for the product with identifier 'v-88c62663' in locale 'en'." tags: - 'Product Controller' requestBody: required: false content: application/json: schema: type: object properties: language: type: enum description: 'Must be one of:
  • de
  • en
  • ' example: en nullable: false parameters: - in: path name: identifier description: 'Optional parameter.' required: true schema: type: string examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: v-88c62663 /v2/upload-identifier: get: summary: 'Receive Identifier' operationId: receiveIdentifier description: 'To upload an image, the system requires a unique identifier for each image, which acts like an access token for the upload process. First, call the dedicated endpoint to generate the identifier. Once you have the identifier, use it to upload the image through the upload endpoint.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: identifier: 57842050-b8be-4a0a-9383-130b0fa4d84e properties: identifier: type: string example: 57842050-b8be-4a0a-9383-130b0fa4d84e tags: - 'Image Controller' /v2/upload-image: post: summary: 'Upload Image' operationId: uploadImage description: 'To upload images directly to the Productfinder, use a multipart form upload. Each image requires a unique identifier, which can be obtained by calling the respective endpoint beforehand. Once the images are uploaded, the returned URLs can be used as image URLs and assigned to variants.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: filename: 42d0050d623c8ec4481539245c1e6de9.png absolute: 'https://media.psiproductfinder.de/images/43630/42d0050d623c8ec4481539245c1e6de9.png' properties: filename: type: string example: 42d0050d623c8ec4481539245c1e6de9.png absolute: type: string example: 'https://media.psiproductfinder.de/images/43630/42d0050d623c8ec4481539245c1e6de9.png' 406: description: '' content: application/json: schema: type: object example: message: 'Validation failed.' errors: image: - 'The image field is required.' properties: message: type: string example: 'Validation failed.' errors: type: object properties: image: type: array example: - 'The image field is required.' items: type: string tags: - 'Image Controller' requestBody: required: true content: multipart/form-data: schema: type: object properties: bookmark: type: boolean description: '' example: false nullable: false identifier: type: string description: '' example: 57842050-demo-4a0a-9383-130b0fa4d84e nullable: false image: type: string format: binary description: 'Must be an image.' nullable: false required: - image '/v2/bookmarks/{bookmarkId}/contact': post: summary: '' operationId: postV2BookmarksBookmarkIdContact description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: identifier: type: string description: '' example: officiis nullable: true parameters: - in: path name: bookmarkId description: '' example: deserunt required: true schema: type: string /v2/products/translation: post: summary: '' operationId: postV2ProductsTranslation description: '' parameters: [] responses: { } tags: - Endpoints /v2/user-histories: get: summary: '' operationId: getV2UserHistories description: '' parameters: [] responses: 500: description: '' content: application/json: schema: type: object example: message: 'Server Error' properties: message: type: string example: 'Server Error' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be at least 1 character.' example: fay.velda@example.com nullable: false required: - email post: summary: '' operationId: postV2UserHistories description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be at least 1 character.' example: karley.hammes@example.org nullable: false product_id: type: string description: 'Must be at least 1 character.' example: rdbxrbcauaccboewxnmduwgftseqnvcaieghynjbqjvmcxxsglhhiws nullable: false variant_id: type: string description: 'Must be at least 1 character.' example: qzuyyfowmshtgmpmkxamtapmpbpvewgoseameiwpjkjuvxashugjfrdjyf nullable: false required: - email - product_id - variant_id /v2/bookmarks: get: summary: '' operationId: getV2Bookmarks description: '' parameters: [] responses: 500: description: '' content: application/json: schema: type: object example: message: 'Server Error' properties: message: type: string example: 'Server Error' tags: - Endpoints /v2/bookmarks/store: post: summary: '' operationId: postV2BookmarksStore description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: language: type: string description: '' example: de nullable: false enum: - de - en locale: type: string description: '' example: en nullable: false enum: - de - en description: type: string description: '' example: 'Autem nihil nostrum qui autem ut ut.' nullable: false headline: type: string description: '' example: possimus nullable: false key: type: string description: '' example: minus nullable: false keyvisual: type: string description: '' example: id nullable: false name: type: string description: '' example: ullam nullable: false show_as_slider: type: boolean description: '' example: true nullable: false show_on_supplier_detail: type: boolean description: '' example: false nullable: false show_request_all_button: type: boolean description: '' example: true nullable: false video: type: string description: 'Must be a valid URL.' example: 'https://blanda.com/totam-eveniet-aut-ipsam-ut-ut-cumque-neque.html' nullable: false '/v2/bookmarks/{bookmarkId}': get: summary: '' operationId: getV2BookmarksBookmarkId description: '' parameters: [] responses: 500: description: '' content: application/json: schema: type: object example: message: 'Server Error' properties: message: type: string example: 'Server Error' tags: - Endpoints parameters: - in: path name: bookmarkId description: '' example: 0004a030-2c25-11ec-b493-23defdd27f56 required: true schema: type: string '/v2/bookmarks/{bookmarkId}/update': patch: summary: '' operationId: patchV2BookmarksBookmarkIdUpdate description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: language: type: string description: '' example: en nullable: false enum: - de - en locale: type: string description: '' example: de nullable: false enum: - de - en description: type: string description: '' example: 'Suscipit exercitationem expedita corporis aut consequatur necessitatibus eum.' nullable: false headline: type: string description: '' example: recusandae nullable: false key: type: string description: '' example: aspernatur nullable: false keyvisual: type: string description: '' example: sequi nullable: false name: type: string description: '' example: eligendi nullable: false show_as_slider: type: boolean description: '' example: false nullable: false show_on_supplier_detail: type: boolean description: '' example: true nullable: false show_request_all_button: type: boolean description: '' example: true nullable: false video: type: string description: 'Must be a valid URL.' example: 'http://hyatt.com/accusamus-ab-repellendus-fuga-maxime-voluptatem-blanditiis-commodi' nullable: false sort: type: object description: '' example: null nullable: false properties: { } parameters: - in: path name: bookmarkId description: '' example: 0004a030-2c25-11ec-b493-23defdd27f56 required: true schema: type: string '/v2/bookmarks/{bookmarkId}/{variantIdentifier}/add': post: summary: '' operationId: postV2BookmarksBookmarkIdVariantIdentifierAdd description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: language: type: string description: '' example: de nullable: false enum: - de - en locale: type: string description: '' example: de nullable: false enum: - de - en description: type: string description: '' example: 'Magnam maiores qui quis et adipisci exercitationem aut id.' nullable: false headline: type: string description: '' example: occaecati nullable: false key: type: string description: '' example: molestiae nullable: false keyvisual: type: string description: '' example: animi nullable: false name: type: string description: '' example: est nullable: false show_as_slider: type: boolean description: '' example: true nullable: false show_on_supplier_detail: type: boolean description: '' example: true nullable: false show_request_all_button: type: boolean description: '' example: false nullable: false video: type: string description: 'Must be a valid URL.' example: 'https://mraz.info/voluptas-earum-rem-aut-natus-et.html' nullable: false sort: type: object description: '' example: null nullable: false properties: { } parameters: - in: path name: bookmarkId description: '' example: 0004a030-2c25-11ec-b493-23defdd27f56 required: true schema: type: string - in: path name: variantIdentifier description: '' example: ad required: true schema: type: string '/v2/bookmarks/{bookmarkId}/{variantIdentifier}/remove': post: summary: '' operationId: postV2BookmarksBookmarkIdVariantIdentifierRemove description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: language: type: string description: '' example: en nullable: false enum: - de - en locale: type: string description: '' example: en nullable: false enum: - de - en description: type: string description: '' example: 'Deserunt culpa autem autem dolores.' nullable: false headline: type: string description: '' example: quas nullable: false key: type: string description: '' example: velit nullable: false keyvisual: type: string description: '' example: quam nullable: false name: type: string description: '' example: eaque nullable: false show_as_slider: type: boolean description: '' example: false nullable: false show_on_supplier_detail: type: boolean description: '' example: true nullable: false show_request_all_button: type: boolean description: '' example: true nullable: false video: type: string description: 'Must be a valid URL.' example: 'https://www.hodkiewicz.com/reprehenderit-nihil-inventore-aut-temporibus-et' nullable: false sort: type: object description: '' example: null nullable: false properties: { } parameters: - in: path name: bookmarkId description: '' example: 0004a030-2c25-11ec-b493-23defdd27f56 required: true schema: type: string - in: path name: variantIdentifier description: '' example: dolor required: true schema: type: string '/v2/bookmarks/{bookmarkId}/duplicate': post: summary: '' operationId: postV2BookmarksBookmarkIdDuplicate description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: nihil nullable: false parameters: - in: path name: bookmarkId description: '' example: 0004a030-2c25-11ec-b493-23defdd27f56 required: true schema: type: string '/v2/bookmarks/{bookmarkId}/destroy': delete: summary: '' operationId: deleteV2BookmarksBookmarkIdDestroy description: '' parameters: [] responses: { } tags: - Endpoints parameters: - in: path name: bookmarkId description: '' example: 0004a030-2c25-11ec-b493-23defdd27f56 required: true schema: type: string /v2/productGroups/search: post: summary: 'Group Search' operationId: groupSearch description: 'The Group Search allows you to query available group codes, which are also listed in the XLSX file (download). You can use the search parameter to filter results by a specific term and the locale parameter (en or de) to retrieve the corresponding results in your preferred language. This makes it easy to find and integrate group codes into your workflow.' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object example: - label: Clothing options: - label: 'Clothing > Jackets' value: '01027009' - label: 'Clothing > Quilted Jackets' value: '01027025' - label: 'Clothing > Wind Jackets, Windcheaters' value: '01027031' - label: 'Clothing > Winter Jackets' value: '01027032' - label: Rucksacks options: - label: 'Rucksacks > Rain Jackets' value: '13206004' 406: description: '' content: application/json: schema: type: object example: message: 'Validation failed.' errors: search: - 'The search field is required.' properties: message: type: string example: 'Validation failed.' errors: type: object properties: search: type: array example: - 'The search field is required.' items: type: string tags: - 'Product Group Controller' requestBody: required: false content: application/json: schema: type: object properties: locale: type: enum description: '' example: en nullable: false enum: - de - en search: type: string description: '' example: Jackets nullable: false tags: - name: Authentication description: '' - name: 'Product Controller' description: '' - name: 'Image Controller' description: '' - name: Endpoints description: '' - name: 'Product Group Controller' description: '' components: securitySchemes: default: type: http scheme: bearer description: '' security: - default: []