v1

package
v1.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2026 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Overview

Package v1 provides the v1 API routes.

Index

Constants

View Source
const DefaultPageSize = 20

DefaultPageSize is the default number of items per page.

View Source
const MaxPageSize = 100

MaxPageSize is the maximum allowed page size.

Variables

This section is empty.

Functions

func PaginationLinks(r *http.Request, params PaginationParams, totalCount int64) *jsonapi.Links

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

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

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

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

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

Grep searches file contents in a repository using git grep. Deprecated: Use GET /api/v1/search/grep instead.

func (*RepositoriesRouter) List

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

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]

Directories

Path Synopsis
Package dto provides data transfer objects for the API layer.
Package dto provides data transfer objects for the API layer.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL