> 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/client-api/reference/models.md).

# Models

## The SuccessResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Indicates the request was successful"},"message":{"type":"string","description":"Optional success message"}},"required":["success"]}}}}
```

## The ErrorResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Indicates the request failed"},"error":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable error message"},"code":{"type":"string","description":"Machine-readable error code for programmatic handling"},"details":{"type":"object","additionalProperties":{},"description":"Additional error details for debugging"}},"required":["message","code"]}},"required":["success","error"]}}}}
```

## The Pagination object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The InvalidApiKeyError object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"InvalidApiKeyError":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable error description"},"code":{"type":"string","enum":["AUTH_API_KEY_INVALID","AUTH_API_KEY_REVOKED","AUTH_API_KEY_EXPIRED","AUTH_API_KEY_USER_BLOCKED","AUTH_API_KEY_USER_ARCHIVED"],"description":"Error code indicating the specific authentication failure:\n\n- `AUTH_API_KEY_INVALID`: The API key is not recognized\n- `AUTH_API_KEY_REVOKED`: The API key has been revoked\n- `AUTH_API_KEY_EXPIRED`: The API key has expired\n- `AUTH_API_KEY_USER_BLOCKED`: The key owner's account is blocked\n- `AUTH_API_KEY_USER_ARCHIVED`: The key owner's account is archived"}},"required":["message","code"]}},"required":["success","error"]}}}}
```

## The PublicService object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicService":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the service"},"name":{"type":"string","description":"Human-readable service name"},"type":{"type":"string","enum":["LINGUISTICS","NON_LINGUISTICS"],"description":"Service category type:\n- `LINGUISTICS`: Language-based services (translation, transcription, etc.)\n- `NON_LINGUISTICS`: Non-language services (desktop publishing, QA, etc.)"}},"required":["id","name","type"]}}}}
```

## The GetServicesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GetServicesResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicService"},"description":"List of services available to your company"}},"required":["success","data"]},"PublicService":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the service"},"name":{"type":"string","description":"Human-readable service name"},"type":{"type":"string","enum":["LINGUISTICS","NON_LINGUISTICS"],"description":"Service category type:\n- `LINGUISTICS`: Language-based services (translation, transcription, etc.)\n- `NON_LINGUISTICS`: Non-language services (desktop publishing, QA, etc.)"}},"required":["id","name","type"]}}}}
```

## The PublicLanguage object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicLanguage":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"**Language ID - Use this in RFQ creation!** Unique identifier for the language."},"name":{"type":"string","description":"English name of the language"},"iso639Code":{"type":"string","description":"ISO 639 language code (can be 2 or 3 characters, or numeric)"},"isActive":{"type":"boolean","description":"Whether the language is currently active"},"createdAt":{"type":"string","description":"ISO timestamp when the language was created"},"updatedAt":{"type":"string","description":"ISO timestamp when the language was last updated"}},"required":["id","name","iso639Code","isActive","createdAt","updatedAt"]}}}}
```

## The GetLanguagesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GetLanguagesResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"suggestedLanguages":{"type":"array","items":{"$ref":"#/components/schemas/PublicLanguage"},"description":"Languages commonly used by your company.\n\nThese are prioritized based on your previous projects and company preferences."},"otherLanguages":{"type":"array","items":{"$ref":"#/components/schemas/PublicLanguage"},"description":"All other available languages not in the suggested list"}},"required":["suggestedLanguages","otherLanguages"],"description":"Categorized language lists"}},"required":["success","data"]},"PublicLanguage":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"**Language ID - Use this in RFQ creation!** Unique identifier for the language."},"name":{"type":"string","description":"English name of the language"},"iso639Code":{"type":"string","description":"ISO 639 language code (can be 2 or 3 characters, or numeric)"},"isActive":{"type":"boolean","description":"Whether the language is currently active"},"createdAt":{"type":"string","description":"ISO timestamp when the language was created"},"updatedAt":{"type":"string","description":"ISO timestamp when the language was last updated"}},"required":["id","name","iso639Code","isActive","createdAt","updatedAt"]}}}}
```

## The PublicTargetMarket object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicTargetMarket":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the target market"},"name":{"type":"string","description":"Human-readable name of the target market/region"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code"}},"required":["id","name","countryCode"]}}}}
```

## The GetTargetMarketsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GetTargetMarketsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicTargetMarket"},"description":"List of target markets available to your company"}},"required":["success","data"]},"PublicTargetMarket":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the target market"},"name":{"type":"string","description":"Human-readable name of the target market/region"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code"}},"required":["id","name","countryCode"]}}}}
```

## The PublicCompany object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicCompany":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the company"},"name":{"type":"string","description":"Company name"},"shortCode":{"type":"string","description":"Short code identifier for the company"},"clientType":{"type":"string","enum":["direct_client","agency","subsidiary"],"description":"Type of client:\n- `direct_client`: Direct client company\n- `agency`: Translation agency\n- `subsidiary`: Subsidiary of a parent company"}},"required":["id","name"]}}}}
```

## The GetCompaniesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GetCompaniesResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"companies":{"type":"array","items":{"$ref":"#/components/schemas/PublicCompany"},"description":"List of companies the user has access to"}},"required":["companies"],"description":"Company data"}},"required":["success","data"]},"PublicCompany":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the company"},"name":{"type":"string","description":"Company name"},"shortCode":{"type":"string","description":"Short code identifier for the company"},"clientType":{"type":"string","enum":["direct_client","agency","subsidiary"],"description":"Type of client:\n- `direct_client`: Direct client company\n- `agency`: Translation agency\n- `subsidiary`: Subsidiary of a parent company"}},"required":["id","name"]}}}}
```

## The LinguisticsService object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"LinguisticsService":{"type":"object","properties":{"serviceId":{"type":"string","format":"uuid","description":"Service ID (serviceUUID) from GET /api/public/v1/client/services. Must be a service with type \"LINGUISTICS\".\n\n📖 **To get service IDs**: See the [Client Services](#tag/%F0%9F%A7%A9%20Client%20Services) section → `GET /api/public/v1/client/services`"},"type":{"type":"string","enum":["LINGUISTICS"],"description":"Service type - use LINGUISTICS for translation/localization"},"sourceLanguageId":{"type":"string","format":"uuid","description":"Source language ID from GET /api/public/v1/client/languages. Maps to combos[].sourceLanguage internally.\n\n📖 **To get language IDs**: See the [Languages](#tag/%F0%9F%8C%8D%20Languages) section → `GET /api/public/v1/client/languages`"},"targetLanguageIds":{"type":"array","items":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"minItems":1,"description":"Array of target language IDs from GET /api/public/v1/client/languages. Each maps to combos[].targetLanguages[].languageId.\n\n📖 **To get language IDs**: See the [Languages](#tag/%F0%9F%8C%8D%20Languages) section → `GET /api/public/v1/client/languages`"},"assetFileIds":{"type":"array","items":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"description":"Optional array of pre-uploaded file IDs to attach to this service.\n\n📤 **To get file IDs**:\n1. Upload files using `POST /api/public/v1/files/upload/presigned-url` (see [File Upload](#tag/%F0%9F%93%A4%20File%20Upload) section)\n2. Get the `fileId` from the response\n3. Include it in this array\n\n**Important**: Files are uploaded per service. Each service can have its own set of files.\n\n**Example**: `[\"67eb9e88-7962-41a1-9695-f2051a968728\", \"another-file-id\"]`\n\nThe system automatically transforms these file IDs into the internal assets format (`assets` array with `type: \"FILE\"`, `assetType: \"SOURCE\"`)."}},"required":["serviceId","type","sourceLanguageId","targetLanguageIds"]}}}}
```

## The NonLinguisticsService object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"NonLinguisticsService":{"type":"object","properties":{"serviceId":{"type":"string","format":"uuid","description":"Service ID (serviceUUID) from GET /api/public/v1/client/services. Must be a service with type \"NON_LINGUISTICS\".\n\n📖 **To get service IDs**: See the [Client Services](#tag/%F0%9F%A7%A9%20Client%20Services) section → `GET /api/public/v1/client/services`"},"type":{"type":"string","enum":["NON_LINGUISTICS"],"description":"Service type - use NON_LINGUISTICS for video adaptation, creative services"},"targetMarketIds":{"type":"array","items":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"minItems":1,"description":"Array of target market IDs from GET /api/public/v1/client/target-markets. Each ID maps to targetMarkets[].targetMarketId internally.\n\n📖 **To get target market IDs**: See the [Target Markets](#tag/%F0%9F%8E%AF%20Target%20Markets) section → `GET /api/public/v1/client/target-markets`"},"assetFileIds":{"type":"array","items":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"description":"Optional array of pre-uploaded file IDs to attach to this service.\n\n📤 **To get file IDs**:\n1. Upload files using `POST /api/public/v1/files/upload/presigned-url` (see [File Upload](#tag/%F0%9F%93%A4%20File%20Upload) section)\n2. Get the `fileId` from the response\n3. Include it in this array\n\n**Important**: Files are uploaded per service. Each service can have its own set of files.\n\n**Example**: `[\"67eb9e88-7962-41a1-9695-f2051a968728\", \"another-file-id\"]`\n\nThe system automatically transforms these file IDs into the internal assets format (`assets` array with `type: \"FILE\"`, `assetType: \"SOURCE\"`)."}},"required":["serviceId","type","targetMarketIds"]}}}}
```

## The RFQStatus object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"RFQStatus":{"type":"string","enum":["PENDING","CHANGED_TO_QUOTE","CHANGED_TO_PROJECT"],"description":"RFQ lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `PENDING` | Submitted - waiting for Adaptria to review and provide a quote |\n| `CHANGED_TO_QUOTE` | Adaptria has provided a quote based on this RFQ |\n| `CHANGED_TO_PROJECT` | Quote was accepted and converted to an active project |"}}}}
```

