Documentation
¶
Overview ¶
Package v1 provides the v1 API routes.
Index ¶
- Constants
- func PaginationLinks(r *http.Request, params PaginationParams, totalCount int64) *jsonapi.Links
- func PaginationMeta(params PaginationParams, totalCount int64) *jsonapi.Meta
- type EnrichmentsRouter
- func (r *EnrichmentsRouter) Delete(w http.ResponseWriter, req *http.Request)
- func (r *EnrichmentsRouter) Get(w http.ResponseWriter, req *http.Request)
- func (r *EnrichmentsRouter) List(w http.ResponseWriter, req *http.Request)
- func (r *EnrichmentsRouter) Routes() chi.Router
- func (r *EnrichmentsRouter) Update(w http.ResponseWriter, req *http.Request)
- type PaginationParams
- func (p PaginationParams) Limit() int
- func (p PaginationParams) Offset() int
- func (p PaginationParams) Options() []repository.Option
- func (p PaginationParams) Page() int
- func (p PaginationParams) PageSize() int
- func (p PaginationParams) WithPage(page int) PaginationParams
- func (p PaginationParams) WithPageSize(size int) PaginationParams
- type QueueRouter
- type RepositoriesRouter
- func (r *RepositoriesRouter) Add(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) Delete(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) DeleteCommitEnrichment(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) DeleteCommitEnrichments(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) Get(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) GetBlob(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) GetCommit(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) GetCommitEnrichment(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) GetCommitFile(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) GetStatus(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) GetStatusSummary(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) GetTag(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) GetTrackingConfig(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) GetWikiPage(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) GetWikiTree(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) Grep(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) List(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) ListCommitEmbeddingsDeprecated(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) ListCommitEnrichments(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) ListCommitFiles(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) ListCommitSnippets(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) ListCommits(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) ListRepositoryEnrichments(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) ListTags(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) RescanCommit(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) RescanWiki(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) Routes() chi.Router
- func (r *RepositoriesRouter) Sync(w http.ResponseWriter, req *http.Request)
- func (r *RepositoriesRouter) UpdateTrackingConfig(w http.ResponseWriter, req *http.Request)
- type SearchRouter
- func (r *SearchRouter) Grep(w http.ResponseWriter, req *http.Request)
- func (r *SearchRouter) KeywordSearch(w http.ResponseWriter, req *http.Request)
- func (r *SearchRouter) Ls(w http.ResponseWriter, req *http.Request)
- func (r *SearchRouter) Routes() chi.Router
- func (r *SearchRouter) Search(w http.ResponseWriter, req *http.Request)
- func (r *SearchRouter) SemanticSearch(w http.ResponseWriter, req *http.Request)
Constants ¶
const DefaultPageSize = 20
DefaultPageSize is the default number of items per page.
const MaxPageSize = 100
MaxPageSize is the maximum allowed page size.
Variables ¶
This section is empty.
Functions ¶
func PaginationLinks ¶
PaginationLinks builds JSON:API links from the request, params, and total count.
func PaginationMeta ¶
func PaginationMeta(params PaginationParams, totalCount int64) *jsonapi.Meta
PaginationMeta builds a JSON:API meta object from pagination params and total count.
Types ¶
type EnrichmentsRouter ¶
type EnrichmentsRouter struct {
// contains filtered or unexported fields
}
EnrichmentsRouter handles enrichment API endpoints.
func NewEnrichmentsRouter ¶
func NewEnrichmentsRouter(client *kodit.Client) *EnrichmentsRouter
NewEnrichmentsRouter creates a new EnrichmentsRouter.
func (*EnrichmentsRouter) Delete ¶
func (r *EnrichmentsRouter) Delete(w http.ResponseWriter, req *http.Request)
Delete handles DELETE /api/v1/enrichments/{id}.
@Summary Delete enrichment
@Description Delete an enrichment by ID
@Tags enrichments
@Accept json
@Produce json
@Param id path int true "Enrichment ID"
@Success 204
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /enrichments/{id} [delete]
func (*EnrichmentsRouter) Get ¶
func (r *EnrichmentsRouter) Get(w http.ResponseWriter, req *http.Request)
Get handles GET /api/v1/enrichments/{id}.
@Summary Get enrichment
@Description Get an enrichment by ID
@Tags enrichments
@Accept json
@Produce json
@Param id path int true "Enrichment ID"
@Success 200 {object} dto.EnrichmentJSONAPIResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /enrichments/{id} [get]
func (*EnrichmentsRouter) List ¶
func (r *EnrichmentsRouter) List(w http.ResponseWriter, req *http.Request)
List handles GET /api/v1/enrichments. Supports query parameters: enrichment_type, enrichment_subtype, page, page_size
@Summary List enrichments
@Description List enrichments with optional filters
@Tags enrichments
@Accept json
@Produce json
@Param enrichment_type query string false "Filter by enrichment type"
@Param enrichment_subtype query string false "Filter by enrichment subtype"
@Param page query int false "Page number (default: 1)"
@Param page_size query int false "Results per page (default: 20, max: 100)"
@Success 200 {object} dto.EnrichmentJSONAPIListResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /enrichments [get]
func (*EnrichmentsRouter) Routes ¶
func (r *EnrichmentsRouter) Routes() chi.Router
Routes returns the chi router for enrichment endpoints.
func (*EnrichmentsRouter) Update ¶
func (r *EnrichmentsRouter) Update(w http.ResponseWriter, req *http.Request)
Update handles PATCH /api/v1/enrichments/{id}.
@Summary Update enrichment
@Description Update an enrichment's content
@Tags enrichments
@Accept json
@Produce json
@Param id path int true "Enrichment ID"
@Param body body dto.EnrichmentUpdateRequest true "Update request"
@Success 200 {object} dto.EnrichmentJSONAPIResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /enrichments/{id} [patch]
type PaginationParams ¶
type PaginationParams struct {
// contains filtered or unexported fields
}
PaginationParams holds pagination parameters parsed from query strings.
func NewPaginationParams ¶
func NewPaginationParams() PaginationParams
NewPaginationParams creates pagination params with defaults.
func ParsePagination ¶
func ParsePagination(r *http.Request) (PaginationParams, error)
ParsePagination parses pagination parameters from an HTTP request. Default: page=1, page_size=20 Max page_size: 100 Returns an error if page or page_size is explicitly provided but less than 1.
func (PaginationParams) Limit ¶
func (p PaginationParams) Limit() int
Limit returns the limit for database queries.
func (PaginationParams) Offset ¶
func (p PaginationParams) Offset() int
Offset returns the offset for database queries.
func (PaginationParams) Options ¶
func (p PaginationParams) Options() []repository.Option
Options returns repository options for database pagination.
func (PaginationParams) Page ¶
func (p PaginationParams) Page() int
Page returns the page number (1-indexed).
func (PaginationParams) PageSize ¶
func (p PaginationParams) PageSize() int
PageSize returns the page size.
func (PaginationParams) WithPage ¶
func (p PaginationParams) WithPage(page int) PaginationParams
WithPage returns a copy with the specified page.
func (PaginationParams) WithPageSize ¶
func (p PaginationParams) WithPageSize(size int) PaginationParams
WithPageSize returns a copy with the specified page size.
type QueueRouter ¶
type QueueRouter struct {
// contains filtered or unexported fields
}
QueueRouter handles queue API endpoints.
func NewQueueRouter ¶
func NewQueueRouter(client *kodit.Client) *QueueRouter
NewQueueRouter creates a new QueueRouter.
func (*QueueRouter) GetTask ¶
func (r *QueueRouter) GetTask(w http.ResponseWriter, req *http.Request)
GetTask handles GET /api/v1/queue/{task_id}.
@Summary Get task
@Description Get a task by ID
@Tags queue
@Accept json
@Produce json
@Param task_id path int true "Task ID"
@Success 200 {object} dto.TaskResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /queue/{task_id} [get]
func (*QueueRouter) ListTasks ¶
func (r *QueueRouter) ListTasks(w http.ResponseWriter, req *http.Request)
ListTasks handles GET /api/v1/queue. Supports optional task_type filter.
@Summary List tasks
@Description List tasks in the queue
@Tags queue
@Accept json
@Produce json
@Param page query int false "Page number (default: 1)"
@Param page_size query int false "Results per page (default: 20, max: 100)"
@Param task_type query string false "Filter by task type"
@Success 200 {object} dto.TaskListResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /queue [get]
func (*QueueRouter) Routes ¶
func (r *QueueRouter) Routes() chi.Router
Routes returns the chi router for queue endpoints.
type RepositoriesRouter ¶
type RepositoriesRouter struct {
// contains filtered or unexported fields
}
RepositoriesRouter handles repository API endpoints.
func NewRepositoriesRouter ¶
func NewRepositoriesRouter(client *kodit.Client) *RepositoriesRouter
NewRepositoriesRouter creates a new RepositoriesRouter.
func (*RepositoriesRouter) Add ¶
func (r *RepositoriesRouter) Add(w http.ResponseWriter, req *http.Request)
Add handles POST /api/v1/repositories.
@Summary Add repository
@Description Add a new Git repository to track
@Tags repositories
@Accept json
@Produce json
@Param body body dto.RepositoryCreateRequest true "Repository request"
@Success 200 {object} dto.RepositoryResponse "Repository already exists"
@Success 201 {object} dto.RepositoryResponse "Repository created"
@Failure 400 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories [post]
func (*RepositoriesRouter) Delete ¶
func (r *RepositoriesRouter) Delete(w http.ResponseWriter, req *http.Request)
Delete handles DELETE /api/v1/repositories/{id}.
@Summary Delete repository
@Description Delete a repository by ID
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Success 204
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id} [delete]
func (*RepositoriesRouter) DeleteCommitEnrichment ¶
func (r *RepositoriesRouter) DeleteCommitEnrichment(w http.ResponseWriter, req *http.Request)
DeleteCommitEnrichment handles DELETE /api/v1/repositories/{id}/commits/{commit_sha}/enrichments/{enrichment_id}.
@Summary Delete commit enrichment
@Description Delete a specific enrichment from a commit
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param commit_sha path string true "Commit SHA"
@Param enrichment_id path int true "Enrichment ID"
@Success 204
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/commits/{commit_sha}/enrichments/{enrichment_id} [delete]
func (*RepositoriesRouter) DeleteCommitEnrichments ¶
func (r *RepositoriesRouter) DeleteCommitEnrichments(w http.ResponseWriter, req *http.Request)
DeleteCommitEnrichments handles DELETE /api/v1/repositories/{id}/commits/{commit_sha}/enrichments.
@Summary Delete commit enrichments
@Description Delete all enrichments for a commit
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param commit_sha path string true "Commit SHA"
@Success 204
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/commits/{commit_sha}/enrichments [delete]
func (*RepositoriesRouter) Get ¶
func (r *RepositoriesRouter) Get(w http.ResponseWriter, req *http.Request)
Get handles GET /api/v1/repositories/{id}.
@Summary Get repository
@Description Get a repository by ID
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Success 200 {object} dto.RepositoryDetailsResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id} [get]
func (*RepositoriesRouter) GetBlob ¶
func (r *RepositoriesRouter) GetBlob(w http.ResponseWriter, req *http.Request)
GetBlob handles GET /api/v1/repositories/{id}/blob/{blob_name}/*.
@Summary Get raw file content
@Description Returns raw file content from a Git repository at a given blob reference (commit SHA, tag, or branch)
@Tags repositories
@Produce octet-stream
@Produce plain
@Param id path int true "Repository ID"
@Param blob_name path string true "Commit SHA, tag name, or branch name"
@Param path path string true "File path within the repository"
@Param lines query string false "Line ranges to extract (e.g. L17-L26,L45,L55-L90)"
@Param line_numbers query bool false "Prefix each line with its 1-based line number"
@Success 200
@Failure 400 {object} middleware.JSONAPIErrorResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Router /repositories/{id}/blob/{blob_name}/{path} [get]
func (*RepositoriesRouter) GetCommit ¶
func (r *RepositoriesRouter) GetCommit(w http.ResponseWriter, req *http.Request)
GetCommit handles GET /api/v1/repositories/{id}/commits/{commit_sha}.
@Summary Get commit
@Description Get a commit by SHA
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param commit_sha path string true "Commit SHA"
@Success 200 {object} dto.CommitJSONAPIResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/commits/{commit_sha} [get]
func (*RepositoriesRouter) GetCommitEnrichment ¶
func (r *RepositoriesRouter) GetCommitEnrichment(w http.ResponseWriter, req *http.Request)
GetCommitEnrichment handles GET /api/v1/repositories/{id}/commits/{commit_sha}/enrichments/{enrichment_id}.
@Summary Get commit enrichment
@Description Get an enrichment by ID within commit context
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param commit_sha path string true "Commit SHA"
@Param enrichment_id path int true "Enrichment ID"
@Success 200 {object} dto.EnrichmentJSONAPIResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/commits/{commit_sha}/enrichments/{enrichment_id} [get]
func (*RepositoriesRouter) GetCommitFile ¶
func (r *RepositoriesRouter) GetCommitFile(w http.ResponseWriter, req *http.Request)
GetCommitFile handles GET /api/v1/repositories/{id}/commits/{commit_sha}/files/{blob_sha}.
@Summary Get commit file
@Description Get a file by blob SHA
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param commit_sha path string true "Commit SHA"
@Param blob_sha path string true "Blob SHA"
@Success 200 {object} dto.FileJSONAPIResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/commits/{commit_sha}/files/{blob_sha} [get]
func (*RepositoriesRouter) GetStatus ¶
func (r *RepositoriesRouter) GetStatus(w http.ResponseWriter, req *http.Request)
GetStatus handles GET /api/v1/repositories/{id}/status.
@Summary Get repository status
@Description Get indexing task status for a repository
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Success 200 {object} dto.TaskStatusListResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/status [get]
func (*RepositoriesRouter) GetStatusSummary ¶
func (r *RepositoriesRouter) GetStatusSummary(w http.ResponseWriter, req *http.Request)
GetStatusSummary handles GET /api/v1/repositories/{id}/status/summary.
@Summary Get repository status summary
@Description Get aggregated indexing status summary for a repository
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Success 200 {object} dto.RepositoryStatusSummaryResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/status/summary [get]
func (*RepositoriesRouter) GetTag ¶
func (r *RepositoriesRouter) GetTag(w http.ResponseWriter, req *http.Request)
GetTag handles GET /api/v1/repositories/{id}/tags/{tag_name}.
@Summary Get tag
@Description Get a tag by name
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param tag_name path string true "Tag name"
@Success 200 {object} dto.TagJSONAPIResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/tags/{tag_name} [get]
func (*RepositoriesRouter) GetTrackingConfig ¶
func (r *RepositoriesRouter) GetTrackingConfig(w http.ResponseWriter, req *http.Request)
GetTrackingConfig handles GET /api/v1/repositories/{id}/tracking-config.
@Summary Get tracking config
@Description Get current tracking configuration for a repository
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Success 200 {object} dto.TrackingConfigResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/tracking-config [get]
func (*RepositoriesRouter) GetWikiPage ¶
func (r *RepositoriesRouter) GetWikiPage(w http.ResponseWriter, req *http.Request)
GetWikiPage handles GET /api/v1/repositories/{id}/wiki/*. Serves a single wiki page as raw markdown with rewritten links.
@Summary Get wiki page
@Description Get a wiki page by hierarchical path as raw markdown
@Tags repositories
@Produce text/markdown
@Param id path int true "Repository ID"
@Param path path string true "Wiki page path (e.g. architecture/database-layer.md)"
@Success 200 {string} string
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/wiki/{path} [get]
func (*RepositoriesRouter) GetWikiTree ¶
func (r *RepositoriesRouter) GetWikiTree(w http.ResponseWriter, req *http.Request)
GetWikiTree handles GET /api/v1/repositories/{id}/wiki.
@Summary Get wiki tree
@Description Get the wiki navigation tree (titles and paths, no content)
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Success 200 {object} dto.WikiTreeResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/wiki [get]
func (*RepositoriesRouter) Grep ¶
func (r *RepositoriesRouter) Grep(w http.ResponseWriter, req *http.Request)
Grep searches file contents in a repository using git grep. Deprecated: Use GET /api/v1/search/grep instead.
func (*RepositoriesRouter) List ¶
func (r *RepositoriesRouter) List(w http.ResponseWriter, req *http.Request)
List handles GET /api/v1/repositories.
@Summary List repositories
@Description Get all tracked Git repositories
@Tags repositories
@Accept json
@Produce json
@Param page query int false "Page number (default: 1)"
@Param page_size query int false "Results per page (default: 20, max: 100)"
@Success 200 {object} dto.RepositoryListResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories [get]
func (*RepositoriesRouter) ListCommitEmbeddingsDeprecated ¶
func (r *RepositoriesRouter) ListCommitEmbeddingsDeprecated(w http.ResponseWriter, req *http.Request)
ListCommitEmbeddingsDeprecated handles GET /api/v1/repositories/{id}/commits/{commit_sha}/embeddings. This endpoint is deprecated. Embeddings are an internal implementation detail of snippets and enrichments.
@Summary List commit embeddings (deprecated)
@Description This endpoint has been removed. Embeddings are an internal detail of snippets and enrichments.
@Tags repositories
@Produce json
@Param id path int true "Repository ID"
@Param commit_sha path string true "Commit SHA"
@Success 410 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Deprecated
@Router /repositories/{id}/commits/{commit_sha}/embeddings [get]
func (*RepositoriesRouter) ListCommitEnrichments ¶
func (r *RepositoriesRouter) ListCommitEnrichments(w http.ResponseWriter, req *http.Request)
ListCommitEnrichments handles GET /api/v1/repositories/{id}/commits/{commit_sha}/enrichments.
@Summary List commit enrichments
@Description List enrichments for a commit
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param commit_sha path string true "Commit SHA"
@Param enrichment_type query string false "Filter by enrichment type"
@Param enrichment_subtype query string false "Filter by enrichment subtype"
@Param page query int false "Page number (default: 1)"
@Param page_size query int false "Results per page (default: 20, max: 100)"
@Success 200 {object} dto.EnrichmentJSONAPIListResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/commits/{commit_sha}/enrichments [get]
func (*RepositoriesRouter) ListCommitFiles ¶
func (r *RepositoriesRouter) ListCommitFiles(w http.ResponseWriter, req *http.Request)
ListCommitFiles handles GET /api/v1/repositories/{id}/commits/{commit_sha}/files.
@Summary List commit files
@Description List files for a commit
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param commit_sha path string true "Commit SHA"
@Param page query int false "Page number (default: 1)"
@Param page_size query int false "Results per page (default: 20, max: 100)"
@Success 200 {object} dto.FileJSONAPIListResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/commits/{commit_sha}/files [get]
func (*RepositoriesRouter) ListCommitSnippets ¶
func (r *RepositoriesRouter) ListCommitSnippets(w http.ResponseWriter, req *http.Request)
ListCommitSnippets handles GET /api/v1/repositories/{id}/commits/{commit_sha}/snippets.
@Summary List commit snippets
@Description List code snippets for a commit (backed by enrichments)
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param commit_sha path string true "Commit SHA"
@Param page query int false "Page number (default: 1)"
@Param page_size query int false "Results per page (default: 20, max: 100)"
@Success 200 {object} dto.SnippetListResponse
@Failure 401 {object} middleware.JSONAPIErrorResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/commits/{commit_sha}/snippets [get]
func (*RepositoriesRouter) ListCommits ¶
func (r *RepositoriesRouter) ListCommits(w http.ResponseWriter, req *http.Request)
ListCommits handles GET /api/v1/repositories/{id}/commits.
@Summary List commits
@Description List commits for a repository
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param page query int false "Page number (default: 1)"
@Param page_size query int false "Results per page (default: 20, max: 100)"
@Success 200 {object} dto.CommitJSONAPIListResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/commits [get]
func (*RepositoriesRouter) ListRepositoryEnrichments ¶
func (r *RepositoriesRouter) ListRepositoryEnrichments(w http.ResponseWriter, req *http.Request)
ListRepositoryEnrichments handles GET /api/v1/repositories/{id}/enrichments. Lists the most recent enrichments for a repository across commits.
@Summary List repository enrichments
@Description List recent enrichments across commits for a repository
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param enrichment_type query string false "Filter by enrichment type"
@Param max_commits_to_check query int false "Max commits to check (default: 100)"
@Param page query int false "Page number (default: 1)"
@Param page_size query int false "Results per page (default: 20, max: 100)"
@Success 200 {object} dto.EnrichmentJSONAPIListResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/enrichments [get]
func (*RepositoriesRouter) ListTags ¶
func (r *RepositoriesRouter) ListTags(w http.ResponseWriter, req *http.Request)
ListTags handles GET /api/v1/repositories/{id}/tags.
@Summary List tags
@Description List tags for a repository
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param page query int false "Page number (default: 1)"
@Param page_size query int false "Results per page (default: 20, max: 100)"
@Success 200 {object} dto.TagJSONAPIListResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/tags [get]
func (*RepositoriesRouter) RescanCommit ¶
func (r *RepositoriesRouter) RescanCommit(w http.ResponseWriter, req *http.Request)
RescanCommit handles POST /api/v1/repositories/{id}/commits/{commit_sha}/rescan.
@Summary Rescan commit
@Description Trigger a rescan of a specific commit
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param commit_sha path string true "Commit SHA"
@Success 202
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/commits/{commit_sha}/rescan [post]
func (*RepositoriesRouter) RescanWiki ¶
func (r *RepositoriesRouter) RescanWiki(w http.ResponseWriter, req *http.Request)
RescanWiki handles POST /api/v1/repositories/{id}/wiki/rescan.
@Summary Rescan wiki
@Description Delete the existing wiki and regenerate it from scratch
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Success 202
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/wiki/rescan [post]
func (*RepositoriesRouter) Routes ¶
func (r *RepositoriesRouter) Routes() chi.Router
Routes returns the chi router for repository endpoints.
func (*RepositoriesRouter) Sync ¶
func (r *RepositoriesRouter) Sync(w http.ResponseWriter, req *http.Request)
Sync handles POST /api/v1/repositories/{id}/sync.
@Summary Sync repository
@Description Trigger a sync (git fetch + branch scan + commit indexing) for a repository
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Success 202
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/sync [post]
func (*RepositoriesRouter) UpdateTrackingConfig ¶
func (r *RepositoriesRouter) UpdateTrackingConfig(w http.ResponseWriter, req *http.Request)
UpdateTrackingConfig handles PUT /api/v1/repositories/{id}/tracking-config.
@Summary Update tracking config
@Description Update tracking configuration for a repository
@Tags repositories
@Accept json
@Produce json
@Param id path int true "Repository ID"
@Param body body dto.TrackingConfigUpdateRequest true "Tracking config"
@Success 200 {object} dto.TrackingConfigResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Security APIKeyAuth
@Router /repositories/{id}/tracking-config [put]
type SearchRouter ¶
type SearchRouter struct {
// contains filtered or unexported fields
}
SearchRouter handles search API endpoints.
func NewSearchRouter ¶
func NewSearchRouter(client *kodit.Client) *SearchRouter
NewSearchRouter creates a new SearchRouter.
func (*SearchRouter) Grep ¶
func (r *SearchRouter) Grep(w http.ResponseWriter, req *http.Request)
Grep handles GET /api/v1/search/grep.
@Summary Search file contents with grep
@Description Search file contents in a repository using git grep with regex patterns
@Tags search
@Produce json
@Param repository_id query int true "Repository ID"
@Param pattern query string true "Regex pattern to search for"
@Param glob query string false "File path filter (e.g. *.go, src/**/*.ts)"
@Param limit query int false "Maximum number of file results (default 10, max 200)"
@Success 200 {object} dto.GrepResponse
@Failure 400 {object} middleware.JSONAPIErrorResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Router /search/grep [get]
func (*SearchRouter) KeywordSearch ¶
func (r *SearchRouter) KeywordSearch(w http.ResponseWriter, req *http.Request)
KeywordSearch handles GET /api/v1/search/keyword.
@Summary Keyword code search
@Description Search code snippets using BM25 keyword matching
@Tags search
@Produce json
@Param keywords query string true "Search keywords"
@Param language query string false "Language filter (e.g. py, go)"
@Param repository_id query int false "Repository ID filter"
@Param limit query int false "Maximum results (default 10)"
@Success 200 {object} dto.SearchResponse
@Failure 400 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Router /search/keyword [get]
func (*SearchRouter) Ls ¶
func (r *SearchRouter) Ls(w http.ResponseWriter, req *http.Request)
Ls handles GET /api/v1/search/ls.
@Summary List files matching a glob pattern
@Description Returns files from a repository working copy matching a glob pattern, with file:// URIs
@Tags search
@Accept json
@Produce json
@Param repository_id query int true "Repository ID"
@Param pattern query string true "Glob/pathspec pattern (e.g. **/*.go, src/*.py)"
@Param page query int false "Page number (default: 1)"
@Param page_size query int false "Results per page (default: 20, max: 100)"
@Success 200 {object} dto.LsResponse
@Failure 400 {object} middleware.JSONAPIErrorResponse
@Failure 404 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Router /search/ls [get]
func (*SearchRouter) Routes ¶
func (r *SearchRouter) Routes() chi.Router
Routes returns the chi router for search endpoints.
func (*SearchRouter) Search ¶
func (r *SearchRouter) Search(w http.ResponseWriter, req *http.Request)
Search handles POST /api/v1/search.
@Summary Search code
@Description Hybrid search across code snippets and enrichments
@Tags search
@Accept json
@Produce json
@Param body body dto.SearchRequest true "Search request"
@Success 200 {object} dto.SearchResponse
@Failure 400 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Router /search [post]
func (*SearchRouter) SemanticSearch ¶
func (r *SearchRouter) SemanticSearch(w http.ResponseWriter, req *http.Request)
SemanticSearch handles GET /api/v1/search/semantic.
@Summary Semantic code search
@Description Search code snippets using semantic similarity
@Tags search
@Produce json
@Param query query string true "Natural language search query"
@Param language query string false "Language filter (e.g. py, go)"
@Param repository_id query int false "Repository ID filter"
@Param limit query int false "Maximum results (default 10)"
@Success 200 {object} dto.SearchResponse
@Failure 400 {object} middleware.JSONAPIErrorResponse
@Failure 500 {object} middleware.JSONAPIErrorResponse
@Router /search/semantic [get]