{"files":{"SKILL.md":"---\nname: obono-rksv-api\ndescription: \"obono RKSV API skill. Use when working with obono RKSV for auth, registrierkassen, belege. Covers 18 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# obono RKSV API\nAPI version: 1.4.0.0\n\n## Auth\nApiKey Authorization in header | basic\n\n## Base URL\nNot specified.\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /auth -- request a jwt access token using your obono username and password.\n3. POST /registrierkassen/{registrierkasseUuid}/abschluss -- create first abschluss\n\n## Endpoints\n18 endpoints across 4 groups. See references/api-spec.lap for full details.\n\n### Auth\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /auth | Request a JWT access token using your obono username and password. |\n\n### Registrierkassen\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /registrierkassen/{registrierkasseUuid} | Returns information about a particular `Registrierkasse`. |\n| GET | /registrierkassen/{registrierkasseUuid}/dep | Generates a DEP file. |\n| POST | /registrierkassen/{registrierkasseUuid}/abschluss | Generates an `Abschlussbeleg`. |\n| GET | /registrierkassen/{registrierkasseUuid}/belege | Retrieves the `Beleg` collection from the \"Datenerfassungsprotokoll\". |\n| PUT | /registrierkassen/{registrierkasseUuid}/belege/{belegUuid} | Signs a receipt and stores it in the \"Datenerfassungsprotokoll\". |\n| GET | /registrierkassen/{registrierkasseUuid}/belege/{belegUuid} | Retrieves a particular `Beleg` from the \"Datenerfassungsprotokoll\". |\n| GET | /registrierkassen/{registrierkasseUuid}/monatsbelege | Returns a list of `Monatsbelege`. |\n\n### Belege\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /belege/{belegUuid} | Retrieves a particular `Beleg` from the \"Datenerfassungsprotokoll\". |\n\n### Export\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /export/pdf/belege/{belegUuid} |  |\n| GET | /export/qr/belege/{belegUuid} |  |\n| GET | /export/html/belege/{belegUuid} |  |\n| GET | /export/thermal-print/belege/{belegUuid} |  |\n| GET | /export/gobd/registrierkassen/{registrierkasseUuid} |  |\n| GET | /export/xls/registrierkassen/{registrierkasseUuid}/belege |  |\n| GET | /export/csv/registrierkassen/{registrierkasseUuid}/belege |  |\n| GET | /export/dep7/registrierkassen/{registrierkasseUuid}/belege |  |\n| GET | /export/dep131/registrierkassen/{registrierkasseUuid}/belege |  |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all auth?\" -> GET /auth\n- \"Get registrierkassen details?\" -> GET /registrierkassen/{registrierkasseUuid}\n- \"List all dep?\" -> GET /registrierkassen/{registrierkasseUuid}/dep\n- \"Create a abschluss?\" -> POST /registrierkassen/{registrierkasseUuid}/abschluss\n- \"List all belege?\" -> GET /registrierkassen/{registrierkasseUuid}/belege\n- \"Update a belege?\" -> PUT /registrierkassen/{registrierkasseUuid}/belege/{belegUuid}\n- \"Get belege details?\" -> GET /registrierkassen/{registrierkasseUuid}/belege/{belegUuid}\n- \"List all monatsbelege?\" -> GET /registrierkassen/{registrierkasseUuid}/monatsbelege\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api obono RKSV API\n@version 1.4.0.0\n@auth ApiKey Authorization in header | basic\n@endpoints 18\n@toc auth(1), registrierkassen(7), belege(1), export(9)\n\n@group auth\n@endpoint GET /auth\n@desc Request a JWT access token using your obono username and password.\n@returns(200) The JWT `accessToken` to use for accessing secured resourced as well as the `registrierkassenUuid` of the corresponding \"Registrierkasse\".\n\n@endgroup\n\n@group registrierkassen\n@endpoint GET /registrierkassen/{registrierkasseUuid}\n@desc Returns information about a particular `Registrierkasse`.\n@required {registrierkasseUuid: any # The `_uuid` of a particular `Registrierkasse` to fetch.}\n@returns(200) Information about a particular `Registrierkasse`.\n@errors {404: This particular `Registrierkasse` does not exist.}\n\n@endpoint GET /registrierkassen/{registrierkasseUuid}/dep\n@desc Generates a DEP file.\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse` to retrieve the DEP file.}\n@returns(200) The DEP file.\n\n@endpoint POST /registrierkassen/{registrierkasseUuid}/abschluss\n@desc Generates an `Abschlussbeleg`.\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse` to retrieve the `Beleg` collection., abschlussbelegdaten: map # An object that contains all data for a particular `Abschlussbeleg`.}\n@returns(201) The `Abschlussbeleg` has been created, signed and added to the \"Datenerfassungsprotokoll\".\n\n@endpoint GET /registrierkassen/{registrierkasseUuid}/belege\n@desc Retrieves the `Beleg` collection from the \"Datenerfassungsprotokoll\".\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse` to retrieve the `Beleg` collection., format: any # Determines the format of the `Beleg` collection.}\n@optional {order: any # Determines the sorting order., limit: any # Limits the number of returned results., offset: any # Skips the specified number of results from the result set., before: any # Only return results that where saved before the specified date-time string (i.e., anything that `Date.parse()` can parse)., after: any # Only return results that where saved after the specified date-time string (i.e., anything that `Date.parse()` can parse)., gte: any # Only return results that have at least a particular `Belegnummer`., lte: any # Only return results that have at most a particular `Belegnummer`.}\n@returns(200) The `Beleg` collection from the \"Datenerfassungsprotokoll\".\n\n@endpoint PUT /registrierkassen/{registrierkasseUuid}/belege/{belegUuid}\n@desc Signs a receipt and stores it in the \"Datenerfassungsprotokoll\".\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse` to use for signing data., belegUuid: any # The `_uuid` of the `Beleg` to store., belegdaten: map # An object that contains all data for a particular `Beleg` and is formatted according to RKSV \"Signaturformat\".}\n@returns(201) The `Beleg` has been signed and added to the \"Datenerfassungsprotokoll\".\n@errors {400: The provided request payload is invalid i.e. not conform the the JSON schema., 403: Access token is either missing or invalid. Be sure to include the Authorization HTTP header., 409: A `Beleg` with this particular `belegUuid` already exists., 415: The provided request payload is not JSON encoded., 429: Request limit exceeded., 500: The receipt could not be signed either because the HSM delivered invalid data or the request signing request timed out (currently after 10 seconds).}\n\n@endpoint GET /registrierkassen/{registrierkasseUuid}/belege/{belegUuid}\n@desc Retrieves a particular `Beleg` from the \"Datenerfassungsprotokoll\".\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse` that contains the requested `Beleg`., belegUuid: any # The `_uuid` of the `Beleg` to fetch.}\n@returns(200) The requested `Beleg` resource.\n@errors {404: The requested `Beleg` resource does not exist.}\n\n@endpoint GET /registrierkassen/{registrierkasseUuid}/monatsbelege\n@desc Returns a list of `Monatsbelege`.\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse`.}\n@optional {year: any, month: any}\n@returns(200) Information about `Monatsbelege`.\n\n@endgroup\n\n@group belege\n@endpoint GET /belege/{belegUuid}\n@desc Retrieves a particular `Beleg` from the \"Datenerfassungsprotokoll\".\n@required {belegUuid: any # The `_uuid` of the `Beleg` to fetch.}\n@returns(200) The requested `Beleg` resource.\n@errors {404: The requested `Beleg` resource does not exist.}\n\n@endgroup\n\n@group export\n@endpoint GET /export/pdf/belege/{belegUuid}\n@required {belegUuid: any # The `_uuid` of a particular `Beleg` to export.}\n@returns(200) A particular `Beleg` in its PDF representation.\n\n@endpoint GET /export/qr/belege/{belegUuid}\n@required {belegUuid: any # The `_uuid` of a particular `Beleg` to export.}\n@returns(200) The RKSV QR-Code as PNG file.\n\n@endpoint GET /export/html/belege/{belegUuid}\n@required {belegUuid: any # The `_uuid` of a particular `Beleg` to export.}\n@returns(200) A particular `Beleg` in its HTML representation.\n\n@endpoint GET /export/thermal-print/belege/{belegUuid}\n@required {belegUuid: any # The `_uuid` of a particular `Beleg` to export.}\n@optional {qr: any # Should the RKSV QR code should be rendered?, width: any # Number of characters per line., dialect: any # The thermal printer dialect., encoding: any # The encoding of the binary data.}\n@returns(200) A particular `Beleg` in its ESC/POS or STAR representation.\n\n@endpoint GET /export/gobd/registrierkassen/{registrierkasseUuid}\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse` to export.}\n@optional {before: any # Only return results that were saved before the specified date-time string (i.e., anything that `Date.parse()` can parse)., after: any # Only return results that were saved after the specified date-time string (i.e., anything that `Date.parse()` can parse).}\n@returns(200) The exported data of a particular `Registrierkasse` in its GoBD representation.\n\n@endpoint GET /export/xls/registrierkassen/{registrierkasseUuid}/belege\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse` to export.}\n@optional {before: any # Only return results that were saved before the specified date-time string (i.e., anything that `Date.parse()` can parse)., after: any # Only return results that were saved after the specified date-time string (i.e., anything that `Date.parse()` can parse).}\n@returns(200) The exported data of a particular `Registrierkasse` in its Microsoft Excel representation.\n\n@endpoint GET /export/csv/registrierkassen/{registrierkasseUuid}/belege\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse` to export.}\n@optional {before: any # Only return results that were saved before the specified date-time string (i.e., anything that `Date.parse()` can parse)., after: any # Only return results that were saved after the specified date-time string (i.e., anything that `Date.parse()` can parse)., posten: any # Export `Posten` instead of `Belegdaten`.}\n@returns(200) The exported data of a particular `Registrierkasse` in its CSV representation.\n\n@endpoint GET /export/dep7/registrierkassen/{registrierkasseUuid}/belege\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse` to export.}\n@optional {before: any # Only return results that were saved before the specified date-time string (i.e., anything that `Date.parse()` can parse)., after: any # Only return results that were saved after the specified date-time string (i.e., anything that `Date.parse()` can parse).}\n@returns(200) The exported data of a particular `Registrierkasse` in its DEP7 representation.\n\n@endpoint GET /export/dep131/registrierkassen/{registrierkasseUuid}/belege\n@required {registrierkasseUuid: any # The `_uuid` of the `Registrierkasse` to export.}\n@optional {before: any # Only return results that were saved before the specified date-time string (i.e., anything that `Date.parse()` can parse)., after: any # Only return results that were saved after the specified date-time string (i.e., anything that `Date.parse()` can parse).}\n@returns(200) The exported data of a particular `Registrierkasse` in its DEP131 / CSV representation.\n\n@endgroup\n\n@end\n"}}