## The CreateRFQRequest object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"CreateRFQRequest":{"type":"object","properties":{"companyId":{"type":"string","format":"uuid","description":"The company ID this RFQ belongs to.\n\n**Important**: You must have access to this company through your API credentials.\n\n📖 **To get company IDs**: See the [Companies](#tag/%F0%9F%8F%A2%20Companies) section → `GET /api/public/v1/client/companies`"},"projectName":{"type":"string","minLength":1,"maxLength":255,"description":"A clear, descriptive name for your project.\n\n**Best Practices**:\n- Be specific: \"Q4 Marketing Campaign - German Website\" vs \"Translation Project\"\n- Include key identifiers: campaign name, product, date"},"projectDescription":{"type":"string","minLength":1,"maxLength":2000,"description":"Detailed description of what needs to be translated/localized.\n\n**Include**: Content type, volume estimate, specific requirements, file formats"},"backgroundInfo":{"type":"string","maxLength":1000,"description":"Additional context about your company, brand, or project"},"targetAudience":{"type":"string","maxLength":500,"description":"Who will consume the translated content? Helps with tone and terminology choices."},"poNumber":{"type":"string","maxLength":100,"description":"Your internal Purchase Order number (must be unique per company)"},"referenceNumber":{"type":"string","maxLength":100,"description":"Your internal reference or ticket number"},"projectDueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"When do you need the final deliverables? (YYYY-MM-DD, can be null)"},"deadlineForQuote":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"By when do you need the quote? (YYYY-MM-DD)"},"services":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/LinguisticsService"},{"$ref":"#/components/schemas/NonLinguisticsService"}],"discriminator":{"propertyName":"type","mapping":{"LINGUISTICS":"#/components/schemas/LinguisticsService","NON_LINGUISTICS":"#/components/schemas/NonLinguisticsService"}}},"description":"**Services to include in this RFQ**\n\nEach service requires different fields based on its type:\n\n**LINGUISTICS** (translation/localization):\n- `serviceId`: Service ID - see [Client Services](#tag/%F0%9F%A7%A9%20Client%20Services) section\n- `type`: \"LINGUISTICS\"\n- `sourceLanguageId`: Source language ID - see [Languages](#tag/%F0%9F%8C%8D%20Languages) section\n- `targetLanguageIds`: Array of target language IDs - see [Languages](#tag/%F0%9F%8C%8D%20Languages) section\n- `assetFileIds`: (optional) Pre-uploaded file IDs - see [File Upload](#tag/%F0%9F%93%A4%20File%20Upload) section\n\n**NON_LINGUISTICS** (video adaptation, creative):\n- `serviceId`: Service ID - see [Client Services](#tag/%F0%9F%A7%A9%20Client%20Services) section\n- `type`: \"NON_LINGUISTICS\"\n- `targetMarketIds`: Array of target market IDs - see [Target Markets](#tag/%F0%9F%8E%AF%20Target%20Markets) section\n- `assetFileIds`: (optional) Pre-uploaded file IDs - see [File Upload](#tag/%F0%9F%93%A4%20File%20Upload) section"},"autoSubmit":{"type":"boolean","default":true,"description":"If true (default), the RFQ is automatically submitted with PENDING status."}},"required":["companyId","projectName","projectDescription"]},"LinguisticsService":{"type":"object","properties":{"serviceId":{"type":"string","format":"uuid","description":"Service ID (serviceUUID) from GET /api/public/v1/client/services. Must be a service with type \"LINGUISTICS\".\n\n📖 **To get service IDs**: See the [Client Services](#tag/%F0%9F%A7%A9%20Client%20Services) section → `GET /api/public/v1/client/services`"},"type":{"type":"string","enum":["LINGUISTICS"],"description":"Service type - use LINGUISTICS for translation/localization"},"sourceLanguageId":{"type":"string","format":"uuid","description":"Source language ID from GET /api/public/v1/client/languages. Maps to combos[].sourceLanguage internally.\n\n📖 **To get language IDs**: See the [Languages](#tag/%F0%9F%8C%8D%20Languages) section → `GET /api/public/v1/client/languages`"},"targetLanguageIds":{"type":"array","items":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"minItems":1,"description":"Array of target language IDs from GET /api/public/v1/client/languages. Each maps to combos[].targetLanguages[].languageId.\n\n📖 **To get language IDs**: See the [Languages](#tag/%F0%9F%8C%8D%20Languages) section → `GET /api/public/v1/client/languages`"},"assetFileIds":{"type":"array","items":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"description":"Optional array of pre-uploaded file IDs to attach to this service.\n\n📤 **To get file IDs**:\n1. Upload files using `POST /api/public/v1/files/upload/presigned-url` (see [File Upload](#tag/%F0%9F%93%A4%20File%20Upload) section)\n2. Get the `fileId` from the response\n3. Include it in this array\n\n**Important**: Files are uploaded per service. Each service can have its own set of files.\n\n**Example**: `[\"67eb9e88-7962-41a1-9695-f2051a968728\", \"another-file-id\"]`\n\nThe system automatically transforms these file IDs into the internal assets format (`assets` array with `type: \"FILE\"`, `assetType: \"SOURCE\"`)."}},"required":["serviceId","type","sourceLanguageId","targetLanguageIds"]},"NonLinguisticsService":{"type":"object","properties":{"serviceId":{"type":"string","format":"uuid","description":"Service ID (serviceUUID) from GET /api/public/v1/client/services. Must be a service with type \"NON_LINGUISTICS\".\n\n📖 **To get service IDs**: See the [Client Services](#tag/%F0%9F%A7%A9%20Client%20Services) section → `GET /api/public/v1/client/services`"},"type":{"type":"string","enum":["NON_LINGUISTICS"],"description":"Service type - use NON_LINGUISTICS for video adaptation, creative services"},"targetMarketIds":{"type":"array","items":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"minItems":1,"description":"Array of target market IDs from GET /api/public/v1/client/target-markets. Each ID maps to targetMarkets[].targetMarketId internally.\n\n📖 **To get target market IDs**: See the [Target Markets](#tag/%F0%9F%8E%AF%20Target%20Markets) section → `GET /api/public/v1/client/target-markets`"},"assetFileIds":{"type":"array","items":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"description":"Optional array of pre-uploaded file IDs to attach to this service.\n\n📤 **To get file IDs**:\n1. Upload files using `POST /api/public/v1/files/upload/presigned-url` (see [File Upload](#tag/%F0%9F%93%A4%20File%20Upload) section)\n2. Get the `fileId` from the response\n3. Include it in this array\n\n**Important**: Files are uploaded per service. Each service can have its own set of files.\n\n**Example**: `[\"67eb9e88-7962-41a1-9695-f2051a968728\", \"another-file-id\"]`\n\nThe system automatically transforms these file IDs into the internal assets format (`assets` array with `type: \"FILE\"`, `assetType: \"SOURCE\"`)."}},"required":["serviceId","type","targetMarketIds"]}}}}
```

## The CreateRFQResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"CreateRFQResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the created RFQ - use this for all subsequent operations"},"rfqNumber":{"type":["string","null"],"description":"Human-readable RFQ number (assigned after submission, null for drafts)"},"projectName":{"type":"string"},"status":{"type":"string","enum":["PENDING","CHANGED_TO_QUOTE","CHANGED_TO_PROJECT"],"description":"RFQ status - starts at PENDING when submitted"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string","description":"Company name"}},"required":["id","name"]},"servicesAdded":{"type":"number","description":"Number of services configured in the RFQ"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","rfqNumber","projectName","status","company","servicesAdded","createdAt","updatedAt"]},"message":{"type":"string"}},"required":["success","data"]}}}}
```

## The RFQListItem object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"RFQListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"rfqNumber":{"type":["string","null"],"description":"Human-readable RFQ number (null for drafts)"},"projectName":{"type":"string"},"status":{"type":"string","enum":["PENDING","CHANGED_TO_QUOTE","CHANGED_TO_PROJECT"],"description":"RFQ lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `PENDING` | Submitted - waiting for Adaptria to review and provide a quote |\n| `CHANGED_TO_QUOTE` | Adaptria has provided a quote based on this RFQ |\n| `CHANGED_TO_PROJECT` | Quote was accepted and converted to an active project |"},"companyId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"companyName":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"submittedAt":{"type":"string","format":"date-time"}},"required":["id","rfqNumber","projectName","status","companyId","companyName","createdAt","updatedAt"]}}}}
```

## The ListRFQsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListRFQsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"$ref":"#/components/schemas/RFQListItem"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["success","data","pagination"]},"RFQListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"rfqNumber":{"type":["string","null"],"description":"Human-readable RFQ number (null for drafts)"},"projectName":{"type":"string"},"status":{"type":"string","enum":["PENDING","CHANGED_TO_QUOTE","CHANGED_TO_PROJECT"],"description":"RFQ lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `PENDING` | Submitted - waiting for Adaptria to review and provide a quote |\n| `CHANGED_TO_QUOTE` | Adaptria has provided a quote based on this RFQ |\n| `CHANGED_TO_PROJECT` | Quote was accepted and converted to an active project |"},"companyId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"companyName":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"submittedAt":{"type":"string","format":"date-time"}},"required":["id","rfqNumber","projectName","status","companyId","companyName","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"]}}}}
```

