> For the complete documentation index, see [llms.txt](https://docs.adaptria.locaria.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.adaptria.locaria.com/internal-api/reference/projects.md).

# 🚀 Projects

### Project Management

Projects are active translation/localization work that began after accepting a quote. Track progress, download deliverables, and provide feedback.

#### Project Lifecycle

```
Draft ──▶ Active ──▶ Completed ──▶ Ready for Billing ──▶ Sent for Billing
  │
  └──▶ Cancelled
  └──▶ Overdue
```

#### Status Descriptions

| Status            | Description                                                                                                        |
| ----------------- | ------------------------------------------------------------------------------------------------------------------ |
| Draft             | Project created but not yet started                                                                                |
| Active            | Project is in progress                                                                                             |
| Completed         | All work is finished                                                                                               |
| Ready for Billing | Completed and ready for invoicing                                                                                  |
| Sent for Billing  | Invoice sent                                                                                                       |
| Cancelled         | Project was cancelled                                                                                              |
| Overdue           | Derived status: due date has passed and status is not Completed, Ready for Billing, Sent for Billing, or Cancelled |

#### Project Features

* **View Details**: Get complete project information including description, dates, and status
* **Download Deliverables**: Access final translated files and deliverables
* **Provide Feedback**: Add comments and feedback to communicate with the Locaria team
* **Track Progress**: Monitor project status and important dates

## 📋 List Projects

> \## List Your Projects\
> \
> Retrieve a paginated list of projects accessible to your API credentials.\
> \
> \### Filtering Options\
> \
> \| Parameter | Description |\
> \|-----------|-------------|\
> \| \`status\` | Filter by status (Draft, Active, Completed, etc.) |\
> \| \`search\` | Search by project name or project number |\
> \| \`page\` | Page number (starts at 1) |\
> \| \`limit\` | Items per page (max 100) |\
> \
> \### Response\
> \
> Returns a summary view of each project - use \`GET /api/public/v1/projects/:id\` for full details.

````json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🚀 Projects","description":"## Project Management\n\nProjects are active translation/localization work that began after accepting a quote. Track progress, download deliverables, and provide feedback.\n\n### Project Lifecycle\n\n```\nDraft ──▶ Active ──▶ Completed ──▶ Ready for Billing ──▶ Sent for Billing\n  │\n  └──▶ Cancelled\n  └──▶ Overdue\n```\n\n### Status Descriptions\n\n| Status | Description |\n|--------|-------------|\n| Draft | Project created but not yet started |\n| Active | Project is in progress |\n| Completed | All work is finished |\n| Ready for Billing | Completed and ready for invoicing |\n| Sent for Billing | Invoice sent |\n| Cancelled | Project was cancelled |\n| Overdue | Derived status: due date has passed and status is not Completed, Ready for Billing, Sent for Billing, or Cancelled |\n\n### Project Features\n\n- **View Details**: Get complete project information including description, dates, and status\n- **Download Deliverables**: Access final translated files and deliverables\n- **Provide Feedback**: Add comments and feedback to communicate with the Locaria team\n- **Track Progress**: Monitor project status and important dates\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"ListProjectsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"$ref":"#/components/schemas/ProjectListItem"},"description":"List of projects"},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["success","data","pagination"]},"ProjectListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the project"},"projectNumber":{"type":["string","null"],"description":"Human-readable project number"},"projectName":{"type":["string","null"],"description":"Project name"},"status":{"type":"string","enum":["Draft","Active","Completed","Ready for Billing","Sent for Billing","Cancelled","Overdue"],"description":"Project lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `Draft` | Project created but not yet started |\n| `Active` | Project is in progress |\n| `Completed` | All work is finished |\n| `Ready for Billing` | Completed and ready for invoicing |\n| `Sent for Billing` | Invoice sent |\n| `Cancelled` | Project was cancelled |\n| `Overdue` | Derived status: due date has passed and status is not Completed, Ready for Billing, Sent for Billing, or Cancelled |\n"},"companyId":{"type":["string","null"],"format":"uuid","description":"Company ID this project belongs to"},"companyName":{"type":["string","null"],"description":"Company name"},"companyUser":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"User identifier"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"name":{"type":"string","description":"Full name"},"email":{"type":["string","null"],"format":"email","description":"User email address"}},"required":["id","firstName","lastName","name"],"description":"Company-side contact / project owner (client user)"},"createdBy":{"type":["string","null"],"format":"uuid","description":"User ID who created the project"},"projectDueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Project delivery deadline"},"startDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Project start date"},"totalPrice":{"type":["object","null"],"properties":{"amount":{"type":"number","description":"Total price amount"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Currency code (ISO 4217)"}},"required":["amount","currency"],"description":"Total project price"},"referenceNumber":{"type":["string","null"],"description":"Client or internal reference number"},"createdAt":{"type":"string","format":"date-time","description":"Date and time in ISO 8601 format"},"updatedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["id","projectNumber","projectName","status","companyId","companyName","projectDueDate","startDate","createdAt","updatedAt"]},"Pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"description":"Current page number (1-indexed)"},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100,"description":"Number of items per page (max 100)"},"total":{"type":"integer","minimum":0,"description":"Total number of items across all pages"},"totalPages":{"type":"integer","minimum":0,"description":"Total number of pages"},"hasNextPage":{"type":"boolean","description":"Whether there are more pages after the current page"},"hasPrevPage":{"type":"boolean","description":"Whether there are pages before the current page"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}}},"paths":{"/api/public/v1/projects":{"get":{"summary":"📋 List Projects","description":"## List Your Projects\n\nRetrieve a paginated list of projects accessible to your API credentials.\n\n### Filtering Options\n\n| Parameter | Description |\n|-----------|-------------|\n| `status` | Filter by status (Draft, Active, Completed, etc.) |\n| `search` | Search by project name or project number |\n| `page` | Page number (starts at 1) |\n| `limit` | Items per page (max 100) |\n\n### Response\n\nReturns a summary view of each project - use `GET /api/public/v1/projects/:id` for full details.","tags":["🚀 Projects"],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","default":"1","description":"Page number to retrieve (starts from 1)"},"required":false,"description":"Page number to retrieve (starts from 1)","name":"page","in":"query"},{"schema":{"type":"string","pattern":"^\\d+$","default":"20","description":"Number of items per page (max 100)"},"required":false,"description":"Number of items per page (max 100)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Filter by project status. Available values: Draft, Active, Completed, Ready for Billing, Sent for Billing, Cancelled, Overdue"},"required":false,"description":"Filter by project status. Available values: Draft, Active, Completed, Ready for Billing, Sent for Billing, Cancelled, Overdue","name":"status","in":"query"},{"schema":{"type":"string","description":"Search by project name or project number"},"required":false,"description":"Search by project name or project number","name":"search","in":"query"}],"responses":{"200":{"description":"Projects retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResponse"}}}},"401":{"description":"Authentication required"}}}}}}
````

## 🆕 Create Project

> \## Create a Project (Minimal Fields)\
> \
> Create a new project in DRAFT status using only the essential fields. Additional details (team, budget, items, workflow, etc.) can be filled in later via the main app or future Public API endpoints.\
> \
> \### Required headers\
> \
> \- \`Api-key\` — your API credential.\
> \- \`Idempotency-Key\` — UUID; same key + same body returns the cached response, same key + different body returns 409.\
> \
> \### Required body\
> \
> \- \`externalId\` (1–255 chars) — your stable identifier (e.g. Crowdin order ID, ticket ID).\
> \- \`companyId\` — must be accessible to the API credential owner.\
> \- \`projectName\` (3–255 chars).\
> \- \`projectDescription\` (10–2000 chars).\
> \- \`sourceLanguage\` — ISO code (e.g. \`en\`).\
> \- \`targetLanguages\` — non-empty array of ISO codes (e.g. \`\["fr","de","ja"]\`).\
> \
> \### Optional body\
> \
> \- \`projectDueDate\` (ISO 8601 datetime with offset, e.g. \`2026-03-31T00:00:00Z\`).\
> \- \`referenceNumber\`.\
> \- \`backgroundInfo\`.\
> \- \`targetAudience\`.\
> \- \`poNumber\`.\
> \- \`targetMarketIds\` — array of target\_markets UUIDs.\
> \- \`workUnits\` — structured connector flow. \*\*Mutually exclusive\*\* with \`sourceLanguage\`/\`targetLanguages\`. Each work unit specifies a \`clientService\` (UUID or name) and either \`languageCombinations\` (for LINGUISTICS services) or \`targetMarkets\` (for NON\_LINGUISTICS services).\
> \
> \### Authorisation\
> Restricted to internal staff (admin, locaria\_user, vendor\_manager, finance\_ops) and client roles. Client tokens are scoped to companies the credential owner has access to.\
> \
> \### What happens next\
> The project lands in Draft status. When \`workUnits\` is provided, full connector structure is stored in \`project.data.connectorIntake\` for the PM to action. When \`sourceLanguage\`/\`targetLanguages\` are used instead, they are persisted as simple language hints for PM enrichment.\
> \
> \### Response\
> Returns the created project's id, generated projectNumber, and current status (\`Draft\`).

````json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🚀 Projects","description":"## Project Management\n\nProjects are active translation/localization work that began after accepting a quote. Track progress, download deliverables, and provide feedback.\n\n### Project Lifecycle\n\n```\nDraft ──▶ Active ──▶ Completed ──▶ Ready for Billing ──▶ Sent for Billing\n  │\n  └──▶ Cancelled\n  └──▶ Overdue\n```\n\n### Status Descriptions\n\n| Status | Description |\n|--------|-------------|\n| Draft | Project created but not yet started |\n| Active | Project is in progress |\n| Completed | All work is finished |\n| Ready for Billing | Completed and ready for invoicing |\n| Sent for Billing | Invoice sent |\n| Cancelled | Project was cancelled |\n| Overdue | Derived status: due date has passed and status is not Completed, Ready for Billing, Sent for Billing, or Cancelled |\n\n### Project Features\n\n- **View Details**: Get complete project information including description, dates, and status\n- **Download Deliverables**: Access final translated files and deliverables\n- **Provide Feedback**: Add comments and feedback to communicate with the Locaria team\n- **Track Progress**: Monitor project status and important dates\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"CreateProjectRequest":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":255,"description":"Stable identifier from the calling system (Crowdin order ID, etc.). Unique per company."},"companyId":{"type":"string","format":"uuid","description":"Company ID the project belongs to. Must be accessible to the API credential owner."},"projectName":{"type":"string","minLength":3,"maxLength":255,"description":"Project name (3–255 chars)."},"projectDescription":{"type":"string","minLength":10,"maxLength":2000,"description":"Detailed project description (10–2000 chars)."},"sourceLanguage":{"type":"string","minLength":2,"maxLength":10,"description":"Source language ISO code. Mutually exclusive with workUnits."},"targetLanguages":{"type":"array","items":{"type":"string","minLength":2,"maxLength":10},"description":"Target language ISO codes. Mutually exclusive with workUnits."},"projectDueDate":{"type":"string","description":"Optional project delivery deadline (ISO 8601 datetime with offset or YYYY-MM-DD)."},"referenceNumber":{"type":"string","maxLength":100,"description":"Optional client or internal reference number."},"backgroundInfo":{"type":"string","maxLength":2000,"description":"Background information about the project"},"targetAudience":{"type":"string","maxLength":500,"description":"Target audience description"},"poNumber":{"type":"string","maxLength":100,"description":"Purchase Order number"},"targetMarketIds":{"type":"array","items":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"description":"Optional list of existing target market IDs. Stored as a connector hint for the PM during enrichment."},"workUnits":{"type":"array","items":{"$ref":"#/components/schemas/CreatePublicProjectWorkUnit"},"minItems":1,"description":"When present, the project is created via the connector flow with full structure. Mutually exclusive with sourceLanguage/targetLanguages. Each work unit specifies a client service and either language combinations (LINGUISTICS) or target markets (NON_LINGUISTICS)."}},"required":["externalId","companyId","projectName","projectDescription"]},"CreatePublicProjectWorkUnit":{"type":"object","properties":{"clientService":{"type":"string","minLength":1,"maxLength":255,"description":"Client service UUID or case-insensitive name. If a name is given, it is resolved against the caller's accessible client services."},"languageCombinations":{"type":"array","items":{"type":"object","properties":{"sourceLanguage":{"type":"string","minLength":1,"maxLength":255,"description":"Source language UUID or BCP-47 / ISO 639 code (case-insensitive)."},"targetLanguage":{"type":"string","minLength":1,"maxLength":255,"description":"Target language UUID or BCP-47 / ISO 639 code."}},"required":["sourceLanguage","targetLanguage"]},"description":"Required when the resolved clientService.serviceType === 'LINGUISTICS'. Each language is a UUID or ISO 639 code."},"targetMarkets":{"type":"array","items":{"type":"string","minLength":1,"maxLength":255},"description":"Required when the resolved clientService.serviceType === 'NON_LINGUISTICS'. Each market is a UUID or case-insensitive name."}},"required":["clientService"]},"CreateProjectResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/CreateProjectResponseData"},"message":{"type":"string"}},"required":["success","data"]},"CreateProjectResponseData":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"projectNumber":{"type":["string","null"]},"projectName":{"type":["string","null"]},"status":{"type":"string","enum":["Draft"],"description":"Project status — always \"Draft\" on create"},"externalId":{"type":"string","description":"Echoed from request — same value the caller sent"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":["string","null"]}},"required":["id","name"]},"createdAt":{"type":"string","format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["id","projectNumber","projectName","status","externalId","company","createdAt"]}}},"paths":{"/api/public/v1/projects":{"post":{"summary":"🆕 Create Project","description":"## Create a Project (Minimal Fields)\n\nCreate a new project in DRAFT status using only the essential fields. Additional details (team, budget, items, workflow, etc.) can be filled in later via the main app or future Public API endpoints.\n\n### Required headers\n\n- `Api-key` — your API credential.\n- `Idempotency-Key` — UUID; same key + same body returns the cached response, same key + different body returns 409.\n\n### Required body\n\n- `externalId` (1–255 chars) — your stable identifier (e.g. Crowdin order ID, ticket ID).\n- `companyId` — must be accessible to the API credential owner.\n- `projectName` (3–255 chars).\n- `projectDescription` (10–2000 chars).\n- `sourceLanguage` — ISO code (e.g. `en`).\n- `targetLanguages` — non-empty array of ISO codes (e.g. `[\"fr\",\"de\",\"ja\"]`).\n\n### Optional body\n\n- `projectDueDate` (ISO 8601 datetime with offset, e.g. `2026-03-31T00:00:00Z`).\n- `referenceNumber`.\n- `backgroundInfo`.\n- `targetAudience`.\n- `poNumber`.\n- `targetMarketIds` — array of target_markets UUIDs.\n- `workUnits` — structured connector flow. **Mutually exclusive** with `sourceLanguage`/`targetLanguages`. Each work unit specifies a `clientService` (UUID or name) and either `languageCombinations` (for LINGUISTICS services) or `targetMarkets` (for NON_LINGUISTICS services).\n\n### Authorisation\nRestricted to internal staff (admin, locaria_user, vendor_manager, finance_ops) and client roles. Client tokens are scoped to companies the credential owner has access to.\n\n### What happens next\nThe project lands in Draft status. When `workUnits` is provided, full connector structure is stored in `project.data.connectorIntake` for the PM to action. When `sourceLanguage`/`targetLanguages` are used instead, they are persisted as simple language hints for PM enrichment.\n\n### Response\nReturns the created project's id, generated projectNumber, and current status (`Draft`).","tags":["🚀 Projects"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"Per-request UUID for safe retries. Same key + same body returns the cached response; same key + different body returns 409."},"required":true,"description":"Per-request UUID for safe retries. Same key + same body returns the cached response; same key + different body returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequest"}}}},"responses":{"201":{"description":"Project created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponse"}}}},"400":{"description":"Validation error or missing/invalid Idempotency-Key header"},"401":{"description":"Authentication required"},"403":{"description":"Access denied to the specified company"},"409":{"description":"Idempotency-Key reuse with a different request body, or duplicate externalId for the same company"}}}}}}
````

