> For the complete documentation index, see [llms.txt](https://docs.eximee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eximee.com/documentation/documentation-en/eksploatacja-aplikacji/eximee-api/registry-api.md).

# Registry API

## GET /v1/{collection}/{id}

> Pobiera wpis z kolekcji po id

```json
{"openapi":"3.0.3","info":{"title":"Eximee Registry API","version":"1.0.0"},"tags":[{"name":"Registry"}],"servers":[{"url":"https://{host}/api/registry","variables":{"host":{"default":"localhost:8080"}}}],"security":[{"basicAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"}},"schemas":{"RegistryEntryResponse":{"type":"object","properties":{"id":{"type":"string","description":"unikalny identyfikator wpisu w kolekcji"},"data":{"type":"string","description":"dane wpisu (dowolny ładunek zapisany jako tekst)"},"version":{"type":"string","description":"aktualna wersja wpisu (generowana przy każdym zapisie)"}}}}},"paths":{"/v1/{collection}/{id}":{"get":{"tags":["Registry"],"operationId":"getEntry","summary":"Pobiera wpis z kolekcji po id","parameters":[{"in":"path","name":"collection","required":true,"description":"nazwa kolekcji rejestru.","schema":{"type":"string"}},{"in":"path","name":"id","required":true,"description":"unikalny identyfikator wpisu w kolekcji.","schema":{"type":"string"}}],"responses":{"200":{"description":"Wpis rejestru. Jeśli wpis o podanym identyfikatorze nie istnieje,\nzwracane jest puste ciało odpowiedzi.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryEntryResponse"}}}},"400":{"description":"Niepoprawne dane wejściowe."},"401":{"description":"Brak lub niepoprawne uwierzytelnienie."},"403":{"description":"Brak uprawnień."},"500":{"description":"Błąd wewnętrzny serwera."}}}}}}
```

## Tworzy nowy wpis w kolekcji lub nadpisuje istniejący

> Zapisuje wpis w podanej kolekcji (upsert). Obsługuje optymistyczne blokowanie\
> poprzez pole \`version\`:\
> \
> \- brak pola \`version\` (null) - zapis wymuszony, bez sprawdzania wersji,\
> \- \`version\` puste, a wpis o danym \`id\` już istnieje - zapis odrzucony,\
> \- \`version\` niezgodne z aktualnie zapisaną wersją wpisu - zapis odrzucony.<br>

```json
{"openapi":"3.0.3","info":{"title":"Eximee Registry API","version":"1.0.0"},"tags":[{"name":"Registry"}],"servers":[{"url":"https://{host}/api/registry","variables":{"host":{"default":"localhost:8080"}}}],"security":[{"basicAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"}},"schemas":{"UpsertRequest":{"type":"object","properties":{"id":{"type":"string","description":"unikalny identyfikator wpisu w kolekcji"},"data":{"type":"string","description":"dane wpisu (dowolny ładunek zapisany jako tekst)"},"version":{"type":"string","nullable":true,"description":"wersja wpisu na potrzeby optymistycznego blokowania.\nnull - zapis wymuszony bez sprawdzania wersji;\nwartość musi być zgodna z aktualną wersją zapisanego wpisu.\n"}},"required":["id"]},"ErrorResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"opis błędu"}},"required":["code","message"]}}},"paths":{"/v1/{collection}":{"post":{"tags":["Registry"],"operationId":"saveEntry","summary":"Tworzy nowy wpis w kolekcji lub nadpisuje istniejący","description":"Zapisuje wpis w podanej kolekcji (upsert). Obsługuje optymistyczne blokowanie\npoprzez pole `version`:\n\n- brak pola `version` (null) - zapis wymuszony, bez sprawdzania wersji,\n- `version` puste, a wpis o danym `id` już istnieje - zapis odrzucony,\n- `version` niezgodne z aktualnie zapisaną wersją wpisu - zapis odrzucony.\n","parameters":[{"in":"path","name":"collection","required":true,"description":"nazwa kolekcji rejestru.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRequest"}}}},"responses":{"204":{"description":"Wpis zapisany."},"400":{"description":"Niepoprawne dane wejściowe.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Brak lub niepoprawne uwierzytelnienie."},"403":{"description":"Brak uprawnień."},"500":{"description":"Błąd wewnętrzny serwera."}}}}}}
```

## DELETE /v1/{collection}/{id}

> Usuwa wpis z kolekcji po id

```json
{"openapi":"3.0.3","info":{"title":"Eximee Registry API","version":"1.0.0"},"tags":[{"name":"Registry"}],"servers":[{"url":"https://{host}/api/registry","variables":{"host":{"default":"localhost:8080"}}}],"security":[{"basicAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"}}},"paths":{"/v1/{collection}/{id}":{"delete":{"tags":["Registry"],"operationId":"deleteEntry","summary":"Usuwa wpis z kolekcji po id","parameters":[{"in":"path","name":"collection","required":true,"description":"nazwa kolekcji rejestru.","schema":{"type":"string"}},{"in":"path","name":"id","required":true,"description":"unikalny identyfikator wpisu w kolekcji.","schema":{"type":"string"}}],"responses":{"204":{"description":"Wpis usunięty."},"400":{"description":"Niepoprawne dane wejściowe."},"401":{"description":"Brak lub niepoprawne uwierzytelnienie."},"403":{"description":"Brak uprawnień."},"404":{"description":"Nie znaleziono wpisu."},"500":{"description":"Błąd wewnętrzny serwera."}}}}}}
```

## The RegistryEntryResponse object

```json
{"openapi":"3.0.3","info":{"title":"Eximee Registry API","version":"1.0.0"},"components":{"schemas":{"RegistryEntryResponse":{"type":"object","properties":{"id":{"type":"string","description":"unikalny identyfikator wpisu w kolekcji"},"data":{"type":"string","description":"dane wpisu (dowolny ładunek zapisany jako tekst)"},"version":{"type":"string","description":"aktualna wersja wpisu (generowana przy każdym zapisie)"}}}}}}
```

## The UpsertRequest object

```json
{"openapi":"3.0.3","info":{"title":"Eximee Registry API","version":"1.0.0"},"components":{"schemas":{"UpsertRequest":{"type":"object","properties":{"id":{"type":"string","description":"unikalny identyfikator wpisu w kolekcji"},"data":{"type":"string","description":"dane wpisu (dowolny ładunek zapisany jako tekst)"},"version":{"type":"string","nullable":true,"description":"wersja wpisu na potrzeby optymistycznego blokowania.\nnull - zapis wymuszony bez sprawdzania wersji;\nwartość musi być zgodna z aktualną wersją zapisanego wpisu.\n"}},"required":["id"]}}}}
```

## The ErrorResponse object

```json
{"openapi":"3.0.3","info":{"title":"Eximee Registry API","version":"1.0.0"},"components":{"schemas":{"ErrorResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"opis błędu"}},"required":["code","message"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.eximee.com/documentation/documentation-en/eksploatacja-aplikacji/eximee-api/registry-api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