## The RFQDetails object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"RFQDetails":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"rfqNumber":{"type":["string","null"]},"projectName":{"type":"string"},"status":{"type":"string","enum":["PENDING","CHANGED_TO_QUOTE","CHANGED_TO_PROJECT"],"description":"RFQ lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `PENDING` | Submitted - waiting for Adaptria to review and provide a quote |\n| `CHANGED_TO_QUOTE` | Adaptria has provided a quote based on this RFQ |\n| `CHANGED_TO_PROJECT` | Quote was accepted and converted to an active project |"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"}},"required":["id","name"]},"generalInformation":{"type":"object","properties":{"projectName":{"type":"string"},"projectDescription":{"type":"string"},"backgroundInfo":{"type":"string"},"targetAudience":{"type":"string"},"poNumber":{"type":"string"},"referenceNumber":{"type":"string"}},"required":["projectName"]},"projectDueDate":{"type":["string","null"]},"deadlineForQuote":{"type":"string"},"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the service"},"name":{"type":"string","description":"Human-readable service name"}},"required":["id","name"]}},"languages":{"type":"object","properties":{"sourceLanguages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"**Language ID - Use this in RFQ creation!** Unique identifier for the language."},"name":{"type":"string","description":"English name of the language"}},"required":["id","name"]}},"targetLanguages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"**Language ID - Use this in RFQ creation!** Unique identifier for the language."},"name":{"type":"string","description":"English name of the language"}},"required":["id","name"]}}},"required":["sourceLanguages","targetLanguages"]},"targetMarkets":{"type":"array","items":{"$ref":"#/components/schemas/PublicTargetMarket"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"submittedAt":{"type":"string","format":"date-time"}},"required":["id","rfqNumber","projectName","status","company","generalInformation","services","languages","targetMarkets","createdAt","updatedAt"]},"PublicTargetMarket":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the target market"},"name":{"type":"string","description":"Human-readable name of the target market/region"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code"}},"required":["id","name","countryCode"]}}}}
```

## The QuoteStatus object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"QuoteStatus":{"type":"string","enum":["PENDING","SENT","SENT_PENDING","REVISED","SENT_REVISED","ACCEPTED","REJECTED","EXPIRED","CANCELLED","CHANGED_TO_PROJECT"],"description":"Quote lifecycle status. Admin/internal API keys receive the same statuses as the main app. Client API keys receive client-facing statuses where `SENT` and `SENT_PENDING` are shown as `PENDING`, and `SENT_REVISED` is shown as `REVISED`.\n\n| Status | Description |\n|--------|-------------|\n| `PENDING` | Quote being prepared |\n| `SENT` | Quote sent to client |\n| `SENT_PENDING` | Quote sent and pending client action (admin/internal view) |\n| `REVISED` | Quote revised after feedback |\n| `SENT_REVISED` | Revised quote sent and pending client action (admin/internal view) |\n| `ACCEPTED` | Quote accepted by client |\n| `REJECTED` | Quote declined by client |\n| `EXPIRED` | Quote expired |\n| `CANCELLED` | Quote cancelled |\n| `CHANGED_TO_PROJECT` | Quote converted to project |\n"}}}}
```

## The QuoteListItem object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"QuoteListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the quote"},"quoteNumber":{"type":["string","null"],"description":"Human-readable quote number (null for pending quotes)"},"projectName":{"type":["string","null"],"description":"Project name from the original RFQ"},"projectDescription":{"type":["string","null"],"description":"Project description from the RFQ (when available in list)"},"status":{"type":"string","enum":["PENDING","SENT","SENT_PENDING","REVISED","SENT_REVISED","ACCEPTED","REJECTED","EXPIRED","CANCELLED","CHANGED_TO_PROJECT"],"description":"Quote lifecycle status. Admin/internal API keys receive the same statuses as the main app. Client API keys receive client-facing statuses where `SENT` and `SENT_PENDING` are shown as `PENDING`, and `SENT_REVISED` is shown as `REVISED`.\n\n| Status | Description |\n|--------|-------------|\n| `PENDING` | Quote being prepared |\n| `SENT` | Quote sent to client |\n| `SENT_PENDING` | Quote sent and pending client action (admin/internal view) |\n| `REVISED` | Quote revised after feedback |\n| `SENT_REVISED` | Revised quote sent and pending client action (admin/internal view) |\n| `ACCEPTED` | Quote accepted by client |\n| `REJECTED` | Quote declined by client |\n| `EXPIRED` | Quote expired |\n| `CANCELLED` | Quote cancelled |\n| `CHANGED_TO_PROJECT` | Quote converted to project |\n"},"companyId":{"type":["string","null"],"format":"uuid","description":"Company ID this quote belongs to"},"companyName":{"type":["string","null"],"description":"Company name"},"totalPrice":{"type":["object","null"],"properties":{"amount":{"type":"number","description":"Total price amount"},"currency":{"type":"string","description":"Currency code (ISO 4217)"}},"required":["amount","currency"],"description":"Total quote price (null if not yet calculated)"},"quoteDate":{"type":["string","null"],"format":"date-time","description":"Date when quote was created/sent"},"deadlineForQuote":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Deadline for quote response (from RFQ)"},"projectDueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Project delivery deadline (from RFQ)"},"referenceNumber":{"type":["string","null"],"description":"Client or internal reference number"},"validUntil":{"type":["string","null"],"format":"date-time","description":"Quote validity expiration date"},"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","quoteNumber","projectName","status","companyId","companyName","totalPrice","quoteDate","deadlineForQuote","projectDueDate"]}}}}
```

## The QuoteDetails object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"QuoteDetails":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the quote"},"quoteNumber":{"type":["string","null"],"description":"Human-readable quote number"},"projectName":{"type":["string","null"],"description":"Project name from the original RFQ"},"projectDescription":{"type":["string","null"],"description":"Project description from the original RFQ"},"status":{"type":"string","enum":["PENDING","SENT","SENT_PENDING","REVISED","SENT_REVISED","ACCEPTED","REJECTED","EXPIRED","CANCELLED","CHANGED_TO_PROJECT"],"description":"Quote lifecycle status. Admin/internal API keys receive the same statuses as the main app. Client API keys receive client-facing statuses where `SENT` and `SENT_PENDING` are shown as `PENDING`, and `SENT_REVISED` is shown as `REVISED`.\n\n| Status | Description |\n|--------|-------------|\n| `PENDING` | Quote being prepared |\n| `SENT` | Quote sent to client |\n| `SENT_PENDING` | Quote sent and pending client action (admin/internal view) |\n| `REVISED` | Quote revised after feedback |\n| `SENT_REVISED` | Revised quote sent and pending client action (admin/internal view) |\n| `ACCEPTED` | Quote accepted by client |\n| `REJECTED` | Quote declined by client |\n| `EXPIRED` | Quote expired |\n| `CANCELLED` | Quote cancelled |\n| `CHANGED_TO_PROJECT` | Quote converted to project |\n"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string","description":"Company name"},"country":{"type":["string","null"],"description":"Country code (ISO 3166-1 alpha-2)"},"timezone":{"type":["string","null"],"description":"Company timezone"},"clientUsers":{"type":"array","items":{"$ref":"#/components/schemas/QuoteClientUser"},"description":"Client users associated with this quote"},"logo":{"type":["object","null"],"properties":{"url":{"type":"string"}},"required":["url"],"description":"Company logo"},"team":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"},"shortName":{"type":"string"}},"required":["id","name","shortName"],"description":"Assigned team"}},"required":["id","name","country","timezone","clientUsers"],"description":"Company information"},"totalPrice":{"type":["object","null"],"properties":{"amount":{"type":"number","description":"Total price amount"},"currency":{"type":"string","description":"Currency code (ISO 4217)"}},"required":["amount","currency"],"description":"Total quote price"},"quoteDate":{"type":["string","null"],"format":"date-time","description":"Date when quote was created/sent"},"deadlineForQuote":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Deadline for quote response"},"projectDueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Project delivery deadline"},"validUntil":{"type":["string","null"],"format":"date-time","description":"Quote validity expiration date"},"referenceNumber":{"type":["string","null"],"description":"Client or internal reference number"},"poNumber":{"type":["string","null"],"description":"Purchase order number if provided"},"poRequired":{"type":["boolean","null"],"description":"Whether a PO is required for this quote"},"generalInformation":{"type":["object","null"],"properties":{"projectName":{"type":["string","null"]},"projectDescription":{"type":["string","null"]},"backgroundInfo":{"type":["string","null"]},"targetAudience":{"type":["string","null"]},"referenceNumber":{"type":["string","null"]}},"required":["projectName","projectDescription","backgroundInfo","targetAudience","referenceNumber"],"description":"General project information"},"timeline":{"type":["object","null"],"properties":{"quoteExpiryDate":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"},"projectDueDate":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["quoteExpiryDate","projectDueDate"],"description":"Quote and project timeline"},"rfqInformation":{"type":["object","null"],"properties":{"rfqId":{"type":["string","null"]},"rfqNo":{"type":["string","null"]},"deadlineForQuote":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"}},"required":["rfqId","rfqNo","deadlineForQuote"],"description":"Source RFQ information"},"projectTeam":{"type":["object","null"],"properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/QuoteTeamMember"}},"projectOwner":{"type":["object","null"],"properties":{"name":{"type":"string"},"email":{"type":"string"},"userId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"profilePicture":{"type":["object","null"],"properties":{"url":{"type":"string"}},"required":["url"]}},"required":["name","email","userId"]}},"required":["members"],"description":"Project team members"},"itemsPricing":{"type":["object","null"],"properties":{"teams":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingTeam"}},"total":{"type":"number"},"calculatedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["teams","total","calculatedAt"],"description":"Detailed pricing breakdown by team and service"},"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","quoteNumber","projectName","projectDescription","status","company","totalPrice","quoteDate","deadlineForQuote","projectDueDate","validUntil"]},"QuoteClientUser":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"profilePicture":{"type":["object","null"],"properties":{"url":{"type":"string"}},"required":["url"]}},"required":["id","name","email","role"]},"QuoteTeamMember":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"isProjectOwner":{"type":"boolean"},"profilePicture":{"type":["object","null"],"properties":{"url":{"type":"string"}},"required":["url"]}},"required":["userId","name","email","role","isProjectOwner"]},"QuotePricingTeam":{"type":"object","properties":{"teamName":{"type":"string"},"currency":{"type":"string"},"total":{"type":"number"},"clientServices":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingService"}}},"required":["teamName","currency","total","clientServices"]},"QuotePricingService":{"type":"object","properties":{"serviceName":{"type":"string"},"serviceType":{"type":"string"},"dueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"},"notes":{"type":["string","null"]},"total":{"type":"number"},"targetMarkets":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingTargetMarket"}}},"required":["serviceName","serviceType","dueDate","notes","total","targetMarkets"]},"QuotePricingTargetMarket":{"type":"object","properties":{"targetMarketId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"targetMarketLabel":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingLineItem"}},"subTotal":{"type":"number"}},"required":["targetMarketId","targetMarketLabel","items","subTotal"]},"QuotePricingLineItem":{"type":"object","properties":{"itemName":{"type":"string"},"unit":{"type":"string"},"quantity":{"type":"number"},"unitPrice":{"type":"number"},"totalPrice":{"type":"number"}},"required":["itemName","unit","quantity","unitPrice","totalPrice"]}}}}
```