## 🔍 Get Project Details

> \## Get Full Project Details\
> \
> Retrieve complete information about a specific project, including:\
> \- Project number and name\
> \- Description and background information\
> \- Status and important dates\
> \- Company information\
> \- PO and reference numbers

````json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🚀 Projects","description":"## Project Management\n\nProjects are active translation/localization work that began after accepting a quote. Track progress, download deliverables, and provide feedback.\n\n### Project Lifecycle\n\n```\nDraft ──▶ Active ──▶ Completed ──▶ Ready for Billing ──▶ Sent for Billing\n  │\n  └──▶ Cancelled\n  └──▶ Overdue\n```\n\n### Status Descriptions\n\n| Status | Description |\n|--------|-------------|\n| Draft | Project created but not yet started |\n| Active | Project is in progress |\n| Completed | All work is finished |\n| Ready for Billing | Completed and ready for invoicing |\n| Sent for Billing | Invoice sent |\n| Cancelled | Project was cancelled |\n| Overdue | Derived status: due date has passed and status is not Completed, Ready for Billing, Sent for Billing, or Cancelled |\n\n### Project Features\n\n- **View Details**: Get complete project information including description, dates, and status\n- **Download Deliverables**: Access final translated files and deliverables\n- **Provide Feedback**: Add comments and feedback to communicate with the Locaria team\n- **Track Progress**: Monitor project status and important dates\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"GetProjectDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/ProjectDetails"}},"required":["success","data"]},"ProjectDetails":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the project"},"projectNumber":{"type":"string","description":"Human-readable project number"},"projectName":{"type":"string","description":"Project name"},"projectDescription":{"type":"string","description":"Detailed project description"},"status":{"type":"string","enum":["Draft","Active","Completed","Ready for Billing","Sent for Billing","Cancelled","Overdue"],"description":"Project lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `Draft` | Project created but not yet started |\n| `Active` | Project is in progress |\n| `Completed` | All work is finished |\n| `Ready for Billing` | Completed and ready for invoicing |\n| `Sent for Billing` | Invoice sent |\n| `Cancelled` | Project was cancelled |\n| `Overdue` | Derived status: due date has passed and status is not Completed, Ready for Billing, Sent for Billing, or Cancelled |\n"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string","description":"Company name"}},"required":["id","name"],"description":"Company information"},"projectDueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Project delivery deadline"},"projectStartDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Project start date"},"poNumber":{"type":["string","null"],"description":"Purchase Order number"},"referenceNumber":{"type":["string","null"],"description":"Reference or ticket number"},"backgroundInformation":{"type":["string","null"],"description":"Background information about the project"},"targetAudience":{"type":["string","null"],"description":"Target audience description"},"v2Response":{"type":"object","additionalProperties":{},"description":"Full structured project details response, matching the main app /api/core/projects/{projectId}/v2 nested v2Response payload."},"createdAt":{"type":"string","format":"date-time","description":"Date and time in ISO 8601 format"},"updatedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["id","projectNumber","projectName","projectDescription","status","company","projectDueDate","projectStartDate","poNumber","referenceNumber","backgroundInformation","targetAudience","createdAt","updatedAt"],"additionalProperties":{}}}},"paths":{"/api/public/v1/projects/{id}":{"get":{"summary":"🔍 Get Project Details","description":"## Get Full Project Details\n\nRetrieve complete information about a specific project, including:\n- Project number and name\n- Description and background information\n- Status and important dates\n- Company information\n- PO and reference numbers","tags":["🚀 Projects"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"Project ID"},"required":true,"description":"Project ID","name":"id","in":"path"}],"responses":{"200":{"description":"Project details retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectDetailsResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Access denied"},"404":{"description":"Project not found"}}}}}}
````

