{"files":{"SKILL.md":"---\nname: hashlookup-circl-api\ndescription: \"hashlookup CIRCL API skill. Use when working with hashlookup CIRCL for bulk, children, info. Covers 11 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# hashlookup CIRCL API\nAPI version: 1.3\n\n## Auth\nNo authentication required.\n\n## Base URL\nNot specified.\n\n## Setup\n1. No auth setup needed\n2. GET /info -- verify access\n3. POST /bulk/md5 -- create first md5\n\n## Endpoints\n\n11 endpoints across 7 groups. See references/api-spec.lap for full details.\n\n### bulk\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /bulk/md5 | Bulk search of MD5 hashes in a JSON array with the key 'hashes'. |\n| POST | /bulk/sha1 | Bulk search of SHA1 hashes in a JSON array with the 'hashes'. |\n\n### children\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /children/{sha1}/{count}/{cursor} | Return children from a given SHA1.  A number of element to return and an offset must be given. If not set it will be the 100 first elements. A cursor must be given to paginate over. The starting cursor is 0. |\n\n### info\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /info | Info about the hashlookup database |\n\n### lookup\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /lookup/md5/{md5} | Lookup MD5. |\n| GET | /lookup/sha1/{sha1} | Lookup SHA-1. |\n| GET | /lookup/sha256/{sha256} | Lookup SHA-256. |\n\n### parents\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /parents/{sha1}/{count}/{cursor} | Return parents from a given SHA1. A number of element to return and an offset must be given. If not set it will be the 100 first elements. A cursor must be given to paginate over. The starting cursor is 0. |\n\n### session\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /session/create/{name} | Create a session key to keep search context. The session is attached to a name. After the session is created, the header `hashlookup_session` can be set to the session name. |\n| GET | /session/get/{name} | Return set of matching and non-matching hashes from a session. |\n\n### stats\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /stats/top | Return the top 100 of most queried values. |\n\n## Common Questions\n\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Create a md5?\" -> POST /bulk/md5\n- \"Create a sha1?\" -> POST /bulk/sha1\n- \"Get children details?\" -> GET /children/{sha1}/{count}/{cursor}\n- \"List all info?\" -> GET /info\n- \"Get md5 details?\" -> GET /lookup/md5/{md5}\n- \"Get sha1 details?\" -> GET /lookup/sha1/{sha1}\n- \"Get sha256 details?\" -> GET /lookup/sha256/{sha256}\n- \"Get parent details?\" -> GET /parents/{sha1}/{count}/{cursor}\n- \"Get create details?\" -> GET /session/create/{name}\n- \"Get get details?\" -> GET /session/get/{name}\n- \"List all top?\" -> GET /stats/top\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints typically return the created/updated object\n\n## CLI\n\n```bash\n# Update this spec to the latest version\nnpx @lap-platform/lapsh get hashlookup-circl-api -o references/api-spec.lap\n\n# Search for related APIs\nnpx @lap-platform/lapsh search hashlookup-circl-api\n```\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 hashlookup CIRCL API\n@version 1.3\n@endpoints 11\n@toc bulk(2), children(1), info(1), lookup(3), parents(1), session(2), stats(1)\n\n@group bulk\n@endpoint POST /bulk/md5\n@desc Bulk search of MD5 hashes in a JSON array with the key 'hashes'.\n@returns(200) Success\n@errors {404: JSON format incorrect. An array of hashes in the key 'hashes' is expected.}\n\n@endpoint POST /bulk/sha1\n@desc Bulk search of SHA1 hashes in a JSON array with the 'hashes'.\n@returns(200) Success\n@errors {404: JSON format incorrect. An array of hashes in the key 'hashes' is expected.}\n\n@endgroup\n\n@group children\n@endpoint GET /children/{sha1}/{count}/{cursor}\n@desc Return children from a given SHA1.  A number of element to return and an offset must be given. If not set it will be the 100 first elements. A cursor must be given to paginate over. The starting cursor is 0.\n@returns(200) Success\n@errors {400: SHA1 value incorrect, expecting a SHA1 value in hex format, 404: The SHA1 value has no known child.}\n\n@endgroup\n\n@group info\n@endpoint GET /info\n@desc Info about the hashlookup database\n@returns(200) Success\n\n@endgroup\n\n@group lookup\n@endpoint GET /lookup/md5/{md5}\n@desc Lookup MD5.\n@returns(200) Success\n@errors {400: MD5 value incorrect, expecting a MD5 value in hex format, 404: Non existing MD5}\n\n@endpoint GET /lookup/sha1/{sha1}\n@desc Lookup SHA-1.\n@returns(200) Success\n@errors {400: SHA1 value incorrect, expecting a SHA1 value in hex format, 404: Non existing SHA1}\n\n@endpoint GET /lookup/sha256/{sha256}\n@desc Lookup SHA-256.\n@returns(200) Success\n@errors {400: SHA-256 value incorrect, expecting a SHA-256 value in hex format, 404: Non existing SHA-256}\n\n@endgroup\n\n@group parents\n@endpoint GET /parents/{sha1}/{count}/{cursor}\n@desc Return parents from a given SHA1. A number of element to return and an offset must be given. If not set it will be the 100 first elements. A cursor must be given to paginate over. The starting cursor is 0.\n@returns(200) Success\n@errors {400: SHA1 value incorrect, expecting a SHA1 value in hex format, 404: The SHA1 value has no known parent.}\n\n@endgroup\n\n@group session\n@endpoint GET /session/create/{name}\n@desc Create a session key to keep search context. The session is attached to a name. After the session is created, the header `hashlookup_session` can be set to the session name.\n@returns(200) Success\n@errors {400: Expecting a name for the session, 500: Session feature is not enabled}\n\n@endpoint GET /session/get/{name}\n@desc Return set of matching and non-matching hashes from a session.\n@returns(200) Success\n@errors {400: Expecting a name for the session, 500: Session feature is not enabled}\n\n@endgroup\n\n@group stats\n@endpoint GET /stats/top\n@desc Return the top 100 of most queried values.\n@returns(200) Success\n@errors {400: Public statistics not enabled}\n\n@endgroup\n\n@end\n"}}