## The QuoteClientUser object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"QuoteClientUser":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"profilePicture":{"type":["object","null"],"properties":{"url":{"type":"string"}},"required":["url"]}},"required":["id","name","email","role"]}}}}
```

## The QuoteTeamMember object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"QuoteTeamMember":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"isProjectOwner":{"type":"boolean"},"profilePicture":{"type":["object","null"],"properties":{"url":{"type":"string"}},"required":["url"]}},"required":["userId","name","email","role","isProjectOwner"]}}}}
```

## The QuotePricingTeam object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"QuotePricingTeam":{"type":"object","properties":{"teamName":{"type":"string"},"currency":{"type":"string"},"total":{"type":"number"},"clientServices":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingService"}}},"required":["teamName","currency","total","clientServices"]},"QuotePricingService":{"type":"object","properties":{"serviceName":{"type":"string"},"serviceType":{"type":"string"},"dueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"},"notes":{"type":["string","null"]},"total":{"type":"number"},"targetMarkets":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingTargetMarket"}}},"required":["serviceName","serviceType","dueDate","notes","total","targetMarkets"]},"QuotePricingTargetMarket":{"type":"object","properties":{"targetMarketId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"targetMarketLabel":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingLineItem"}},"subTotal":{"type":"number"}},"required":["targetMarketId","targetMarketLabel","items","subTotal"]},"QuotePricingLineItem":{"type":"object","properties":{"itemName":{"type":"string"},"unit":{"type":"string"},"quantity":{"type":"number"},"unitPrice":{"type":"number"},"totalPrice":{"type":"number"}},"required":["itemName","unit","quantity","unitPrice","totalPrice"]}}}}
```

## The QuotePricingService object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"QuotePricingService":{"type":"object","properties":{"serviceName":{"type":"string"},"serviceType":{"type":"string"},"dueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"},"notes":{"type":["string","null"]},"total":{"type":"number"},"targetMarkets":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingTargetMarket"}}},"required":["serviceName","serviceType","dueDate","notes","total","targetMarkets"]},"QuotePricingTargetMarket":{"type":"object","properties":{"targetMarketId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"targetMarketLabel":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingLineItem"}},"subTotal":{"type":"number"}},"required":["targetMarketId","targetMarketLabel","items","subTotal"]},"QuotePricingLineItem":{"type":"object","properties":{"itemName":{"type":"string"},"unit":{"type":"string"},"quantity":{"type":"number"},"unitPrice":{"type":"number"},"totalPrice":{"type":"number"}},"required":["itemName","unit","quantity","unitPrice","totalPrice"]}}}}
```

## The QuotePricingTargetMarket object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"QuotePricingTargetMarket":{"type":"object","properties":{"targetMarketId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"targetMarketLabel":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingLineItem"}},"subTotal":{"type":"number"}},"required":["targetMarketId","targetMarketLabel","items","subTotal"]},"QuotePricingLineItem":{"type":"object","properties":{"itemName":{"type":"string"},"unit":{"type":"string"},"quantity":{"type":"number"},"unitPrice":{"type":"number"},"totalPrice":{"type":"number"}},"required":["itemName","unit","quantity","unitPrice","totalPrice"]}}}}
```

## The QuotePricingLineItem object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"QuotePricingLineItem":{"type":"object","properties":{"itemName":{"type":"string"},"unit":{"type":"string"},"quantity":{"type":"number"},"unitPrice":{"type":"number"},"totalPrice":{"type":"number"}},"required":["itemName","unit","quantity","unitPrice","totalPrice"]}}}}
```

## The ListQuotesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListQuotesResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"$ref":"#/components/schemas/QuoteListItem"},"description":"List of quotes"},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["success","data","pagination"]},"QuoteListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the quote"},"quoteNumber":{"type":["string","null"],"description":"Human-readable quote number (null for pending quotes)"},"projectName":{"type":["string","null"],"description":"Project name from the original RFQ"},"projectDescription":{"type":["string","null"],"description":"Project description from the RFQ (when available in list)"},"status":{"type":"string","enum":["PENDING","SENT","SENT_PENDING","REVISED","SENT_REVISED","ACCEPTED","REJECTED","EXPIRED","CANCELLED","CHANGED_TO_PROJECT"],"description":"Quote lifecycle status. Admin/internal API keys receive the same statuses as the main app. Client API keys receive client-facing statuses where `SENT` and `SENT_PENDING` are shown as `PENDING`, and `SENT_REVISED` is shown as `REVISED`.\n\n| Status | Description |\n|--------|-------------|\n| `PENDING` | Quote being prepared |\n| `SENT` | Quote sent to client |\n| `SENT_PENDING` | Quote sent and pending client action (admin/internal view) |\n| `REVISED` | Quote revised after feedback |\n| `SENT_REVISED` | Revised quote sent and pending client action (admin/internal view) |\n| `ACCEPTED` | Quote accepted by client |\n| `REJECTED` | Quote declined by client |\n| `EXPIRED` | Quote expired |\n| `CANCELLED` | Quote cancelled |\n| `CHANGED_TO_PROJECT` | Quote converted to project |\n"},"companyId":{"type":["string","null"],"format":"uuid","description":"Company ID this quote belongs to"},"companyName":{"type":["string","null"],"description":"Company name"},"totalPrice":{"type":["object","null"],"properties":{"amount":{"type":"number","description":"Total price amount"},"currency":{"type":"string","description":"Currency code (ISO 4217)"}},"required":["amount","currency"],"description":"Total quote price (null if not yet calculated)"},"quoteDate":{"type":["string","null"],"format":"date-time","description":"Date when quote was created/sent"},"deadlineForQuote":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Deadline for quote response (from RFQ)"},"projectDueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Project delivery deadline (from RFQ)"},"referenceNumber":{"type":["string","null"],"description":"Client or internal reference number"},"validUntil":{"type":["string","null"],"format":"date-time","description":"Quote validity expiration date"},"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","quoteNumber","projectName","status","companyId","companyName","totalPrice","quoteDate","deadlineForQuote","projectDueDate"]},"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"]}}}}
```

## The GetQuoteDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GetQuoteDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/QuoteDetails"}},"required":["success","data"]},"QuoteDetails":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the quote"},"quoteNumber":{"type":["string","null"],"description":"Human-readable quote number"},"projectName":{"type":["string","null"],"description":"Project name from the original RFQ"},"projectDescription":{"type":["string","null"],"description":"Project description from the original RFQ"},"status":{"type":"string","enum":["PENDING","SENT","SENT_PENDING","REVISED","SENT_REVISED","ACCEPTED","REJECTED","EXPIRED","CANCELLED","CHANGED_TO_PROJECT"],"description":"Quote lifecycle status. Admin/internal API keys receive the same statuses as the main app. Client API keys receive client-facing statuses where `SENT` and `SENT_PENDING` are shown as `PENDING`, and `SENT_REVISED` is shown as `REVISED`.\n\n| Status | Description |\n|--------|-------------|\n| `PENDING` | Quote being prepared |\n| `SENT` | Quote sent to client |\n| `SENT_PENDING` | Quote sent and pending client action (admin/internal view) |\n| `REVISED` | Quote revised after feedback |\n| `SENT_REVISED` | Revised quote sent and pending client action (admin/internal view) |\n| `ACCEPTED` | Quote accepted by client |\n| `REJECTED` | Quote declined by client |\n| `EXPIRED` | Quote expired |\n| `CANCELLED` | Quote cancelled |\n| `CHANGED_TO_PROJECT` | Quote converted to project |\n"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string","description":"Company name"},"country":{"type":["string","null"],"description":"Country code (ISO 3166-1 alpha-2)"},"timezone":{"type":["string","null"],"description":"Company timezone"},"clientUsers":{"type":"array","items":{"$ref":"#/components/schemas/QuoteClientUser"},"description":"Client users associated with this quote"},"logo":{"type":["object","null"],"properties":{"url":{"type":"string"}},"required":["url"],"description":"Company logo"},"team":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"},"shortName":{"type":"string"}},"required":["id","name","shortName"],"description":"Assigned team"}},"required":["id","name","country","timezone","clientUsers"],"description":"Company information"},"totalPrice":{"type":["object","null"],"properties":{"amount":{"type":"number","description":"Total price amount"},"currency":{"type":"string","description":"Currency code (ISO 4217)"}},"required":["amount","currency"],"description":"Total quote price"},"quoteDate":{"type":["string","null"],"format":"date-time","description":"Date when quote was created/sent"},"deadlineForQuote":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Deadline for quote response"},"projectDueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Project delivery deadline"},"validUntil":{"type":["string","null"],"format":"date-time","description":"Quote validity expiration date"},"referenceNumber":{"type":["string","null"],"description":"Client or internal reference number"},"poNumber":{"type":["string","null"],"description":"Purchase order number if provided"},"poRequired":{"type":["boolean","null"],"description":"Whether a PO is required for this quote"},"generalInformation":{"type":["object","null"],"properties":{"projectName":{"type":["string","null"]},"projectDescription":{"type":["string","null"]},"backgroundInfo":{"type":["string","null"]},"targetAudience":{"type":["string","null"]},"referenceNumber":{"type":["string","null"]}},"required":["projectName","projectDescription","backgroundInfo","targetAudience","referenceNumber"],"description":"General project information"},"timeline":{"type":["object","null"],"properties":{"quoteExpiryDate":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"},"projectDueDate":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["quoteExpiryDate","projectDueDate"],"description":"Quote and project timeline"},"rfqInformation":{"type":["object","null"],"properties":{"rfqId":{"type":["string","null"]},"rfqNo":{"type":["string","null"]},"deadlineForQuote":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"}},"required":["rfqId","rfqNo","deadlineForQuote"],"description":"Source RFQ information"},"projectTeam":{"type":["object","null"],"properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/QuoteTeamMember"}},"projectOwner":{"type":["object","null"],"properties":{"name":{"type":"string"},"email":{"type":"string"},"userId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"profilePicture":{"type":["object","null"],"properties":{"url":{"type":"string"}},"required":["url"]}},"required":["name","email","userId"]}},"required":["members"],"description":"Project team members"},"itemsPricing":{"type":["object","null"],"properties":{"teams":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingTeam"}},"total":{"type":"number"},"calculatedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["teams","total","calculatedAt"],"description":"Detailed pricing breakdown by team and service"},"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","quoteNumber","projectName","projectDescription","status","company","totalPrice","quoteDate","deadlineForQuote","projectDueDate","validUntil"]},"QuoteClientUser":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"profilePicture":{"type":["object","null"],"properties":{"url":{"type":"string"}},"required":["url"]}},"required":["id","name","email","role"]},"QuoteTeamMember":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"isProjectOwner":{"type":"boolean"},"profilePicture":{"type":["object","null"],"properties":{"url":{"type":"string"}},"required":["url"]}},"required":["userId","name","email","role","isProjectOwner"]},"QuotePricingTeam":{"type":"object","properties":{"teamName":{"type":"string"},"currency":{"type":"string"},"total":{"type":"number"},"clientServices":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingService"}}},"required":["teamName","currency","total","clientServices"]},"QuotePricingService":{"type":"object","properties":{"serviceName":{"type":"string"},"serviceType":{"type":"string"},"dueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"},"notes":{"type":["string","null"]},"total":{"type":"number"},"targetMarkets":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingTargetMarket"}}},"required":["serviceName","serviceType","dueDate","notes","total","targetMarkets"]},"QuotePricingTargetMarket":{"type":"object","properties":{"targetMarketId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"targetMarketLabel":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/QuotePricingLineItem"}},"subTotal":{"type":"number"}},"required":["targetMarketId","targetMarketLabel","items","subTotal"]},"QuotePricingLineItem":{"type":"object","properties":{"itemName":{"type":"string"},"unit":{"type":"string"},"quantity":{"type":"number"},"unitPrice":{"type":"number"},"totalPrice":{"type":"number"}},"required":["itemName","unit","quantity","unitPrice","totalPrice"]}}}}
```

