183 lines
4.1 KiB
JSON
183 lines
4.1 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "Supplier",
|
|
"description": "Schema for supplier data in Bakery-IA system",
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"tenant_id",
|
|
"name",
|
|
"supplier_code",
|
|
"business_name",
|
|
"tax_id",
|
|
"contact_person",
|
|
"email",
|
|
"phone",
|
|
"address",
|
|
"city",
|
|
"postal_code",
|
|
"country",
|
|
"status",
|
|
"rating",
|
|
"payment_terms",
|
|
"minimum_order_amount",
|
|
"lead_time_days",
|
|
"contract_start_date",
|
|
"contract_end_date",
|
|
"created_at"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"description": "Unique identifier for the supplier"
|
|
},
|
|
"tenant_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"description": "Tenant identifier"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 100,
|
|
"description": "Supplier name"
|
|
},
|
|
"supplier_code": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 50,
|
|
"description": "Supplier code"
|
|
},
|
|
"business_name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 100,
|
|
"description": "Legal business name"
|
|
},
|
|
"tax_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 20,
|
|
"description": "Tax identification number"
|
|
},
|
|
"contact_person": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 100,
|
|
"description": "Primary contact person"
|
|
},
|
|
"email": {
|
|
"type": "string",
|
|
"format": "email",
|
|
"description": "Contact email"
|
|
},
|
|
"phone": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 20,
|
|
"description": "Contact phone number"
|
|
},
|
|
"address": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 200,
|
|
"description": "Street address"
|
|
},
|
|
"city": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 50,
|
|
"description": "City"
|
|
},
|
|
"postal_code": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 10,
|
|
"description": "Postal code"
|
|
},
|
|
"country": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 50,
|
|
"description": "Country"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["ACTIVE", "INACTIVE", "PENDING", "SUSPENDED"],
|
|
"description": "Supplier status"
|
|
},
|
|
"rating": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 5,
|
|
"description": "Supplier rating (0-5)"
|
|
},
|
|
"payment_terms": {
|
|
"type": "string",
|
|
"enum": ["7_DAYS", "15_DAYS", "30_DAYS", "60_DAYS", "90_DAYS"],
|
|
"description": "Payment terms"
|
|
},
|
|
"minimum_order_amount": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"description": "Minimum order amount in EUR"
|
|
},
|
|
"lead_time_days": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "Lead time in days"
|
|
},
|
|
"contract_start_date": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Contract start date"
|
|
},
|
|
"contract_end_date": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Contract end date"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Creation timestamp"
|
|
},
|
|
"specialties": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Product specialties"
|
|
},
|
|
"delivery_areas": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Delivery areas"
|
|
},
|
|
"enterprise_contract": {
|
|
"type": "boolean",
|
|
"description": "Enterprise-level contract"
|
|
},
|
|
"contract_type": {
|
|
"type": "string",
|
|
"description": "Type of contract"
|
|
},
|
|
"annual_volume_commitment": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"description": "Annual volume commitment"
|
|
},
|
|
"preferred_supplier": {
|
|
"type": "boolean",
|
|
"description": "Preferred supplier status"
|
|
},
|
|
"organic_certified": {
|
|
"type": "boolean",
|
|
"description": "Organic certification"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
} |