{"openapi":"3.1.0","info":{"title":"Tasks API","version":"1.0.0","description":"Each user has their own tasks. Send `Authorization: Bearer <token>` with every request."},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}},"schemas":{"HttpStatus":{"type":"integer","description":"HTTP status code","enum":[100,101,102,103,200,201,202,203,204,205,206,300,301,302,303,304,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,421,422,424,428,429,500,501,502,503,504,505]},"VovkErrorResponse":{"type":"object","description":"Vovk error response","properties":{"cause":{"description":"Error cause of any shape"},"statusCode":{"$ref":"#/components/schemas/HttpStatus"},"message":{"type":"string","description":"Error message"},"isError":{"type":"boolean","const":true,"description":"Indicates that this object represents an error"}},"required":["statusCode","message","isError"],"additionalProperties":false}}},"security":[{"bearer":[]}],"paths":{"/api/tasks":{"get":{"summary":"List tasks","description":"Returns the caller's tasks, oldest first.","x-codeSamples":[{"label":"TypeScript RPC","lang":"typescript","source":"import { TaskRPC } from 'vovk-agent-ready';\n\nconst response = await TaskRPC.listTasks();\n\nconsole.log(response); \n/* \n[\n    {\n        id: \"00000000-0000-0000-0000-000000000000\",\n        // What needs doing\n        title: \"string\",\n        done: true,\n        createdAt: \"2023-01-01T00:00:00Z\"\n    }\n]\n*/"},{"label":"Python RPC","lang":"python","source":"from vovk_agent_ready import TaskRPC\n\nresponse = TaskRPC.list_tasks()\n\nprint(response)\n# [\n#     {\n#         \"id\": \"00000000-0000-0000-0000-000000000000\",\n#         # What needs doing\n#         \"title\": \"string\",\n#         \"done\": True,\n#         \"createdAt\": \"2023-01-01T00:00:00Z\"\n#     }\n# ]"},{"label":"Rust RPC","lang":"rust","source":"use vovk_agent_ready::task_rpc;\nuse serde_json::{ \n  from_value, \n  json \n};\n#[tokio::main]\nasync fn main() {\n  let response = task_rpc::list_tasks(\n    (), /* body */ \n    (), /* query */ \n    (), /* params */ \n    None, /* headers (HashMap) */ \n    None, /* api_root */\n    false, /* disable_client_validation */\n  ).await;\n\nmatch response {\n    Ok(output) => println!(\"{:?}\", output),\n    /* \n    output [\n        {\n            id: \"00000000-0000-0000-0000-000000000000\",\n            // What needs doing\n            title: \"string\",\n            done: true,\n            createdAt: \"2023-01-01T00:00:00Z\"\n        }\n    ] \n    */\n    Err(e) => println!(\"error: {:?}\", e),\n  }\n}"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string","minLength":1,"maxLength":200,"description":"What needs doing"},"done":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","title","done","createdAt"],"additionalProperties":false}}}}}}},"post":{"summary":"Create task","description":"Creates a task with the given title. New tasks are not done.","x-codeSamples":[{"label":"TypeScript RPC","lang":"typescript","source":"import { TaskRPC } from 'vovk-agent-ready';\n\nconst response = await TaskRPC.createTask({\n    body: {\n        // What needs doing\n        title: \"string\"\n    },\n});\n\nconsole.log(response); \n/* \n{\n    id: \"00000000-0000-0000-0000-000000000000\",\n    // What needs doing\n    title: \"string\",\n    done: true,\n    createdAt: \"2023-01-01T00:00:00Z\"\n}\n*/"},{"label":"Python RPC","lang":"python","source":"from vovk_agent_ready import TaskRPC\n\nresponse = TaskRPC.create_task(\n    body={\n        # What needs doing\n        \"title\": \"string\"\n    },\n)\n\nprint(response)\n# {\n#     \"id\": \"00000000-0000-0000-0000-000000000000\",\n#     # What needs doing\n#     \"title\": \"string\",\n#     \"done\": True,\n#     \"createdAt\": \"2023-01-01T00:00:00Z\"\n# }"},{"label":"Rust RPC","lang":"rust","source":"use vovk_agent_ready::task_rpc;\nuse serde_json::{ \n  from_value, \n  json \n};\n#[tokio::main]\nasync fn main() {\n  let response = task_rpc::create_task(\n    from_value(json!({\n        // What needs doing\n        \"title\": \"string\"\n    })).unwrap(), /* body */ \n    (), /* query */ \n    (), /* params */ \n    None, /* headers (HashMap) */ \n    None, /* api_root */\n    false, /* disable_client_validation */\n  ).await;\n\nmatch response {\n    Ok(output) => println!(\"{:?}\", output),\n    /* \n    output {\n        id: \"00000000-0000-0000-0000-000000000000\",\n        // What needs doing\n        title: \"string\",\n        done: true,\n        createdAt: \"2023-01-01T00:00:00Z\"\n    } \n    */\n    Err(e) => println!(\"error: {:?}\", e),\n  }\n}"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string","minLength":1,"maxLength":200,"description":"What needs doing"},"done":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","title","done","createdAt"],"additionalProperties":false}}}}},"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200,"description":"What needs doing"}},"required":["title"]}}}}}},"/api/tasks/{id}":{"patch":{"summary":"Update task","description":"Renames a task or marks it done or not done.","x-codeSamples":[{"label":"TypeScript RPC","lang":"typescript","source":"import { TaskRPC } from 'vovk-agent-ready';\n\nconst response = await TaskRPC.updateTask({\n    body: {\n        // What needs doing\n        title: \"string\",\n        done: true\n    },\n    params: {\n        id: \"00000000-0000-0000-0000-000000000000\"\n    },\n});\n\nconsole.log(response); \n/* \n{\n    id: \"00000000-0000-0000-0000-000000000000\",\n    // What needs doing\n    title: \"string\",\n    done: true,\n    createdAt: \"2023-01-01T00:00:00Z\"\n}\n*/"},{"label":"Python RPC","lang":"python","source":"from vovk_agent_ready import TaskRPC\n\nresponse = TaskRPC.update_task(\n    body={\n        # What needs doing\n        \"title\": \"string\",\n        \"done\": True\n    },\n    params={\n        \"id\": \"00000000-0000-0000-0000-000000000000\"\n    },\n)\n\nprint(response)\n# {\n#     \"id\": \"00000000-0000-0000-0000-000000000000\",\n#     # What needs doing\n#     \"title\": \"string\",\n#     \"done\": True,\n#     \"createdAt\": \"2023-01-01T00:00:00Z\"\n# }"},{"label":"Rust RPC","lang":"rust","source":"use vovk_agent_ready::task_rpc;\nuse serde_json::{ \n  from_value, \n  json \n};\n#[tokio::main]\nasync fn main() {\n  let response = task_rpc::update_task(\n    from_value(json!({\n        // What needs doing\n        \"title\": \"string\",\n        \"done\": true\n    })).unwrap(), /* body */ \n    (), /* query */ \n    from_value(json!({\n        \"id\": \"00000000-0000-0000-0000-000000000000\"\n    })).unwrap(), /* params */ \n    None, /* headers (HashMap) */ \n    None, /* api_root */\n    false, /* disable_client_validation */\n  ).await;\n\nmatch response {\n    Ok(output) => println!(\"{:?}\", output),\n    /* \n    output {\n        id: \"00000000-0000-0000-0000-000000000000\",\n        // What needs doing\n        title: \"string\",\n        done: true,\n        createdAt: \"2023-01-01T00:00:00Z\"\n    } \n    */\n    Err(e) => println!(\"error: {:?}\", e),\n  }\n}"}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string","minLength":1,"maxLength":200,"description":"What needs doing"},"done":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","title","done","createdAt"],"additionalProperties":false}}}}},"requestBody":{"description":"Request body","required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200,"description":"What needs doing"},"done":{"type":"boolean"}}}}}}},"delete":{"summary":"Delete task","description":"Deletes a task and returns it.","x-codeSamples":[{"label":"TypeScript RPC","lang":"typescript","source":"import { TaskRPC } from 'vovk-agent-ready';\n\nconst response = await TaskRPC.deleteTask({\n    params: {\n        id: \"00000000-0000-0000-0000-000000000000\"\n    },\n});\n\nconsole.log(response); \n/* \n{\n    id: \"00000000-0000-0000-0000-000000000000\",\n    // What needs doing\n    title: \"string\",\n    done: true,\n    createdAt: \"2023-01-01T00:00:00Z\"\n}\n*/"},{"label":"Python RPC","lang":"python","source":"from vovk_agent_ready import TaskRPC\n\nresponse = TaskRPC.delete_task(\n    params={\n        \"id\": \"00000000-0000-0000-0000-000000000000\"\n    },\n)\n\nprint(response)\n# {\n#     \"id\": \"00000000-0000-0000-0000-000000000000\",\n#     # What needs doing\n#     \"title\": \"string\",\n#     \"done\": True,\n#     \"createdAt\": \"2023-01-01T00:00:00Z\"\n# }"},{"label":"Rust RPC","lang":"rust","source":"use vovk_agent_ready::task_rpc;\nuse serde_json::{ \n  from_value, \n  json \n};\n#[tokio::main]\nasync fn main() {\n  let response = task_rpc::delete_task(\n    (), /* body */ \n    (), /* query */ \n    from_value(json!({\n        \"id\": \"00000000-0000-0000-0000-000000000000\"\n    })).unwrap(), /* params */ \n    None, /* headers (HashMap) */ \n    None, /* api_root */\n    false, /* disable_client_validation */\n  ).await;\n\nmatch response {\n    Ok(output) => println!(\"{:?}\", output),\n    /* \n    output {\n        id: \"00000000-0000-0000-0000-000000000000\",\n        // What needs doing\n        title: \"string\",\n        done: true,\n        createdAt: \"2023-01-01T00:00:00Z\"\n    } \n    */\n    Err(e) => println!(\"error: {:?}\", e),\n  }\n}"}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string","minLength":1,"maxLength":200,"description":"What needs doing"},"done":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","title","done","createdAt"],"additionalProperties":false}}}}}}},"/api/static/openapi.json":{"get":{"summary":"OpenAPI spec","description":"The OpenAPI 3.1 spec of the task API.","security":[],"x-codeSamples":[{"label":"TypeScript RPC","lang":"typescript","source":"import { OpenApiRPC } from 'vovk-agent-ready';\n\nconst response = await OpenApiRPC.getSpec();"},{"label":"Python RPC","lang":"python","source":"from vovk_agent_ready import OpenApiRPC\n\nresponse = OpenApiRPC.get_spec()"},{"label":"Rust RPC","lang":"rust","source":"use vovk_agent_ready::open_api_rpc;\nuse serde_json::{ \n  from_value, \n  json \n};\n#[tokio::main]\nasync fn main() {\n  let response = open_api_rpc::get_spec(\n    (), /* body */ \n    (), /* query */ \n    (), /* params */ \n    None, /* headers (HashMap) */ \n    None, /* api_root */\n    false, /* disable_client_validation */\n  ).await;\n}"}]}}}}