## The AcceptQuoteResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"AcceptQuoteResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"status":{"type":"string","description":"New quote status (typically CHANGED_TO_PROJECT)"},"message":{"type":"string","description":"Success message"}},"required":["id","status","message"],"description":"Accept quote response data"}},"required":["success","data"]}}}}
```

## The DeclineQuoteRequest object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"DeclineQuoteRequest":{"type":"object","properties":{"reason":{"type":"string","maxLength":1000,"description":"Optional reason for rejecting the quote"}}}}}}
```

## The DeclineQuoteResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"DeclineQuoteResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"status":{"type":"string","description":"New quote status (REJECTED)"},"message":{"type":"string","description":"Success message"}},"required":["id","status","message"],"description":"Reject quote response data"}},"required":["success","data"]}}}}
```

## The QuotePdfResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"QuotePdfResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"downloadUrl":{"type":"string","format":"uri","description":"Temporary URL to download the quote PDF"},"fileName":{"type":"string","description":"PDF filename"},"expiresIn":{"type":"integer","description":"URL validity in seconds (typically 3600)"}},"required":["downloadUrl","fileName","expiresIn"],"description":"Quote PDF download information"}},"required":["success","data"]}}}}
```

## The PublicQuoteFiltersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicQuoteFiltersResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicQuoteTeamUsersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicQuoteTeamUsersResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["success","data"]}}}}
```

## The PublicQuoteSummaryResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicQuoteSummaryResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The ProjectStatus object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ProjectStatus":{"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"}}}}
```

## The ProjectListItem object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The ProjectDetails object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"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":{}}}}}
```

## The ListProjectsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"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"]}}}}
```

## The GetProjectDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"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":{}}}}}
```

## The Deliverable object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"Deliverable":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the deliverable file"},"fileName":{"type":"string","description":"Original filename"},"fileType":{"type":"string","description":"MIME type of the file"},"fileSize":{"type":"integer","description":"File size in bytes"},"category":{"type":"string","description":"File category/type"},"downloadUrl":{"type":["string","null"],"format":"uri","description":"Temporary download URL for the file"},"uploadedAt":{"type":"string","format":"date-time","description":"When the file was uploaded"},"uploadedBy":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"User ID who uploaded the file"},"name":{"type":"string","description":"User's full name or email"}},"required":["id","name"],"description":"User who uploaded the file"}},"required":["id","fileName","fileType","fileSize","category","downloadUrl","uploadedAt","uploadedBy"]}}}}
```

## The GetProjectDeliverablesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"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"]}}}}
```

## The ProjectDeliveryData object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The FinalDeliveryFilePublic object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The FinalDeliveryLinkPublic object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The Comment object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The GetProjectFeedbackResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"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"]}}}}
```

## The CreateFeedbackRequest object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"CreateFeedbackRequest":{"type":"object","properties":{"content":{"type":"string","minLength":1,"maxLength":2000,"description":"Feedback/comment content"}},"required":["content"]}}}}
```

## The CreateFeedbackResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"CreateFeedbackResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/Comment"}},"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"]}}}}
```

## The CreatePublicProjectWorkUnit object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The CreateProjectRequest object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"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"]}}}}
```

## The CreateProjectResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The CreateProjectResponseData object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The ProjectJobStatus object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ProjectJobStatus":{"type":"string","enum":["draft","requested","accepted_pending","assigned","in_progress","delivered","approved","rejected","invoiced","cancelled"],"description":"Project Job lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `draft` | Job created but not yet requested |\n| `requested` | Availability requested from talent |\n| `accepted_pending` | Talent accepted; awaiting admin assignment |\n| `assigned` | Talent assigned, work not yet started |\n| `in_progress` | Talent has started the work |\n| `delivered` | Talent has submitted deliverables |\n| `approved` | Delivery approved by client |\n| `rejected` | Delivery rejected — back to talent |\n| `invoiced` | Job has been billed |\n| `cancelled` | Job cancelled |\n"}}}}
```

## The ProjectJobListItem object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ProjectJobListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"jobNumber":{"type":["string","null"]},"jobName":{"type":["string","null"]},"status":{"type":"string","enum":["draft","requested","accepted_pending","assigned","in_progress","delivered","approved","rejected","invoiced","cancelled"],"description":"Project Job lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `draft` | Job created but not yet requested |\n| `requested` | Availability requested from talent |\n| `accepted_pending` | Talent accepted; awaiting admin assignment |\n| `assigned` | Talent assigned, work not yet started |\n| `in_progress` | Talent has started the work |\n| `delivered` | Talent has submitted deliverables |\n| `approved` | Delivery approved by client |\n| `rejected` | Delivery rejected — back to talent |\n| `invoiced` | Job has been billed |\n| `cancelled` | Job cancelled |\n"},"projectId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"service":{"$ref":"#/components/schemas/NamedRef"},"sourceLanguage":{"$ref":"#/components/schemas/NamedRef"},"targetLanguage":{"$ref":"#/components/schemas/NamedRef"},"targetMarket":{"$ref":"#/components/schemas/NamedRef"},"assignedTalent":{"$ref":"#/components/schemas/JobTalentSummary"},"dueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"},"plannedHours":{"type":["number","null"]},"loggedHours":{"type":["number","null"]},"totalCost":{"$ref":"#/components/schemas/Money"},"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","status","projectId","createdAt"]},"NamedRef":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"}},"required":["id","name"]},"JobTalentSummary":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"name":{"type":"string","description":"Full name or email fallback"},"email":{"type":["string","null"],"format":"email"}},"required":["id","name"]},"Money":{"type":["object","null"],"properties":{"amount":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["amount","currency"]}}}}
```

## The NamedRef object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"NamedRef":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"}},"required":["id","name"]}}}}
```

## The JobTalentSummary object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"JobTalentSummary":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"name":{"type":"string","description":"Full name or email fallback"},"email":{"type":["string","null"],"format":"email"}},"required":["id","name"]}}}}
```

## The Money object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"Money":{"type":["object","null"],"properties":{"amount":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["amount","currency"]}}}}
```