## 📦 Get Project Deliverables

> \## Get Project Deliverables (Files)\
> \
> Retrieve all deliverable files for a project. These are the final translated/localized files that have been completed and delivered.\
> \
> \### What are Deliverables?\
> \
> Deliverables are the final output files from your project:\
> \- Translated documents\
> \- Localized content\
> \- Final delivery files\
> \- Any other completed work products\
> \
> \### Download URLs\
> \
> Each deliverable includes a temporary download URL that expires after a set period. Use the URL to download the file directly.

````json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🚀 Projects","description":"## Project Management\n\nProjects are active translation/localization work that began after accepting a quote. Track progress, download deliverables, and provide feedback.\n\n### Project Lifecycle\n\n```\nDraft ──▶ Active ──▶ Completed ──▶ Ready for Billing ──▶ Sent for Billing\n  │\n  └──▶ Cancelled\n  └──▶ Overdue\n```\n\n### Status Descriptions\n\n| Status | Description |\n|--------|-------------|\n| Draft | Project created but not yet started |\n| Active | Project is in progress |\n| Completed | All work is finished |\n| Ready for Billing | Completed and ready for invoicing |\n| Sent for Billing | Invoice sent |\n| Cancelled | Project was cancelled |\n| Overdue | Derived status: due date has passed and status is not Completed, Ready for Billing, Sent for Billing, or Cancelled |\n\n### Project Features\n\n- **View Details**: Get complete project information including description, dates, and status\n- **Download Deliverables**: Access final translated files and deliverables\n- **Provide Feedback**: Add comments and feedback to communicate with the Locaria team\n- **Track Progress**: Monitor project status and important dates\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"GetProjectDeliverablesResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/ProjectDeliveryData"}},"required":["success","data"]},"ProjectDeliveryData":{"type":"object","properties":{"automationEnabled":{"type":"boolean","description":"Whether delivery automation is enabled"},"isReadyForDelivery":{"type":"boolean","description":"Whether the project is ready for delivery"},"deliveredAt":{"type":["string","null"],"description":"When the project was delivered (ISO timestamp)"},"deliveredByUserId":{"type":["string","null"],"description":"User ID who delivered the project"},"finalDeliveryFiles":{"type":"array","items":{"$ref":"#/components/schemas/FinalDeliveryFilePublic"},"description":"Final delivery files (from end-node jobs and stored uploads)"},"finalDeliveryLinks":{"type":"array","items":{"$ref":"#/components/schemas/FinalDeliveryLinkPublic"},"description":"Final delivery links (from end-node jobs and stored links)"}},"required":["automationEnabled","isReadyForDelivery","deliveredAt","deliveredByUserId","finalDeliveryFiles","finalDeliveryLinks"],"description":"Project delivery data (files, links, and metadata)"},"FinalDeliveryFilePublic":{"type":"object","properties":{"id":{"type":"string","description":"File identifier"},"fileId":{"type":"string","description":"File ID (alias)"},"fileName":{"type":"string","description":"Original file name"},"mimeType":{"type":"string","description":"MIME type"},"size":{"type":"number","description":"File size in bytes"},"uploadedAt":{"type":"string","description":"Upload timestamp"},"downloadUrl":{"type":"string","format":"uri","description":"Temporary download URL"},"sourceJobId":{"type":"string","description":"Source job ID"},"sourceJobNumber":{"type":"string","description":"Source job number"},"sourceJobName":{"type":"string","description":"Source job name"}},"required":["id","fileName","mimeType","size","downloadUrl"]},"FinalDeliveryLinkPublic":{"type":"object","properties":{"id":{"type":"string","description":"Link identifier"},"url":{"type":"string","format":"uri","description":"Delivery URL"},"title":{"type":["string","null"],"description":"Link title"},"description":{"type":["string","null"],"description":"Link description"},"sourceJobId":{"type":"string","description":"Source job ID"},"sourceJobNumber":{"type":"string","description":"Source job number"},"sourceJobName":{"type":"string","description":"Source job name"}},"required":["id","url"]}}},"paths":{"/api/public/v1/projects/{id}/deliverables":{"get":{"summary":"📦 Get Project Deliverables","description":"## Get Project Deliverables (Files)\n\nRetrieve all deliverable files for a project. These are the final translated/localized files that have been completed and delivered.\n\n### What are Deliverables?\n\nDeliverables are the final output files from your project:\n- Translated documents\n- Localized content\n- Final delivery files\n- Any other completed work products\n\n### Download URLs\n\nEach deliverable includes a temporary download URL that expires after a set period. Use the URL to download the file directly.","tags":["🚀 Projects"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"Project ID"},"required":true,"description":"Project ID","name":"id","in":"path"}],"responses":{"200":{"description":"Project deliverables retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectDeliverablesResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Access denied"},"404":{"description":"Project not found"}}}}}}
````

