{"openapi":"3.1.0","info":{"title":"Hono React API","description":"","version":"1.0.0"},"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}}},"security":[{"apiKeyAuth":[]}],"servers":[{"url":"https://api.cvtoblind.com","description":"Production Server"}],"paths":{"/api/process-cv/status":{"get":{"operationId":"getApiProcessCvStatus","parameters":[{"in":"query","name":"profileIds","schema":{"type":"string"},"required":true,"description":"Comma-separated list of profile IDs"}],"responses":{"200":{}}}},"/api/v1/api-keys":{"post":{"operationId":"postApiV1ApiKeys","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"responses":{"200":{}}}},"/api/v1/api-keys/{id}":{"delete":{"operationId":"deleteApiV1ApiKeysById","description":"Revoke an API key","responses":{"200":{"description":"API key revoked","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Key not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}]}},"/api/v1/profiles":{"get":{"operationId":"getApiV1Profiles","parameters":[{"in":"query","name":"status","schema":{"type":"string","enum":["queued","processing","completed","cancelled","failed"]}}],"responses":{"200":{}}}},"/api/v1/profiles/presigned-upload":{"post":{"operationId":"postApiV1ProfilesPresignedUpload","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"fileName":{"type":"string","minLength":1}},"required":["fileName"]}}}},"responses":{"200":{}}}},"/api/v1/profiles/{profileId}/convert":{"post":{"operationId":"postApiV1ProfilesByProfileIdConvert","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"responses":{"200":{}}}},"/api/v1/profiles/{profileId}/duplicate":{"post":{"operationId":"postApiV1ProfilesByProfileIdDuplicate","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"responses":{"200":{}}}},"/api/v1/profiles/{profileId}/render":{"post":{"operationId":"postApiV1ProfilesByProfileIdRender","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"default":"pdf","type":"string","enum":["pdf","docx"]}}}}}},"responses":{"200":{}}}},"/api/v1/profiles/{profileId}/set-template":{"put":{"operationId":"putApiV1ProfilesByProfileIdSetTemplate","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"templateId":{"type":"string"}},"required":["templateId"]}}}},"responses":{"200":{}}}},"/api/v1/profiles/{profileId}/cancel":{"get":{"operationId":"getApiV1ProfilesByProfileIdCancel","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"responses":{"200":{}}}},"/api/v1/profiles/{profileId}/retry":{"post":{"operationId":"postApiV1ProfilesByProfileIdRetry","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"responses":{"200":{}}}},"/api/v1/profiles/{profileId}/templates":{"get":{"operationId":"getApiV1ProfilesByProfileIdTemplates","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"responses":{"200":{}}}},"/api/v1/profiles/{profileId}":{"get":{"operationId":"getApiV1ProfilesByProfileId","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"responses":{"200":{}}},"put":{"operationId":"putApiV1ProfilesByProfileId","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"cvData":{}},"required":["cvData"]}}}},"responses":{"200":{}}},"delete":{"operationId":"deleteApiV1ProfilesByProfileId","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"responses":{"200":{}}}},"/api/v1/profiles/{profileId}/file-name":{"get":{"operationId":"getApiV1ProfilesByProfileIdFileName","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true},{"in":"query","name":"format","schema":{"default":"pdf","type":"string","enum":["pdf","docx"]}}],"responses":{"200":{}}}},"/api/v1/profiles/{profileId}/ai-action":{"post":{"operationId":"postApiV1ProfilesByProfileIdAiAction","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":20000}},"required":["prompt"]}}}},"responses":{"200":{}}}},"/api/v1/profiles/{profileId}/translate":{"post":{"operationId":"postApiV1ProfilesByProfileIdTranslate","parameters":[{"in":"path","name":"profileId","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"language":{"type":"string"}},"required":["language"]}}}},"responses":{"200":{}}}},"/api/v1/profiles/bulk-delete":{"post":{"operationId":"postApiV1ProfilesBulkDelete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"profileIds":{"minItems":1,"maxItems":100,"type":"array","items":{"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)$"}}},"required":["profileIds"]}}}},"responses":{"200":{}}}},"/api/v1/billing":{"get":{"operationId":"getApiV1Billing","description":"Get billing information for the organization","responses":{}}},"/api/v1/billing/checkout":{"post":{"operationId":"postApiV1BillingCheckout","parameters":[{"in":"query","name":"priceIds","schema":{"type":"string"},"required":true}],"responses":{"200":{}}}},"/api/v1/billing/upgrade":{"post":{"operationId":"postApiV1BillingUpgrade","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"priceIds":{"type":"array","items":{"type":"string"}}},"required":["priceIds"]}}}},"responses":{"200":{}}}},"/api/v1/billing/upgrade-info":{"get":{"operationId":"getApiV1BillingUpgradeInfo","parameters":[{"in":"query","name":"priceIds","schema":{"type":"string"},"required":true}],"responses":{"200":{}}}},"/api/v1/billing/usage-cap":{"put":{"operationId":"putApiV1BillingUsageCap","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"allowExceedingPlan":{"type":"boolean"}},"required":["allowExceedingPlan"]}}}},"responses":{"200":{}}}},"/api/v1/billing/validate":{"post":{"operationId":"postApiV1BillingValidate","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{}}}},"/api/v1/settings":{"put":{"operationId":"putApiV1Settings","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"enforceDateFormat":{"type":"boolean"},"dateFormat":{"type":"string","enum":["MM/YYYY","MM-YYYY","MM.YYYY","YYYY/MM","YYYY-MM","YYYY.MM","YYYY"]},"anonymizeProfile":{"type":"boolean"},"showPolicyBanner":{"type":"boolean"},"summaryHandling":{"type":"string","enum":["use_existing_or_fallback","always_generate","leave_empty"]},"summaryLength":{"type":"string","enum":["short","extended"]},"summaryPerspective":{"type":"string","enum":["first_person","third_person"]}}}}}},"responses":{"200":{}}}},"/api/v1/templates/presigned-upload":{"post":{"operationId":"postApiV1TemplatesPresignedUpload","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"responses":{"200":{}}}},"/api/v1/templates/{templateId}/finish":{"post":{"operationId":"postApiV1TemplatesByTemplateIdFinish","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"templateName":{"type":"string","minLength":1},"isDefault":{"type":"boolean"}},"required":["templateName","isDefault"]}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"templateId","required":true}],"responses":{"200":{}}}},"/api/v1/templates/{templateId}":{"put":{"operationId":"putApiV1TemplatesByTemplateId","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"templateId","required":true}],"responses":{"200":{}}}},"/api/v1/organizations/render-profile-name-example":{"post":{"operationId":"postApiV1OrganizationsRenderProfileNameExample","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"type":"string"},"fileNameParts":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string"},"value":{"type":"string"},"example":{"type":"string"}},"required":["displayName","value","example"]}}},"required":["format","fileNameParts"]}}}},"responses":{"200":{}}}},"/api/v1/organizations/settings":{"put":{"operationId":"putApiV1OrganizationsSettings","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"profileNameFormat":{"type":"string","minLength":1,"maxLength":100}},"required":["profileNameFormat"]}}}},"responses":{"200":{}}}},"/api/v1/organizations/add-domain":{"put":{"operationId":"putApiV1OrganizationsAddDomain","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"]}}}},"responses":{"200":{}}}},"/api/v1/organizations/toggle-auto-join":{"put":{"operationId":"putApiV1OrganizationsToggleAutoJoin","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"]}}}},"responses":{"200":{}}}},"/api/v1/organizations/custom-fields":{"post":{"operationId":"postApiV1OrganizationsCustomFields","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"fieldName":{"type":"string"},"defaultValue":{"type":"string"}},"required":["fieldName"]}}}},"responses":{"200":{}}}},"/api/v1/organizations/custom-fields/{uuid}":{"put":{"operationId":"putApiV1OrganizationsCustomFieldsByUuid","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"fieldName":{"type":"string"},"defaultValue":{"type":"string"}}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"uuid","required":true}],"responses":{"200":{}}}},"/api/v1/organizations/tech-categories":{"post":{"operationId":"postApiV1OrganizationsTechCategories","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z_]+$"},"displayName":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","minLength":20,"maxLength":500}},"required":["identifier","displayName","description"]}}}},"responses":{"200":{}}}},"/api/v1/organizations/tech-categories/reorder":{"put":{"operationId":"putApiV1OrganizationsTechCategoriesReorder","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"categoryIds":{"type":"array","items":{"type":"string"}}},"required":["categoryIds"]}}}},"responses":{"200":{}}}},"/api/v1/organizations/tech-categories/{id}":{"put":{"operationId":"putApiV1OrganizationsTechCategoriesById","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z_]+$"},"displayName":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","minLength":20,"maxLength":500}}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{}}}},"/api/v1/render":{"post":{"operationId":"postApiV1Render","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"templateId":{"type":"string"},"profileId":{"type":"string"},"cvData":{},"format":{"default":"pdf","type":"string","enum":["pdf","docx"]},"timezone":{"type":"string"},"temporary":{"default":false,"type":"boolean"}},"required":["templateId","cvData"]}}}},"responses":{"200":{}}}},"/api/v1/ai-actions":{"get":{"operationId":"getApiV1AiActions","description":"Get all AI actions for the authenticated user","responses":{"200":{"description":"List of AI actions","content":{"application/json":{"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)$"},"name":{"type":"string"},"prompt":{"type":"string"},"scope":{"type":"string","enum":["user","organization"]},"userId":{"type":["string","null"]},"orgId":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","name","prompt","scope","userId","orgId","createdAt","updatedAt"]}}}}},"500":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}},"post":{"operationId":"postApiV1AiActions","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"prompt":{"type":"string","minLength":1,"maxLength":20000},"scope":{"type":"string","enum":["user","organization"]}},"required":["name","prompt","scope"]}}}},"responses":{"200":{}}}},"/api/v1/ai-actions/{id}":{"get":{"operationId":"getApiV1AiActionsById","description":"Get a specific AI action","responses":{"200":{"description":"AI action details","content":{"application/json":{"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)$"},"name":{"type":"string"},"prompt":{"type":"string"},"scope":{"type":"string","enum":["user","organization"]},"userId":{"type":["string","null"]},"orgId":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","name","prompt","scope","userId","orgId","createdAt","updatedAt"]}}}},"404":{"description":"AI action not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"parameters":[{"in":"path","name":"id","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)$"},"required":true}]},"put":{"operationId":"putApiV1AiActionsById","description":"Update an AI action","responses":{"200":{"description":"AI action updated successfully","content":{"application/json":{"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)$"},"name":{"type":"string"},"prompt":{"type":"string"},"scope":{"type":"string","enum":["user","organization"]},"userId":{"type":["string","null"]},"orgId":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","name","prompt","scope","userId","orgId","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"404":{"description":"AI action not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"parameters":[{"in":"path","name":"id","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)$"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"prompt":{"type":"string","minLength":1,"maxLength":20000},"scope":{"type":"string","enum":["user","organization"]}}}}}}},"delete":{"operationId":"deleteApiV1AiActionsById","description":"Delete an AI action","responses":{"200":{"description":"AI action deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"AI action not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"parameters":[{"in":"path","name":"id","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)$"},"required":true}]}},"/api/v1/ai-actions/history":{"post":{"operationId":"postApiV1AiActionsHistory","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":20000}},"required":["prompt"]}}}},"responses":{"200":{}}}},"/api/v1/ai-actions/history/{id}":{"delete":{"operationId":"deleteApiV1AiActionsHistoryById","parameters":[{"in":"path","name":"id","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)$"},"required":true}],"responses":{"200":{}}}},"/api/v1/google-drive/export":{"post":{"operationId":"postApiV1GoogleDriveExport","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"profileId":{"type":"string"},"format":{"type":"string","enum":["pdf","docx"]},"folderId":{"type":["string","null"]},"folderName":{"type":["string","null"]}},"required":["profileId","format"]}}}},"responses":{"200":{}}}}}}