feat(swagger): update swagger (#12433)

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
This commit is contained in:
localai-org-maint-botandmudler authored and GitHub committed 2026-10-02 23:59:13 +02:00
1 parent e4fa051ee3
commit f52cc1b96a
3 files changed
+364 -305

No files matched your search

+109 -86
View File
@@ -2909,6 +2909,7 @@ const docTemplate = `{
},
"/v1/audio/diarization": {
"post": {
"description": "JSON accepts model, file (raw base64 audio), include_text, include_speaker_profiles and response_format. Profiles require voice-recognition permission and json or verbose_json; unsupported backends return 501.",
"consumes": [
"multipart/form-data",
"application/json"
@@ -2934,7 +2935,7 @@ const docTemplate = `{
},
{
"type": "integer",
"description": "exact speaker count (>0 forces; 0 = auto)",
"description": "exact speaker count (\u003e0 forces; 0 = auto)",
"name": "num_speakers",
"in": "formData"
},
@@ -2974,6 +2975,12 @@ const docTemplate = `{
"name": "language",
"in": "formData"
},
{
"type": "boolean",
"description": "export portable biometric profiles (voice-recognition permission; JSON formats only)",
"name": "include_speaker_profiles",
"in": "formData"
},
{
"type": "boolean",
"description": "include per-segment transcript when the backend supports it",
@@ -2985,12 +2992,6 @@ const docTemplate = `{
"description": "json (default), verbose_json, or rttm",
"name": "response_format",
"in": "formData"
},
{
"type": "boolean",
"description": "Export portable biometric profiles; requires voice-recognition permission. Omitted by default.",
"name": "include_speaker_profiles",
"in": "formData"
}
],
"responses": {
@@ -3000,8 +3001,7 @@ const docTemplate = `{
"$ref": "#/definitions/schema.DiarizationResult"
}
}
},
"description": "JSON accepts model, file (raw base64 audio), include_text, include_speaker_profiles and response_format. Profiles require voice-recognition permission and json or verbose_json; unsupported backends return 501."
}
}
},
"/v1/audio/speech": {
@@ -4206,6 +4206,7 @@ const docTemplate = `{
},
"/v1/voice/register": {
"post": {
"description": "Supply either audio or speaker_profiles plus an explicit numeric speaker_slot. The selected model must expose matching trusted encoder metadata for portable enrollment. Registrations are global and ephemeral, with a fresh ID for each request.",
"tags": [
"voice-recognition"
],
@@ -4228,8 +4229,7 @@ const docTemplate = `{
"$ref": "#/definitions/schema.VoiceRegisterResponse"
}
}
},
"description": "Supply either audio or speaker_profiles plus an explicit numeric speaker_slot. The selected model must expose matching trusted encoder metadata for portable enrollment. Registrations are global and ephemeral, with a fresh ID for each request."
}
}
},
"/v1/voice/verify": {
@@ -4337,73 +4337,6 @@ const docTemplate = `{
}
},
"definitions": {
"schema.SpeakerProfiles": {
"type": "object",
"properties": {
"version": {
"type": "integer"
},
"encoder": {
"$ref": "#/definitions/schema.SpeakerEncoder"
},
"speakers": {
"type": "array",
"items": {
"$ref": "#/definitions/schema.SpeakerProfile"
}
}
}
},
"schema.SpeakerProfile": {
"type": "object",
"properties": {
"speaker": {
"type": "integer",
"description": "Raw numeric slot matching the decimal segment/summary label, not SPEAKER_NN."
},
"clean_duration": {
"type": "number"
},
"intervals": {
"type": "array",
"items": {
"$ref": "#/definitions/schema.SpeakerProfileInterval"
}
},
"unavailable_reason": {
"type": "string",
"x-nullable": true
},
"embedding": {
"type": "array",
"items": {
"type": "number"
}
}
}
},
"schema.SpeakerProfileInterval": {
"type": "object",
"properties": {
"start": {
"type": "number"
},
"end": {
"type": "number"
}
}
},
"schema.SpeakerEncoder": {
"type": "object",
"properties": {
"identity": {
"type": "string"
},
"dimension": {
"type": "integer"
}
}
},
"config.Gallery": {
"type": "object",
"properties": {
@@ -5342,12 +5275,32 @@ const docTemplate = `{
}
}
},
"proto.SpeakerEncoder": {
"type": "object",
"properties": {
"dimension": {
"type": "integer"
},
"identity": {
"description": "sha256 of loaded GGUF bytes",
"type": "string"
}
}
},
"proto.StatusResponse": {
"type": "object",
"properties": {
"memory": {
"$ref": "#/definitions/proto.MemoryUsageData"
},
"speaker_encoder": {
"description": "trusted metadata from the loaded server encoder, never request data",
"allOf": [
{
"$ref": "#/definitions/proto.SpeakerEncoder"
}
]
},
"state": {
"$ref": "#/definitions/proto.StatusResponse_State"
}
@@ -5904,6 +5857,9 @@ const docTemplate = `{
"$ref": "#/definitions/schema.DiarizationSegment"
}
},
"speaker_profiles": {
"$ref": "#/definitions/schema.SpeakerProfiles"
},
"speakers": {
"type": "array",
"items": {
@@ -5912,9 +5868,6 @@ const docTemplate = `{
},
"task": {
"type": "string"
},
"speaker_profiles": {
"$ref": "#/definitions/schema.SpeakerProfiles"
}
}
},
@@ -7571,6 +7524,12 @@ const docTemplate = `{
"ignore_eos": {
"type": "boolean"
},
"include_speaker_profiles": {
"type": "boolean"
},
"include_text": {
"type": "boolean"
},
"input": {},
"instruction": {
"description": "Edit endpoint",
@@ -8242,6 +8201,71 @@ const docTemplate = `{
}
}
},
"schema.SpeakerEncoder": {
"type": "object",
"properties": {
"dimension": {
"type": "integer"
},
"identity": {
"type": "string"
}
}
},
"schema.SpeakerProfile": {
"type": "object",
"properties": {
"clean_duration": {
"type": "number"
},
"embedding": {
"type": "array",
"items": {
"type": "number"
}
},
"intervals": {
"type": "array",
"items": {
"$ref": "#/definitions/schema.SpeakerProfileInterval"
}
},
"speaker": {
"type": "integer"
},
"unavailable_reason": {
"type": "string"
}
}
},
"schema.SpeakerProfileInterval": {
"type": "object",
"properties": {
"end": {
"type": "number"
},
"start": {
"type": "number"
}
}
},
"schema.SpeakerProfiles": {
"type": "object",
"properties": {
"encoder": {
"$ref": "#/definitions/schema.SpeakerEncoder"
},
"speakers": {
"type": "array",
"items": {
"$ref": "#/definitions/schema.SpeakerProfile"
}
},
"version": {
"type": "integer"
}
}
},
"schema.StreamOptions": {
"type": "object",
"properties": {
@@ -8976,15 +9000,14 @@ const docTemplate = `{
"name": {
"type": "string"
},
"store": {
"type": "string"
},
"speaker_profiles": {
"$ref": "#/definitions/schema.SpeakerProfiles"
},
"speaker_slot": {
"type": "integer",
"description": "Required with speaker_profiles, mutually exclusive with audio; explicit raw numeric speaker slot."
"type": "integer"
},
"store": {
"type": "string"
}
}
},
+109 -86
View File
@@ -2906,6 +2906,7 @@
},
"/v1/audio/diarization": {
"post": {
"description": "JSON accepts model, file (raw base64 audio), include_text, include_speaker_profiles and response_format. Profiles require voice-recognition permission and json or verbose_json; unsupported backends return 501.",
"consumes": [
"multipart/form-data",
"application/json"
@@ -2931,7 +2932,7 @@
},
{
"type": "integer",
"description": "exact speaker count (>0 forces; 0 = auto)",
"description": "exact speaker count (\u003e0 forces; 0 = auto)",
"name": "num_speakers",
"in": "formData"
},
@@ -2971,6 +2972,12 @@
"name": "language",
"in": "formData"
},
{
"type": "boolean",
"description": "export portable biometric profiles (voice-recognition permission; JSON formats only)",
"name": "include_speaker_profiles",
"in": "formData"
},
{
"type": "boolean",
"description": "include per-segment transcript when the backend supports it",
@@ -2982,12 +2989,6 @@
"description": "json (default), verbose_json, or rttm",
"name": "response_format",
"in": "formData"
},
{
"type": "boolean",
"description": "Export portable biometric profiles; requires voice-recognition permission. Omitted by default.",
"name": "include_speaker_profiles",
"in": "formData"
}
],
"responses": {
@@ -2997,8 +2998,7 @@
"$ref": "#/definitions/schema.DiarizationResult"
}
}
},
"description": "JSON accepts model, file (raw base64 audio), include_text, include_speaker_profiles and response_format. Profiles require voice-recognition permission and json or verbose_json; unsupported backends return 501."
}
}
},
"/v1/audio/speech": {
@@ -4203,6 +4203,7 @@
},
"/v1/voice/register": {
"post": {
"description": "Supply either audio or speaker_profiles plus an explicit numeric speaker_slot. The selected model must expose matching trusted encoder metadata for portable enrollment. Registrations are global and ephemeral, with a fresh ID for each request.",
"tags": [
"voice-recognition"
],
@@ -4225,8 +4226,7 @@
"$ref": "#/definitions/schema.VoiceRegisterResponse"
}
}
},
"description": "Supply either audio or speaker_profiles plus an explicit numeric speaker_slot. The selected model must expose matching trusted encoder metadata for portable enrollment. Registrations are global and ephemeral, with a fresh ID for each request."
}
}
},
"/v1/voice/verify": {
@@ -4334,73 +4334,6 @@
}
},
"definitions": {
"schema.SpeakerProfiles": {
"type": "object",
"properties": {
"version": {
"type": "integer"
},
"encoder": {
"$ref": "#/definitions/schema.SpeakerEncoder"
},
"speakers": {
"type": "array",
"items": {
"$ref": "#/definitions/schema.SpeakerProfile"
}
}
}
},
"schema.SpeakerProfile": {
"type": "object",
"properties": {
"speaker": {
"type": "integer",
"description": "Raw numeric slot matching the decimal segment/summary label, not SPEAKER_NN."
},
"clean_duration": {
"type": "number"
},
"intervals": {
"type": "array",
"items": {
"$ref": "#/definitions/schema.SpeakerProfileInterval"
}
},
"unavailable_reason": {
"type": "string",
"x-nullable": true
},
"embedding": {
"type": "array",
"items": {
"type": "number"
}
}
}
},
"schema.SpeakerProfileInterval": {
"type": "object",
"properties": {
"start": {
"type": "number"
},
"end": {
"type": "number"
}
}
},
"schema.SpeakerEncoder": {
"type": "object",
"properties": {
"identity": {
"type": "string"
},
"dimension": {
"type": "integer"
}
}
},
"config.Gallery": {
"type": "object",
"properties": {
@@ -5339,12 +5272,32 @@
}
}
},
"proto.SpeakerEncoder": {
"type": "object",
"properties": {
"dimension": {
"type": "integer"
},
"identity": {
"description": "sha256 of loaded GGUF bytes",
"type": "string"
}
}
},
"proto.StatusResponse": {
"type": "object",
"properties": {
"memory": {
"$ref": "#/definitions/proto.MemoryUsageData"
},
"speaker_encoder": {
"description": "trusted metadata from the loaded server encoder, never request data",
"allOf": [
{
"$ref": "#/definitions/proto.SpeakerEncoder"
}
]
},
"state": {
"$ref": "#/definitions/proto.StatusResponse_State"
}
@@ -5901,6 +5854,9 @@
"$ref": "#/definitions/schema.DiarizationSegment"
}
},
"speaker_profiles": {
"$ref": "#/definitions/schema.SpeakerProfiles"
},
"speakers": {
"type": "array",
"items": {
@@ -5909,9 +5865,6 @@
},
"task": {
"type": "string"
},
"speaker_profiles": {
"$ref": "#/definitions/schema.SpeakerProfiles"
}
}
},
@@ -7568,6 +7521,12 @@
"ignore_eos": {
"type": "boolean"
},
"include_speaker_profiles": {
"type": "boolean"
},
"include_text": {
"type": "boolean"
},
"input": {},
"instruction": {
"description": "Edit endpoint",
@@ -8239,6 +8198,71 @@
}
}
},
"schema.SpeakerEncoder": {
"type": "object",
"properties": {
"dimension": {
"type": "integer"
},
"identity": {
"type": "string"
}
}
},
"schema.SpeakerProfile": {
"type": "object",
"properties": {
"clean_duration": {
"type": "number"
},
"embedding": {
"type": "array",
"items": {
"type": "number"
}
},
"intervals": {
"type": "array",
"items": {
"$ref": "#/definitions/schema.SpeakerProfileInterval"
}
},
"speaker": {
"type": "integer"
},
"unavailable_reason": {
"type": "string"
}
}
},
"schema.SpeakerProfileInterval": {
"type": "object",
"properties": {
"end": {
"type": "number"
},
"start": {
"type": "number"
}
}
},
"schema.SpeakerProfiles": {
"type": "object",
"properties": {
"encoder": {
"$ref": "#/definitions/schema.SpeakerEncoder"
},
"speakers": {
"type": "array",
"items": {
"$ref": "#/definitions/schema.SpeakerProfile"
}
},
"version": {
"type": "integer"
}
}
},
"schema.StreamOptions": {
"type": "object",
"properties": {
@@ -8973,15 +8997,14 @@
"name": {
"type": "string"
},
"store": {
"type": "string"
},
"speaker_profiles": {
"$ref": "#/definitions/schema.SpeakerProfiles"
},
"speaker_slot": {
"type": "integer",
"description": "Required with speaker_profiles, mutually exclusive with audio; explicit raw numeric speaker slot."
"type": "integer"
},
"store": {
"type": "string"
}
}
},
+146 -133
View File
@@ -1,50 +1,5 @@
basePath: /
definitions:
schema.SpeakerProfiles:
type: object
properties:
version:
type: integer
encoder:
$ref: '#/definitions/schema.SpeakerEncoder'
speakers:
type: array
items:
$ref: '#/definitions/schema.SpeakerProfile'
schema.SpeakerProfile:
type: object
properties:
speaker:
type: integer
description: Raw numeric slot matching the decimal segment/summary label, not
SPEAKER_NN.
clean_duration:
type: number
intervals:
type: array
items:
$ref: '#/definitions/schema.SpeakerProfileInterval'
unavailable_reason:
type: string
x-nullable: true
embedding:
type: array
items:
type: number
schema.SpeakerProfileInterval:
type: object
properties:
start:
type: number
end:
type: number
schema.SpeakerEncoder:
type: object
properties:
identity:
type: string
dimension:
type: integer
config.Gallery:
properties:
artifact_verification:
@@ -723,10 +678,23 @@ definitions:
total:
type: integer
type: object
proto.SpeakerEncoder:
properties:
dimension:
type: integer
identity:
description: sha256 of loaded GGUF bytes
type: string
type: object
proto.StatusResponse:
properties:
memory:
$ref: '#/definitions/proto.MemoryUsageData'
speaker_encoder:
allOf:
- $ref: '#/definitions/proto.SpeakerEncoder'
description: trusted metadata from the loaded server encoder, never request
data
state:
$ref: '#/definitions/proto.StatusResponse_State'
type: object
@@ -1095,7 +1063,6 @@ definitions:
type: string
type: object
schema.DiarizationResult:
type: object
properties:
duration:
type: number
@@ -1104,17 +1071,18 @@ definitions:
num_speakers:
type: integer
segments:
type: array
items:
$ref: '#/definitions/schema.DiarizationSegment'
speakers:
type: array
items:
$ref: '#/definitions/schema.DiarizationSpeaker'
task:
type: string
speaker_profiles:
$ref: '#/definitions/schema.SpeakerProfiles'
speakers:
items:
$ref: '#/definitions/schema.DiarizationSpeaker'
type: array
task:
type: string
type: object
schema.DiarizationSegment:
properties:
end:
@@ -2254,6 +2222,10 @@ definitions:
$ref: '#/definitions/functions.JSONFunctionStructure'
ignore_eos:
type: boolean
include_speaker_profiles:
type: boolean
include_text:
type: boolean
input: {}
instruction:
description: Edit endpoint
@@ -2783,6 +2755,48 @@ definitions:
model:
type: string
type: object
schema.SpeakerEncoder:
properties:
dimension:
type: integer
identity:
type: string
type: object
schema.SpeakerProfile:
properties:
clean_duration:
type: number
embedding:
items:
type: number
type: array
intervals:
items:
$ref: '#/definitions/schema.SpeakerProfileInterval'
type: array
speaker:
type: integer
unavailable_reason:
type: string
type: object
schema.SpeakerProfileInterval:
properties:
end:
type: number
start:
type: number
type: object
schema.SpeakerProfiles:
properties:
encoder:
$ref: '#/definitions/schema.SpeakerEncoder'
speakers:
items:
$ref: '#/definitions/schema.SpeakerProfile'
type: array
version:
type: integer
type: object
schema.StreamOptions:
properties:
include_usage:
@@ -3299,26 +3313,24 @@ definitions:
type: array
type: object
schema.VoiceRegisterRequest:
type: object
properties:
audio:
type: string
labels:
type: object
additionalProperties:
type: string
type: object
model:
type: string
name:
type: string
store:
type: string
speaker_profiles:
$ref: '#/definitions/schema.SpeakerProfiles'
speaker_slot:
type: integer
description: Required with speaker_profiles, mutually exclusive with audio;
explicit raw numeric speaker slot.
store:
type: string
type: object
schema.VoiceRegisterResponse:
properties:
id:
@@ -5392,69 +5404,70 @@ paths:
consumes:
- multipart/form-data
- application/json
tags:
- audio
summary: Identify speakers in audio (who spoke when).
parameters:
- type: string
description: model
name: model
in: formData
required: true
- type: file
description: audio file
name: file
in: formData
required: true
- type: integer
description: exact speaker count (>0 forces; 0 = auto)
name: num_speakers
in: formData
- type: integer
description: lower bound when auto-detecting
name: min_speakers
in: formData
- type: integer
description: upper bound when auto-detecting
name: max_speakers
in: formData
- type: number
description: clustering distance threshold when num_speakers is unknown
name: clustering_threshold
in: formData
- type: number
description: discard segments shorter than this (seconds)
name: min_duration_on
in: formData
- type: number
description: merge gaps shorter than this (seconds)
name: min_duration_off
in: formData
- type: string
description: audio language hint (only meaningful for backends that bundle ASR)
name: language
in: formData
- type: boolean
description: include per-segment transcript when the backend supports it
name: include_text
in: formData
- type: string
description: json (default), verbose_json, or rttm
name: response_format
in: formData
- type: boolean
description: Export portable biometric profiles; requires voice-recognition
permission. Omitted by default.
name: include_speaker_profiles
in: formData
responses:
'200':
description: OK
schema:
$ref: '#/definitions/schema.DiarizationResult'
description: JSON accepts model, file (raw base64 audio), include_text, include_speaker_profiles
and response_format. Profiles require voice-recognition permission and json
or verbose_json; unsupported backends return 501.
parameters:
- description: model
in: formData
name: model
required: true
type: string
- description: audio file
in: formData
name: file
required: true
type: file
- description: exact speaker count (>0 forces; 0 = auto)
in: formData
name: num_speakers
type: integer
- description: lower bound when auto-detecting
in: formData
name: min_speakers
type: integer
- description: upper bound when auto-detecting
in: formData
name: max_speakers
type: integer
- description: clustering distance threshold when num_speakers is unknown
in: formData
name: clustering_threshold
type: number
- description: discard segments shorter than this (seconds)
in: formData
name: min_duration_on
type: number
- description: merge gaps shorter than this (seconds)
in: formData
name: min_duration_off
type: number
- description: audio language hint (only meaningful for backends that bundle
ASR)
in: formData
name: language
type: string
- description: export portable biometric profiles (voice-recognition permission;
JSON formats only)
in: formData
name: include_speaker_profiles
type: boolean
- description: include per-segment transcript when the backend supports it
in: formData
name: include_text
type: boolean
- description: json (default), verbose_json, or rttm
in: formData
name: response_format
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/schema.DiarizationResult'
summary: Identify speakers in audio (who spoke when).
tags:
- audio
/v1/audio/speech:
post:
consumes:
@@ -6237,25 +6250,25 @@ paths:
- voice-recognition
/v1/voice/register:
post:
tags:
- voice-recognition
summary: Register a speaker for 1:N identification.
parameters:
- description: query params
name: request
in: body
required: true
schema:
$ref: '#/definitions/schema.VoiceRegisterRequest'
responses:
'200':
description: Response
schema:
$ref: '#/definitions/schema.VoiceRegisterResponse'
description: Supply either audio or speaker_profiles plus an explicit numeric
speaker_slot. The selected model must expose matching trusted encoder metadata
for portable enrollment. Registrations are global and ephemeral, with a fresh
ID for each request.
parameters:
- description: query params
in: body
name: request
required: true
schema:
$ref: '#/definitions/schema.VoiceRegisterRequest'
responses:
"200":
description: Response
schema:
$ref: '#/definitions/schema.VoiceRegisterResponse'
summary: Register a speaker for 1:N identification.
tags:
- voice-recognition
/v1/voice/verify:
post:
parameters: