generated from coulomb/repo-seed
UI can now build an approved profile by hand
This commit is contained in:
@@ -84,6 +84,12 @@ class AbilityCreate(BaseModel):
|
||||
}
|
||||
|
||||
|
||||
class AbilityUpdate(BaseModel):
|
||||
name: str | None = None
|
||||
description: str | None = None
|
||||
confidence: float | None = Field(default=None, ge=0.0, le=1.0)
|
||||
|
||||
|
||||
class CapabilityCreate(BaseModel):
|
||||
ability_id: int
|
||||
name: str
|
||||
@@ -108,6 +114,14 @@ class CapabilityCreate(BaseModel):
|
||||
}
|
||||
|
||||
|
||||
class CapabilityUpdate(BaseModel):
|
||||
name: str | None = None
|
||||
description: str | None = None
|
||||
inputs: list[str] | None = None
|
||||
outputs: list[str] | None = None
|
||||
confidence: float | None = Field(default=None, ge=0.0, le=1.0)
|
||||
|
||||
|
||||
class FeatureCreate(BaseModel):
|
||||
capability_id: int
|
||||
name: str
|
||||
@@ -130,6 +144,13 @@ class FeatureCreate(BaseModel):
|
||||
}
|
||||
|
||||
|
||||
class FeatureUpdate(BaseModel):
|
||||
name: str | None = None
|
||||
type: str | None = None
|
||||
location: str | None = None
|
||||
confidence: float | None = Field(default=None, ge=0.0, le=1.0)
|
||||
|
||||
|
||||
class EvidenceCreate(BaseModel):
|
||||
capability_id: int
|
||||
type: str
|
||||
@@ -150,6 +171,12 @@ class EvidenceCreate(BaseModel):
|
||||
}
|
||||
|
||||
|
||||
class EvidenceUpdate(BaseModel):
|
||||
type: str | None = None
|
||||
reference: str | None = None
|
||||
strength: str | None = None
|
||||
|
||||
|
||||
class AnalysisRunCreate(BaseModel):
|
||||
source_path: str | None = None
|
||||
|
||||
@@ -793,6 +820,37 @@ def create_ability(
|
||||
return {"id": ability_id}
|
||||
|
||||
|
||||
@app.patch("/repos/{repository_id}/abilities/{ability_id}")
|
||||
def update_ability(
|
||||
repository_id: int,
|
||||
ability_id: int,
|
||||
payload: AbilityUpdate,
|
||||
service: RegistryService = Depends(get_service),
|
||||
) -> dict[str, object]:
|
||||
try:
|
||||
return asdict(
|
||||
service.update_ability(
|
||||
repository_id,
|
||||
ability_id,
|
||||
**payload.model_dump(exclude_unset=True),
|
||||
)
|
||||
)
|
||||
except NotFoundError as exc:
|
||||
raise HTTPException(status_code=404, detail=str(exc)) from exc
|
||||
|
||||
|
||||
@app.delete("/repos/{repository_id}/abilities/{ability_id}")
|
||||
def delete_ability(
|
||||
repository_id: int,
|
||||
ability_id: int,
|
||||
service: RegistryService = Depends(get_service),
|
||||
) -> dict[str, object]:
|
||||
try:
|
||||
return asdict(service.delete_ability(repository_id, ability_id))
|
||||
except NotFoundError as exc:
|
||||
raise HTTPException(status_code=404, detail=str(exc)) from exc
|
||||
|
||||
|
||||
@app.post("/repos/{repository_id}/capabilities", status_code=201)
|
||||
def create_capability(
|
||||
repository_id: int,
|
||||
@@ -806,6 +864,37 @@ def create_capability(
|
||||
return {"id": capability_id}
|
||||
|
||||
|
||||
@app.patch("/repos/{repository_id}/capabilities/{capability_id}")
|
||||
def update_capability(
|
||||
repository_id: int,
|
||||
capability_id: int,
|
||||
payload: CapabilityUpdate,
|
||||
service: RegistryService = Depends(get_service),
|
||||
) -> dict[str, object]:
|
||||
try:
|
||||
return asdict(
|
||||
service.update_capability(
|
||||
repository_id,
|
||||
capability_id,
|
||||
**payload.model_dump(exclude_unset=True),
|
||||
)
|
||||
)
|
||||
except NotFoundError as exc:
|
||||
raise HTTPException(status_code=404, detail=str(exc)) from exc
|
||||
|
||||
|
||||
@app.delete("/repos/{repository_id}/capabilities/{capability_id}")
|
||||
def delete_capability(
|
||||
repository_id: int,
|
||||
capability_id: int,
|
||||
service: RegistryService = Depends(get_service),
|
||||
) -> dict[str, object]:
|
||||
try:
|
||||
return asdict(service.delete_capability(repository_id, capability_id))
|
||||
except NotFoundError as exc:
|
||||
raise HTTPException(status_code=404, detail=str(exc)) from exc
|
||||
|
||||
|
||||
@app.post("/repos/{repository_id}/features", status_code=201)
|
||||
def create_feature(
|
||||
repository_id: int,
|
||||
@@ -819,6 +908,37 @@ def create_feature(
|
||||
return {"id": feature_id}
|
||||
|
||||
|
||||
@app.patch("/repos/{repository_id}/features/{feature_id}")
|
||||
def update_feature(
|
||||
repository_id: int,
|
||||
feature_id: int,
|
||||
payload: FeatureUpdate,
|
||||
service: RegistryService = Depends(get_service),
|
||||
) -> dict[str, object]:
|
||||
try:
|
||||
return asdict(
|
||||
service.update_feature(
|
||||
repository_id,
|
||||
feature_id,
|
||||
**payload.model_dump(exclude_unset=True),
|
||||
)
|
||||
)
|
||||
except NotFoundError as exc:
|
||||
raise HTTPException(status_code=404, detail=str(exc)) from exc
|
||||
|
||||
|
||||
@app.delete("/repos/{repository_id}/features/{feature_id}")
|
||||
def delete_feature(
|
||||
repository_id: int,
|
||||
feature_id: int,
|
||||
service: RegistryService = Depends(get_service),
|
||||
) -> dict[str, object]:
|
||||
try:
|
||||
return asdict(service.delete_feature(repository_id, feature_id))
|
||||
except NotFoundError as exc:
|
||||
raise HTTPException(status_code=404, detail=str(exc)) from exc
|
||||
|
||||
|
||||
@app.post("/repos/{repository_id}/evidence", status_code=201)
|
||||
def create_evidence(
|
||||
repository_id: int,
|
||||
@@ -832,6 +952,37 @@ def create_evidence(
|
||||
return {"id": evidence_id}
|
||||
|
||||
|
||||
@app.patch("/repos/{repository_id}/evidence/{evidence_id}")
|
||||
def update_evidence(
|
||||
repository_id: int,
|
||||
evidence_id: int,
|
||||
payload: EvidenceUpdate,
|
||||
service: RegistryService = Depends(get_service),
|
||||
) -> dict[str, object]:
|
||||
try:
|
||||
return asdict(
|
||||
service.update_evidence(
|
||||
repository_id,
|
||||
evidence_id,
|
||||
**payload.model_dump(exclude_unset=True),
|
||||
)
|
||||
)
|
||||
except NotFoundError as exc:
|
||||
raise HTTPException(status_code=404, detail=str(exc)) from exc
|
||||
|
||||
|
||||
@app.delete("/repos/{repository_id}/evidence/{evidence_id}")
|
||||
def delete_evidence(
|
||||
repository_id: int,
|
||||
evidence_id: int,
|
||||
service: RegistryService = Depends(get_service),
|
||||
) -> dict[str, object]:
|
||||
try:
|
||||
return asdict(service.delete_evidence(repository_id, evidence_id))
|
||||
except NotFoundError as exc:
|
||||
raise HTTPException(status_code=404, detail=str(exc)) from exc
|
||||
|
||||
|
||||
@app.get("/repos/{repository_id}/ability-map")
|
||||
def get_ability_map(
|
||||
repository_id: int,
|
||||
|
||||
Reference in New Issue
Block a user