references
read_reference_route_subpath
module-attribute
/model_categories
get_reference_by_category_route_subpath
module-attribute
/{model_category_name}
single_model_route_subpath
module-attribute
/{model_category_name}/model/{model_name}
pending_route_subpath
module-attribute
/{model_category_name}/pending
_CATEGORY_CREATE_ROUTE_NAMES
module-attribute
_CATEGORY_CREATE_ROUTE_NAMES: dict[
MODEL_REFERENCE_CATEGORY, RouteNames
] = {
image_generation: image_generation_model,
text_generation: text_generation_model,
blip: blip_model,
clip: clip_model,
codeformer: codeformer_model,
controlnet: controlnet_model,
esrgan: esrgan_model,
gfpgan: gfpgan_model,
safety_checker: safety_checker_model,
miscellaneous: miscellaneous_model,
}
_CATEGORY_UPDATE_ROUTE_NAMES
module-attribute
_CATEGORY_UPDATE_ROUTE_NAMES: dict[
MODEL_REFERENCE_CATEGORY, RouteNames
] = {
image_generation: update_image_generation_model,
text_generation: update_text_generation_model,
controlnet: update_controlnet_model,
}
_TYPED_WRITE_RESPONSES
module-attribute
_TYPED_WRITE_RESPONSES: dict[int | str, dict[str, Any]] = {
202: {
"description": "Model change queued for approval"
},
400: {
"description": "Invalid request",
"model": ErrorResponse,
},
404: {
"description": "Model not found",
"model": ErrorResponse,
},
409: {
"description": "Model already exists (use PUT to update)",
"model": ErrorResponse,
},
422: {
"description": "Validation error in request body",
"model": ErrorResponse,
},
503: {
"description": "Service unavailable (v2 canonical mode required)",
"model": ErrorResponse,
},
}
add_model_route_subpath
module-attribute
/{model_category_name}/add
update_model_route_subpath
module-attribute
/{model_category_name}/model/{model_name}
delete_model_route_subpath
module-attribute
/{model_category_name}/model/{model_name}
_check_model_exists
_check_model_exists(
manager: ModelReferenceManager,
category: MODEL_REFERENCE_CATEGORY,
model_name: str,
) -> bool
Check if a model exists in the given category.
Source code in src/horde_model_reference/service/v2/routers/references.py
_model_payload
_enqueue_pending_change
_enqueue_pending_change(
*,
queue_service: PendingQueueService,
category: MODEL_REFERENCE_CATEGORY,
model_name: str,
operation: AuditOperation,
payload: dict[str, Any] | None,
requestor_id: str,
requestor_username: str,
request_metadata: dict[str, Any] | None = None,
related_models: list[str] | None = None,
) -> PendingChangeRecord
Source code in src/horde_model_reference/service/v2/routers/references.py
_queue_response
_preserve_created_metadata
_preserve_created_metadata(
manager: ModelReferenceManager,
category: MODEL_REFERENCE_CATEGORY,
model_name: str,
model_record: GenericModelRecord,
) -> GenericModelRecord
Copy created_* metadata fields from the stored record into the new payload.
Source code in src/horde_model_reference/service/v2/routers/references.py
_queue_change
_queue_change(
*,
manager: ModelReferenceManager,
category: MODEL_REFERENCE_CATEGORY,
model_name: str,
operation: AuditOperation,
payload: dict[str, Any] | None,
requestor_id: str,
requestor_username: str,
request_metadata: dict[str, Any],
related_models: list[str] | None = None,
) -> PendingChangeRecord
Source code in src/horde_model_reference/service/v2/routers/references.py
_queue_model_record_request
async
_queue_model_record_request(
*,
manager: ModelReferenceManager,
category: MODEL_REFERENCE_CATEGORY,
model_record: GenericModelRecord,
apikey: str,
operation: AuditOperation,
route_name: str,
) -> JSONResponse
Source code in src/horde_model_reference/service/v2/routers/references.py
_queue_delete_request
async
_queue_delete_request(
*,
manager: ModelReferenceManager,
category: MODEL_REFERENCE_CATEGORY,
model_name: str,
apikey: str,
route_name: str,
) -> JSONResponse
Source code in src/horde_model_reference/service/v2/routers/references.py
read_v2_reference_info
async
Get information about the v2 model reference API.
This is the v2 model reference API, which uses the new format established by horde_model_reference.
Source code in src/horde_model_reference/service/v2/routers/references.py
read_v2_reference_names
async
read_v2_reference_names(
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
) -> list[MODEL_REFERENCE_CATEGORY]
Get all available v2 model reference category names.
Returns a list of all model categories that have v2 format references available.
Source code in src/horde_model_reference/service/v2/routers/references.py
read_v2_reference
async
read_v2_reference(
model_category_name: MODEL_REFERENCE_CATEGORY,
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
) -> JSONResponse
Get all models in a specific v2 model reference category.
Returns the complete v2 format JSON for the requested category.
Source code in src/horde_model_reference/service/v2/routers/references.py
read_v2_single_model
async
read_v2_single_model(
model_category_name: MODEL_REFERENCE_CATEGORY,
model_name: str,
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
) -> JSONResponse
Get a specific model by category and name.
Parameters:
-
model_category_name(MODEL_REFERENCE_CATEGORY) –The model reference category (e.g., image_generation).
-
model_name(str) –The name of the model within the category.
-
manager(Annotated[ModelReferenceManager, Depends(get_model_reference_manager)]) –The model reference manager dependency.
Returns:
-
JSONResponse(JSONResponse) –The model record data.
Raises:
-
HTTPException–404 if category or model not found.
Source code in src/horde_model_reference/service/v2/routers/references.py
read_v2_reference_pending
async
read_v2_reference_pending(
model_category_name: MODEL_REFERENCE_CATEGORY,
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
apikey: Annotated[str, Depends(header_auth_scheme)],
) -> JSONResponse
Return PENDING/APPROVED create/update changes as ready-to-use v2 records.
These are "beta" models awaiting (or pending) approval into the canonical reference.
The payload is keyed by model name and shaped exactly like the canonical category
endpoint, so a REPLICA client can overlay it onto canonical data without any format
handling. DELETE changes are never surfaced (a beta cannot remove a live model),
and when several changes target one name the most recent wins.
Reader authentication is required (any valid Horde API key), matching the other pending-queue read surfaces.
Source code in src/horde_model_reference/service/v2/routers/references.py
_register_typed_category_routes
_register_typed_category_routes(
category: MODEL_REFERENCE_CATEGORY,
record_type: type[GenericModelRecord],
) -> None
Register concrete-schema POST/PUT/GET routes for a single category.
The request body is annotated as GenericModelRecord for static analysis, then the
concrete record_type is injected into __annotations__ so FastAPI documents and
validates against the category's specific record schema.
Source code in src/horde_model_reference/service/v2/routers/references.py
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 | |
create_v2_model
async
create_v2_model(
model_category_name: MODEL_REFERENCE_CATEGORY,
new_model_record: ModelRecordUnion,
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
apikey: Annotated[str, Depends(header_auth_scheme)],
) -> JSONResponse
Create a new model in the specified category.
This endpoint is only available when canonical_format='v2' in PRIMARY mode.
The model name in the request body must not already exist in the specified category.
Source code in src/horde_model_reference/service/v2/routers/references.py
update_v2_model
async
update_v2_model(
model_category_name: MODEL_REFERENCE_CATEGORY,
model_name: str,
new_model_record: ModelRecordUnion,
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
apikey: Annotated[str, Depends(header_auth_scheme)],
) -> JSONResponse
Update an existing model in v2 format.
This endpoint is only available when canonical_format='v2' in PRIMARY mode.
The model must already exist in the specified category. Use POST to create new models.
- Preserves original
created_atandcreated_bymetadata - Updates
updated_attimestamp
Source code in src/horde_model_reference/service/v2/routers/references.py
796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 | |
delete_v2_model
async
delete_v2_model(
model_category_name: MODEL_REFERENCE_CATEGORY,
model_name: str,
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
apikey: Annotated[str, Depends(header_auth_scheme)],
) -> JSONResponse
Queue deletion of a model from a v2 model reference category.