{"openapi":"3.0.0","paths":{"/api/v1/clients":{"post":{"description":"Creates a new client organization under the authenticated partner organization.\n            Requires a `name` (unique within the partner) and an optional `notes` field (max 200 characters).","operationId":"LmpApiClientsController_createClient","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiCreateClientRequestDto"}}}},"responses":{"201":{"description":"Client created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiCreateClientResponseDto"}}}},"400":{"description":"Validation error or business constraint violated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiValidationErrorResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."}},"security":[{"lmp-api-key":[]}],"summary":"Create client","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"},"get":{"description":"Returns a paginated list of client organizations belonging to the authenticated partner.","operationId":"LmpApiClientsController_listClients","parameters":[{"name":"root","required":false,"in":"query","allOf":[{"type":"object","properties":{"p":{"default":1,"anyOf":[{"type":"string"},{"type":"number"}]},"l":{"default":100,"anyOf":[{"type":"string"},{"type":"number"}]},"s":{"default":"-createdAt","type":"string","enum":["createdAt","-createdAt"]}}},{"type":"object","properties":{}}],"x-nestjs_zod-unwrap-root":true,"x-nestjs_zod-empty-type":true,"schema":{}},{"name":"p","required":false,"in":"query","description":"Page number.","schema":{"type":"number"}},{"name":"l","required":false,"in":"query","description":"Page size (max 300). Default is 100.","schema":{"type":"number"}},{"name":"s","required":false,"in":"query","description":"Sort field. Prefix with `-` for descending.","schema":{"enum":["createdAt","-createdAt"],"type":"string"}}],"responses":{"200":{"description":"Paginated list of clients.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiClientsListResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."}},"security":[{"lmp-api-key":[]}],"summary":"List clients","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}":{"delete":{"description":"Deletes a client organization belonging to the authenticated partner.\n            All workspaces and filespaces under the client are permanently removed.\n            The client must be in a deletable state (no active contract or no workspaces).","operationId":"LmpApiClientsController_deleteClient","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"Client deleted."},"400":{"description":"Deletion constraint violated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client organization not found or does not belong to this partner.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}}},"security":[{"lmp-api-key":[]}],"summary":"Delete client","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"},"get":{"description":"Returns a single client organization belonging to the authenticated partner.","operationId":"LmpApiClientsController_getClient","parameters":[{"name":"clientId","required":true,"in":"path","description":"Client organization ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Client organization.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiClientDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client organization not found or does not belong to the authenticated partner.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}}},"security":[{"lmp-api-key":[]}],"summary":"Get client","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/usage/current":{"get":{"description":"Returns the client organization's usage for the current billing period.\n            Available for VAR clients only. Includes member counts, per-provider storage usage (GB),\n            and optional LucidLink Connect and TeamCache metrics when included in the contract.","operationId":"LmpApiClientsController_getCurrentUsage","parameters":[{"name":"clientId","required":true,"in":"path","description":"Client organization ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Current billing period usage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiCurrentUsageDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client organization not found, does not belong to this partner, or has no active contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}}},"security":[{"lmp-api-key":[]}],"summary":"Get client current usage","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/usage":{"get":{"description":"Returns paginated storage usage records for a client organization.\n            Each record captures per-filespace storage measurements (object store and S3) at a given moment.\n            Filter by storage type (`aws`, `custom`, `wasabi`, `ibm`, `llc`) and date range (ISO 8601 datetimes).\n            Data is retained for 2 months; a date range entirely outside that window returns a BadRequest(400).","operationId":"LmpApiClientsController_getUsage","parameters":[{"name":"clientId","required":true,"in":"path","description":"Client organization ID.","schema":{"type":"string"}},{"name":"root","required":false,"in":"query","allOf":[{"type":"object","properties":{"p":{"default":1,"anyOf":[{"type":"string"},{"type":"number"}]},"l":{"default":100,"anyOf":[{"type":"string"},{"type":"number"}]},"s":{"default":"createdAt","type":"string","enum":["createdAt","-createdAt"]}}},{"type":"object","properties":{"type":{"type":"string","enum":["aws","custom","wasabi","ibm","llc"]},"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["type","start","end"]}],"x-nestjs_zod-unwrap-root":true,"x-nestjs_zod-empty-type":true,"schema":{}},{"name":"type","required":true,"in":"query","description":"Storage type to filter by.","schema":{"enum":["aws","custom","wasabi","ibm","llc"],"type":"string"}},{"name":"start","required":true,"in":"query","description":"Start of the date range (ISO 8601 with timezone offset, e.g. 2026-04-21T15:22:00.000Z).","schema":{"example":"2026-04-21T15:22:00.000Z","type":"string"}},{"name":"end","required":true,"in":"query","description":"End of the date range (ISO 8601 with timezone offset, e.g. 2026-05-21T15:22:00.000Z).","schema":{"example":"2026-05-21T15:22:00.000Z","type":"string"}},{"name":"p","required":false,"in":"query","description":"Page number.","schema":{"type":"number"}},{"name":"l","required":false,"in":"query","description":"Page size (max 300). Default is 100.","schema":{"type":"number"}},{"name":"s","required":false,"in":"query","description":"Sort field. Prefix with `-` for descending.","schema":{"enum":["createdAt","-createdAt"],"type":"string"}}],"responses":{"200":{"description":"Paginated storage usage records.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiStorageUsageResponseDto"}}}},"400":{"description":"Date range or storage type invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client organization not found or does not belong to this partner."}},"security":[{"lmp-api-key":[]}],"summary":"Get client storage usage","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/ping":{"get":{"description":"Verifies the API key is valid and returns the authenticated partner organization details.","operationId":"LmpApiController_ping","parameters":[],"responses":{"200":{"description":"API key is valid.","content":{"application/json":{"schema":{"properties":{"organizationId":{"type":"string"},"organizationName":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."}},"security":[{"lmp-api-key":[]}],"summary":"Ping","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/workspaces/{workspaceId}/filespaces":{"get":{"description":"Returns a paginated list of filespaces in the specified workspace.\n            The workspace must belong to a client organization owned by the authenticated partner.","operationId":"LmpApiFilespaceController_listFilespaces","parameters":[{"name":"workspaceId","required":true,"in":"path","description":"Workspace ID.","schema":{"type":"string"}},{"name":"root","required":false,"in":"query","allOf":[{"type":"object","properties":{"p":{"default":1,"anyOf":[{"type":"string"},{"type":"number"}]},"l":{"default":100,"anyOf":[{"type":"string"},{"type":"number"}]},"s":{"default":"-createdAt","type":"string","enum":["createdAt","-createdAt"]}}},{"type":"object","properties":{}}],"x-nestjs_zod-unwrap-root":true,"x-nestjs_zod-empty-type":true,"schema":{}},{"name":"clientId","required":true,"in":"path","description":"Client organization ID.","schema":{"type":"string"}},{"name":"p","required":false,"in":"query","description":"Page number.","schema":{"type":"number"}},{"name":"l","required":false,"in":"query","description":"Page size (max 300). Default is 100.","schema":{"type":"number"}},{"name":"s","required":false,"in":"query","description":"Sort field. Prefix with `-` for descending.","schema":{"enum":["createdAt","-createdAt"],"type":"string"}}],"responses":{"200":{"description":"Paginated list of filespaces.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiFilespaceListResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client or workspace not found, or workspace does not belong to this client."}},"security":[{"lmp-api-key":[]}],"summary":"List filespaces","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/workspaces/{workspaceId}/filespaces/{filespaceId}":{"get":{"description":"Returns details of a filespace in the specified workspace.\n            The workspace must belong to a client organization owned by the authenticated partner.","operationId":"LmpApiFilespaceController_getFilespace","parameters":[{"name":"filespaceId","required":true,"in":"path","description":"Filespace ID.","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"path","description":"Client organization ID.","schema":{"type":"string"}},{"name":"workspaceId","required":true,"in":"path","description":"Workspace ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Filespace details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiFilespaceDetailsResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client, workspace, or filespace not found."}},"security":[{"lmp-api-key":[]}],"summary":"Get filespace details","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/workspaces/{workspaceId}/filespaces/{filespaceId}/usage":{"get":{"description":"Returns paginated storage usage records for a specific filespace belonging to a client's workspace.\n            Each record captures per-filespace storage measurements at a given moment.\n            Filter by storage type (`aws`, `custom`, `wasabi`, `ibm`, `llc`) and date range (ISO 8601 datetimes with timezone offset).\n            Data is retained for 2 months; a date range entirely outside that window returns a BadRequest(400).","operationId":"LmpApiFilespaceController_getFilespaceUsage","parameters":[{"name":"filespaceId","required":true,"in":"path","description":"Filespace ID.","schema":{"type":"string"}},{"name":"root","required":false,"in":"query","allOf":[{"type":"object","properties":{"p":{"default":1,"anyOf":[{"type":"string"},{"type":"number"}]},"l":{"default":100,"anyOf":[{"type":"string"},{"type":"number"}]},"s":{"default":"createdAt","type":"string","enum":["createdAt","-createdAt"]}}},{"type":"object","properties":{"type":{"type":"string","enum":["aws","custom","wasabi","ibm","llc"]},"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["type","start","end"]}],"x-nestjs_zod-unwrap-root":true,"x-nestjs_zod-empty-type":true,"schema":{}},{"name":"clientId","required":true,"in":"path","description":"Client organization ID.","schema":{"type":"string"}},{"name":"workspaceId","required":true,"in":"path","description":"Workspace ID.","schema":{"type":"string"}},{"name":"type","required":true,"in":"query","description":"Storage type to filter by.","schema":{"enum":["aws","custom","wasabi","ibm","llc"],"type":"string"}},{"name":"start","required":true,"in":"query","description":"Start of the date range (ISO 8601 with timezone offset, e.g. 2026-04-21T15:22:00.000Z).","schema":{"example":"2026-04-21T15:22:00.000Z","type":"string"}},{"name":"end","required":true,"in":"query","description":"End of the date range (ISO 8601 with timezone offset, e.g. 2026-05-21T15:22:00.000Z).","schema":{"example":"2026-05-21T15:22:00.000Z","type":"string"}},{"name":"p","required":false,"in":"query","description":"Page number.","schema":{"type":"number"}},{"name":"l","required":false,"in":"query","description":"Page size (max 300). Default is 100.","schema":{"type":"number"}},{"name":"s","required":false,"in":"query","description":"Sort field. Prefix with `-` for descending.","schema":{"enum":["createdAt","-createdAt"],"type":"string"}}],"responses":{"200":{"description":"Paginated filespace storage usage records.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiFilespaceUsageDto"}}}},"400":{"description":"Date range or storage type invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Filespace not found or does not belong to this partner's client workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}}},"security":[{"lmp-api-key":[]}],"summary":"Get filespace storage usage","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/me":{"get":{"description":"Returns the authenticated partner organization details associated with the API key.","operationId":"LmpApiMeController_getMe","parameters":[],"responses":{"200":{"description":"Partner organization details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiMeResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."}},"security":[{"lmp-api-key":[]}],"summary":"Get partner organization details","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/me/usage/current":{"get":{"description":"Returns the MSP channel partner's usage for the current billing period.\n            Available for MSP channel partners only — VAR resellers receive a 400.\n            Includes member counts, per-provider storage usage (GB),\n            and optional LucidLink Connect and TeamCache metrics when included in the contract.","operationId":"LmpApiMeController_getCurrentUsage","parameters":[],"responses":{"200":{"description":"Current billing period usage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiCurrentUsageDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"No active contract.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}}},"security":[{"lmp-api-key":[]}],"summary":"Get MSP channel partner current usage","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/members":{"post":{"description":"Adds a member by email to the specified client organization.\n            The first member added to an organization is automatically set as the owner.","operationId":"LmpApiMembersController_addMember","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiAddClientMemberRequestDto"}}}},"responses":{"201":{"description":"Member added.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiClientMemberResponseDto"}}}},"400":{"description":"Validation error. Possible error codes:\n            partnerOrganization.member.alreadyExists (email already a member of this organization)."},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client organization not found or does not belong to this partner."}},"security":[{"lmp-api-key":[]}],"summary":"Add a member to a client organization","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"},"get":{"description":"Returns a paginated list of members of the specified client organization.","operationId":"LmpApiMembersController_listMembers","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}},{"name":"root","required":false,"in":"query","allOf":[{"type":"object","properties":{"p":{"default":1,"anyOf":[{"type":"string"},{"type":"number"}]},"l":{"default":100,"anyOf":[{"type":"string"},{"type":"number"}]},"s":{"default":"-createdAt","type":"string","enum":["createdAt","-createdAt"]}}},{"type":"object","properties":{}}],"x-nestjs_zod-unwrap-root":true,"x-nestjs_zod-empty-type":true,"schema":{}},{"name":"p","required":false,"in":"query","description":"Page number.","schema":{"type":"number"}},{"name":"l","required":false,"in":"query","description":"Page size (max 300). Default is 100.","schema":{"type":"number"}},{"name":"s","required":false,"in":"query","description":"Sort field. Prefix with `-` for descending.","schema":{"enum":["createdAt","-createdAt"],"type":"string"}}],"responses":{"200":{"description":"Paginated list of members.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiListClientMembersResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client organization not found or does not belong to this partner."}},"security":[{"lmp-api-key":[]}],"summary":"List members of a client organization","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/members/owner":{"get":{"description":"Returns the owner member of the specified client organization.","operationId":"LmpApiMembersController_getOwner","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Owner member details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiClientMemberResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client organization not found, does not belong to this partner, or has no owner."}},"security":[{"lmp-api-key":[]}],"summary":"Get owner of a client organization","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/members/{accountId}":{"get":{"description":"Returns details of a specific member of the client organization.","operationId":"LmpApiMembersController_getMember","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}},{"name":"accountId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Member details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiClientMemberResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client organization or member not found."}},"security":[{"lmp-api-key":[]}],"summary":"Get a member of a client organization by account ID","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"},"delete":{"description":"Removes a member from the specified client organization.\n            Removing the owner is not permitted (errorCode: partnerOrganization.member.removeOwner).","operationId":"LmpApiMembersController_deleteMember","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}},{"name":"accountId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"Member removed."},"400":{"description":"Business constraint violated. Possible error codes:\n            partnerOrganization.member.removeOwner (cannot remove the owner of an organization)."},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client organization or member not found."}},"security":[{"lmp-api-key":[]}],"summary":"Remove a member from a client organization","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/workspaces":{"get":{"description":"Lists all workspaces belonging to a specific client organization.\n              Returns paginated results with workspace details including id, name and createdAt.\n              Requires the client to belong to the authenticated partner organization.","operationId":"LmpApiWorkspacesController_listWorkspaces","parameters":[{"name":"clientId","required":true,"in":"path","description":"Client organization ID.","schema":{"type":"string"}},{"name":"root","required":false,"in":"query","allOf":[{"type":"object","properties":{"p":{"default":1,"anyOf":[{"type":"string"},{"type":"number"}]},"l":{"default":100,"anyOf":[{"type":"string"},{"type":"number"}]},"s":{"default":"-createdAt","type":"string","enum":["createdAt","-createdAt"]}}},{"type":"object","properties":{}}],"x-nestjs_zod-unwrap-root":true,"x-nestjs_zod-empty-type":true,"schema":{}},{"name":"p","required":false,"in":"query","description":"Page number.","schema":{"type":"number"}},{"name":"l","required":false,"in":"query","description":"Page size (max 300). Default is 100.","schema":{"type":"number"}},{"name":"s","required":false,"in":"query","description":"Sort field. Prefix with `-` for descending.","schema":{"enum":["createdAt","-createdAt"],"type":"string"}}],"responses":{"200":{"description":"Client workspaces retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiWorkspacesListResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Client organization not found or does not belong to this partner."}},"security":[{"lmp-api-key":[]}],"summary":"List client workspaces","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/workspaces/{workspaceId}":{"get":{"description":"Returns basic details for a specific workspace.\n                    The workspace must belong to a client organization under the authenticated reseller.","operationId":"LmpApiWorkspacesController_getWorkspaceDetails","parameters":[{"name":"clientId","required":true,"in":"path","description":"Client organization ID","schema":{"type":"string"}},{"name":"workspaceId","required":true,"in":"path","description":"Workspace ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Workspace details retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiWorkspaceDetailsDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Workspace not found or does not belong to this partner"}},"security":[{"lmp-api-key":[]}],"summary":"Get workspace details","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/workspaces/{workspaceId}/usage":{"get":{"description":"Returns paginated storage usage records for a specific workspace belonging to a client.\n            Each record captures per-filespace storage measurements at a given moment.\n            Filter by storage type (`aws`, `custom`, `wasabi`, `ibm`, `llc`) and date range (ISO 8601 datetimes with timezone offset).\n            Data is retained for 2 months; a date range entirely outside that window returns a BadRequest(400).","operationId":"LmpApiWorkspacesController_getWorkspaceUsage","parameters":[{"name":"workspaceId","required":true,"in":"path","description":"Workspace ID.","schema":{"type":"string"}},{"name":"root","required":false,"in":"query","allOf":[{"type":"object","properties":{"p":{"default":1,"anyOf":[{"type":"string"},{"type":"number"}]},"l":{"default":100,"anyOf":[{"type":"string"},{"type":"number"}]},"s":{"default":"createdAt","type":"string","enum":["createdAt","-createdAt"]}}},{"type":"object","properties":{"type":{"type":"string","enum":["aws","custom","wasabi","ibm","llc"]},"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["type","start","end"]}],"x-nestjs_zod-unwrap-root":true,"x-nestjs_zod-empty-type":true,"schema":{}},{"name":"clientId","required":true,"in":"path","description":"Client organization ID.","schema":{"type":"string"}},{"name":"type","required":true,"in":"query","description":"Storage type to filter by.","schema":{"enum":["aws","custom","wasabi","ibm","llc"],"type":"string"}},{"name":"start","required":true,"in":"query","description":"Start of the date range (ISO 8601 with timezone offset, e.g. 2026-04-21T15:22:00.000Z).","schema":{"example":"2026-04-21T15:22:00.000Z","type":"string"}},{"name":"end","required":true,"in":"query","description":"End of the date range (ISO 8601 with timezone offset, e.g. 2026-05-21T15:22:00.000Z).","schema":{"example":"2026-05-21T15:22:00.000Z","type":"string"}},{"name":"p","required":false,"in":"query","description":"Page number.","schema":{"type":"number"}},{"name":"l","required":false,"in":"query","description":"Page size (max 300). Default is 100.","schema":{"type":"number"}},{"name":"s","required":false,"in":"query","description":"Sort field. Prefix with `-` for descending.","schema":{"enum":["createdAt","-createdAt"],"type":"string"}}],"responses":{"200":{"description":"Paginated workspace storage usage records.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiWorkspaceUsageDto"}}}},"400":{"description":"Date range or storage type invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Workspace not found or does not belong to this partner's client.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}}},"security":[{"lmp-api-key":[]}],"summary":"Get workspace storage usage","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}},"/api/v1/clients/{clientId}/workspaces/{workspaceId}/usage/members":{"get":{"description":"Returns paginated member usage records for a specific workspace belonging to a client.\n            Each record captures member counts (total, active, deactivated, pending, guest, SCIM active, SCIM deactivated) at a given moment.\n            Filter by date range (ISO 8601 datetimes with timezone offset).\n            Data is retained for 2 months; a date range entirely outside that window returns a BadRequest(400).","operationId":"LmpApiWorkspacesController_getWorkspaceMembersUsage","parameters":[{"name":"workspaceId","required":true,"in":"path","description":"Workspace ID.","schema":{"type":"string"}},{"name":"root","required":false,"in":"query","allOf":[{"type":"object","properties":{"p":{"default":1,"anyOf":[{"type":"string"},{"type":"number"}]},"l":{"default":100,"anyOf":[{"type":"string"},{"type":"number"}]},"s":{"default":"createdAt","type":"string","enum":["createdAt","-createdAt"]}}},{"type":"object","properties":{"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["start","end"]}],"x-nestjs_zod-unwrap-root":true,"x-nestjs_zod-empty-type":true,"schema":{}},{"name":"clientId","required":true,"in":"path","description":"Client organization ID.","schema":{"type":"string"}},{"name":"start","required":true,"in":"query","description":"Start of the date range (ISO 8601 with timezone offset, e.g. 2026-04-21T15:22:00.000Z).","schema":{"example":"2026-04-21T15:22:00.000Z","type":"string"}},{"name":"end","required":true,"in":"query","description":"End of the date range (ISO 8601 with timezone offset, e.g. 2026-05-21T15:22:00.000Z).","schema":{"example":"2026-05-21T15:22:00.000Z","type":"string"}},{"name":"p","required":false,"in":"query","description":"Page number.","schema":{"type":"number"}},{"name":"l","required":false,"in":"query","description":"Page size (max 300). Default is 100.","schema":{"type":"number"}},{"name":"s","required":false,"in":"query","description":"Sort field. Prefix with `-` for descending.","schema":{"enum":["createdAt","-createdAt"],"type":"string"}}],"responses":{"200":{"description":"Paginated workspace members usage records.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiWorkspaceMembersUsageDto"}}}},"400":{"description":"Date range invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"API key is valid but the organization is not allowed to access the API."},"404":{"description":"Workspace not found or does not belong to this partner's client.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpApiErrorResponseDto"}}}}},"security":[{"lmp-api-key":[]}],"summary":"Get workspace members usage","tags":["LucidLink Management Platform (LMP) API"],"x-group":"LmpPublicApi"}}},"info":{"title":"LucidLink Management Platform API","description":"REST API for LucidLink Management Platform (LMP)","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"lmp-api-key":{"type":"apiKey","in":"header","name":"Authorization","description":"Format: ApiKey <key>"}},"schemas":{"LmpApiCreateClientRequestDto":{"type":"object","properties":{"name":{"minLength":2,"maxLength":100,"allOf":[{"pattern":"^[\\dA-Za-z]"},{"pattern":"[\\dA-Za-z]$"},{"pattern":"^[\\s\\w()/-]+$"},{"pattern":"^[\\dA-Za-z][\\s\\w()/-]*[\\dA-Za-z]$"}]},"notes":{"type":"string","maxLength":200}},"required":["name"]},"LmpApiCreateClientResponseDto":{"type":"object","properties":{"id":{"type":"string","x-nestjs_zod-has-null":true},"name":{"type":"string","x-nestjs_zod-has-null":true},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true}},"required":["id","name","notes"]},"LmpApiValidationErrorResponseDto":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","const":"validation_error"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["message"]}}},"required":["type","message","details"]}},"required":["error"]},"LmpApiErrorResponseDto":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"}},"required":["type","message"]}},"required":["error"]},"LmpApiCurrentUsageDto":{"type":"object","properties":{"period":{"type":"object","properties":{"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["start","end"],"x-nestjs_zod-has-null":true},"members":{"type":"object","properties":{"prepaid":{"type":"number"},"peak":{"type":"number"},"current":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["prepaid","peak","current","max"],"x-nestjs_zod-has-null":true},"storage":{"type":"object","properties":{"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"unit":{"type":"string","const":"GB"},"aws":{"type":"object","properties":{"prepaid":{"type":"number"},"used":{"type":"number"},"overage":{"type":"number"},"current":{"type":"number"}},"required":["prepaid","used","overage","current"]},"custom":{"type":"object","properties":{"prepaid":{"type":"number"},"used":{"type":"number"},"overage":{"type":"number"},"current":{"type":"number"}},"required":["prepaid","used","overage","current"]},"ibm":{"type":"object","properties":{"prepaid":{"type":"number"},"used":{"type":"number"},"overage":{"type":"number"},"current":{"type":"number"}},"required":["prepaid","used","overage","current"]},"wasabi":{"type":"object","properties":{"prepaid":{"type":"number"},"used":{"type":"number"},"overage":{"type":"number"},"current":{"type":"number"}},"required":["prepaid","used","overage","current"]}},"required":["max","unit","aws","custom","ibm","wasabi"],"x-nestjs_zod-has-null":true},"lucidLinkConnect":{"type":"object","properties":{"prepaid":{"type":"number"},"used":{"type":"number"},"overage":{"type":"number"},"current":{"type":"number"}},"required":["prepaid","used","overage","current"],"x-nestjs_zod-has-null":true},"teamCache":{"type":"object","properties":{"installations":{"type":"number"}},"required":["installations"],"x-nestjs_zod-has-null":true}},"required":["period","members","storage"]},"LmpApiStorageUsageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"filespaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"storageSizeMb":{"type":"integer","minimum":0,"maximum":9007199254740991},"provider":{"type":"string"}},"required":["createdAt","filespaceId","storageSizeMb","provider"]}},"meta":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"itemCount":{"type":"number"},"pageCount":{"type":"number"}},"required":["page","pageSize","itemCount","pageCount"]}},"required":["items","meta"]},"LmpApiClientsListResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["var","msp","msp_central"]},"id":{"type":"string"},"name":{"type":"string"},"owner":{"type":"object","properties":{"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["email"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"default":"$unknown","anyOf":[{"type":"string","enum":["new","trial","active","trial_expired","past_due","unpaid","canceled","incomplete","incomplete_expired","contract_expired"]},{"type":"string"}]},"expirationDate":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"billingPeriod":{"anyOf":[{"type":"object","properties":{"startDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"endDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["startDate","endDate"]},{"type":"null"}]}},"required":["type","id","name","owner","createdAt","status"]},"x-nestjs_zod-has-null":true},"meta":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"itemCount":{"type":"number"},"pageCount":{"type":"number"}},"required":["page","pageSize","itemCount","pageCount"],"x-nestjs_zod-has-null":true}},"required":["items","meta"]},"LmpApiClientDto":{"type":"object","properties":{"type":{"type":"string","enum":["var","msp","msp_central"],"x-nestjs_zod-has-null":true},"id":{"type":"string","x-nestjs_zod-has-null":true},"name":{"type":"string","x-nestjs_zod-has-null":true},"owner":{"type":"object","properties":{"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["email"],"x-nestjs_zod-has-null":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","x-nestjs_zod-has-null":true},"status":{"default":"$unknown","anyOf":[{"type":"string","enum":["new","trial","active","trial_expired","past_due","unpaid","canceled","incomplete","incomplete_expired","contract_expired"]},{"type":"string"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true},"expirationDate":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true},"billingPeriod":{"anyOf":[{"type":"object","properties":{"startDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"endDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["startDate","endDate"]},{"type":"null"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true}},"required":["type","id","name","owner","createdAt","status"]},"LmpApiFilespaceListResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"storage":{"type":"object","properties":{"owner":{"default":"$unknown","anyOf":[{"type":"string","enum":["any","lucidlink","customer"]},{"type":"string"}]},"provider":{"type":"string"},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"blockSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["owner","provider","region","blockSize"]},"filespaceFormat":{"anyOf":[{"default":"$unknown","anyOf":[{"type":"string","enum":["1.0","2.0","2.2","3.0","3.3","3.5","3.6","3.8","3.9"]},{"type":"string"}]},{"type":"null"}]},"status":{"default":"$unknown","anyOf":[{"type":"string","enum":["WaitingForHubAssignment","WaitingForStorage","Provisioning","ReadyForInitialization","Initialized","Errored"]},{"type":"string"}]},"suspensionStatus":{"default":"$unknown","anyOf":[{"type":"string","enum":["WaitingForSuspension","Suspending","Suspended","SuspensionFailed","WaitingForUnsuspension","WaitingForHubAssignment","WaitingForBackupRestoration","Provisioning","NotSuspended","UnsuspensionFailed","Errored"]},{"type":"string"}]}},"required":["id","name","createdAt","storage","filespaceFormat","status","suspensionStatus"]},"x-nestjs_zod-has-null":true},"meta":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"itemCount":{"type":"number"},"pageCount":{"type":"number"}},"required":["page","pageSize","itemCount","pageCount"],"x-nestjs_zod-has-null":true}},"required":["items","meta"]},"LmpApiFilespaceDetailsResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","x-nestjs_zod-has-null":true},"name":{"type":"string","x-nestjs_zod-has-null":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","x-nestjs_zod-has-null":true},"storage":{"type":"object","properties":{"owner":{"default":"$unknown","anyOf":[{"type":"string","enum":["any","lucidlink","customer"]},{"type":"string"}]},"provider":{"type":"string"},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"blockSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["owner","provider","region","blockSize"],"x-nestjs_zod-has-null":true},"filespaceFormat":{"anyOf":[{"default":"$unknown","anyOf":[{"type":"string","enum":["1.0","2.0","2.2","3.0","3.3","3.5","3.6","3.8","3.9"]},{"type":"string"}]},{"type":"null"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true},"status":{"default":"$unknown","anyOf":[{"type":"string","enum":["WaitingForHubAssignment","WaitingForStorage","Provisioning","ReadyForInitialization","Initialized","Errored"]},{"type":"string"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true},"suspensionStatus":{"default":"$unknown","anyOf":[{"type":"string","enum":["WaitingForSuspension","Suspending","Suspended","SuspensionFailed","WaitingForUnsuspension","WaitingForHubAssignment","WaitingForBackupRestoration","Provisioning","NotSuspended","UnsuspensionFailed","Errored"]},{"type":"string"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true}},"required":["id","name","createdAt","storage","filespaceFormat","status","suspensionStatus"]},"LmpApiFilespaceUsageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"filespaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"storageSizeMb":{"type":"integer","minimum":0,"maximum":9007199254740991},"provider":{"type":"string"}},"required":["createdAt","filespaceId","storageSizeMb","provider"]}},"meta":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"itemCount":{"type":"number"},"pageCount":{"type":"number"}},"required":["page","pageSize","itemCount","pageCount"]}},"required":["items","meta"]},"LmpApiMeResponseDto":{"type":"object","properties":{"id":{"type":"string","x-nestjs_zod-has-null":true},"name":{"type":"string","x-nestjs_zod-has-null":true},"owner":{"anyOf":[{"type":"object","properties":{"email":{"type":"string"}},"required":["email"]},{"type":"null"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true},"supportedBillingModels":{"type":"array","items":{"type":"string"},"x-nestjs_zod-has-null":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","x-nestjs_zod-has-null":true},"status":{"type":"string","x-nestjs_zod-has-null":true},"expirationDate":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true},"billingPeriod":{"anyOf":[{"type":"object","properties":{"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["start","end"]},{"type":"null"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true}},"required":["id","name","owner","tier","supportedBillingModels","createdAt","status"]},"LmpApiAddClientMemberRequestDto":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"]},"LmpApiClientMemberResponseDto":{"type":"object","properties":{"id":{"type":"string","x-nestjs_zod-has-null":true},"role":{"type":"string","x-nestjs_zod-has-null":true},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"x-nestjs_zod-has-null":true,"x-nestjs_zod-empty-type":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","x-nestjs_zod-has-null":true}},"required":["id","role","email","createdAt"]},"LmpApiListClientMembersResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","role","email","createdAt"]},"x-nestjs_zod-has-null":true},"meta":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"pageCount":{"type":"number"},"itemCount":{"type":"number"}},"required":["page","pageSize","pageCount","itemCount"],"x-nestjs_zod-has-null":true}},"required":["items","meta"]},"LmpApiWorkspacesListResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt"]}},"meta":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"itemCount":{"type":"number"},"pageCount":{"type":"number"}},"required":["page","pageSize","itemCount","pageCount"]}},"required":["items","meta"]},"LmpApiWorkspaceDetailsDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt"]},"LmpApiWorkspaceUsageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"filespaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"storageSizeMb":{"type":"integer","minimum":0,"maximum":9007199254740991},"provider":{"type":"string"}},"required":["createdAt","filespaceId","storageSizeMb","provider"]}},"meta":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"itemCount":{"type":"number"},"pageCount":{"type":"number"}},"required":["page","pageSize","itemCount","pageCount"]}},"required":["items","meta"]},"LmpApiWorkspaceMembersUsageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"active":{"type":"integer","minimum":0,"maximum":9007199254740991},"deactivated":{"type":"integer","minimum":0,"maximum":9007199254740991},"pending":{"type":"integer","minimum":0,"maximum":9007199254740991},"guests":{"type":"integer","minimum":0,"maximum":9007199254740991},"scim":{"type":"object","properties":{"active":{"type":"integer","minimum":0,"maximum":9007199254740991},"deactivated":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["active","deactivated"]}},"required":["createdAt","total","active","deactivated","pending","guests","scim"]}},"meta":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"itemCount":{"type":"number"},"pageCount":{"type":"number"}},"required":["page","pageSize","itemCount","pageCount"]}},"required":["items","meta"]}}}}