{"files":{"SKILL.md":"---\nname: seldon-external-api\ndescription: \"Seldon External API skill. Use when working with Seldon External for aggregate, predict, route. Covers 12 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Seldon External API\nAPI version: 0.1\n\n## Auth\nNo authentication required.\n\n## Base URL\nhttp://localhost:80\n\n## Setup\n1. No auth setup needed\n2. GET /aggregate -- verify access\n3. POST /aggregate -- create first aggregate\n\n## Endpoints\n12 endpoints across 6 groups. See references/api-spec.lap for full details.\n\n### Aggregate\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /aggregate |  |\n| GET | /aggregate |  |\n\n### Predict\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /predict |  |\n| POST | /predict |  |\n\n### Route\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /route |  |\n| POST | /route |  |\n\n### Send-feedback\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /send-feedback |  |\n| POST | /send-feedback |  |\n\n### Transform-input\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /transform-input |  |\n| POST | /transform-input |  |\n\n### Transform-output\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /transform-output |  |\n| POST | /transform-output |  |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Create a aggregate?\" -> POST /aggregate\n- \"List all aggregate?\" -> GET /aggregate\n- \"List all predict?\" -> GET /predict\n- \"Create a predict?\" -> POST /predict\n- \"List all route?\" -> GET /route\n- \"Create a route?\" -> POST /route\n- \"List all send-feedback?\" -> GET /send-feedback\n- \"Create a send-feedback?\" -> POST /send-feedback\n- \"List all transform-input?\" -> GET /transform-input\n- \"Create a transform-input?\" -> POST /transform-input\n- \"List all transform-output?\" -> GET /transform-output\n- \"Create a transform-output?\" -> POST /transform-output\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints return the modified resource on success\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 Seldon External API\n@base http://localhost:80\n@version 0.1\n@endpoints 12\n@toc aggregate(2), predict(2), route(2), send-feedback(2), transform-input(2), transform-output(2)\n\n@group aggregate\n@endpoint POST /aggregate\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endpoint GET /aggregate\n@required {body: map}\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endgroup\n\n@group predict\n@endpoint GET /predict\n@required {json: map}\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endpoint POST /predict\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endgroup\n\n@group route\n@endpoint GET /route\n@required {json: map}\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endpoint POST /route\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endgroup\n\n@group send-feedback\n@endpoint GET /send-feedback\n@required {json: map}\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endpoint POST /send-feedback\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endgroup\n\n@group transform-input\n@endpoint GET /transform-input\n@required {json: map}\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endpoint POST /transform-input\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endgroup\n\n@group transform-output\n@endpoint GET /transform-output\n@required {json: map}\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endpoint POST /transform-output\n@returns(200) {status: map{code: int(int32), info: str, reason: str, status: str}, meta: map{puid: str, tags: map, routing: map, requestPath: map, metrics: [map]}, data: map{names: [str], tensor: map{shape: [int(int32)], values: [num(double)]}, ndarry: [any], tftensor: map{dtype: str, tensor_shape: map{dim: [map], unknown_rank: bool}, version_number: int(int32), tensor_content: str(byte), half_val: [int(int32)], float_val: [num(float)], double_val: [num(double)], int_val: [int(int32)], string_val: [str(byte)], scomplex_val: [num(float)], int64_val: [str(int64)], bool_val: [bool], dcomplex_val: [num(double)], resource_handle_val: [map], variant_val: [map], uint32_val: [int(int64)], uint64_val: [str(uint64)]}}, binData: str(byte), strData: str} # A successful response.\n\n@endgroup\n\n@end\n"}}