## The ProjectJobDetails object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ProjectJobDetails":{"allOf":[{"$ref":"#/components/schemas/ProjectJobListItem"},{"type":"object","properties":{"notes":{"type":["string","null"]},"startDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"},"approvedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"},"rejectedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"},"deliveredAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"},"rejectionReason":{"type":["string","null"]},"deliverables":{"type":"array","items":{"$ref":"#/components/schemas/ProjectJobDeliverable"}}}}]},"ProjectJobListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"jobNumber":{"type":["string","null"]},"jobName":{"type":["string","null"]},"status":{"type":"string","enum":["draft","requested","accepted_pending","assigned","in_progress","delivered","approved","rejected","invoiced","cancelled"],"description":"Project Job lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `draft` | Job created but not yet requested |\n| `requested` | Availability requested from talent |\n| `accepted_pending` | Talent accepted; awaiting admin assignment |\n| `assigned` | Talent assigned, work not yet started |\n| `in_progress` | Talent has started the work |\n| `delivered` | Talent has submitted deliverables |\n| `approved` | Delivery approved by client |\n| `rejected` | Delivery rejected — back to talent |\n| `invoiced` | Job has been billed |\n| `cancelled` | Job cancelled |\n"},"projectId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"service":{"$ref":"#/components/schemas/NamedRef"},"sourceLanguage":{"$ref":"#/components/schemas/NamedRef"},"targetLanguage":{"$ref":"#/components/schemas/NamedRef"},"targetMarket":{"$ref":"#/components/schemas/NamedRef"},"assignedTalent":{"$ref":"#/components/schemas/JobTalentSummary"},"dueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"},"plannedHours":{"type":["number","null"]},"loggedHours":{"type":["number","null"]},"totalCost":{"$ref":"#/components/schemas/Money"},"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","status","projectId","createdAt"]},"NamedRef":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"}},"required":["id","name"]},"JobTalentSummary":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"name":{"type":"string","description":"Full name or email fallback"},"email":{"type":["string","null"],"format":"email"}},"required":["id","name"]},"Money":{"type":["object","null"],"properties":{"amount":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["amount","currency"]},"ProjectJobDeliverable":{"type":"object","properties":{"fileId":{"type":["string","null"],"format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"fileName":{"type":"string"},"downloadUrl":{"type":["string","null"],"format":"uri"},"uploadedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["fileName"]}}}}
```

## The ProjectJobDeliverable object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ProjectJobDeliverable":{"type":"object","properties":{"fileId":{"type":["string","null"],"format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"fileName":{"type":"string"},"downloadUrl":{"type":["string","null"],"format":"uri"},"uploadedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["fileName"]}}}}
```

## The ListProjectJobsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListProjectJobsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"$ref":"#/components/schemas/ProjectJobListItem"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["success","data","pagination"]},"ProjectJobListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"jobNumber":{"type":["string","null"]},"jobName":{"type":["string","null"]},"status":{"type":"string","enum":["draft","requested","accepted_pending","assigned","in_progress","delivered","approved","rejected","invoiced","cancelled"],"description":"Project Job lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `draft` | Job created but not yet requested |\n| `requested` | Availability requested from talent |\n| `accepted_pending` | Talent accepted; awaiting admin assignment |\n| `assigned` | Talent assigned, work not yet started |\n| `in_progress` | Talent has started the work |\n| `delivered` | Talent has submitted deliverables |\n| `approved` | Delivery approved by client |\n| `rejected` | Delivery rejected — back to talent |\n| `invoiced` | Job has been billed |\n| `cancelled` | Job cancelled |\n"},"projectId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"service":{"$ref":"#/components/schemas/NamedRef"},"sourceLanguage":{"$ref":"#/components/schemas/NamedRef"},"targetLanguage":{"$ref":"#/components/schemas/NamedRef"},"targetMarket":{"$ref":"#/components/schemas/NamedRef"},"assignedTalent":{"$ref":"#/components/schemas/JobTalentSummary"},"dueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"},"plannedHours":{"type":["number","null"]},"loggedHours":{"type":["number","null"]},"totalCost":{"$ref":"#/components/schemas/Money"},"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","status","projectId","createdAt"]},"NamedRef":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"}},"required":["id","name"]},"JobTalentSummary":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"name":{"type":"string","description":"Full name or email fallback"},"email":{"type":["string","null"],"format":"email"}},"required":["id","name"]},"Money":{"type":["object","null"],"properties":{"amount":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["amount","currency"]},"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"]}}}}
```

## The GetProjectJobDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GetProjectJobDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/ProjectJobDetails"}},"required":["success","data"]},"ProjectJobDetails":{"allOf":[{"$ref":"#/components/schemas/ProjectJobListItem"},{"type":"object","properties":{"notes":{"type":["string","null"]},"startDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"},"approvedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"},"rejectedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"},"deliveredAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"},"rejectionReason":{"type":["string","null"]},"deliverables":{"type":"array","items":{"$ref":"#/components/schemas/ProjectJobDeliverable"}}}}]},"ProjectJobListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"jobNumber":{"type":["string","null"]},"jobName":{"type":["string","null"]},"status":{"type":"string","enum":["draft","requested","accepted_pending","assigned","in_progress","delivered","approved","rejected","invoiced","cancelled"],"description":"Project Job lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `draft` | Job created but not yet requested |\n| `requested` | Availability requested from talent |\n| `accepted_pending` | Talent accepted; awaiting admin assignment |\n| `assigned` | Talent assigned, work not yet started |\n| `in_progress` | Talent has started the work |\n| `delivered` | Talent has submitted deliverables |\n| `approved` | Delivery approved by client |\n| `rejected` | Delivery rejected — back to talent |\n| `invoiced` | Job has been billed |\n| `cancelled` | Job cancelled |\n"},"projectId":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"service":{"$ref":"#/components/schemas/NamedRef"},"sourceLanguage":{"$ref":"#/components/schemas/NamedRef"},"targetLanguage":{"$ref":"#/components/schemas/NamedRef"},"targetMarket":{"$ref":"#/components/schemas/NamedRef"},"assignedTalent":{"$ref":"#/components/schemas/JobTalentSummary"},"dueDate":{"type":["string","null"],"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in ISO 8601 format (YYYY-MM-DD)"},"plannedHours":{"type":["number","null"]},"loggedHours":{"type":["number","null"]},"totalCost":{"$ref":"#/components/schemas/Money"},"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","status","projectId","createdAt"]},"NamedRef":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"}},"required":["id","name"]},"JobTalentSummary":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"name":{"type":"string","description":"Full name or email fallback"},"email":{"type":["string","null"],"format":"email"}},"required":["id","name"]},"Money":{"type":["object","null"],"properties":{"amount":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["amount","currency"]},"ProjectJobDeliverable":{"type":"object","properties":{"fileId":{"type":["string","null"],"format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"fileName":{"type":"string"},"downloadUrl":{"type":["string","null"],"format":"uri"},"uploadedAt":{"type":["string","null"],"format":"date-time","description":"Date and time in ISO 8601 format"}},"required":["fileName"]}}}}
```

## The GeneratePresignedUrlRequest object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GeneratePresignedUrlRequest":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":255,"description":"Original filename (max 255 characters)"},"sizeBytes":{"type":"integer","exclusiveMinimum":0,"maximum":104857600,"description":"File size in bytes (max 100MB = 104857600 bytes)"},"mimeType":{"type":"string","enum":["image/jpeg","image/png","image/webp","image/gif","image/svg+xml","image/bmp","image/tiff","image/heic","image/heif","application/pdf","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","text/plain","application/rtf","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation","text/csv","video/mp4","video/webm","video/quicktime","video/x-msvideo","video/x-matroska","video/x-m4v","video/3gpp","audio/mpeg","audio/wav","audio/ogg","audio/mp4","audio/aac","audio/flac","audio/opus","application/zip","application/x-zip-compressed","application/x-7z-compressed","application/x-rar-compressed","application/x-tar","application/gzip","application/x-bzip2","application/x-xz","text/vtt","text/srt","text/x-ass","text/x-ssa","text/x-sbv","application/x-subtitle","text/x-cap","application/x-tr","application/xml","application/xliff+xml","application/json","text/markdown","application/x-epub+zip","application/x-mobipocket-ebook","application/x-scorm","application/x-imscc+xml","application/x-h5p+zip","application/x-dita+xml","application/x-ditamap+xml","application/x-gettext","application/x-gettext-translation","application/x-gettext-translation-mo","application/x-tmx+xml","text/x-yaml","application/x-yaml","application/x-plist","application/x-resx+xml","application/x-arb","application/x-stl","application/mxf","application/x-bxf","text/x-edl","application/x-fcpxml","application/x-otio","text/asciidoc","application/x-tex","text/x-rst","application/xml-dtd"],"description":"File MIME type. Must be one of the allowed types."},"entityType":{"type":"string","enum":["user","project","rfq","quote","job","profile"],"description":"Type of entity the file belongs to. Use \"rfq\" for RFQ-related files."},"entityId":{"type":"string","format":"uuid","description":"ID of the entity (optional). For RFQs, you can omit this or use the RFQ ID if you have it."},"isPublic":{"type":"boolean","default":false,"description":"Whether the file should be publicly accessible. Default: false (private)"}},"required":["filename","sizeBytes","mimeType","entityType"]}}}}
```

## The GeneratePresignedUrlResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GeneratePresignedUrlResponse":{"type":"object","properties":{"fileId":{"type":"string","format":"uuid","description":"**File ID - Use this in your RFQ assets array!**"},"presignedUrl":{"type":"string","format":"uri","description":"Presigned URL for uploading the file directly to cloud storage"},"expiresAt":{"type":"string","description":"ISO timestamp when the presigned URL expires (typically 15 minutes)"},"uploadInstructions":{"type":"object","properties":{"method":{"type":"string","enum":["PUT"],"description":"HTTP method to use for upload"},"contentType":{"type":"string","description":"Content-Type header to use when uploading"},"maxSizeBytes":{"type":"number","description":"Maximum allowed file size in bytes"}},"required":["method","contentType","maxSizeBytes"],"description":"Instructions for uploading the file to the presigned URL"},"downloadUrl":{"type":"string","format":"uri","description":"Temporary download URL (for testing)"},"downloadUrlExpiresAt":{"type":"string","description":"When the download URL expires"}},"required":["fileId","presignedUrl","expiresAt","uploadInstructions"]}}}}
```