## 💬 Get Project Feedback (Comments)

> \## Get Project Feedback/Comments\
> \
> Retrieve all comments and feedback associated with a project. This includes comments from both your team and the Locaria team.\
> \
> \### Pagination\
> \
> Comments are paginated. Use \`page\` and \`limit\` parameters to navigate through comments.\
> \
> \### Use Cases\
> \
> \- Review feedback from the Locaria team\
> \- See your previous comments\
> \- Track project communication history

````json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🚀 Projects","description":"## Project Management\n\nProjects are active translation/localization work that began after accepting a quote. Track progress, download deliverables, and provide feedback.\n\n### Project Lifecycle\n\n```\nDraft ──▶ Active ──▶ Completed ──▶ Ready for Billing ──▶ Sent for Billing\n  │\n  └──▶ Cancelled\n  └──▶ Overdue\n```\n\n### Status Descriptions\n\n| Status | Description |\n|--------|-------------|\n| Draft | Project created but not yet started |\n| Active | Project is in progress |\n| Completed | All work is finished |\n| Ready for Billing | Completed and ready for invoicing |\n| Sent for Billing | Invoice sent |\n| Cancelled | Project was cancelled |\n| Overdue | Derived status: due date has passed and status is not Completed, Ready for Billing, Sent for Billing, or Cancelled |\n\n### Project Features\n\n- **View Details**: Get complete project information including description, dates, and status\n- **Download Deliverables**: Access final translated files and deliverables\n- **Provide Feedback**: Add comments and feedback to communicate with the Locaria team\n- **Track Progress**: Monitor project status and important dates\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"GetProjectFeedbackResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"comments":{"type":"array","items":{"$ref":"#/components/schemas/Comment"},"description":"List of comments/feedback"},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["comments","pagination"],"description":"Project feedback data"}},"required":["success","data"]},"Comment":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the comment"},"content":{"type":"string","description":"Comment content/text"},"author":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"User ID of the comment author"},"firstName":{"type":["string","null"],"description":"Author's first name"},"lastName":{"type":["string","null"],"description":"Author's last name"},"email":{"type":"string","format":"email","description":"Author's email address"}},"required":["id","firstName","lastName","email"],"description":"Comment author information"},"createdAt":{"type":"string","format":"date-time","description":"Date and time in ISO 8601 format"},"updatedAt":{"type":"string","format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["id","content","author","createdAt","updatedAt"]},"Pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"description":"Current page number (1-indexed)"},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100,"description":"Number of items per page (max 100)"},"total":{"type":"integer","minimum":0,"description":"Total number of items across all pages"},"totalPages":{"type":"integer","minimum":0,"description":"Total number of pages"},"hasNextPage":{"type":"boolean","description":"Whether there are more pages after the current page"},"hasPrevPage":{"type":"boolean","description":"Whether there are pages before the current page"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}}},"paths":{"/api/public/v1/projects/{id}/feedback":{"get":{"summary":"💬 Get Project Feedback (Comments)","description":"## Get Project Feedback/Comments\n\nRetrieve all comments and feedback associated with a project. This includes comments from both your team and the Locaria team.\n\n### Pagination\n\nComments are paginated. Use `page` and `limit` parameters to navigate through comments.\n\n### Use Cases\n\n- Review feedback from the Locaria team\n- See your previous comments\n- Track project communication history","tags":["🚀 Projects"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"Project ID"},"required":true,"description":"Project ID","name":"id","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","default":"1","description":"Page number to retrieve (starts from 1)"},"required":false,"description":"Page number to retrieve (starts from 1)","name":"page","in":"query"},{"schema":{"type":"string","pattern":"^\\d+$","default":"50","description":"Number of items per page (max 100)"},"required":false,"description":"Number of items per page (max 100)","name":"limit","in":"query"}],"responses":{"200":{"description":"Project feedback retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectFeedbackResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Access denied"},"404":{"description":"Project not found"}}}}}}
````
