openapi: 3.0.3 info: title: weclapp REST Article API description: 'weclapp is a German cloud ERP / CRM / commerce platform. Its REST API (v1) is exposed per tenant at https://{tenant}.weclapp.com/webapp/api/v1 and covers the platform''s business entities - parties (customers, suppliers, contacts, leads), articles, sales orders, quotations, sales invoices, shipments, purchase orders, warehouses, and more (150+ entities in the full Swagger). Every entity follows the same CRUD conventions: list at `/{entity}`, count at `/{entity}/count`, fetch one at `/{entity}/id/{id}`, create with `POST /{entity}`, update with `PUT /{entity}/id/{id}`, and delete with `DELETE /{entity}/id/{id}`. Authentication is an API token sent in the `AuthenticationToken` request header. This document models a grounded, representative subset of the documented v1 entities; the request/response field schemas are modeled from documented field names rather than copied from weclapp''s live Swagger, so property lists are illustrative and not exhaustive. Consult the live per-tenant Swagger at https://.weclapp.com/webapp/api/v1/ (or https://www.weclapp.com/api/) for the authoritative schema.' version: v1 contact: name: weclapp url: https://www.weclapp.com/api/ servers: - url: https://{tenant}.weclapp.com/webapp/api/v1 description: Per-tenant weclapp REST API (v1). Replace {tenant} with your weclapp subdomain. variables: tenant: default: your-tenant description: Your weclapp tenant subdomain (for example, the "acme" in acme.weclapp.com). security: - authenticationToken: [] tags: - name: Article description: Articles / products in the catalog. paths: /article: get: operationId: getArticles tags: - Article summary: List articles parameters: - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/Sort' - $ref: '#/components/parameters/Properties' - $ref: '#/components/parameters/AdditionalProperties' responses: '200': description: A page of articles. content: application/json: schema: $ref: '#/components/schemas/ArticleList' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createArticle tags: - Article summary: Create an article requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Article' responses: '201': description: The created article. content: application/json: schema: $ref: '#/components/schemas/Article' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /article/count: get: operationId: countArticles tags: - Article summary: Count articles responses: '200': description: The count result. content: application/json: schema: $ref: '#/components/schemas/CountResult' '401': $ref: '#/components/responses/Unauthorized' /article/id/{id}: parameters: - $ref: '#/components/parameters/Id' get: operationId: getArticleById tags: - Article summary: Get an article responses: '200': description: The requested article. content: application/json: schema: $ref: '#/components/schemas/Article' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: updateArticle tags: - Article summary: Update an article requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Article' responses: '200': description: The updated article. content: application/json: schema: $ref: '#/components/schemas/Article' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteArticle tags: - Article summary: Delete an article responses: '204': description: The article was deleted. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: parameters: PageSize: name: pageSize in: query required: false description: Number of results per page. schema: type: integer minimum: 1 default: 100 AdditionalProperties: name: additionalProperties in: query required: false description: Comma-separated list of computed / related properties to include in the response. schema: type: string Page: name: page in: query required: false description: 1-based page number for paginated list results. schema: type: integer minimum: 1 default: 1 Id: name: id in: path required: true description: The unique identifier of the entity. schema: type: string Sort: name: sort in: query required: false description: Property to sort by. Prefix with a minus sign for descending order (for example, `-createdDate`). schema: type: string Properties: name: properties in: query required: false description: Comma-separated list of properties to include in the response. schema: type: string schemas: CountResult: type: object properties: result: type: integer description: The number of matching entities. ArticleList: type: object properties: result: type: array items: $ref: '#/components/schemas/Article' Error: type: object description: Error envelope (modeled; consult live Swagger for the exact shape). properties: messages: type: array items: type: object properties: type: type: string message: type: string Article: type: object description: Catalog article / product. Modeled subset of documented fields. properties: id: type: string articleNumber: type: string description: SKU / article number. name: type: string description: type: string unitId: type: string articleType: type: string active: type: boolean createdDate: type: integer format: int64 lastModifiedDate: type: integer format: int64 responses: NotFound: description: The requested entity was not found. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Missing or invalid AuthenticationToken. content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: The request was invalid (for example, an unknown or invalid property). content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: authenticationToken: type: apiKey in: header name: AuthenticationToken description: 'API token issued per weclapp user under "My Settings > API". Sent in the `AuthenticationToken` request header. Requests must also send `Accept: application/json`; `POST` and `PUT` requests must send `Content-Type: application/json`.'