## The DirectFileUploadResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"DirectFileUploadResponse":{"type":"object","properties":{"fileId":{"type":"string","format":"uuid","description":"**File ID - Use this in your RFQ assets array!**"}},"required":["fileId"]}}}}
```

## The ListJobsQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListJobsQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"search":{"type":"string"},"status":{"type":"string"},"projectId":{"type":"string","format":"uuid"},"sortBy":{"type":"string"},"sortOrder":{"type":"string","enum":["asc","desc"]}}}}}}
```

## The ListJobsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListJobsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["success","data","pagination"]},"PaginationMeta":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}}}}
```

## The PaginationMeta object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PaginationMeta":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}}}}
```

## The JobDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"JobDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The JobManagementListQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"JobManagementListQuery":{"type":"object","properties":{"search":{"type":"string","description":"Search by job ID, job number, name, service name, or team name"},"serviceId":{"type":"string","format":"uuid","description":"Filter by service UUID"},"teamId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"array","items":{"type":"string","format":"uuid"}}],"description":"Filter by one or more team UUIDs"},"showArchived":{"anyOf":[{"type":"boolean"},{"type":"string"}],"description":"Include archived jobs in results"},"sortBy":{"type":"string","enum":["jobNo","serviceName","teamName","itemCount"]},"sortOrder":{"type":"string","enum":["asc","desc"]},"relevancy":{"anyOf":[{"type":"boolean"},{"type":"string"}],"description":"Enable relevancy-based search and sorting"},"page":{"type":"integer","exclusiveMinimum":0},"perPage":{"type":"integer","exclusiveMinimum":0,"maximum":100}}}}}}
```

## The JobManagementListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"JobManagementListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JobManagementSummary"}},"pagination":{"type":"object","additionalProperties":{}}},"required":["data","pagination"]},"JobManagementSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"jobNo":{"type":["string","null"]},"name":{"type":["string","null"]},"isArchived":{"type":"boolean"},"service":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]},"team":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]}},"workInstructions":{"type":"string"},"checklist":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"description":{"type":"string"}},"required":["id","description"]}},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"itemName":{"type":"string"}},"required":["id","itemName"]}},"itemCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","jobNo","name","service","createdAt"]}}}}
```

## The JobManagementSummary object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"JobManagementSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"jobNo":{"type":["string","null"]},"name":{"type":["string","null"]},"isArchived":{"type":"boolean"},"service":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]},"team":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]}},"workInstructions":{"type":"string"},"checklist":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"description":{"type":"string"}},"required":["id","description"]}},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"itemName":{"type":"string"}},"required":["id","itemName"]}},"itemCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","jobNo","name","service","createdAt"]}}}}
```

## The JobManagementDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"JobManagementDetailsResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"jobNo":{"type":["string","null"]},"name":{"type":["string","null"]},"isArchived":{"type":"boolean"},"service":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]},"team":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]}},"workInstructions":{"type":"string"},"checklist":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"description":{"type":"string"}},"required":["id","description"]}},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"itemName":{"type":"string"}},"required":["id","itemName"]}},"itemCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","jobNo","name","service","createdAt"]}}}}
```

## The UpdateJobStatusParams object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"UpdateJobStatusParams":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","description":"Project UUID"},"jobId":{"type":"string","format":"uuid","description":"Job UUID"}},"required":["projectId","jobId"]}}}}
```

## The UpdateJobStatusBody object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"UpdateJobStatusBody":{"type":"object","properties":{"status":{"type":"string","enum":["in_progress","delivered","delivery_approved","approved","rejected","cancelled"],"description":"Target job status, or a delivery action. Supported values:\n- `in_progress` — start an `assigned` job.\n- `delivered` — submit the delivery for an `in_progress` job.\n- `delivery_approved` — approve a `delivered` job's delivery. The job stays `delivered` (its `isApproved` flag flips); status does not change.\n- `approved` — approve a `delivered` job for invoicing. Not allowed for internal-talent assignees.\n- `rejected` — reject the delivery of a `delivered` job. Requires `reason`.\n- `cancelled` — cancel the job."},"reason":{"type":"string","minLength":1,"maxLength":250,"description":"Rejection reason. Required only when `status` is `rejected`; ignored otherwise."}},"required":["status"]}}}}
```

## The UpdateJobStatusResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"UpdateJobStatusResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"jobId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"status":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["jobId","projectId","status","updatedAt"]}},"required":["success","data"]}}}}
```

## The ListTeamsQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListTeamsQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"search":{"type":"string"},"sortBy":{"type":"string","default":"name"},"sortOrder":{"type":"string","enum":["asc","desc"],"default":"asc"}}}}}}
```

## The ListTeamsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListTeamsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}},"required":["success","data","pagination"]}}}}
```

## The TeamDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"TeamDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The ListClientsQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListClientsQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"search":{"type":"string"},"sortBy":{"type":"string"},"sortOrder":{"type":"string","enum":["asc","desc"]}}}}}}
```

## The ListClientsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListClientsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}},"required":["success","data","pagination"]}}}}
```

## The ClientDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ClientDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The ListClientServicesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListClientServicesQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"search":{"type":"string"},"clientId":{"type":"string","format":"uuid"},"sortBy":{"type":"string"},"sortOrder":{"type":"string","enum":["asc","desc"]}}}}}}
```

## The ListClientServicesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListClientServicesResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}},"required":["success","data","pagination"]}}}}
```

## The ClientServiceDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ClientServiceDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The ListServicesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListServicesQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"search":{"type":"string"},"sortBy":{"type":"string","default":"name"},"sortOrder":{"type":"string","enum":["asc","desc"],"default":"asc"}}}}}}
```

## The ListServicesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListServicesResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}},"required":["success","data","pagination"]}}}}
```

## The ServiceDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ServiceDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The ListItemsQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListItemsQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"search":{"type":"string"},"sortBy":{"type":"string"},"sortOrder":{"type":"string","enum":["asc","desc"]}}}}}}
```

## The ListItemsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListItemsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}},"required":["success","data","pagination"]}}}}
```

## The ItemDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ItemDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The ListAttributeCategoriesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListAttributeCategoriesQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"search":{"type":"string"},"sortBy":{"type":"string","enum":["name","tooltip","createdAt","updatedAt"]},"sortOrder":{"type":"string","enum":["asc","desc"]},"returnAttributes":{"type":"string","enum":["0","1","true","false"]}}}}}}
```

## The ListAttributesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListAttributesResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}},"required":["success","data","pagination"]}}}}
```

## The AttributeCategoryDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"AttributeCategoryDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The ListPricelistsQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListPricelistsQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"search":{"type":"string"},"clientId":{"type":"string","format":"uuid"},"sortBy":{"type":"string"},"sortOrder":{"type":"string","enum":["asc","desc"]}}}}}}
```

## The ListPricelistsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListPricelistsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}},"required":["success","data","pagination"]}}}}
```

## The PricelistDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PricelistDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The ListWorkflowsQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListWorkflowsQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"search":{"type":"string"},"sortBy":{"type":"string"},"sortOrder":{"type":"string","enum":["asc","desc"]}}}}}}
```

## The ListWorkflowsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListWorkflowsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}},"required":["success","data","pagination"]}}}}
```

## The WorkflowDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"WorkflowDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The GetWorkflowServicesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GetWorkflowServicesQuery":{"type":"object","properties":{"clientServiceId":{"type":"string","format":"uuid","description":"Filter by specific clientService ID"}},"required":["clientServiceId"]}}}}
```

## The ListFinanceQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListFinanceQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"isExported":{"type":"string","enum":["true","false"]}}}}}}
```

## The ListFinanceResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListFinanceResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPrevPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPrevPage"]}},"required":["success","data","pagination"]}}}}
```

## The PublicUserListItem object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicUserListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"email":{"type":"string","format":"email"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"name":{"type":["string","null"]},"role":{"type":["string","null"],"description":"User role code"},"status":{"type":["string","null"]},"isBlocked":{"type":"boolean"},"isArchived":{"type":"boolean"},"isInternal":{"type":"boolean"},"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","email"]}}}}
```

## The PublicUserDetails object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicUserDetails":{"allOf":[{"$ref":"#/components/schemas/PublicUserListItem"},{"type":"object","properties":{"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"}},"required":["id","name"]}},"clientId":{"type":["string","null"],"format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"phone":{"type":["string","null"]},"jobTitle":{"type":["string","null"]},"country":{"type":["string","null"]},"timezone":{"type":["string","null"]}}}]},"PublicUserListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"email":{"type":"string","format":"email"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"name":{"type":["string","null"]},"role":{"type":["string","null"],"description":"User role code"},"status":{"type":["string","null"]},"isBlocked":{"type":"boolean"},"isArchived":{"type":"boolean"},"isInternal":{"type":"boolean"},"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","email"]}}}}
```

## The ListUsersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"ListUsersResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicUserListItem"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["success","data","pagination"]},"PublicUserListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"email":{"type":"string","format":"email"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"name":{"type":["string","null"]},"role":{"type":["string","null"],"description":"User role code"},"status":{"type":["string","null"]},"isBlocked":{"type":"boolean"},"isArchived":{"type":"boolean"},"isInternal":{"type":"boolean"},"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","email"]},"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"]}}}}
```

## The GetUserDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GetUserDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/PublicUserDetails"}},"required":["success","data"]},"PublicUserDetails":{"allOf":[{"$ref":"#/components/schemas/PublicUserListItem"},{"type":"object","properties":{"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"}},"required":["id","name"]}},"clientId":{"type":["string","null"],"format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"phone":{"type":["string","null"]},"jobTitle":{"type":["string","null"]},"country":{"type":["string","null"]},"timezone":{"type":["string","null"]}}}]},"PublicUserListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"email":{"type":"string","format":"email"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"name":{"type":["string","null"]},"role":{"type":["string","null"],"description":"User role code"},"status":{"type":["string","null"]},"isBlocked":{"type":"boolean"},"isArchived":{"type":"boolean"},"isInternal":{"type":"boolean"},"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","email"]}}}}
```

