feat: establish AIOA identity and organization baseline
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
openapi: 3.1.0
|
||||
info:
|
||||
title: AIOA API
|
||||
version: 0.1.0
|
||||
servers:
|
||||
- url: /api/v1
|
||||
paths:
|
||||
/me:
|
||||
get:
|
||||
operationId: getCurrentUser
|
||||
summary: 获取当前登录用户
|
||||
responses:
|
||||
"200":
|
||||
description: 当前用户
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/CurrentUser"
|
||||
"401":
|
||||
$ref: "#/components/responses/Unauthorized"
|
||||
/leave-requests:
|
||||
post:
|
||||
operationId: createLeaveRequest
|
||||
summary: 创建并发起请假申请
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/IdempotencyKey"
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/CreateLeaveRequest"
|
||||
responses:
|
||||
"201":
|
||||
description: 已创建
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/LeaveRequest"
|
||||
"400":
|
||||
$ref: "#/components/responses/BadRequest"
|
||||
"401":
|
||||
$ref: "#/components/responses/Unauthorized"
|
||||
"403":
|
||||
$ref: "#/components/responses/Forbidden"
|
||||
components:
|
||||
parameters:
|
||||
IdempotencyKey:
|
||||
name: Idempotency-Key
|
||||
in: header
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
minLength: 16
|
||||
maxLength: 128
|
||||
responses:
|
||||
BadRequest:
|
||||
description: 请求无效
|
||||
content:
|
||||
application/problem+json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Problem"
|
||||
Unauthorized:
|
||||
description: 未认证
|
||||
content:
|
||||
application/problem+json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Problem"
|
||||
Forbidden:
|
||||
description: 无权操作
|
||||
content:
|
||||
application/problem+json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Problem"
|
||||
schemas:
|
||||
CurrentUser:
|
||||
type: object
|
||||
required: [id, tenantId, username, displayName, roles]
|
||||
properties:
|
||||
id: { type: string, format: uuid }
|
||||
tenantId: { type: string, format: uuid }
|
||||
username: { type: string }
|
||||
displayName: { type: string }
|
||||
email:
|
||||
type: [string, "null"]
|
||||
format: email
|
||||
department:
|
||||
oneOf:
|
||||
- $ref: "#/components/schemas/OrganizationRef"
|
||||
- type: "null"
|
||||
position:
|
||||
oneOf:
|
||||
- $ref: "#/components/schemas/OrganizationRef"
|
||||
- type: "null"
|
||||
roles:
|
||||
type: array
|
||||
uniqueItems: true
|
||||
items: { type: string }
|
||||
OrganizationRef:
|
||||
type: object
|
||||
required: [id, name]
|
||||
properties:
|
||||
id: { type: string, format: uuid }
|
||||
name: { type: string }
|
||||
CreateLeaveRequest:
|
||||
type: object
|
||||
required: [type, startsAt, endsAt, reason]
|
||||
properties:
|
||||
type:
|
||||
type: string
|
||||
enum: [PERSONAL, SICK, ANNUAL]
|
||||
startsAt: { type: string, format: date-time }
|
||||
endsAt: { type: string, format: date-time }
|
||||
reason: { type: string, minLength: 1, maxLength: 2000 }
|
||||
attachmentIds:
|
||||
type: array
|
||||
maxItems: 10
|
||||
items: { type: string, format: uuid }
|
||||
LeaveRequest:
|
||||
type: object
|
||||
required: [id, status, version, createdAt]
|
||||
properties:
|
||||
id: { type: string, format: uuid }
|
||||
status:
|
||||
type: string
|
||||
enum: [PENDING, APPROVED, REJECTED, WITHDRAWN]
|
||||
version: { type: integer, minimum: 0 }
|
||||
createdAt: { type: string, format: date-time }
|
||||
Problem:
|
||||
type: object
|
||||
required: [type, title, status, code, traceId]
|
||||
properties:
|
||||
type: { type: string, format: uri-reference }
|
||||
title: { type: string }
|
||||
status: { type: integer }
|
||||
detail: { type: string }
|
||||
code: { type: string }
|
||||
traceId: { type: string }
|
||||
Reference in New Issue
Block a user