openapi: 3.0.3
info:
title: weclapp REST Article Customer 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://<tenant>.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: Customer
description: Customer master data (a party in the customer role).
paths:
/customer:
get:
operationId: getCustomers
tags:
- Customer
summary: List customers
description: Returns a page of customers. Supports pagination, sorting, property selection, and filter operators.
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 customers.
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createCustomer
tags:
- Customer
summary: Create a customer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
responses:
'201':
description: The created customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/customer/count:
get:
operationId: countCustomers
tags:
- Customer
summary: Count customers
description: Returns the number of customers matching the given filters.
responses:
'200':
description: The count result.
content:
application/json:
schema:
$ref: '#/components/schemas/CountResult'
'401':
$ref: '#/components/responses/Unauthorized'
/customer/id/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getCustomerById
tags:
- Customer
summary: Get a customer
responses:
'200':
description: The requested customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateCustomer
tags:
- Customer
summary: Update a customer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
responses:
'200':
description: The updated customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteCustomer
tags:
- Customer
summary: Delete a customer
responses:
'204':
description: The customer 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.
Customer:
type: object
description: Customer master data. Modeled subset of documented fields.
properties:
id:
type: string
customerNumber:
type: string
company:
type: string
firstName:
type: string
lastName:
type: string
email:
type: string
partyType:
type: string
enum:
- ORGANIZATION
- PERSON
currencyId:
type: string
createdDate:
type: integer
format: int64
description: Creation timestamp in epoch milliseconds.
lastModifiedDate:
type: integer
format: int64
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
CustomerList:
type: object
properties:
result:
type: array
items:
$ref: '#/components/schemas/Customer'
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`.'