## The CurrentUser object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"CurrentUser":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"email":{"type":"string","format":"email"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"roleCode":{"type":"string","description":"Role code of the authenticated principal"},"authMethod":{"type":"string","description":"Credential type that produced the session: auth0_jwt, static_api_key, custom_jwt"}},"required":["id","email","roleCode"]}}}}
```

## The GetCurrentUserResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GetCurrentUserResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/CurrentUser"}},"required":["success","data"]},"CurrentUser":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"email":{"type":"string","format":"email"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"roleCode":{"type":"string","description":"Role code of the authenticated principal"},"authMethod":{"type":"string","description":"Credential type that produced the session: auth0_jwt, static_api_key, custom_jwt"}},"required":["id","email","roleCode"]}}}}
```

## The PublicAuditLogsQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicAuditLogsQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"type":{"type":"string"},"domain":{"type":"string"},"category":{"type":"string"},"categories":{"type":"array","items":{"type":"string"}},"action":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"userId":{"type":"string","format":"uuid"},"serviceName":{"type":"string"},"team":{"type":"string"},"teams":{"type":"array","items":{"type":"string"}},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"search":{"type":"string"},"sortBy":{"type":"string","enum":["timestamp","type","userId","userName","serviceName","eventName","receivedAt"]},"order":{"type":"string","enum":["asc","desc"]}}}}}}
```

## The PublicAuditLogsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicAuditLogsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"meta":{"type":"object","properties":{"pagination":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPreviousPage"]},"filters":{"type":"object","additionalProperties":{}},"timestamp":{"type":"string"},"version":{"type":"string"}},"required":["pagination","filters","timestamp","version"]},"success":{"type":"boolean"}},"required":["data","meta","success"]}}}}
```

## The PublicBillingEntitiesListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicBillingEntitiesListResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["success","data"]}}}}
```

## The PublicBillingEntityDetailResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicBillingEntityDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicBillingEntityFiltersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicBillingEntityFiltersResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicBudgetsListQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicBudgetsListQuery":{"type":"object","properties":{"page":{"type":"string","pattern":"^\\d+$"},"limit":{"type":"string","pattern":"^\\d+$"},"search":{"type":"string"},"sortBy":{"type":"string"},"sortOrder":{"type":"string","enum":["asc","desc"]}}}}}}
```

## The PublicBudgetsListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicBudgetsListResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["success","data"]}}}}
```

## The PublicBudgetDetailResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicBudgetDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicBudgetFiltersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicBudgetFiltersResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicBudgetAdjustmentsListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicBudgetAdjustmentsListResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["success","data"]}}}}
```

## The PublicBudgetAdjustmentDetailResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicBudgetAdjustmentDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicBudgetAdjustmentFiltersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicBudgetAdjustmentFiltersResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicCapacityListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicCapacityListResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["success","data"]}}}}
```

## The PublicCapacityDetailResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicCapacityDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicCapacityFiltersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicCapacityFiltersResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The CapacityViewDateRangeQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"CapacityViewDateRangeQuery":{"type":"object","properties":{"startDate":{"type":"string","description":"Start of the date range (ISO 8601 date)"},"endDate":{"type":"string","description":"End of the date range (ISO 8601 date)"}},"required":["startDate","endDate"]}}}}
```

## The PublicComplaintsListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicComplaintsListResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["success","data"]}}}}
```

## The PublicComplaintDetailResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicComplaintDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicComplaintSummaryResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicComplaintSummaryResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicGlobalSearchQuery object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicGlobalSearchQuery":{"type":"object","properties":{"q":{"type":"string","minLength":1},"query":{"type":"string","minLength":1},"limit":{"type":"string","pattern":"^\\d+$"}}}}}}
```

## The PublicGlobalSearchResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicGlobalSearchResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}}}
```

## The PublicInvoicesListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicInvoicesListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"perPage":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"}},"required":["page","perPage","total","totalPages"]}},"required":["data","pagination"]}}}}
```

## The PublicInvoiceReadyJobsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicInvoiceReadyJobsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"perPage":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"}},"required":["page","perPage","total","totalPages"]}},"required":["data","pagination"]}}}}
```

## The PublicInvoiceDetailResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicInvoiceDetailResponse":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}}},"required":["data"]}}}}
```

## The PublicInvoiceFiltersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicInvoiceFiltersResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"},"type":{"type":"string","enum":["pills","checkboxes","radio"]},"options":{"type":"array","items":{"type":"object","properties":{"value":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":{}}]},"label":{"type":"string"},"count":{"type":"number"}},"required":["value","label"]}}},"required":["label","value","type","options"]}}},"required":["data"]}}}}
```

## The PublicInvoiceReadyJobsFiltersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicInvoiceReadyJobsFiltersResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"},"type":{"type":"string","enum":["pills","checkboxes","radio"]},"options":{"type":"array","items":{"type":"object","properties":{"value":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":{}}]},"label":{"type":"string"},"count":{"type":"number"}},"required":["value","label"]}}},"required":["label","value","type","options"]}}},"required":["data"]}}}}
```

## The PublicTimeLogsListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicTimeLogsListResponse":{"type":"object","properties":{"dateRange":{"type":"object","properties":{"startDate":{"type":"string"},"endDate":{"type":"string"},"dates":{"type":"array","items":{"type":"string"}},"totalHoursPerDate":{"type":"object","additionalProperties":{"type":"number"}}},"required":["startDate","endDate","dates","totalHoursPerDate"]},"users":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"perPage":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"}},"required":["page","perPage","total","totalPages"]}},"required":["dateRange","users"]}}}}
```

## The PublicTimeLogDetailResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicTimeLogDetailResponse":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}}},"required":["data"]}}}}
```

## The PublicTimesheetLockStatusResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicTimesheetLockStatusResponse":{"type":"object","properties":{"isLocked":{"type":"boolean"},"locks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":["string","null"],"format":"uuid"},"startDate":{"type":"string"},"endDate":{"type":"string"}},"required":["id","userId","startDate","endDate"]}}},"required":["isLocked","locks"]}}}}
```

## The PublicTimeLogJobTotalResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"PublicTimeLogJobTotalResponse":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"projectJobId":{"type":"string","format":"uuid"},"userId":{"type":["string","null"],"format":"uuid"},"totalHours":{"type":"number"},"entryCount":{"type":"number"}},"required":["projectId","projectJobId","totalHours","entryCount"]}}}}
```

## The GetRFQDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"GetRFQDetailsResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/RFQDetails"}},"required":["success","data"]},"RFQDetails":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"rfqNumber":{"type":["string","null"]},"projectName":{"type":"string"},"status":{"type":"string","enum":["PENDING","CHANGED_TO_QUOTE","CHANGED_TO_PROJECT"],"description":"RFQ lifecycle status:\n\n| Status | Description |\n|--------|-------------|\n| `PENDING` | Submitted - waiting for Adaptria to review and provide a quote |\n| `CHANGED_TO_QUOTE` | Adaptria has provided a quote based on this RFQ |\n| `CHANGED_TO_PROJECT` | Quote was accepted and converted to an active project |"},"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Universally Unique Identifier (UUID v4)"},"name":{"type":"string"}},"required":["id","name"]},"generalInformation":{"type":"object","properties":{"projectName":{"type":"string"},"projectDescription":{"type":"string"},"backgroundInfo":{"type":"string"},"targetAudience":{"type":"string"},"poNumber":{"type":"string"},"referenceNumber":{"type":"string"}},"required":["projectName"]},"projectDueDate":{"type":["string","null"]},"deadlineForQuote":{"type":"string"},"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the service"},"name":{"type":"string","description":"Human-readable service name"}},"required":["id","name"]}},"languages":{"type":"object","properties":{"sourceLanguages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"**Language ID - Use this in RFQ creation!** Unique identifier for the language."},"name":{"type":"string","description":"English name of the language"}},"required":["id","name"]}},"targetLanguages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"**Language ID - Use this in RFQ creation!** Unique identifier for the language."},"name":{"type":"string","description":"English name of the language"}},"required":["id","name"]}}},"required":["sourceLanguages","targetLanguages"]},"targetMarkets":{"type":"array","items":{"$ref":"#/components/schemas/PublicTargetMarket"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"submittedAt":{"type":"string","format":"date-time"}},"required":["id","rfqNumber","projectName","status","company","generalInformation","services","languages","targetMarkets","createdAt","updatedAt"]},"PublicTargetMarket":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the target market"},"name":{"type":"string","description":"Human-readable name of the target market/region"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code"}},"required":["id","name","countryCode"]}}}}
```

## The WebhookRegistrationResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"WebhookRegistrationResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Webhook registration ID"},"url":{"type":"string","format":"uri","description":"Registered callback URL"},"secret":{"type":"string","description":"Signing secret for verifying webhook payloads. Shown only once at registration time."},"isActive":{"type":"boolean","description":"Whether the webhook is active"},"createdAt":{"type":"string","description":"Registration timestamp"}},"required":["id","url","secret","isActive","createdAt"]}}}}
```

## The RegisterWebhookRequest object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"RegisterWebhookRequest":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"HTTPS URL to receive webhook callbacks. Must use HTTPS."}},"required":["url"]}}}}
```

## The WebhookGetResponse object

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Client","version":"1.0.0"},"components":{"schemas":{"WebhookGetResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Webhook registration ID"},"url":{"type":"string","format":"uri","description":"Registered callback URL"},"isActive":{"type":"boolean","description":"Whether the webhook is active"},"createdAt":{"type":"string","description":"Registration timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"}},"required":["id","url","isActive","createdAt","updatedAt"]}}}}
```
