{"openapi":"3.1.0","info":{"title":"VisionFly API","description":"Image CDN, optimization and transformation API","version":"0.0.1"},"paths":{"/image/demo/{path}":{"get":{"tags":["Image Demo"],"summary":"Demo Image Processing","description":"Public demo endpoint for trying out VisionFly transformations","operationId":"image_demo_image_demo__path__get","parameters":[{"name":"src","in":"query","required":true,"schema":{"type":"string","title":"Src"}},{"name":"w","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":4200,"exclusiveMinimum":0},{"type":"null"}],"description":"Width in pixels","title":"W"},"description":"Width in pixels"},{"name":"h","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":4200,"exclusiveMinimum":0},{"type":"null"}],"description":"Height in pixels","title":"H"},"description":"Height in pixels"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"description":"Quality (1-100)","default":80,"title":"Q"},"description":"Quality (1-100)"},{"name":"f","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Output format","default":"auto","title":"F"},"description":"Output format"},{"name":"fit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fit mode","default":"CONTAIN","title":"Fit"},"description":"Fit mode"},{"name":"blur","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"description":"Gaussian blur strength (0-100)","default":0,"title":"Blur"},"description":"Gaussian blur strength (0-100)"},{"name":"sharp","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"description":"Sharpen strength (0-100)","default":0,"title":"Sharp"},"description":"Sharpen strength (0-100)"},{"name":"bri","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"description":"Brightness adjustment (-100 to 100)","default":0,"title":"Bri"},"description":"Brightness adjustment (-100 to 100)"},{"name":"con","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"description":"Contrast adjustment (-100 to 100)","default":0,"title":"Con"},"description":"Contrast adjustment (-100 to 100)"},{"name":"sat","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"description":"Saturation adjustment (-100 to 100)","default":0,"title":"Sat"},"description":"Saturation adjustment (-100 to 100)"},{"name":"hue","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":360,"minimum":0},{"type":"null"}],"description":"Hue rotation (0-360)","default":0,"title":"Hue"},"description":"Hue rotation (0-360)"},{"name":"gamma","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":3.0,"minimum":1.0},{"type":"null"}],"description":"Gamma adjustment (1.0-3.0)","title":"Gamma"},"description":"Gamma adjustment (1.0-3.0)"},{"name":"opt","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Apply smart optimization","default":false,"title":"Opt"},"description":"Apply smart optimization"},{"name":"X-Demo-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Demo-Token"}},{"name":"origin","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"}},{"name":"referer","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referer"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/image/test":{"get":{"tags":["Authentication"],"summary":"Test API Key","description":"Simple endpoint to validate API credentials","operationId":"test_authentication_image_test_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/image/{path}":{"get":{"tags":["Image"],"summary":"Process Image","description":"Process and serve an image with transformations (requires API key)","operationId":"image_image__path__get","parameters":[{"name":"src","in":"query","required":true,"schema":{"type":"string","title":"Src"}},{"name":"w","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":4200,"exclusiveMinimum":0},{"type":"null"}],"description":"Width in pixels","title":"W"},"description":"Width in pixels"},{"name":"h","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":4200,"exclusiveMinimum":0},{"type":"null"}],"description":"Height in pixels","title":"H"},"description":"Height in pixels"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"description":"Quality (1-100)","default":80,"title":"Q"},"description":"Quality (1-100)"},{"name":"f","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Output format","default":"auto","title":"F"},"description":"Output format"},{"name":"fit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fit mode","default":"CONTAIN","title":"Fit"},"description":"Fit mode"},{"name":"blur","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"description":"Gaussian blur strength (0-100)","default":0,"title":"Blur"},"description":"Gaussian blur strength (0-100)"},{"name":"sharp","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"description":"Sharpen strength (0-100)","default":0,"title":"Sharp"},"description":"Sharpen strength (0-100)"},{"name":"bri","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"description":"Brightness adjustment (-100 to 100)","default":0,"title":"Bri"},"description":"Brightness adjustment (-100 to 100)"},{"name":"con","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"description":"Contrast adjustment (-100 to 100)","default":0,"title":"Con"},"description":"Contrast adjustment (-100 to 100)"},{"name":"sat","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"description":"Saturation adjustment (-100 to 100)","default":0,"title":"Sat"},"description":"Saturation adjustment (-100 to 100)"},{"name":"hue","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":360,"minimum":0},{"type":"null"}],"description":"Hue rotation (0-360)","default":0,"title":"Hue"},"description":"Hue rotation (0-360)"},{"name":"gamma","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":3.0,"minimum":1.0},{"type":"null"}],"description":"Gamma adjustment (1.0-3.0)","title":"Gamma"},"description":"Gamma adjustment (1.0-3.0)"},{"name":"opt","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Apply smart optimization","default":false,"title":"Opt"},"description":"Apply smart optimization"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cdn/upload":{"post":{"tags":["CDN"],"summary":"Upload Image to CDN","description":"Upload an image to VisionFly CDN. Returns a public URL for the image.","operationId":"upload_image_cdn_upload_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_image_cdn_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cdn/images":{"get":{"tags":["CDN"],"summary":"List User Images","description":"List all images uploaded by the authenticated user","operationId":"list_images_cdn_images_get","parameters":[{"name":"project","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by project slug","title":"Project"},"description":"Filter by project slug"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of images to return","default":50,"title":"Limit"},"description":"Number of images to return"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination cursor (last imageId)","title":"Cursor"},"description":"Pagination cursor (last imageId)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["CDN"],"summary":"Delete Multiple Images","description":"Delete one or more images from VisionFly CDN","operationId":"delete_images_cdn_images_delete","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteImagesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cdn/usage":{"get":{"tags":["CDN"],"summary":"Get Usage Statistics","description":"Get storage and bandwidth usage for the authenticated user","operationId":"get_usage_cdn_usage_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cdn/projects":{"get":{"tags":["CDN"],"summary":"List Projects","description":"List all projects for the authenticated user","operationId":"list_projects_cdn_projects_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["CDN"],"summary":"Create Project","description":"Create a new project","operationId":"create_project_cdn_projects_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["CDN"],"summary":"Update Project","description":"Update a project's name or description","operationId":"update_project_cdn_projects_patch","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["CDN"],"summary":"Delete Project","description":"Delete a project","operationId":"delete_project_cdn_projects_delete","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteProjectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cdn/{image_id}":{"delete":{"tags":["CDN"],"summary":"Delete Image from CDN","description":"Delete a single image from VisionFly CDN","operationId":"delete_single_image_cdn__image_id__delete","parameters":[{"name":"image_id","in":"path","required":true,"schema":{"type":"string","title":"Image Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["CDN"],"summary":"Serve CDN Image","description":"Serve an optimized image via CDN","operationId":"serve_image_cdn__image_id__get","parameters":[{"name":"image_id","in":"path","required":true,"schema":{"type":"string","title":"Image Id"}},{"name":"w","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":4200,"exclusiveMinimum":0},{"type":"null"}],"title":"W"}},{"name":"h","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":4200,"exclusiveMinimum":0},{"type":"null"}],"title":"H"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"default":80,"title":"Q"}},{"name":"f","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"auto","title":"F"}},{"name":"fit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"CONTAIN","title":"Fit"}},{"name":"blur","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"default":0,"title":"Blur"}},{"name":"sharp","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"null"}],"default":0,"title":"Sharp"}},{"name":"bri","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"default":0,"title":"Bri"}},{"name":"con","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"default":0,"title":"Con"}},{"name":"sat","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":-100},{"type":"null"}],"default":0,"title":"Sat"}},{"name":"hue","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":360,"minimum":0},{"type":"null"}],"default":0,"title":"Hue"}},{"name":"gamma","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":3.0,"minimum":1.0},{"type":"null"}],"title":"Gamma"}},{"name":"opt","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Opt"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/plans":{"get":{"summary":"Vision Fly Plans","description":"Get info on VF plans","operationId":"get_plans_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/plans/":{"get":{"summary":"Vision Fly Plans","description":"Get info on VF plans","operationId":"get_plans_plans__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/passport-photo/specs":{"get":{"tags":["Passport Photo"],"summary":"Get Passport Photo Specifications","description":"Return passport photo specifications for all supported countries.","operationId":"get_passport_specs_passport_photo_specs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/passport-photo/demo/process":{"get":{"tags":["Passport Photo Demo"],"summary":"Demo Passport Photo Processing","description":"Free demo endpoint to process a passport photo from URL","operationId":"demo_process_passport_photo_passport_photo_demo_process_get","parameters":[{"name":"src","in":"query","required":true,"schema":{"type":"string","description":"Source image URL","title":"Src"},"description":"Source image URL"},{"name":"country","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PassportCountry","description":"Country specification","default":"usa"},"description":"Country specification"},{"name":"include_print_sheet","in":"query","required":false,"schema":{"type":"boolean","description":"Include 4x6 print sheet","default":false,"title":"Include Print Sheet"},"description":"Include 4x6 print sheet"},{"name":"remove_bg","in":"query","required":false,"schema":{"type":"boolean","description":"Remove and replace background with white","default":true,"title":"Remove Bg"},"description":"Remove and replace background with white"},{"name":"enhance","in":"query","required":false,"schema":{"type":"boolean","description":"Apply photo enhancements","default":true,"title":"Enhance"},"description":"Apply photo enhancements"},{"name":"face_x","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Face box X (0-1 normalized)","title":"Face X"},"description":"Face box X (0-1 normalized)"},{"name":"face_y","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Face box Y (0-1 normalized)","title":"Face Y"},"description":"Face box Y (0-1 normalized)"},{"name":"face_width","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Face box width (0-1 normalized)","title":"Face Width"},"description":"Face box width (0-1 normalized)"},{"name":"face_height","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Face box height (0-1 normalized)","title":"Face Height"},"description":"Face box height (0-1 normalized)"},{"name":"X-Demo-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Demo-Token"}},{"name":"origin","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"}},{"name":"referer","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referer"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Passport Photo Demo"],"summary":"Demo Passport Photo Processing (POST)","description":"Process uploaded image into passport photo","operationId":"demo_process_passport_photo_upload_passport_photo_demo_process_post","parameters":[{"name":"X-Demo-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Demo-Token"}},{"name":"origin","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"}},{"name":"referer","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referer"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_demo_process_passport_photo_upload_passport_photo_demo_process_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"tags":["General"],"summary":"Root","description":"API root - returns basic information about the API","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["General"],"summary":"Health Check","description":"Health check endpoint for monitoring","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Body_demo_process_passport_photo_upload_passport_photo_demo_process_post":{"properties":{"file":{"type":"string","format":"binary","title":"File","description":"Image file to process"},"country":{"type":"string","title":"Country","description":"Country specification","default":"usa"},"include_print_sheet":{"type":"boolean","title":"Include Print Sheet","description":"Include 4x6 print sheet","default":false},"remove_bg":{"type":"boolean","title":"Remove Bg","description":"Remove background","default":true},"enhance":{"type":"boolean","title":"Enhance","description":"Apply enhancements","default":true},"face_x":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Face X"},"face_y":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Face Y"},"face_width":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Face Width"},"face_height":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Face Height"}},"type":"object","required":["file"],"title":"Body_demo_process_passport_photo_upload_passport_photo_demo_process_post"},"Body_upload_image_cdn_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File","description":"Image file to upload"},"project":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project","description":"Project name to organize the image"}},"type":"object","required":["file"],"title":"Body_upload_image_cdn_upload_post"},"CreateProjectRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"CreateProjectRequest"},"DeleteImagesRequest":{"properties":{"imageIds":{"items":{"type":"string"},"type":"array","title":"Imageids"}},"type":"object","required":["imageIds"],"title":"DeleteImagesRequest"},"DeleteProjectRequest":{"properties":{"projectId":{"type":"string","title":"Projectid"},"moveImagesToDefault":{"type":"boolean","title":"Moveimagestodefault","default":false}},"type":"object","required":["projectId"],"title":"DeleteProjectRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PassportCountry":{"type":"string","enum":["usa","india","india_visa"],"title":"PassportCountry"},"UpdateProjectRequest":{"properties":{"projectId":{"type":"string","title":"Projectid"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["projectId"],"title":"UpdateProjectRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}