# Go API client for hindsight

HTTP API for Hindsight

## Overview
This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.  By using the [OpenAPI-spec](https://www.openapis.org/) from a remote server, you can easily generate an API client.

- API version: 0.4.11
- Package version: 1.0.0
- Generator version: 7.10.0
- Build package: org.openapitools.codegen.languages.GoClientCodegen

## Installation

Install the following dependencies:

```sh
go get github.com/stretchr/testify/assert
go get golang.org/x/net/context
```

Put the package under your project folder and add the following in import:

```go
import hindsight "github.com/vectorize-io/hindsight/hindsight-clients/go"
```

To use a proxy, set the environment variable `HTTP_PROXY`:

```go
os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port")
```

## Configuration of Server URL

Default configuration comes with `Servers` field that contains server objects as defined in the OpenAPI specification.

### Select Server Configuration

For using other server than the one defined on index 0 set context value `hindsight.ContextServerIndex` of type `int`.

```go
ctx := context.WithValue(context.Background(), hindsight.ContextServerIndex, 1)
```

### Templated Server URL

Templated server URL is formatted using default variables from configuration or from context value `hindsight.ContextServerVariables` of type `map[string]string`.

```go
ctx := context.WithValue(context.Background(), hindsight.ContextServerVariables, map[string]string{
	"basePath": "v2",
})
```

Note, enum values are always validated and all unused variables are silently ignored.

### URLs Configuration per Operation

Each operation can use different server URL defined using `OperationServers` map in the `Configuration`.
An operation is uniquely identified by `"{classname}Service.{nickname}"` string.
Similar rules for overriding default operation server index and variables applies by using `hindsight.ContextOperationServerIndices` and `hindsight.ContextOperationServerVariables` context maps.

```go
ctx := context.WithValue(context.Background(), hindsight.ContextOperationServerIndices, map[string]int{
	"{classname}Service.{nickname}": 2,
})
ctx = context.WithValue(context.Background(), hindsight.ContextOperationServerVariables, map[string]map[string]string{
	"{classname}Service.{nickname}": {
		"port": "8443",
	},
})
```

## Documentation for API Endpoints

All URIs are relative to *http://localhost*

Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
*BanksAPI* | [**AddBankBackground**](docs/BanksAPI.md#addbankbackground) | **Post** /v1/default/banks/{bank_id}/background | Add/merge memory bank background (deprecated)
*BanksAPI* | [**ClearObservations**](docs/BanksAPI.md#clearobservations) | **Delete** /v1/default/banks/{bank_id}/observations | Clear all observations
*BanksAPI* | [**CreateOrUpdateBank**](docs/BanksAPI.md#createorupdatebank) | **Put** /v1/default/banks/{bank_id} | Create or update memory bank
*BanksAPI* | [**DeleteBank**](docs/BanksAPI.md#deletebank) | **Delete** /v1/default/banks/{bank_id} | Delete memory bank
*BanksAPI* | [**GetAgentStats**](docs/BanksAPI.md#getagentstats) | **Get** /v1/default/banks/{bank_id}/stats | Get statistics for memory bank
*BanksAPI* | [**GetBankConfig**](docs/BanksAPI.md#getbankconfig) | **Get** /v1/default/banks/{bank_id}/config | Get bank configuration
*BanksAPI* | [**GetBankProfile**](docs/BanksAPI.md#getbankprofile) | **Get** /v1/default/banks/{bank_id}/profile | Get memory bank profile
*BanksAPI* | [**ListBanks**](docs/BanksAPI.md#listbanks) | **Get** /v1/default/banks | List all memory banks
*BanksAPI* | [**ResetBankConfig**](docs/BanksAPI.md#resetbankconfig) | **Delete** /v1/default/banks/{bank_id}/config | Reset bank configuration
*BanksAPI* | [**TriggerConsolidation**](docs/BanksAPI.md#triggerconsolidation) | **Post** /v1/default/banks/{bank_id}/consolidate | Trigger consolidation
*BanksAPI* | [**UpdateBank**](docs/BanksAPI.md#updatebank) | **Patch** /v1/default/banks/{bank_id} | Partial update memory bank
*BanksAPI* | [**UpdateBankConfig**](docs/BanksAPI.md#updatebankconfig) | **Patch** /v1/default/banks/{bank_id}/config | Update bank configuration
*BanksAPI* | [**UpdateBankDisposition**](docs/BanksAPI.md#updatebankdisposition) | **Put** /v1/default/banks/{bank_id}/profile | Update memory bank disposition
*DirectivesAPI* | [**CreateDirective**](docs/DirectivesAPI.md#createdirective) | **Post** /v1/default/banks/{bank_id}/directives | Create directive
*DirectivesAPI* | [**DeleteDirective**](docs/DirectivesAPI.md#deletedirective) | **Delete** /v1/default/banks/{bank_id}/directives/{directive_id} | Delete directive
*DirectivesAPI* | [**GetDirective**](docs/DirectivesAPI.md#getdirective) | **Get** /v1/default/banks/{bank_id}/directives/{directive_id} | Get directive
*DirectivesAPI* | [**ListDirectives**](docs/DirectivesAPI.md#listdirectives) | **Get** /v1/default/banks/{bank_id}/directives | List directives
*DirectivesAPI* | [**UpdateDirective**](docs/DirectivesAPI.md#updatedirective) | **Patch** /v1/default/banks/{bank_id}/directives/{directive_id} | Update directive
*DocumentsAPI* | [**DeleteDocument**](docs/DocumentsAPI.md#deletedocument) | **Delete** /v1/default/banks/{bank_id}/documents/{document_id} | Delete a document
*DocumentsAPI* | [**GetChunk**](docs/DocumentsAPI.md#getchunk) | **Get** /v1/default/chunks/{chunk_id} | Get chunk details
*DocumentsAPI* | [**GetDocument**](docs/DocumentsAPI.md#getdocument) | **Get** /v1/default/banks/{bank_id}/documents/{document_id} | Get document details
*DocumentsAPI* | [**ListDocuments**](docs/DocumentsAPI.md#listdocuments) | **Get** /v1/default/banks/{bank_id}/documents | List documents
*EntitiesAPI* | [**GetEntity**](docs/EntitiesAPI.md#getentity) | **Get** /v1/default/banks/{bank_id}/entities/{entity_id} | Get entity details
*EntitiesAPI* | [**ListEntities**](docs/EntitiesAPI.md#listentities) | **Get** /v1/default/banks/{bank_id}/entities | List entities
*EntitiesAPI* | [**RegenerateEntityObservations**](docs/EntitiesAPI.md#regenerateentityobservations) | **Post** /v1/default/banks/{bank_id}/entities/{entity_id}/regenerate | Regenerate entity observations (deprecated)
*MemoryAPI* | [**ClearBankMemories**](docs/MemoryAPI.md#clearbankmemories) | **Delete** /v1/default/banks/{bank_id}/memories | Clear memory bank memories
*MemoryAPI* | [**GetGraph**](docs/MemoryAPI.md#getgraph) | **Get** /v1/default/banks/{bank_id}/graph | Get memory graph data
*MemoryAPI* | [**GetMemory**](docs/MemoryAPI.md#getmemory) | **Get** /v1/default/banks/{bank_id}/memories/{memory_id} | Get memory unit
*MemoryAPI* | [**ListMemories**](docs/MemoryAPI.md#listmemories) | **Get** /v1/default/banks/{bank_id}/memories/list | List memory units
*MemoryAPI* | [**ListTags**](docs/MemoryAPI.md#listtags) | **Get** /v1/default/banks/{bank_id}/tags | List tags
*MemoryAPI* | [**RecallMemories**](docs/MemoryAPI.md#recallmemories) | **Post** /v1/default/banks/{bank_id}/memories/recall | Recall memory
*MemoryAPI* | [**Reflect**](docs/MemoryAPI.md#reflect) | **Post** /v1/default/banks/{bank_id}/reflect | Reflect and generate answer
*MemoryAPI* | [**RetainMemories**](docs/MemoryAPI.md#retainmemories) | **Post** /v1/default/banks/{bank_id}/memories | Retain memories
*MentalModelsAPI* | [**CreateMentalModel**](docs/MentalModelsAPI.md#creatementalmodel) | **Post** /v1/default/banks/{bank_id}/mental-models | Create mental model
*MentalModelsAPI* | [**DeleteMentalModel**](docs/MentalModelsAPI.md#deletementalmodel) | **Delete** /v1/default/banks/{bank_id}/mental-models/{mental_model_id} | Delete mental model
*MentalModelsAPI* | [**GetMentalModel**](docs/MentalModelsAPI.md#getmentalmodel) | **Get** /v1/default/banks/{bank_id}/mental-models/{mental_model_id} | Get mental model
*MentalModelsAPI* | [**ListMentalModels**](docs/MentalModelsAPI.md#listmentalmodels) | **Get** /v1/default/banks/{bank_id}/mental-models | List mental models
*MentalModelsAPI* | [**RefreshMentalModel**](docs/MentalModelsAPI.md#refreshmentalmodel) | **Post** /v1/default/banks/{bank_id}/mental-models/{mental_model_id}/refresh | Refresh mental model
*MentalModelsAPI* | [**UpdateMentalModel**](docs/MentalModelsAPI.md#updatementalmodel) | **Patch** /v1/default/banks/{bank_id}/mental-models/{mental_model_id} | Update mental model
*MonitoringAPI* | [**GetVersion**](docs/MonitoringAPI.md#getversion) | **Get** /version | Get API version and feature flags
*MonitoringAPI* | [**HealthEndpointHealthGet**](docs/MonitoringAPI.md#healthendpointhealthget) | **Get** /health | Health check endpoint
*MonitoringAPI* | [**MetricsEndpointMetricsGet**](docs/MonitoringAPI.md#metricsendpointmetricsget) | **Get** /metrics | Prometheus metrics endpoint
*OperationsAPI* | [**CancelOperation**](docs/OperationsAPI.md#canceloperation) | **Delete** /v1/default/banks/{bank_id}/operations/{operation_id} | Cancel a pending async operation
*OperationsAPI* | [**GetOperationStatus**](docs/OperationsAPI.md#getoperationstatus) | **Get** /v1/default/banks/{bank_id}/operations/{operation_id} | Get operation status
*OperationsAPI* | [**ListOperations**](docs/OperationsAPI.md#listoperations) | **Get** /v1/default/banks/{bank_id}/operations | List async operations


## Documentation For Models

 - [AddBackgroundRequest](docs/AddBackgroundRequest.md)
 - [AsyncOperationSubmitResponse](docs/AsyncOperationSubmitResponse.md)
 - [BackgroundResponse](docs/BackgroundResponse.md)
 - [BankConfigResponse](docs/BankConfigResponse.md)
 - [BankConfigUpdate](docs/BankConfigUpdate.md)
 - [BankListItem](docs/BankListItem.md)
 - [BankListResponse](docs/BankListResponse.md)
 - [BankProfileResponse](docs/BankProfileResponse.md)
 - [BankStatsResponse](docs/BankStatsResponse.md)
 - [Budget](docs/Budget.md)
 - [CancelOperationResponse](docs/CancelOperationResponse.md)
 - [ChunkData](docs/ChunkData.md)
 - [ChunkIncludeOptions](docs/ChunkIncludeOptions.md)
 - [ChunkResponse](docs/ChunkResponse.md)
 - [ConsolidationResponse](docs/ConsolidationResponse.md)
 - [CreateBankRequest](docs/CreateBankRequest.md)
 - [CreateDirectiveRequest](docs/CreateDirectiveRequest.md)
 - [CreateMentalModelRequest](docs/CreateMentalModelRequest.md)
 - [CreateMentalModelResponse](docs/CreateMentalModelResponse.md)
 - [DeleteDocumentResponse](docs/DeleteDocumentResponse.md)
 - [DeleteResponse](docs/DeleteResponse.md)
 - [DirectiveListResponse](docs/DirectiveListResponse.md)
 - [DirectiveResponse](docs/DirectiveResponse.md)
 - [DispositionTraits](docs/DispositionTraits.md)
 - [DocumentResponse](docs/DocumentResponse.md)
 - [EntityDetailResponse](docs/EntityDetailResponse.md)
 - [EntityIncludeOptions](docs/EntityIncludeOptions.md)
 - [EntityInput](docs/EntityInput.md)
 - [EntityListItem](docs/EntityListItem.md)
 - [EntityListResponse](docs/EntityListResponse.md)
 - [EntityObservationResponse](docs/EntityObservationResponse.md)
 - [EntityStateResponse](docs/EntityStateResponse.md)
 - [FeaturesInfo](docs/FeaturesInfo.md)
 - [GraphDataResponse](docs/GraphDataResponse.md)
 - [HTTPValidationError](docs/HTTPValidationError.md)
 - [IncludeOptions](docs/IncludeOptions.md)
 - [ListDocumentsResponse](docs/ListDocumentsResponse.md)
 - [ListMemoryUnitsResponse](docs/ListMemoryUnitsResponse.md)
 - [ListTagsResponse](docs/ListTagsResponse.md)
 - [MemoryItem](docs/MemoryItem.md)
 - [MentalModelListResponse](docs/MentalModelListResponse.md)
 - [MentalModelResponse](docs/MentalModelResponse.md)
 - [MentalModelTrigger](docs/MentalModelTrigger.md)
 - [OperationResponse](docs/OperationResponse.md)
 - [OperationStatusResponse](docs/OperationStatusResponse.md)
 - [OperationsListResponse](docs/OperationsListResponse.md)
 - [RecallRequest](docs/RecallRequest.md)
 - [RecallResponse](docs/RecallResponse.md)
 - [RecallResult](docs/RecallResult.md)
 - [ReflectBasedOn](docs/ReflectBasedOn.md)
 - [ReflectDirective](docs/ReflectDirective.md)
 - [ReflectFact](docs/ReflectFact.md)
 - [ReflectIncludeOptions](docs/ReflectIncludeOptions.md)
 - [ReflectLLMCall](docs/ReflectLLMCall.md)
 - [ReflectMentalModel](docs/ReflectMentalModel.md)
 - [ReflectRequest](docs/ReflectRequest.md)
 - [ReflectResponse](docs/ReflectResponse.md)
 - [ReflectToolCall](docs/ReflectToolCall.md)
 - [ReflectTrace](docs/ReflectTrace.md)
 - [RetainRequest](docs/RetainRequest.md)
 - [RetainResponse](docs/RetainResponse.md)
 - [TagItem](docs/TagItem.md)
 - [TokenUsage](docs/TokenUsage.md)
 - [ToolCallsIncludeOptions](docs/ToolCallsIncludeOptions.md)
 - [UpdateDirectiveRequest](docs/UpdateDirectiveRequest.md)
 - [UpdateDispositionRequest](docs/UpdateDispositionRequest.md)
 - [UpdateMentalModelRequest](docs/UpdateMentalModelRequest.md)
 - [ValidationError](docs/ValidationError.md)
 - [ValidationErrorLocInner](docs/ValidationErrorLocInner.md)
 - [VersionResponse](docs/VersionResponse.md)


## Documentation For Authorization

Endpoints do not require authorization.


## Documentation for Utility Methods

Due to the fact that model structure members are all pointers, this package contains
a number of utility functions to easily obtain pointers to values of basic types.
Each of these functions takes a value of the given basic type and returns a pointer to it:

* `PtrBool`
* `PtrInt`
* `PtrInt32`
* `PtrInt64`
* `PtrFloat`
* `PtrFloat32`
* `PtrFloat64`
* `PtrString`
* `PtrTime`

## Author



