This is an issue description
+ priority: + type: string + description: Issue priority + enum: + - low + - medium + - high + - urgent + - none + example: low + security: + - ApiKeyAuthentication: [] + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/IntakeIssue' + description: Intake issue created + '400': + description: Invalid request + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + /workspaces/{slug}/projects/{project_id}/intake-issues/{issue_id}/: + get: + operationId: get_intake_issues_2 + description: Get intake issues + summary: Get intake issues + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Intake + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntakeIssue' + description: Intake issues + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + patch: + operationId: update_intake_issue + description: Update intake issue + summary: Update intake issue + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Intake + requestBody: + content: + application/json: + schema: + type: object + properties: + issue: + type: object + properties: + name: + type: string + description: Issue name + maxLength: 255 + example: Issue 1 + description_html: + type: string + description: Issue description HTML + nullable: true + example:This is an issue description
+ priority: + type: string + description: Issue priority + enum: + - low + - medium + - high + - urgent + - none + example: low + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntakeIssue' + description: '' + delete: + operationId: delete_intake_issue + description: Delete intake issue + summary: Delete intake issue + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Intake + security: + - ApiKeyAuthentication: [] + responses: + '204': + description: Intake issue deleted + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Intake issue not found + /workspaces/{slug}/projects/{project_id}/issues/: + get: + operationId: get_work_item + description: "\n List all work items in a project if pk is None, otherwise\ + \ retrieve a specific work item.\n\n When pk is None:\n Returns\ + \ a list of all work items in the project.\n\n When pk is provided:\n\ + \ Returns the details of a specific work item.\n " + summary: Work Item retrieve endpoints + parameters: + - in: path + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Issue' + description: List of issues or issue details + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue not found + post: + operationId: create_work_item + description: Create a new work item in the project. + summary: Create an work item + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Work Items + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Issue' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Issue' + multipart/form-data: + schema: + $ref: '#/components/schemas/Issue' + required: true + security: + - ApiKeyAuthentication: [] + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/Issue' + description: Work Item created successfully + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Issue' + description: Invalid request data + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + /workspaces/{slug}/projects/{project_id}/issues/{issue_id}/activities/: + get: + operationId: get_issue_activities + description: Get issue activities + summary: Get issue activities + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + description: Issue ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueActivity' + description: Issue activities + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue not found + /workspaces/{slug}/projects/{project_id}/issues/{issue_id}/activities/{id}/: + get: + operationId: get_issue_activities_2 + description: Get issue activities + summary: Get issue activities + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: issue_id + schema: + type: string + format: uuid + description: Issue ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueActivity' + description: Issue activities + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue not found + /workspaces/{slug}/projects/{project_id}/issues/{issue_id}/comments/: + get: + operationId: get_issue_comments + description: Get all comments for an issue. + summary: Get issue comments + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: query + name: issue_id + schema: + type: string + description: Issue ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueComment' + description: Issue comments + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue not found + post: + operationId: create_issue_comment + description: Create a new comment for an issue. + summary: Create an issue comment + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: query + name: issue_id + schema: + type: string + description: Issue ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + requestBody: + content: + application/json: + schema: + type: object + properties: + comment_html: + type: string + required: + - comment_html + security: + - ApiKeyAuthentication: [] + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueComment' + description: Issue comment created successfully + '400': + description: Invalid request data + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue not found + /workspaces/{slug}/projects/{project_id}/issues/{issue_id}/comments/{id}/: + get: + operationId: get_issue_comments_2 + description: Get all comments for an issue. + summary: Get issue comments + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: query + name: issue_id + schema: + type: string + description: Issue ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueComment' + description: Issue comments + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue not found + patch: + operationId: update_issue_comment + description: Update an existing comment for an issue. + summary: Update an issue comment + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: query + name: issue_id + schema: + type: string + description: Issue ID + required: true + - in: query + name: pk + schema: + type: string + description: Issue comment ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + requestBody: + content: + application/json: + schema: + type: object + properties: + comment_html: + type: string + required: + - comment_html + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueComment' + description: Issue comment updated successfully + '400': + description: Invalid request data + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue comment not found + delete: + operationId: delete_issue_comment + description: Delete an existing comment for an issue. + summary: Delete an issue comment + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: query + name: issue_id + schema: + type: string + description: Issue ID + required: true + - in: query + name: pk + schema: + type: string + description: Issue comment ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '204': + description: Issue comment deleted successfully + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue comment not found + /workspaces/{slug}/projects/{project_id}/issues/{issue_id}/issue-attachments/: + get: + operationId: get_issue_attachment + description: Get an issue attachment + summary: Get an issue attachment + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueAttachment' + description: Issue attachment + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue attachment not found + post: + operationId: get_issue_attachment_2 + description: "\n Get an issue attachment.\n " + summary: Get issue attachment + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + description: Issue ID + required: true + - in: path + name: pk + schema: + type: string + format: uuid + description: Issue Attachment ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + requestBody: + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Original filename of the asset + type: + type: string + description: MIME type of the file + size: + type: integer + description: File size in bytes + external_id: + type: string + description: External identifier for the asset (for integration + tracking) + external_source: + type: string + description: External source system (for integration tracking) + security: + - ApiKeyAuthentication: [] + responses: + '200': + description: Presigned download URL generated successfully + '400': + description: Validation error + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue or Project or Workspace not found + /workspaces/{slug}/projects/{project_id}/issues/{issue_id}/issue-attachments/{id}/: + get: + operationId: get_issue_attachment_3 + description: Get an issue attachment + summary: Get an issue attachment + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueAttachment' + description: Issue attachment + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue attachment not found + delete: + operationId: delete_issue_attachment + description: Delete an issue attachment + summary: Delete an issue attachment + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: issue_id + schema: + type: string + format: uuid + description: Issue ID + required: true + - in: path + name: pk + schema: + type: string + format: uuid + description: Issue Attachment ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '204': + description: Issue attachment deleted successfully + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue attachment not found + /workspaces/{slug}/projects/{project_id}/issues/{issue_id}/links/: + get: + operationId: get_issue_links + description: Get all issue links in a project. + summary: Get issue links + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: query + name: issue_id + schema: + type: string + description: Issue ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueLink' + description: Issue links + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue not found + post: + operationId: create_issue_link + description: Create a new issue link in a project. + summary: Create an issue link + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: query + name: issue_id + schema: + type: string + description: Issue ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + requestBody: + content: + application/json: + schema: + type: object + properties: + url: + type: string + title: + type: string + metadata: + type: object + required: + - url + - title + - metadata + security: + - ApiKeyAuthentication: [] + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueLink' + description: Issue link created successfully + '400': + description: Invalid request data + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue not found + /workspaces/{slug}/projects/{project_id}/issues/{issue_id}/links/{id}/: + get: + operationId: get_issue_links_2 + description: Get all issue links in a project. + summary: Get issue links + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: query + name: issue_id + schema: + type: string + description: Issue ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueLink' + description: Issue links + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue not found + patch: + operationId: update_issue_link + description: Update an issue link in a project. + summary: Update an issue link + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: query + name: issue_id + schema: + type: string + description: Issue ID + required: true + - in: query + name: pk + schema: + type: string + description: Issue link ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + requestBody: + content: + application/json: + schema: + type: object + properties: + url: + type: string + title: + type: string + metadata: + type: object + required: + - url + - title + - metadata + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IssueLink' + description: Issue link updated successfully + '400': + description: Invalid request data + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue link not found + delete: + operationId: delete_issue_link + description: Delete an issue link in a project. + summary: Delete an issue link + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: query + name: issue_id + schema: + type: string + description: Issue ID + required: true + - in: query + name: pk + schema: + type: string + description: Issue link ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '204': + description: Issue link deleted successfully + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue link not found + /workspaces/{slug}/projects/{project_id}/issues/{id}/: + get: + operationId: get_work_item_2 + description: "\n List all work items in a project if pk is None, otherwise\ + \ retrieve a specific work item.\n\n When pk is None:\n Returns\ + \ a list of all work items in the project.\n\n When pk is provided:\n\ + \ Returns the details of a specific work item.\n " + summary: Work Item retrieve endpoints + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Issue' + description: List of issues or issue details + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Issue not found + patch: + operationId: patch_work_item + description: Patch an existing work item in the project. + summary: Patch an work item + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Work Items + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedIssue' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedIssue' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedIssue' + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Issue' + description: Work Item patched successfully + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Issue' + description: Invalid request data + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Work Item not found + delete: + operationId: delete_work_item + description: Delete an existing work item in the project. + summary: Delete an work item + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Work Items + security: + - ApiKeyAuthentication: [] + responses: + '204': + description: Work Item deleted successfully + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Work Item not found + /workspaces/{slug}/projects/{project_id}/labels/: + get: + operationId: get_labels + description: Get all labels in the project. + summary: Get labels + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Labels + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Label' + description: Labels + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + post: + operationId: create_label + description: Create a new label in the project. + summary: Create a label + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Labels + requestBody: + content: + application/json: + schema: + type: object + properties: + name: + type: string + color: + type: string + description: + type: string + required: + - name + - color + - description + security: + - ApiKeyAuthentication: [] + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/Label' + description: Label created successfully + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Label' + description: Invalid request data + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + /workspaces/{slug}/projects/{project_id}/labels/{id}/: + get: + operationId: get_labels_2 + description: Get all labels in the project. + summary: Get labels + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Labels + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Label' + description: Labels + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + patch: + operationId: update_label + description: Update a label in the project. + summary: Update a label + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: query + name: pk + schema: + type: string + description: Label ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Labels + requestBody: + content: + application/json: + schema: + type: object + properties: + name: + type: string + color: + type: string + description: + type: string + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Label' + description: Label updated successfully + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/Label' + description: Invalid request data + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Label not found + delete: + operationId: delete_label + description: Delete a label in the project. + summary: Delete a label + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: query + name: pk + schema: + type: string + description: Label ID + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: query + name: project_id + schema: + type: string + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: query + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Labels + security: + - ApiKeyAuthentication: [] + responses: + '204': + description: Label deleted successfully + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Label not found + /workspaces/{slug}/projects/{project_id}/members/: + get: + operationId: get_project_members + description: Get all the users that are present inside the project + summary: Get all the users that are present inside the project + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + description: Project ID + required: true + - in: path + name: slug + schema: + type: string + description: Workspace slug + required: true + tags: + - Members + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserLite' + description: List of project members with their roles + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + /workspaces/{slug}/projects/{project_id}/modules/: + get: + operationId: get_module + description: Get modules + summary: Get module + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Modules + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Module' + description: Module + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + post: + operationId: create_module + description: Create module + summary: Create module + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Modules + requestBody: + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Module name + maxLength: 255 + example: Module 1 + description: + type: string + description: Module description + nullable: true + example: This is a module description + start_date: + type: string + format: date-time + description: Start date + nullable: true + example: '2025-01-01T00:00:00Z' + target_date: + type: string + format: date-time + description: Target date + nullable: true + example: '2025-01-01T00:00:00Z' + status: + type: string + description: Module status + enum: + - backlog + - planned + - in-progress + - paused + - completed + - cancelled + example: planned + lead: + type: string + format: uuid + description: Lead user ID + nullable: true + example: 123e4567-e89b-12d3-a456-426614174000 + members: + type: array + items: + type: string + format: uuid + description: Member user ID + security: + - ApiKeyAuthentication: [] + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/Module' + description: Module created + '400': + description: Invalid request + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + /workspaces/{slug}/projects/{project_id}/modules/{module_id}/module-issues/: + get: + operationId: get_module_issues + description: Get module issues + summary: Get module issues + parameters: + - in: path + name: module_id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Modules + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Issue' + description: Module issues + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + post: + operationId: add_module_issues + description: Add module issues + summary: Add module issues + parameters: + - in: path + name: module_id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Modules + requestBody: + content: + application/json: + schema: + type: object + properties: + issues: + type: array + items: + type: string + format: uuid + description: Issue ID + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ModuleIssue' + description: Module issues added + '400': + description: Invalid request + /workspaces/{slug}/projects/{project_id}/modules/{module_id}/module-issues/{issue_id}/: + delete: + operationId: delete_module_issue + description: Delete module issue + summary: Delete module issue + parameters: + - in: path + name: issue_id + schema: + type: string + format: uuid + required: true + - in: path + name: module_id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Modules + security: + - ApiKeyAuthentication: [] + responses: + '204': + description: Module issue deleted + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Module issue not found + /workspaces/{slug}/projects/{project_id}/modules/{id}/: + get: + operationId: get_module_2 + description: Get modules + summary: Get module + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Modules + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Module' + description: Module + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + patch: + operationId: update_module + description: Update module + summary: Update module + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Modules + requestBody: + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Module name + maxLength: 255 + example: Module 1 + description: + type: string + description: Module description + nullable: true + example: This is a module description + start_date: + type: string + format: date-time + description: Start date + nullable: true + example: '2025-01-01T00:00:00Z' + target_date: + type: string + format: date-time + description: Target date + nullable: true + example: '2025-01-01T00:00:00Z' + status: + type: string + description: Module status + enum: + - backlog + - planned + - in-progress + - paused + - completed + - cancelled + example: planned + lead: + type: string + format: uuid + description: Lead user ID + nullable: true + example: 123e4567-e89b-12d3-a456-426614174000 + members: + type: array + items: + type: string + format: uuid + description: Member user ID + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Module' + description: '' + delete: + operationId: delete_module + description: Delete module + summary: Delete module + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Modules + security: + - ApiKeyAuthentication: [] + responses: + '204': + description: No response body + /workspaces/{slug}/projects/{project_id}/modules/{id}/archive/: + post: + operationId: archive_module + description: Archive module + summary: Archive module + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - Modules + security: + - ApiKeyAuthentication: [] + responses: + '204': + description: Module archived + '400': + description: Invalid request + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Module not found + /workspaces/{slug}/projects/{project_id}/states/: + get: + operationId: get_state + description: Get a state for a project + summary: Get State + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - States + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/State' + description: State retrieved + post: + operationId: create_state + description: Create a new state for a project + summary: Create State + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + tags: + - States + requestBody: + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: State name + maxLength: 255 + example: State 1 + description: + type: string + description: State description + nullable: true + example: This is a state description + color: + type: string + description: State color + example: '#000000' + group: + type: string + description: State group + enum: + - backlog + - unstarted + - started + - completed + - cancelled + - triage + example: backlog + default: + type: boolean + description: Default state + example: false + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/State' + description: State created + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: Project not found + '409': + description: State with the same name already exists + /workspaces/{slug}/projects/{project_id}/states/{state_id}/: + get: + operationId: get_state_2 + description: Get a state for a project + summary: Get State + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: path + name: state_id + schema: + type: string + format: uuid + required: true + tags: + - States + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/State' + description: State retrieved + patch: + operationId: update_state + description: Update a state for a project + summary: Update State + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: path + name: state_id + schema: + type: string + format: uuid + required: true + tags: + - States + requestBody: + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: State name + maxLength: 255 + example: State 1 + description: + type: string + description: State description + nullable: true + example: This is a state description + color: + type: string + description: State color + example: '#000000' + group: + type: string + description: State group + enum: + - backlog + - unstarted + - started + - completed + - cancelled + - triage + example: backlog + default: + type: boolean + description: Default state + example: false + security: + - ApiKeyAuthentication: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/State' + description: State updated + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: State not found + delete: + operationId: delete_state + description: Delete a state for a project + summary: Delete State + parameters: + - in: path + name: project_id + schema: + type: string + format: uuid + required: true + - in: path + name: slug + schema: + type: string + required: true + - in: path + name: state_id + schema: + type: string + format: uuid + required: true + tags: + - States + security: + - ApiKeyAuthentication: [] + responses: + '204': + description: State deleted + '401': + description: Authentication credentials were not provided or are invalid. + '403': + description: Permission denied. User lacks required permissions. + '404': + description: State not found +components: + schemas: + Cycle: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + total_issues: + type: integer + readOnly: true + cancelled_issues: + type: integer + readOnly: true + completed_issues: + type: integer + readOnly: true + started_issues: + type: integer + readOnly: true + unstarted_issues: + type: integer + readOnly: true + backlog_issues: + type: integer + readOnly: true + total_estimates: + type: number + format: double + readOnly: true + completed_estimates: + type: number + format: double + readOnly: true + started_estimates: + type: number + format: double + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + readOnly: true + nullable: true + name: + type: string + title: Cycle Name + maxLength: 255 + description: + type: string + title: Cycle Description + start_date: + type: string + format: date-time + nullable: true + end_date: + type: string + format: date-time + nullable: true + view_props: {} + sort_order: + type: number + format: double + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + progress_snapshot: {} + archived_at: + type: string + format: date-time + nullable: true + logo_props: {} + timezone: + enum: + - Africa/Abidjan + - Africa/Accra + - Africa/Addis_Ababa + - Africa/Algiers + - Africa/Asmara + - Africa/Asmera + - Africa/Bamako + - Africa/Bangui + - Africa/Banjul + - Africa/Bissau + - Africa/Blantyre + - Africa/Brazzaville + - Africa/Bujumbura + - Africa/Cairo + - Africa/Casablanca + - Africa/Ceuta + - Africa/Conakry + - Africa/Dakar + - Africa/Dar_es_Salaam + - Africa/Djibouti + - Africa/Douala + - Africa/El_Aaiun + - Africa/Freetown + - Africa/Gaborone + - Africa/Harare + - Africa/Johannesburg + - Africa/Juba + - Africa/Kampala + - Africa/Khartoum + - Africa/Kigali + - Africa/Kinshasa + - Africa/Lagos + - Africa/Libreville + - Africa/Lome + - Africa/Luanda + - Africa/Lubumbashi + - Africa/Lusaka + - Africa/Malabo + - Africa/Maputo + - Africa/Maseru + - Africa/Mbabane + - Africa/Mogadishu + - Africa/Monrovia + - Africa/Nairobi + - Africa/Ndjamena + - Africa/Niamey + - Africa/Nouakchott + - Africa/Ouagadougou + - Africa/Porto-Novo + - Africa/Sao_Tome + - Africa/Timbuktu + - Africa/Tripoli + - Africa/Tunis + - Africa/Windhoek + - America/Adak + - America/Anchorage + - America/Anguilla + - America/Antigua + - America/Araguaina + - America/Argentina/Buenos_Aires + - America/Argentina/Catamarca + - America/Argentina/ComodRivadavia + - America/Argentina/Cordoba + - America/Argentina/Jujuy + - America/Argentina/La_Rioja + - America/Argentina/Mendoza + - America/Argentina/Rio_Gallegos + - America/Argentina/Salta + - America/Argentina/San_Juan + - America/Argentina/San_Luis + - America/Argentina/Tucuman + - America/Argentina/Ushuaia + - America/Aruba + - America/Asuncion + - America/Atikokan + - America/Atka + - America/Bahia + - America/Bahia_Banderas + - America/Barbados + - America/Belem + - America/Belize + - America/Blanc-Sablon + - America/Boa_Vista + - America/Bogota + - America/Boise + - America/Buenos_Aires + - America/Cambridge_Bay + - America/Campo_Grande + - America/Cancun + - America/Caracas + - America/Catamarca + - America/Cayenne + - America/Cayman + - America/Chicago + - America/Chihuahua + - America/Ciudad_Juarez + - America/Coral_Harbour + - America/Cordoba + - America/Costa_Rica + - America/Creston + - America/Cuiaba + - America/Curacao + - America/Danmarkshavn + - America/Dawson + - America/Dawson_Creek + - America/Denver + - America/Detroit + - America/Dominica + - America/Edmonton + - America/Eirunepe + - America/El_Salvador + - America/Ensenada + - America/Fort_Nelson + - America/Fort_Wayne + - America/Fortaleza + - America/Glace_Bay + - America/Godthab + - America/Goose_Bay + - America/Grand_Turk + - America/Grenada + - America/Guadeloupe + - America/Guatemala + - America/Guayaquil + - America/Guyana + - America/Halifax + - America/Havana + - America/Hermosillo + - America/Indiana/Indianapolis + - America/Indiana/Knox + - America/Indiana/Marengo + - America/Indiana/Petersburg + - America/Indiana/Tell_City + - America/Indiana/Vevay + - America/Indiana/Vincennes + - America/Indiana/Winamac + - America/Indianapolis + - America/Inuvik + - America/Iqaluit + - America/Jamaica + - America/Jujuy + - America/Juneau + - America/Kentucky/Louisville + - America/Kentucky/Monticello + - America/Knox_IN + - America/Kralendijk + - America/La_Paz + - America/Lima + - America/Los_Angeles + - America/Louisville + - America/Lower_Princes + - America/Maceio + - America/Managua + - America/Manaus + - America/Marigot + - America/Martinique + - America/Matamoros + - America/Mazatlan + - America/Mendoza + - America/Menominee + - America/Merida + - America/Metlakatla + - America/Mexico_City + - America/Miquelon + - America/Moncton + - America/Monterrey + - America/Montevideo + - America/Montreal + - America/Montserrat + - America/Nassau + - America/New_York + - America/Nipigon + - America/Nome + - America/Noronha + - America/North_Dakota/Beulah + - America/North_Dakota/Center + - America/North_Dakota/New_Salem + - America/Nuuk + - America/Ojinaga + - America/Panama + - America/Pangnirtung + - America/Paramaribo + - America/Phoenix + - America/Port-au-Prince + - America/Port_of_Spain + - America/Porto_Acre + - America/Porto_Velho + - America/Puerto_Rico + - America/Punta_Arenas + - America/Rainy_River + - America/Rankin_Inlet + - America/Recife + - America/Regina + - America/Resolute + - America/Rio_Branco + - America/Rosario + - America/Santa_Isabel + - America/Santarem + - America/Santiago + - America/Santo_Domingo + - America/Sao_Paulo + - America/Scoresbysund + - America/Shiprock + - America/Sitka + - America/St_Barthelemy + - America/St_Johns + - America/St_Kitts + - America/St_Lucia + - America/St_Thomas + - America/St_Vincent + - America/Swift_Current + - America/Tegucigalpa + - America/Thule + - America/Thunder_Bay + - America/Tijuana + - America/Toronto + - America/Tortola + - America/Vancouver + - America/Virgin + - America/Whitehorse + - America/Winnipeg + - America/Yakutat + - America/Yellowknife + - Antarctica/Casey + - Antarctica/Davis + - Antarctica/DumontDUrville + - Antarctica/Macquarie + - Antarctica/Mawson + - Antarctica/McMurdo + - Antarctica/Palmer + - Antarctica/Rothera + - Antarctica/South_Pole + - Antarctica/Syowa + - Antarctica/Troll + - Antarctica/Vostok + - Arctic/Longyearbyen + - Asia/Aden + - Asia/Almaty + - Asia/Amman + - Asia/Anadyr + - Asia/Aqtau + - Asia/Aqtobe + - Asia/Ashgabat + - Asia/Ashkhabad + - Asia/Atyrau + - Asia/Baghdad + - Asia/Bahrain + - Asia/Baku + - Asia/Bangkok + - Asia/Barnaul + - Asia/Beirut + - Asia/Bishkek + - Asia/Brunei + - Asia/Calcutta + - Asia/Chita + - Asia/Choibalsan + - Asia/Chongqing + - Asia/Chungking + - Asia/Colombo + - Asia/Dacca + - Asia/Damascus + - Asia/Dhaka + - Asia/Dili + - Asia/Dubai + - Asia/Dushanbe + - Asia/Famagusta + - Asia/Gaza + - Asia/Harbin + - Asia/Hebron + - Asia/Ho_Chi_Minh + - Asia/Hong_Kong + - Asia/Hovd + - Asia/Irkutsk + - Asia/Istanbul + - Asia/Jakarta + - Asia/Jayapura + - Asia/Jerusalem + - Asia/Kabul + - Asia/Kamchatka + - Asia/Karachi + - Asia/Kashgar + - Asia/Kathmandu + - Asia/Katmandu + - Asia/Khandyga + - Asia/Kolkata + - Asia/Krasnoyarsk + - Asia/Kuala_Lumpur + - Asia/Kuching + - Asia/Kuwait + - Asia/Macao + - Asia/Macau + - Asia/Magadan + - Asia/Makassar + - Asia/Manila + - Asia/Muscat + - Asia/Nicosia + - Asia/Novokuznetsk + - Asia/Novosibirsk + - Asia/Omsk + - Asia/Oral + - Asia/Phnom_Penh + - Asia/Pontianak + - Asia/Pyongyang + - Asia/Qatar + - Asia/Qostanay + - Asia/Qyzylorda + - Asia/Rangoon + - Asia/Riyadh + - Asia/Saigon + - Asia/Sakhalin + - Asia/Samarkand + - Asia/Seoul + - Asia/Shanghai + - Asia/Singapore + - Asia/Srednekolymsk + - Asia/Taipei + - Asia/Tashkent + - Asia/Tbilisi + - Asia/Tehran + - Asia/Tel_Aviv + - Asia/Thimbu + - Asia/Thimphu + - Asia/Tokyo + - Asia/Tomsk + - Asia/Ujung_Pandang + - Asia/Ulaanbaatar + - Asia/Ulan_Bator + - Asia/Urumqi + - Asia/Ust-Nera + - Asia/Vientiane + - Asia/Vladivostok + - Asia/Yakutsk + - Asia/Yangon + - Asia/Yekaterinburg + - Asia/Yerevan + - Atlantic/Azores + - Atlantic/Bermuda + - Atlantic/Canary + - Atlantic/Cape_Verde + - Atlantic/Faeroe + - Atlantic/Faroe + - Atlantic/Jan_Mayen + - Atlantic/Madeira + - Atlantic/Reykjavik + - Atlantic/South_Georgia + - Atlantic/St_Helena + - Atlantic/Stanley + - Australia/ACT + - Australia/Adelaide + - Australia/Brisbane + - Australia/Broken_Hill + - Australia/Canberra + - Australia/Currie + - Australia/Darwin + - Australia/Eucla + - Australia/Hobart + - Australia/LHI + - Australia/Lindeman + - Australia/Lord_Howe + - Australia/Melbourne + - Australia/NSW + - Australia/North + - Australia/Perth + - Australia/Queensland + - Australia/South + - Australia/Sydney + - Australia/Tasmania + - Australia/Victoria + - Australia/West + - Australia/Yancowinna + - Brazil/Acre + - Brazil/DeNoronha + - Brazil/East + - Brazil/West + - CET + - CST6CDT + - Canada/Atlantic + - Canada/Central + - Canada/Eastern + - Canada/Mountain + - Canada/Newfoundland + - Canada/Pacific + - Canada/Saskatchewan + - Canada/Yukon + - Chile/Continental + - Chile/EasterIsland + - Cuba + - EET + - EST + - EST5EDT + - Egypt + - Eire + - Etc/GMT + - Etc/GMT+0 + - Etc/GMT+1 + - Etc/GMT+10 + - Etc/GMT+11 + - Etc/GMT+12 + - Etc/GMT+2 + - Etc/GMT+3 + - Etc/GMT+4 + - Etc/GMT+5 + - Etc/GMT+6 + - Etc/GMT+7 + - Etc/GMT+8 + - Etc/GMT+9 + - Etc/GMT-0 + - Etc/GMT-1 + - Etc/GMT-10 + - Etc/GMT-11 + - Etc/GMT-12 + - Etc/GMT-13 + - Etc/GMT-14 + - Etc/GMT-2 + - Etc/GMT-3 + - Etc/GMT-4 + - Etc/GMT-5 + - Etc/GMT-6 + - Etc/GMT-7 + - Etc/GMT-8 + - Etc/GMT-9 + - Etc/GMT0 + - Etc/Greenwich + - Etc/UCT + - Etc/UTC + - Etc/Universal + - Etc/Zulu + - Europe/Amsterdam + - Europe/Andorra + - Europe/Astrakhan + - Europe/Athens + - Europe/Belfast + - Europe/Belgrade + - Europe/Berlin + - Europe/Bratislava + - Europe/Brussels + - Europe/Bucharest + - Europe/Budapest + - Europe/Busingen + - Europe/Chisinau + - Europe/Copenhagen + - Europe/Dublin + - Europe/Gibraltar + - Europe/Guernsey + - Europe/Helsinki + - Europe/Isle_of_Man + - Europe/Istanbul + - Europe/Jersey + - Europe/Kaliningrad + - Europe/Kiev + - Europe/Kirov + - Europe/Kyiv + - Europe/Lisbon + - Europe/Ljubljana + - Europe/London + - Europe/Luxembourg + - Europe/Madrid + - Europe/Malta + - Europe/Mariehamn + - Europe/Minsk + - Europe/Monaco + - Europe/Moscow + - Europe/Nicosia + - Europe/Oslo + - Europe/Paris + - Europe/Podgorica + - Europe/Prague + - Europe/Riga + - Europe/Rome + - Europe/Samara + - Europe/San_Marino + - Europe/Sarajevo + - Europe/Saratov + - Europe/Simferopol + - Europe/Skopje + - Europe/Sofia + - Europe/Stockholm + - Europe/Tallinn + - Europe/Tirane + - Europe/Tiraspol + - Europe/Ulyanovsk + - Europe/Uzhgorod + - Europe/Vaduz + - Europe/Vatican + - Europe/Vienna + - Europe/Vilnius + - Europe/Volgograd + - Europe/Warsaw + - Europe/Zagreb + - Europe/Zaporozhye + - Europe/Zurich + - GB + - GB-Eire + - GMT + - GMT+0 + - GMT-0 + - GMT0 + - Greenwich + - HST + - Hongkong + - Iceland + - Indian/Antananarivo + - Indian/Chagos + - Indian/Christmas + - Indian/Cocos + - Indian/Comoro + - Indian/Kerguelen + - Indian/Mahe + - Indian/Maldives + - Indian/Mauritius + - Indian/Mayotte + - Indian/Reunion + - Iran + - Israel + - Jamaica + - Japan + - Kwajalein + - Libya + - MET + - MST + - MST7MDT + - Mexico/BajaNorte + - Mexico/BajaSur + - Mexico/General + - NZ + - NZ-CHAT + - Navajo + - PRC + - PST8PDT + - Pacific/Apia + - Pacific/Auckland + - Pacific/Bougainville + - Pacific/Chatham + - Pacific/Chuuk + - Pacific/Easter + - Pacific/Efate + - Pacific/Enderbury + - Pacific/Fakaofo + - Pacific/Fiji + - Pacific/Funafuti + - Pacific/Galapagos + - Pacific/Gambier + - Pacific/Guadalcanal + - Pacific/Guam + - Pacific/Honolulu + - Pacific/Johnston + - Pacific/Kanton + - Pacific/Kiritimati + - Pacific/Kosrae + - Pacific/Kwajalein + - Pacific/Majuro + - Pacific/Marquesas + - Pacific/Midway + - Pacific/Nauru + - Pacific/Niue + - Pacific/Norfolk + - Pacific/Noumea + - Pacific/Pago_Pago + - Pacific/Palau + - Pacific/Pitcairn + - Pacific/Pohnpei + - Pacific/Ponape + - Pacific/Port_Moresby + - Pacific/Rarotonga + - Pacific/Saipan + - Pacific/Samoa + - Pacific/Tahiti + - Pacific/Tarawa + - Pacific/Tongatapu + - Pacific/Truk + - Pacific/Wake + - Pacific/Wallis + - Pacific/Yap + - Poland + - Portugal + - ROC + - ROK + - Singapore + - Turkey + - UCT + - US/Alaska + - US/Aleutian + - US/Arizona + - US/Central + - US/East-Indiana + - US/Eastern + - US/Hawaii + - US/Indiana-Starke + - US/Michigan + - US/Mountain + - US/Pacific + - US/Samoa + - UTC + - Universal + - W-SU + - WET + - Zulu + type: string + description: |- + * `Africa/Abidjan` - Africa/Abidjan + * `Africa/Accra` - Africa/Accra + * `Africa/Addis_Ababa` - Africa/Addis_Ababa + * `Africa/Algiers` - Africa/Algiers + * `Africa/Asmara` - Africa/Asmara + * `Africa/Asmera` - Africa/Asmera + * `Africa/Bamako` - Africa/Bamako + * `Africa/Bangui` - Africa/Bangui + * `Africa/Banjul` - Africa/Banjul + * `Africa/Bissau` - Africa/Bissau + * `Africa/Blantyre` - Africa/Blantyre + * `Africa/Brazzaville` - Africa/Brazzaville + * `Africa/Bujumbura` - Africa/Bujumbura + * `Africa/Cairo` - Africa/Cairo + * `Africa/Casablanca` - Africa/Casablanca + * `Africa/Ceuta` - Africa/Ceuta + * `Africa/Conakry` - Africa/Conakry + * `Africa/Dakar` - Africa/Dakar + * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam + * `Africa/Djibouti` - Africa/Djibouti + * `Africa/Douala` - Africa/Douala + * `Africa/El_Aaiun` - Africa/El_Aaiun + * `Africa/Freetown` - Africa/Freetown + * `Africa/Gaborone` - Africa/Gaborone + * `Africa/Harare` - Africa/Harare + * `Africa/Johannesburg` - Africa/Johannesburg + * `Africa/Juba` - Africa/Juba + * `Africa/Kampala` - Africa/Kampala + * `Africa/Khartoum` - Africa/Khartoum + * `Africa/Kigali` - Africa/Kigali + * `Africa/Kinshasa` - Africa/Kinshasa + * `Africa/Lagos` - Africa/Lagos + * `Africa/Libreville` - Africa/Libreville + * `Africa/Lome` - Africa/Lome + * `Africa/Luanda` - Africa/Luanda + * `Africa/Lubumbashi` - Africa/Lubumbashi + * `Africa/Lusaka` - Africa/Lusaka + * `Africa/Malabo` - Africa/Malabo + * `Africa/Maputo` - Africa/Maputo + * `Africa/Maseru` - Africa/Maseru + * `Africa/Mbabane` - Africa/Mbabane + * `Africa/Mogadishu` - Africa/Mogadishu + * `Africa/Monrovia` - Africa/Monrovia + * `Africa/Nairobi` - Africa/Nairobi + * `Africa/Ndjamena` - Africa/Ndjamena + * `Africa/Niamey` - Africa/Niamey + * `Africa/Nouakchott` - Africa/Nouakchott + * `Africa/Ouagadougou` - Africa/Ouagadougou + * `Africa/Porto-Novo` - Africa/Porto-Novo + * `Africa/Sao_Tome` - Africa/Sao_Tome + * `Africa/Timbuktu` - Africa/Timbuktu + * `Africa/Tripoli` - Africa/Tripoli + * `Africa/Tunis` - Africa/Tunis + * `Africa/Windhoek` - Africa/Windhoek + * `America/Adak` - America/Adak + * `America/Anchorage` - America/Anchorage + * `America/Anguilla` - America/Anguilla + * `America/Antigua` - America/Antigua + * `America/Araguaina` - America/Araguaina + * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires + * `America/Argentina/Catamarca` - America/Argentina/Catamarca + * `America/Argentina/ComodRivadavia` - America/Argentina/ComodRivadavia + * `America/Argentina/Cordoba` - America/Argentina/Cordoba + * `America/Argentina/Jujuy` - America/Argentina/Jujuy + * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja + * `America/Argentina/Mendoza` - America/Argentina/Mendoza + * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos + * `America/Argentina/Salta` - America/Argentina/Salta + * `America/Argentina/San_Juan` - America/Argentina/San_Juan + * `America/Argentina/San_Luis` - America/Argentina/San_Luis + * `America/Argentina/Tucuman` - America/Argentina/Tucuman + * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia + * `America/Aruba` - America/Aruba + * `America/Asuncion` - America/Asuncion + * `America/Atikokan` - America/Atikokan + * `America/Atka` - America/Atka + * `America/Bahia` - America/Bahia + * `America/Bahia_Banderas` - America/Bahia_Banderas + * `America/Barbados` - America/Barbados + * `America/Belem` - America/Belem + * `America/Belize` - America/Belize + * `America/Blanc-Sablon` - America/Blanc-Sablon + * `America/Boa_Vista` - America/Boa_Vista + * `America/Bogota` - America/Bogota + * `America/Boise` - America/Boise + * `America/Buenos_Aires` - America/Buenos_Aires + * `America/Cambridge_Bay` - America/Cambridge_Bay + * `America/Campo_Grande` - America/Campo_Grande + * `America/Cancun` - America/Cancun + * `America/Caracas` - America/Caracas + * `America/Catamarca` - America/Catamarca + * `America/Cayenne` - America/Cayenne + * `America/Cayman` - America/Cayman + * `America/Chicago` - America/Chicago + * `America/Chihuahua` - America/Chihuahua + * `America/Ciudad_Juarez` - America/Ciudad_Juarez + * `America/Coral_Harbour` - America/Coral_Harbour + * `America/Cordoba` - America/Cordoba + * `America/Costa_Rica` - America/Costa_Rica + * `America/Creston` - America/Creston + * `America/Cuiaba` - America/Cuiaba + * `America/Curacao` - America/Curacao + * `America/Danmarkshavn` - America/Danmarkshavn + * `America/Dawson` - America/Dawson + * `America/Dawson_Creek` - America/Dawson_Creek + * `America/Denver` - America/Denver + * `America/Detroit` - America/Detroit + * `America/Dominica` - America/Dominica + * `America/Edmonton` - America/Edmonton + * `America/Eirunepe` - America/Eirunepe + * `America/El_Salvador` - America/El_Salvador + * `America/Ensenada` - America/Ensenada + * `America/Fort_Nelson` - America/Fort_Nelson + * `America/Fort_Wayne` - America/Fort_Wayne + * `America/Fortaleza` - America/Fortaleza + * `America/Glace_Bay` - America/Glace_Bay + * `America/Godthab` - America/Godthab + * `America/Goose_Bay` - America/Goose_Bay + * `America/Grand_Turk` - America/Grand_Turk + * `America/Grenada` - America/Grenada + * `America/Guadeloupe` - America/Guadeloupe + * `America/Guatemala` - America/Guatemala + * `America/Guayaquil` - America/Guayaquil + * `America/Guyana` - America/Guyana + * `America/Halifax` - America/Halifax + * `America/Havana` - America/Havana + * `America/Hermosillo` - America/Hermosillo + * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis + * `America/Indiana/Knox` - America/Indiana/Knox + * `America/Indiana/Marengo` - America/Indiana/Marengo + * `America/Indiana/Petersburg` - America/Indiana/Petersburg + * `America/Indiana/Tell_City` - America/Indiana/Tell_City + * `America/Indiana/Vevay` - America/Indiana/Vevay + * `America/Indiana/Vincennes` - America/Indiana/Vincennes + * `America/Indiana/Winamac` - America/Indiana/Winamac + * `America/Indianapolis` - America/Indianapolis + * `America/Inuvik` - America/Inuvik + * `America/Iqaluit` - America/Iqaluit + * `America/Jamaica` - America/Jamaica + * `America/Jujuy` - America/Jujuy + * `America/Juneau` - America/Juneau + * `America/Kentucky/Louisville` - America/Kentucky/Louisville + * `America/Kentucky/Monticello` - America/Kentucky/Monticello + * `America/Knox_IN` - America/Knox_IN + * `America/Kralendijk` - America/Kralendijk + * `America/La_Paz` - America/La_Paz + * `America/Lima` - America/Lima + * `America/Los_Angeles` - America/Los_Angeles + * `America/Louisville` - America/Louisville + * `America/Lower_Princes` - America/Lower_Princes + * `America/Maceio` - America/Maceio + * `America/Managua` - America/Managua + * `America/Manaus` - America/Manaus + * `America/Marigot` - America/Marigot + * `America/Martinique` - America/Martinique + * `America/Matamoros` - America/Matamoros + * `America/Mazatlan` - America/Mazatlan + * `America/Mendoza` - America/Mendoza + * `America/Menominee` - America/Menominee + * `America/Merida` - America/Merida + * `America/Metlakatla` - America/Metlakatla + * `America/Mexico_City` - America/Mexico_City + * `America/Miquelon` - America/Miquelon + * `America/Moncton` - America/Moncton + * `America/Monterrey` - America/Monterrey + * `America/Montevideo` - America/Montevideo + * `America/Montreal` - America/Montreal + * `America/Montserrat` - America/Montserrat + * `America/Nassau` - America/Nassau + * `America/New_York` - America/New_York + * `America/Nipigon` - America/Nipigon + * `America/Nome` - America/Nome + * `America/Noronha` - America/Noronha + * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah + * `America/North_Dakota/Center` - America/North_Dakota/Center + * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem + * `America/Nuuk` - America/Nuuk + * `America/Ojinaga` - America/Ojinaga + * `America/Panama` - America/Panama + * `America/Pangnirtung` - America/Pangnirtung + * `America/Paramaribo` - America/Paramaribo + * `America/Phoenix` - America/Phoenix + * `America/Port-au-Prince` - America/Port-au-Prince + * `America/Port_of_Spain` - America/Port_of_Spain + * `America/Porto_Acre` - America/Porto_Acre + * `America/Porto_Velho` - America/Porto_Velho + * `America/Puerto_Rico` - America/Puerto_Rico + * `America/Punta_Arenas` - America/Punta_Arenas + * `America/Rainy_River` - America/Rainy_River + * `America/Rankin_Inlet` - America/Rankin_Inlet + * `America/Recife` - America/Recife + * `America/Regina` - America/Regina + * `America/Resolute` - America/Resolute + * `America/Rio_Branco` - America/Rio_Branco + * `America/Rosario` - America/Rosario + * `America/Santa_Isabel` - America/Santa_Isabel + * `America/Santarem` - America/Santarem + * `America/Santiago` - America/Santiago + * `America/Santo_Domingo` - America/Santo_Domingo + * `America/Sao_Paulo` - America/Sao_Paulo + * `America/Scoresbysund` - America/Scoresbysund + * `America/Shiprock` - America/Shiprock + * `America/Sitka` - America/Sitka + * `America/St_Barthelemy` - America/St_Barthelemy + * `America/St_Johns` - America/St_Johns + * `America/St_Kitts` - America/St_Kitts + * `America/St_Lucia` - America/St_Lucia + * `America/St_Thomas` - America/St_Thomas + * `America/St_Vincent` - America/St_Vincent + * `America/Swift_Current` - America/Swift_Current + * `America/Tegucigalpa` - America/Tegucigalpa + * `America/Thule` - America/Thule + * `America/Thunder_Bay` - America/Thunder_Bay + * `America/Tijuana` - America/Tijuana + * `America/Toronto` - America/Toronto + * `America/Tortola` - America/Tortola + * `America/Vancouver` - America/Vancouver + * `America/Virgin` - America/Virgin + * `America/Whitehorse` - America/Whitehorse + * `America/Winnipeg` - America/Winnipeg + * `America/Yakutat` - America/Yakutat + * `America/Yellowknife` - America/Yellowknife + * `Antarctica/Casey` - Antarctica/Casey + * `Antarctica/Davis` - Antarctica/Davis + * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville + * `Antarctica/Macquarie` - Antarctica/Macquarie + * `Antarctica/Mawson` - Antarctica/Mawson + * `Antarctica/McMurdo` - Antarctica/McMurdo + * `Antarctica/Palmer` - Antarctica/Palmer + * `Antarctica/Rothera` - Antarctica/Rothera + * `Antarctica/South_Pole` - Antarctica/South_Pole + * `Antarctica/Syowa` - Antarctica/Syowa + * `Antarctica/Troll` - Antarctica/Troll + * `Antarctica/Vostok` - Antarctica/Vostok + * `Arctic/Longyearbyen` - Arctic/Longyearbyen + * `Asia/Aden` - Asia/Aden + * `Asia/Almaty` - Asia/Almaty + * `Asia/Amman` - Asia/Amman + * `Asia/Anadyr` - Asia/Anadyr + * `Asia/Aqtau` - Asia/Aqtau + * `Asia/Aqtobe` - Asia/Aqtobe + * `Asia/Ashgabat` - Asia/Ashgabat + * `Asia/Ashkhabad` - Asia/Ashkhabad + * `Asia/Atyrau` - Asia/Atyrau + * `Asia/Baghdad` - Asia/Baghdad + * `Asia/Bahrain` - Asia/Bahrain + * `Asia/Baku` - Asia/Baku + * `Asia/Bangkok` - Asia/Bangkok + * `Asia/Barnaul` - Asia/Barnaul + * `Asia/Beirut` - Asia/Beirut + * `Asia/Bishkek` - Asia/Bishkek + * `Asia/Brunei` - Asia/Brunei + * `Asia/Calcutta` - Asia/Calcutta + * `Asia/Chita` - Asia/Chita + * `Asia/Choibalsan` - Asia/Choibalsan + * `Asia/Chongqing` - Asia/Chongqing + * `Asia/Chungking` - Asia/Chungking + * `Asia/Colombo` - Asia/Colombo + * `Asia/Dacca` - Asia/Dacca + * `Asia/Damascus` - Asia/Damascus + * `Asia/Dhaka` - Asia/Dhaka + * `Asia/Dili` - Asia/Dili + * `Asia/Dubai` - Asia/Dubai + * `Asia/Dushanbe` - Asia/Dushanbe + * `Asia/Famagusta` - Asia/Famagusta + * `Asia/Gaza` - Asia/Gaza + * `Asia/Harbin` - Asia/Harbin + * `Asia/Hebron` - Asia/Hebron + * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh + * `Asia/Hong_Kong` - Asia/Hong_Kong + * `Asia/Hovd` - Asia/Hovd + * `Asia/Irkutsk` - Asia/Irkutsk + * `Asia/Istanbul` - Asia/Istanbul + * `Asia/Jakarta` - Asia/Jakarta + * `Asia/Jayapura` - Asia/Jayapura + * `Asia/Jerusalem` - Asia/Jerusalem + * `Asia/Kabul` - Asia/Kabul + * `Asia/Kamchatka` - Asia/Kamchatka + * `Asia/Karachi` - Asia/Karachi + * `Asia/Kashgar` - Asia/Kashgar + * `Asia/Kathmandu` - Asia/Kathmandu + * `Asia/Katmandu` - Asia/Katmandu + * `Asia/Khandyga` - Asia/Khandyga + * `Asia/Kolkata` - Asia/Kolkata + * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk + * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur + * `Asia/Kuching` - Asia/Kuching + * `Asia/Kuwait` - Asia/Kuwait + * `Asia/Macao` - Asia/Macao + * `Asia/Macau` - Asia/Macau + * `Asia/Magadan` - Asia/Magadan + * `Asia/Makassar` - Asia/Makassar + * `Asia/Manila` - Asia/Manila + * `Asia/Muscat` - Asia/Muscat + * `Asia/Nicosia` - Asia/Nicosia + * `Asia/Novokuznetsk` - Asia/Novokuznetsk + * `Asia/Novosibirsk` - Asia/Novosibirsk + * `Asia/Omsk` - Asia/Omsk + * `Asia/Oral` - Asia/Oral + * `Asia/Phnom_Penh` - Asia/Phnom_Penh + * `Asia/Pontianak` - Asia/Pontianak + * `Asia/Pyongyang` - Asia/Pyongyang + * `Asia/Qatar` - Asia/Qatar + * `Asia/Qostanay` - Asia/Qostanay + * `Asia/Qyzylorda` - Asia/Qyzylorda + * `Asia/Rangoon` - Asia/Rangoon + * `Asia/Riyadh` - Asia/Riyadh + * `Asia/Saigon` - Asia/Saigon + * `Asia/Sakhalin` - Asia/Sakhalin + * `Asia/Samarkand` - Asia/Samarkand + * `Asia/Seoul` - Asia/Seoul + * `Asia/Shanghai` - Asia/Shanghai + * `Asia/Singapore` - Asia/Singapore + * `Asia/Srednekolymsk` - Asia/Srednekolymsk + * `Asia/Taipei` - Asia/Taipei + * `Asia/Tashkent` - Asia/Tashkent + * `Asia/Tbilisi` - Asia/Tbilisi + * `Asia/Tehran` - Asia/Tehran + * `Asia/Tel_Aviv` - Asia/Tel_Aviv + * `Asia/Thimbu` - Asia/Thimbu + * `Asia/Thimphu` - Asia/Thimphu + * `Asia/Tokyo` - Asia/Tokyo + * `Asia/Tomsk` - Asia/Tomsk + * `Asia/Ujung_Pandang` - Asia/Ujung_Pandang + * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar + * `Asia/Ulan_Bator` - Asia/Ulan_Bator + * `Asia/Urumqi` - Asia/Urumqi + * `Asia/Ust-Nera` - Asia/Ust-Nera + * `Asia/Vientiane` - Asia/Vientiane + * `Asia/Vladivostok` - Asia/Vladivostok + * `Asia/Yakutsk` - Asia/Yakutsk + * `Asia/Yangon` - Asia/Yangon + * `Asia/Yekaterinburg` - Asia/Yekaterinburg + * `Asia/Yerevan` - Asia/Yerevan + * `Atlantic/Azores` - Atlantic/Azores + * `Atlantic/Bermuda` - Atlantic/Bermuda + * `Atlantic/Canary` - Atlantic/Canary + * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde + * `Atlantic/Faeroe` - Atlantic/Faeroe + * `Atlantic/Faroe` - Atlantic/Faroe + * `Atlantic/Jan_Mayen` - Atlantic/Jan_Mayen + * `Atlantic/Madeira` - Atlantic/Madeira + * `Atlantic/Reykjavik` - Atlantic/Reykjavik + * `Atlantic/South_Georgia` - Atlantic/South_Georgia + * `Atlantic/St_Helena` - Atlantic/St_Helena + * `Atlantic/Stanley` - Atlantic/Stanley + * `Australia/ACT` - Australia/ACT + * `Australia/Adelaide` - Australia/Adelaide + * `Australia/Brisbane` - Australia/Brisbane + * `Australia/Broken_Hill` - Australia/Broken_Hill + * `Australia/Canberra` - Australia/Canberra + * `Australia/Currie` - Australia/Currie + * `Australia/Darwin` - Australia/Darwin + * `Australia/Eucla` - Australia/Eucla + * `Australia/Hobart` - Australia/Hobart + * `Australia/LHI` - Australia/LHI + * `Australia/Lindeman` - Australia/Lindeman + * `Australia/Lord_Howe` - Australia/Lord_Howe + * `Australia/Melbourne` - Australia/Melbourne + * `Australia/NSW` - Australia/NSW + * `Australia/North` - Australia/North + * `Australia/Perth` - Australia/Perth + * `Australia/Queensland` - Australia/Queensland + * `Australia/South` - Australia/South + * `Australia/Sydney` - Australia/Sydney + * `Australia/Tasmania` - Australia/Tasmania + * `Australia/Victoria` - Australia/Victoria + * `Australia/West` - Australia/West + * `Australia/Yancowinna` - Australia/Yancowinna + * `Brazil/Acre` - Brazil/Acre + * `Brazil/DeNoronha` - Brazil/DeNoronha + * `Brazil/East` - Brazil/East + * `Brazil/West` - Brazil/West + * `CET` - CET + * `CST6CDT` - CST6CDT + * `Canada/Atlantic` - Canada/Atlantic + * `Canada/Central` - Canada/Central + * `Canada/Eastern` - Canada/Eastern + * `Canada/Mountain` - Canada/Mountain + * `Canada/Newfoundland` - Canada/Newfoundland + * `Canada/Pacific` - Canada/Pacific + * `Canada/Saskatchewan` - Canada/Saskatchewan + * `Canada/Yukon` - Canada/Yukon + * `Chile/Continental` - Chile/Continental + * `Chile/EasterIsland` - Chile/EasterIsland + * `Cuba` - Cuba + * `EET` - EET + * `EST` - EST + * `EST5EDT` - EST5EDT + * `Egypt` - Egypt + * `Eire` - Eire + * `Etc/GMT` - Etc/GMT + * `Etc/GMT+0` - Etc/GMT+0 + * `Etc/GMT+1` - Etc/GMT+1 + * `Etc/GMT+10` - Etc/GMT+10 + * `Etc/GMT+11` - Etc/GMT+11 + * `Etc/GMT+12` - Etc/GMT+12 + * `Etc/GMT+2` - Etc/GMT+2 + * `Etc/GMT+3` - Etc/GMT+3 + * `Etc/GMT+4` - Etc/GMT+4 + * `Etc/GMT+5` - Etc/GMT+5 + * `Etc/GMT+6` - Etc/GMT+6 + * `Etc/GMT+7` - Etc/GMT+7 + * `Etc/GMT+8` - Etc/GMT+8 + * `Etc/GMT+9` - Etc/GMT+9 + * `Etc/GMT-0` - Etc/GMT-0 + * `Etc/GMT-1` - Etc/GMT-1 + * `Etc/GMT-10` - Etc/GMT-10 + * `Etc/GMT-11` - Etc/GMT-11 + * `Etc/GMT-12` - Etc/GMT-12 + * `Etc/GMT-13` - Etc/GMT-13 + * `Etc/GMT-14` - Etc/GMT-14 + * `Etc/GMT-2` - Etc/GMT-2 + * `Etc/GMT-3` - Etc/GMT-3 + * `Etc/GMT-4` - Etc/GMT-4 + * `Etc/GMT-5` - Etc/GMT-5 + * `Etc/GMT-6` - Etc/GMT-6 + * `Etc/GMT-7` - Etc/GMT-7 + * `Etc/GMT-8` - Etc/GMT-8 + * `Etc/GMT-9` - Etc/GMT-9 + * `Etc/GMT0` - Etc/GMT0 + * `Etc/Greenwich` - Etc/Greenwich + * `Etc/UCT` - Etc/UCT + * `Etc/UTC` - Etc/UTC + * `Etc/Universal` - Etc/Universal + * `Etc/Zulu` - Etc/Zulu + * `Europe/Amsterdam` - Europe/Amsterdam + * `Europe/Andorra` - Europe/Andorra + * `Europe/Astrakhan` - Europe/Astrakhan + * `Europe/Athens` - Europe/Athens + * `Europe/Belfast` - Europe/Belfast + * `Europe/Belgrade` - Europe/Belgrade + * `Europe/Berlin` - Europe/Berlin + * `Europe/Bratislava` - Europe/Bratislava + * `Europe/Brussels` - Europe/Brussels + * `Europe/Bucharest` - Europe/Bucharest + * `Europe/Budapest` - Europe/Budapest + * `Europe/Busingen` - Europe/Busingen + * `Europe/Chisinau` - Europe/Chisinau + * `Europe/Copenhagen` - Europe/Copenhagen + * `Europe/Dublin` - Europe/Dublin + * `Europe/Gibraltar` - Europe/Gibraltar + * `Europe/Guernsey` - Europe/Guernsey + * `Europe/Helsinki` - Europe/Helsinki + * `Europe/Isle_of_Man` - Europe/Isle_of_Man + * `Europe/Istanbul` - Europe/Istanbul + * `Europe/Jersey` - Europe/Jersey + * `Europe/Kaliningrad` - Europe/Kaliningrad + * `Europe/Kiev` - Europe/Kiev + * `Europe/Kirov` - Europe/Kirov + * `Europe/Kyiv` - Europe/Kyiv + * `Europe/Lisbon` - Europe/Lisbon + * `Europe/Ljubljana` - Europe/Ljubljana + * `Europe/London` - Europe/London + * `Europe/Luxembourg` - Europe/Luxembourg + * `Europe/Madrid` - Europe/Madrid + * `Europe/Malta` - Europe/Malta + * `Europe/Mariehamn` - Europe/Mariehamn + * `Europe/Minsk` - Europe/Minsk + * `Europe/Monaco` - Europe/Monaco + * `Europe/Moscow` - Europe/Moscow + * `Europe/Nicosia` - Europe/Nicosia + * `Europe/Oslo` - Europe/Oslo + * `Europe/Paris` - Europe/Paris + * `Europe/Podgorica` - Europe/Podgorica + * `Europe/Prague` - Europe/Prague + * `Europe/Riga` - Europe/Riga + * `Europe/Rome` - Europe/Rome + * `Europe/Samara` - Europe/Samara + * `Europe/San_Marino` - Europe/San_Marino + * `Europe/Sarajevo` - Europe/Sarajevo + * `Europe/Saratov` - Europe/Saratov + * `Europe/Simferopol` - Europe/Simferopol + * `Europe/Skopje` - Europe/Skopje + * `Europe/Sofia` - Europe/Sofia + * `Europe/Stockholm` - Europe/Stockholm + * `Europe/Tallinn` - Europe/Tallinn + * `Europe/Tirane` - Europe/Tirane + * `Europe/Tiraspol` - Europe/Tiraspol + * `Europe/Ulyanovsk` - Europe/Ulyanovsk + * `Europe/Uzhgorod` - Europe/Uzhgorod + * `Europe/Vaduz` - Europe/Vaduz + * `Europe/Vatican` - Europe/Vatican + * `Europe/Vienna` - Europe/Vienna + * `Europe/Vilnius` - Europe/Vilnius + * `Europe/Volgograd` - Europe/Volgograd + * `Europe/Warsaw` - Europe/Warsaw + * `Europe/Zagreb` - Europe/Zagreb + * `Europe/Zaporozhye` - Europe/Zaporozhye + * `Europe/Zurich` - Europe/Zurich + * `GB` - GB + * `GB-Eire` - GB-Eire + * `GMT` - GMT + * `GMT+0` - GMT+0 + * `GMT-0` - GMT-0 + * `GMT0` - GMT0 + * `Greenwich` - Greenwich + * `HST` - HST + * `Hongkong` - Hongkong + * `Iceland` - Iceland + * `Indian/Antananarivo` - Indian/Antananarivo + * `Indian/Chagos` - Indian/Chagos + * `Indian/Christmas` - Indian/Christmas + * `Indian/Cocos` - Indian/Cocos + * `Indian/Comoro` - Indian/Comoro + * `Indian/Kerguelen` - Indian/Kerguelen + * `Indian/Mahe` - Indian/Mahe + * `Indian/Maldives` - Indian/Maldives + * `Indian/Mauritius` - Indian/Mauritius + * `Indian/Mayotte` - Indian/Mayotte + * `Indian/Reunion` - Indian/Reunion + * `Iran` - Iran + * `Israel` - Israel + * `Jamaica` - Jamaica + * `Japan` - Japan + * `Kwajalein` - Kwajalein + * `Libya` - Libya + * `MET` - MET + * `MST` - MST + * `MST7MDT` - MST7MDT + * `Mexico/BajaNorte` - Mexico/BajaNorte + * `Mexico/BajaSur` - Mexico/BajaSur + * `Mexico/General` - Mexico/General + * `NZ` - NZ + * `NZ-CHAT` - NZ-CHAT + * `Navajo` - Navajo + * `PRC` - PRC + * `PST8PDT` - PST8PDT + * `Pacific/Apia` - Pacific/Apia + * `Pacific/Auckland` - Pacific/Auckland + * `Pacific/Bougainville` - Pacific/Bougainville + * `Pacific/Chatham` - Pacific/Chatham + * `Pacific/Chuuk` - Pacific/Chuuk + * `Pacific/Easter` - Pacific/Easter + * `Pacific/Efate` - Pacific/Efate + * `Pacific/Enderbury` - Pacific/Enderbury + * `Pacific/Fakaofo` - Pacific/Fakaofo + * `Pacific/Fiji` - Pacific/Fiji + * `Pacific/Funafuti` - Pacific/Funafuti + * `Pacific/Galapagos` - Pacific/Galapagos + * `Pacific/Gambier` - Pacific/Gambier + * `Pacific/Guadalcanal` - Pacific/Guadalcanal + * `Pacific/Guam` - Pacific/Guam + * `Pacific/Honolulu` - Pacific/Honolulu + * `Pacific/Johnston` - Pacific/Johnston + * `Pacific/Kanton` - Pacific/Kanton + * `Pacific/Kiritimati` - Pacific/Kiritimati + * `Pacific/Kosrae` - Pacific/Kosrae + * `Pacific/Kwajalein` - Pacific/Kwajalein + * `Pacific/Majuro` - Pacific/Majuro + * `Pacific/Marquesas` - Pacific/Marquesas + * `Pacific/Midway` - Pacific/Midway + * `Pacific/Nauru` - Pacific/Nauru + * `Pacific/Niue` - Pacific/Niue + * `Pacific/Norfolk` - Pacific/Norfolk + * `Pacific/Noumea` - Pacific/Noumea + * `Pacific/Pago_Pago` - Pacific/Pago_Pago + * `Pacific/Palau` - Pacific/Palau + * `Pacific/Pitcairn` - Pacific/Pitcairn + * `Pacific/Pohnpei` - Pacific/Pohnpei + * `Pacific/Ponape` - Pacific/Ponape + * `Pacific/Port_Moresby` - Pacific/Port_Moresby + * `Pacific/Rarotonga` - Pacific/Rarotonga + * `Pacific/Saipan` - Pacific/Saipan + * `Pacific/Samoa` - Pacific/Samoa + * `Pacific/Tahiti` - Pacific/Tahiti + * `Pacific/Tarawa` - Pacific/Tarawa + * `Pacific/Tongatapu` - Pacific/Tongatapu + * `Pacific/Truk` - Pacific/Truk + * `Pacific/Wake` - Pacific/Wake + * `Pacific/Wallis` - Pacific/Wallis + * `Pacific/Yap` - Pacific/Yap + * `Poland` - Poland + * `Portugal` - Portugal + * `ROC` - ROC + * `ROK` - ROK + * `Singapore` - Singapore + * `Turkey` - Turkey + * `UCT` - UCT + * `US/Alaska` - US/Alaska + * `US/Aleutian` - US/Aleutian + * `US/Arizona` - US/Arizona + * `US/Central` - US/Central + * `US/East-Indiana` - US/East-Indiana + * `US/Eastern` - US/Eastern + * `US/Hawaii` - US/Hawaii + * `US/Indiana-Starke` - US/Indiana-Starke + * `US/Michigan` - US/Michigan + * `US/Mountain` - US/Mountain + * `US/Pacific` - US/Pacific + * `US/Samoa` - US/Samoa + * `UTC` - UTC + * `Universal` - Universal + * `W-SU` - W-SU + * `WET` - WET + * `Zulu` - Zulu + x-spec-enum-id: cd9b66101aa181d2 + version: + type: integer + maximum: 2147483647 + minimum: -2147483648 + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + owned_by: + type: string + format: uuid + readOnly: true + required: + - backlog_issues + - cancelled_issues + - completed_estimates + - completed_issues + - created_at + - created_by + - deleted_at + - id + - name + - owned_by + - project + - started_estimates + - started_issues + - total_estimates + - total_issues + - unstarted_issues + - updated_at + - updated_by + - workspace + CycleIssue: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + sub_issues_count: + type: integer + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + created_by: + type: string + format: uuid + nullable: true + updated_by: + type: string + format: uuid + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + issue: + type: string + format: uuid + cycle: + type: string + format: uuid + readOnly: true + required: + - created_at + - cycle + - deleted_at + - id + - issue + - project + - sub_issues_count + - updated_at + - workspace + CycleLite: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + name: + type: string + title: Cycle Name + maxLength: 255 + description: + type: string + title: Cycle Description + start_date: + type: string + format: date-time + nullable: true + end_date: + type: string + format: date-time + nullable: true + view_props: {} + sort_order: + type: number + format: double + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + progress_snapshot: {} + archived_at: + type: string + format: date-time + nullable: true + logo_props: {} + timezone: + enum: + - Africa/Abidjan + - Africa/Accra + - Africa/Addis_Ababa + - Africa/Algiers + - Africa/Asmara + - Africa/Asmera + - Africa/Bamako + - Africa/Bangui + - Africa/Banjul + - Africa/Bissau + - Africa/Blantyre + - Africa/Brazzaville + - Africa/Bujumbura + - Africa/Cairo + - Africa/Casablanca + - Africa/Ceuta + - Africa/Conakry + - Africa/Dakar + - Africa/Dar_es_Salaam + - Africa/Djibouti + - Africa/Douala + - Africa/El_Aaiun + - Africa/Freetown + - Africa/Gaborone + - Africa/Harare + - Africa/Johannesburg + - Africa/Juba + - Africa/Kampala + - Africa/Khartoum + - Africa/Kigali + - Africa/Kinshasa + - Africa/Lagos + - Africa/Libreville + - Africa/Lome + - Africa/Luanda + - Africa/Lubumbashi + - Africa/Lusaka + - Africa/Malabo + - Africa/Maputo + - Africa/Maseru + - Africa/Mbabane + - Africa/Mogadishu + - Africa/Monrovia + - Africa/Nairobi + - Africa/Ndjamena + - Africa/Niamey + - Africa/Nouakchott + - Africa/Ouagadougou + - Africa/Porto-Novo + - Africa/Sao_Tome + - Africa/Timbuktu + - Africa/Tripoli + - Africa/Tunis + - Africa/Windhoek + - America/Adak + - America/Anchorage + - America/Anguilla + - America/Antigua + - America/Araguaina + - America/Argentina/Buenos_Aires + - America/Argentina/Catamarca + - America/Argentina/ComodRivadavia + - America/Argentina/Cordoba + - America/Argentina/Jujuy + - America/Argentina/La_Rioja + - America/Argentina/Mendoza + - America/Argentina/Rio_Gallegos + - America/Argentina/Salta + - America/Argentina/San_Juan + - America/Argentina/San_Luis + - America/Argentina/Tucuman + - America/Argentina/Ushuaia + - America/Aruba + - America/Asuncion + - America/Atikokan + - America/Atka + - America/Bahia + - America/Bahia_Banderas + - America/Barbados + - America/Belem + - America/Belize + - America/Blanc-Sablon + - America/Boa_Vista + - America/Bogota + - America/Boise + - America/Buenos_Aires + - America/Cambridge_Bay + - America/Campo_Grande + - America/Cancun + - America/Caracas + - America/Catamarca + - America/Cayenne + - America/Cayman + - America/Chicago + - America/Chihuahua + - America/Ciudad_Juarez + - America/Coral_Harbour + - America/Cordoba + - America/Costa_Rica + - America/Creston + - America/Cuiaba + - America/Curacao + - America/Danmarkshavn + - America/Dawson + - America/Dawson_Creek + - America/Denver + - America/Detroit + - America/Dominica + - America/Edmonton + - America/Eirunepe + - America/El_Salvador + - America/Ensenada + - America/Fort_Nelson + - America/Fort_Wayne + - America/Fortaleza + - America/Glace_Bay + - America/Godthab + - America/Goose_Bay + - America/Grand_Turk + - America/Grenada + - America/Guadeloupe + - America/Guatemala + - America/Guayaquil + - America/Guyana + - America/Halifax + - America/Havana + - America/Hermosillo + - America/Indiana/Indianapolis + - America/Indiana/Knox + - America/Indiana/Marengo + - America/Indiana/Petersburg + - America/Indiana/Tell_City + - America/Indiana/Vevay + - America/Indiana/Vincennes + - America/Indiana/Winamac + - America/Indianapolis + - America/Inuvik + - America/Iqaluit + - America/Jamaica + - America/Jujuy + - America/Juneau + - America/Kentucky/Louisville + - America/Kentucky/Monticello + - America/Knox_IN + - America/Kralendijk + - America/La_Paz + - America/Lima + - America/Los_Angeles + - America/Louisville + - America/Lower_Princes + - America/Maceio + - America/Managua + - America/Manaus + - America/Marigot + - America/Martinique + - America/Matamoros + - America/Mazatlan + - America/Mendoza + - America/Menominee + - America/Merida + - America/Metlakatla + - America/Mexico_City + - America/Miquelon + - America/Moncton + - America/Monterrey + - America/Montevideo + - America/Montreal + - America/Montserrat + - America/Nassau + - America/New_York + - America/Nipigon + - America/Nome + - America/Noronha + - America/North_Dakota/Beulah + - America/North_Dakota/Center + - America/North_Dakota/New_Salem + - America/Nuuk + - America/Ojinaga + - America/Panama + - America/Pangnirtung + - America/Paramaribo + - America/Phoenix + - America/Port-au-Prince + - America/Port_of_Spain + - America/Porto_Acre + - America/Porto_Velho + - America/Puerto_Rico + - America/Punta_Arenas + - America/Rainy_River + - America/Rankin_Inlet + - America/Recife + - America/Regina + - America/Resolute + - America/Rio_Branco + - America/Rosario + - America/Santa_Isabel + - America/Santarem + - America/Santiago + - America/Santo_Domingo + - America/Sao_Paulo + - America/Scoresbysund + - America/Shiprock + - America/Sitka + - America/St_Barthelemy + - America/St_Johns + - America/St_Kitts + - America/St_Lucia + - America/St_Thomas + - America/St_Vincent + - America/Swift_Current + - America/Tegucigalpa + - America/Thule + - America/Thunder_Bay + - America/Tijuana + - America/Toronto + - America/Tortola + - America/Vancouver + - America/Virgin + - America/Whitehorse + - America/Winnipeg + - America/Yakutat + - America/Yellowknife + - Antarctica/Casey + - Antarctica/Davis + - Antarctica/DumontDUrville + - Antarctica/Macquarie + - Antarctica/Mawson + - Antarctica/McMurdo + - Antarctica/Palmer + - Antarctica/Rothera + - Antarctica/South_Pole + - Antarctica/Syowa + - Antarctica/Troll + - Antarctica/Vostok + - Arctic/Longyearbyen + - Asia/Aden + - Asia/Almaty + - Asia/Amman + - Asia/Anadyr + - Asia/Aqtau + - Asia/Aqtobe + - Asia/Ashgabat + - Asia/Ashkhabad + - Asia/Atyrau + - Asia/Baghdad + - Asia/Bahrain + - Asia/Baku + - Asia/Bangkok + - Asia/Barnaul + - Asia/Beirut + - Asia/Bishkek + - Asia/Brunei + - Asia/Calcutta + - Asia/Chita + - Asia/Choibalsan + - Asia/Chongqing + - Asia/Chungking + - Asia/Colombo + - Asia/Dacca + - Asia/Damascus + - Asia/Dhaka + - Asia/Dili + - Asia/Dubai + - Asia/Dushanbe + - Asia/Famagusta + - Asia/Gaza + - Asia/Harbin + - Asia/Hebron + - Asia/Ho_Chi_Minh + - Asia/Hong_Kong + - Asia/Hovd + - Asia/Irkutsk + - Asia/Istanbul + - Asia/Jakarta + - Asia/Jayapura + - Asia/Jerusalem + - Asia/Kabul + - Asia/Kamchatka + - Asia/Karachi + - Asia/Kashgar + - Asia/Kathmandu + - Asia/Katmandu + - Asia/Khandyga + - Asia/Kolkata + - Asia/Krasnoyarsk + - Asia/Kuala_Lumpur + - Asia/Kuching + - Asia/Kuwait + - Asia/Macao + - Asia/Macau + - Asia/Magadan + - Asia/Makassar + - Asia/Manila + - Asia/Muscat + - Asia/Nicosia + - Asia/Novokuznetsk + - Asia/Novosibirsk + - Asia/Omsk + - Asia/Oral + - Asia/Phnom_Penh + - Asia/Pontianak + - Asia/Pyongyang + - Asia/Qatar + - Asia/Qostanay + - Asia/Qyzylorda + - Asia/Rangoon + - Asia/Riyadh + - Asia/Saigon + - Asia/Sakhalin + - Asia/Samarkand + - Asia/Seoul + - Asia/Shanghai + - Asia/Singapore + - Asia/Srednekolymsk + - Asia/Taipei + - Asia/Tashkent + - Asia/Tbilisi + - Asia/Tehran + - Asia/Tel_Aviv + - Asia/Thimbu + - Asia/Thimphu + - Asia/Tokyo + - Asia/Tomsk + - Asia/Ujung_Pandang + - Asia/Ulaanbaatar + - Asia/Ulan_Bator + - Asia/Urumqi + - Asia/Ust-Nera + - Asia/Vientiane + - Asia/Vladivostok + - Asia/Yakutsk + - Asia/Yangon + - Asia/Yekaterinburg + - Asia/Yerevan + - Atlantic/Azores + - Atlantic/Bermuda + - Atlantic/Canary + - Atlantic/Cape_Verde + - Atlantic/Faeroe + - Atlantic/Faroe + - Atlantic/Jan_Mayen + - Atlantic/Madeira + - Atlantic/Reykjavik + - Atlantic/South_Georgia + - Atlantic/St_Helena + - Atlantic/Stanley + - Australia/ACT + - Australia/Adelaide + - Australia/Brisbane + - Australia/Broken_Hill + - Australia/Canberra + - Australia/Currie + - Australia/Darwin + - Australia/Eucla + - Australia/Hobart + - Australia/LHI + - Australia/Lindeman + - Australia/Lord_Howe + - Australia/Melbourne + - Australia/NSW + - Australia/North + - Australia/Perth + - Australia/Queensland + - Australia/South + - Australia/Sydney + - Australia/Tasmania + - Australia/Victoria + - Australia/West + - Australia/Yancowinna + - Brazil/Acre + - Brazil/DeNoronha + - Brazil/East + - Brazil/West + - CET + - CST6CDT + - Canada/Atlantic + - Canada/Central + - Canada/Eastern + - Canada/Mountain + - Canada/Newfoundland + - Canada/Pacific + - Canada/Saskatchewan + - Canada/Yukon + - Chile/Continental + - Chile/EasterIsland + - Cuba + - EET + - EST + - EST5EDT + - Egypt + - Eire + - Etc/GMT + - Etc/GMT+0 + - Etc/GMT+1 + - Etc/GMT+10 + - Etc/GMT+11 + - Etc/GMT+12 + - Etc/GMT+2 + - Etc/GMT+3 + - Etc/GMT+4 + - Etc/GMT+5 + - Etc/GMT+6 + - Etc/GMT+7 + - Etc/GMT+8 + - Etc/GMT+9 + - Etc/GMT-0 + - Etc/GMT-1 + - Etc/GMT-10 + - Etc/GMT-11 + - Etc/GMT-12 + - Etc/GMT-13 + - Etc/GMT-14 + - Etc/GMT-2 + - Etc/GMT-3 + - Etc/GMT-4 + - Etc/GMT-5 + - Etc/GMT-6 + - Etc/GMT-7 + - Etc/GMT-8 + - Etc/GMT-9 + - Etc/GMT0 + - Etc/Greenwich + - Etc/UCT + - Etc/UTC + - Etc/Universal + - Etc/Zulu + - Europe/Amsterdam + - Europe/Andorra + - Europe/Astrakhan + - Europe/Athens + - Europe/Belfast + - Europe/Belgrade + - Europe/Berlin + - Europe/Bratislava + - Europe/Brussels + - Europe/Bucharest + - Europe/Budapest + - Europe/Busingen + - Europe/Chisinau + - Europe/Copenhagen + - Europe/Dublin + - Europe/Gibraltar + - Europe/Guernsey + - Europe/Helsinki + - Europe/Isle_of_Man + - Europe/Istanbul + - Europe/Jersey + - Europe/Kaliningrad + - Europe/Kiev + - Europe/Kirov + - Europe/Kyiv + - Europe/Lisbon + - Europe/Ljubljana + - Europe/London + - Europe/Luxembourg + - Europe/Madrid + - Europe/Malta + - Europe/Mariehamn + - Europe/Minsk + - Europe/Monaco + - Europe/Moscow + - Europe/Nicosia + - Europe/Oslo + - Europe/Paris + - Europe/Podgorica + - Europe/Prague + - Europe/Riga + - Europe/Rome + - Europe/Samara + - Europe/San_Marino + - Europe/Sarajevo + - Europe/Saratov + - Europe/Simferopol + - Europe/Skopje + - Europe/Sofia + - Europe/Stockholm + - Europe/Tallinn + - Europe/Tirane + - Europe/Tiraspol + - Europe/Ulyanovsk + - Europe/Uzhgorod + - Europe/Vaduz + - Europe/Vatican + - Europe/Vienna + - Europe/Vilnius + - Europe/Volgograd + - Europe/Warsaw + - Europe/Zagreb + - Europe/Zaporozhye + - Europe/Zurich + - GB + - GB-Eire + - GMT + - GMT+0 + - GMT-0 + - GMT0 + - Greenwich + - HST + - Hongkong + - Iceland + - Indian/Antananarivo + - Indian/Chagos + - Indian/Christmas + - Indian/Cocos + - Indian/Comoro + - Indian/Kerguelen + - Indian/Mahe + - Indian/Maldives + - Indian/Mauritius + - Indian/Mayotte + - Indian/Reunion + - Iran + - Israel + - Jamaica + - Japan + - Kwajalein + - Libya + - MET + - MST + - MST7MDT + - Mexico/BajaNorte + - Mexico/BajaSur + - Mexico/General + - NZ + - NZ-CHAT + - Navajo + - PRC + - PST8PDT + - Pacific/Apia + - Pacific/Auckland + - Pacific/Bougainville + - Pacific/Chatham + - Pacific/Chuuk + - Pacific/Easter + - Pacific/Efate + - Pacific/Enderbury + - Pacific/Fakaofo + - Pacific/Fiji + - Pacific/Funafuti + - Pacific/Galapagos + - Pacific/Gambier + - Pacific/Guadalcanal + - Pacific/Guam + - Pacific/Honolulu + - Pacific/Johnston + - Pacific/Kanton + - Pacific/Kiritimati + - Pacific/Kosrae + - Pacific/Kwajalein + - Pacific/Majuro + - Pacific/Marquesas + - Pacific/Midway + - Pacific/Nauru + - Pacific/Niue + - Pacific/Norfolk + - Pacific/Noumea + - Pacific/Pago_Pago + - Pacific/Palau + - Pacific/Pitcairn + - Pacific/Pohnpei + - Pacific/Ponape + - Pacific/Port_Moresby + - Pacific/Rarotonga + - Pacific/Saipan + - Pacific/Samoa + - Pacific/Tahiti + - Pacific/Tarawa + - Pacific/Tongatapu + - Pacific/Truk + - Pacific/Wake + - Pacific/Wallis + - Pacific/Yap + - Poland + - Portugal + - ROC + - ROK + - Singapore + - Turkey + - UCT + - US/Alaska + - US/Aleutian + - US/Arizona + - US/Central + - US/East-Indiana + - US/Eastern + - US/Hawaii + - US/Indiana-Starke + - US/Michigan + - US/Mountain + - US/Pacific + - US/Samoa + - UTC + - Universal + - W-SU + - WET + - Zulu + type: string + description: |- + * `Africa/Abidjan` - Africa/Abidjan + * `Africa/Accra` - Africa/Accra + * `Africa/Addis_Ababa` - Africa/Addis_Ababa + * `Africa/Algiers` - Africa/Algiers + * `Africa/Asmara` - Africa/Asmara + * `Africa/Asmera` - Africa/Asmera + * `Africa/Bamako` - Africa/Bamako + * `Africa/Bangui` - Africa/Bangui + * `Africa/Banjul` - Africa/Banjul + * `Africa/Bissau` - Africa/Bissau + * `Africa/Blantyre` - Africa/Blantyre + * `Africa/Brazzaville` - Africa/Brazzaville + * `Africa/Bujumbura` - Africa/Bujumbura + * `Africa/Cairo` - Africa/Cairo + * `Africa/Casablanca` - Africa/Casablanca + * `Africa/Ceuta` - Africa/Ceuta + * `Africa/Conakry` - Africa/Conakry + * `Africa/Dakar` - Africa/Dakar + * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam + * `Africa/Djibouti` - Africa/Djibouti + * `Africa/Douala` - Africa/Douala + * `Africa/El_Aaiun` - Africa/El_Aaiun + * `Africa/Freetown` - Africa/Freetown + * `Africa/Gaborone` - Africa/Gaborone + * `Africa/Harare` - Africa/Harare + * `Africa/Johannesburg` - Africa/Johannesburg + * `Africa/Juba` - Africa/Juba + * `Africa/Kampala` - Africa/Kampala + * `Africa/Khartoum` - Africa/Khartoum + * `Africa/Kigali` - Africa/Kigali + * `Africa/Kinshasa` - Africa/Kinshasa + * `Africa/Lagos` - Africa/Lagos + * `Africa/Libreville` - Africa/Libreville + * `Africa/Lome` - Africa/Lome + * `Africa/Luanda` - Africa/Luanda + * `Africa/Lubumbashi` - Africa/Lubumbashi + * `Africa/Lusaka` - Africa/Lusaka + * `Africa/Malabo` - Africa/Malabo + * `Africa/Maputo` - Africa/Maputo + * `Africa/Maseru` - Africa/Maseru + * `Africa/Mbabane` - Africa/Mbabane + * `Africa/Mogadishu` - Africa/Mogadishu + * `Africa/Monrovia` - Africa/Monrovia + * `Africa/Nairobi` - Africa/Nairobi + * `Africa/Ndjamena` - Africa/Ndjamena + * `Africa/Niamey` - Africa/Niamey + * `Africa/Nouakchott` - Africa/Nouakchott + * `Africa/Ouagadougou` - Africa/Ouagadougou + * `Africa/Porto-Novo` - Africa/Porto-Novo + * `Africa/Sao_Tome` - Africa/Sao_Tome + * `Africa/Timbuktu` - Africa/Timbuktu + * `Africa/Tripoli` - Africa/Tripoli + * `Africa/Tunis` - Africa/Tunis + * `Africa/Windhoek` - Africa/Windhoek + * `America/Adak` - America/Adak + * `America/Anchorage` - America/Anchorage + * `America/Anguilla` - America/Anguilla + * `America/Antigua` - America/Antigua + * `America/Araguaina` - America/Araguaina + * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires + * `America/Argentina/Catamarca` - America/Argentina/Catamarca + * `America/Argentina/ComodRivadavia` - America/Argentina/ComodRivadavia + * `America/Argentina/Cordoba` - America/Argentina/Cordoba + * `America/Argentina/Jujuy` - America/Argentina/Jujuy + * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja + * `America/Argentina/Mendoza` - America/Argentina/Mendoza + * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos + * `America/Argentina/Salta` - America/Argentina/Salta + * `America/Argentina/San_Juan` - America/Argentina/San_Juan + * `America/Argentina/San_Luis` - America/Argentina/San_Luis + * `America/Argentina/Tucuman` - America/Argentina/Tucuman + * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia + * `America/Aruba` - America/Aruba + * `America/Asuncion` - America/Asuncion + * `America/Atikokan` - America/Atikokan + * `America/Atka` - America/Atka + * `America/Bahia` - America/Bahia + * `America/Bahia_Banderas` - America/Bahia_Banderas + * `America/Barbados` - America/Barbados + * `America/Belem` - America/Belem + * `America/Belize` - America/Belize + * `America/Blanc-Sablon` - America/Blanc-Sablon + * `America/Boa_Vista` - America/Boa_Vista + * `America/Bogota` - America/Bogota + * `America/Boise` - America/Boise + * `America/Buenos_Aires` - America/Buenos_Aires + * `America/Cambridge_Bay` - America/Cambridge_Bay + * `America/Campo_Grande` - America/Campo_Grande + * `America/Cancun` - America/Cancun + * `America/Caracas` - America/Caracas + * `America/Catamarca` - America/Catamarca + * `America/Cayenne` - America/Cayenne + * `America/Cayman` - America/Cayman + * `America/Chicago` - America/Chicago + * `America/Chihuahua` - America/Chihuahua + * `America/Ciudad_Juarez` - America/Ciudad_Juarez + * `America/Coral_Harbour` - America/Coral_Harbour + * `America/Cordoba` - America/Cordoba + * `America/Costa_Rica` - America/Costa_Rica + * `America/Creston` - America/Creston + * `America/Cuiaba` - America/Cuiaba + * `America/Curacao` - America/Curacao + * `America/Danmarkshavn` - America/Danmarkshavn + * `America/Dawson` - America/Dawson + * `America/Dawson_Creek` - America/Dawson_Creek + * `America/Denver` - America/Denver + * `America/Detroit` - America/Detroit + * `America/Dominica` - America/Dominica + * `America/Edmonton` - America/Edmonton + * `America/Eirunepe` - America/Eirunepe + * `America/El_Salvador` - America/El_Salvador + * `America/Ensenada` - America/Ensenada + * `America/Fort_Nelson` - America/Fort_Nelson + * `America/Fort_Wayne` - America/Fort_Wayne + * `America/Fortaleza` - America/Fortaleza + * `America/Glace_Bay` - America/Glace_Bay + * `America/Godthab` - America/Godthab + * `America/Goose_Bay` - America/Goose_Bay + * `America/Grand_Turk` - America/Grand_Turk + * `America/Grenada` - America/Grenada + * `America/Guadeloupe` - America/Guadeloupe + * `America/Guatemala` - America/Guatemala + * `America/Guayaquil` - America/Guayaquil + * `America/Guyana` - America/Guyana + * `America/Halifax` - America/Halifax + * `America/Havana` - America/Havana + * `America/Hermosillo` - America/Hermosillo + * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis + * `America/Indiana/Knox` - America/Indiana/Knox + * `America/Indiana/Marengo` - America/Indiana/Marengo + * `America/Indiana/Petersburg` - America/Indiana/Petersburg + * `America/Indiana/Tell_City` - America/Indiana/Tell_City + * `America/Indiana/Vevay` - America/Indiana/Vevay + * `America/Indiana/Vincennes` - America/Indiana/Vincennes + * `America/Indiana/Winamac` - America/Indiana/Winamac + * `America/Indianapolis` - America/Indianapolis + * `America/Inuvik` - America/Inuvik + * `America/Iqaluit` - America/Iqaluit + * `America/Jamaica` - America/Jamaica + * `America/Jujuy` - America/Jujuy + * `America/Juneau` - America/Juneau + * `America/Kentucky/Louisville` - America/Kentucky/Louisville + * `America/Kentucky/Monticello` - America/Kentucky/Monticello + * `America/Knox_IN` - America/Knox_IN + * `America/Kralendijk` - America/Kralendijk + * `America/La_Paz` - America/La_Paz + * `America/Lima` - America/Lima + * `America/Los_Angeles` - America/Los_Angeles + * `America/Louisville` - America/Louisville + * `America/Lower_Princes` - America/Lower_Princes + * `America/Maceio` - America/Maceio + * `America/Managua` - America/Managua + * `America/Manaus` - America/Manaus + * `America/Marigot` - America/Marigot + * `America/Martinique` - America/Martinique + * `America/Matamoros` - America/Matamoros + * `America/Mazatlan` - America/Mazatlan + * `America/Mendoza` - America/Mendoza + * `America/Menominee` - America/Menominee + * `America/Merida` - America/Merida + * `America/Metlakatla` - America/Metlakatla + * `America/Mexico_City` - America/Mexico_City + * `America/Miquelon` - America/Miquelon + * `America/Moncton` - America/Moncton + * `America/Monterrey` - America/Monterrey + * `America/Montevideo` - America/Montevideo + * `America/Montreal` - America/Montreal + * `America/Montserrat` - America/Montserrat + * `America/Nassau` - America/Nassau + * `America/New_York` - America/New_York + * `America/Nipigon` - America/Nipigon + * `America/Nome` - America/Nome + * `America/Noronha` - America/Noronha + * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah + * `America/North_Dakota/Center` - America/North_Dakota/Center + * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem + * `America/Nuuk` - America/Nuuk + * `America/Ojinaga` - America/Ojinaga + * `America/Panama` - America/Panama + * `America/Pangnirtung` - America/Pangnirtung + * `America/Paramaribo` - America/Paramaribo + * `America/Phoenix` - America/Phoenix + * `America/Port-au-Prince` - America/Port-au-Prince + * `America/Port_of_Spain` - America/Port_of_Spain + * `America/Porto_Acre` - America/Porto_Acre + * `America/Porto_Velho` - America/Porto_Velho + * `America/Puerto_Rico` - America/Puerto_Rico + * `America/Punta_Arenas` - America/Punta_Arenas + * `America/Rainy_River` - America/Rainy_River + * `America/Rankin_Inlet` - America/Rankin_Inlet + * `America/Recife` - America/Recife + * `America/Regina` - America/Regina + * `America/Resolute` - America/Resolute + * `America/Rio_Branco` - America/Rio_Branco + * `America/Rosario` - America/Rosario + * `America/Santa_Isabel` - America/Santa_Isabel + * `America/Santarem` - America/Santarem + * `America/Santiago` - America/Santiago + * `America/Santo_Domingo` - America/Santo_Domingo + * `America/Sao_Paulo` - America/Sao_Paulo + * `America/Scoresbysund` - America/Scoresbysund + * `America/Shiprock` - America/Shiprock + * `America/Sitka` - America/Sitka + * `America/St_Barthelemy` - America/St_Barthelemy + * `America/St_Johns` - America/St_Johns + * `America/St_Kitts` - America/St_Kitts + * `America/St_Lucia` - America/St_Lucia + * `America/St_Thomas` - America/St_Thomas + * `America/St_Vincent` - America/St_Vincent + * `America/Swift_Current` - America/Swift_Current + * `America/Tegucigalpa` - America/Tegucigalpa + * `America/Thule` - America/Thule + * `America/Thunder_Bay` - America/Thunder_Bay + * `America/Tijuana` - America/Tijuana + * `America/Toronto` - America/Toronto + * `America/Tortola` - America/Tortola + * `America/Vancouver` - America/Vancouver + * `America/Virgin` - America/Virgin + * `America/Whitehorse` - America/Whitehorse + * `America/Winnipeg` - America/Winnipeg + * `America/Yakutat` - America/Yakutat + * `America/Yellowknife` - America/Yellowknife + * `Antarctica/Casey` - Antarctica/Casey + * `Antarctica/Davis` - Antarctica/Davis + * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville + * `Antarctica/Macquarie` - Antarctica/Macquarie + * `Antarctica/Mawson` - Antarctica/Mawson + * `Antarctica/McMurdo` - Antarctica/McMurdo + * `Antarctica/Palmer` - Antarctica/Palmer + * `Antarctica/Rothera` - Antarctica/Rothera + * `Antarctica/South_Pole` - Antarctica/South_Pole + * `Antarctica/Syowa` - Antarctica/Syowa + * `Antarctica/Troll` - Antarctica/Troll + * `Antarctica/Vostok` - Antarctica/Vostok + * `Arctic/Longyearbyen` - Arctic/Longyearbyen + * `Asia/Aden` - Asia/Aden + * `Asia/Almaty` - Asia/Almaty + * `Asia/Amman` - Asia/Amman + * `Asia/Anadyr` - Asia/Anadyr + * `Asia/Aqtau` - Asia/Aqtau + * `Asia/Aqtobe` - Asia/Aqtobe + * `Asia/Ashgabat` - Asia/Ashgabat + * `Asia/Ashkhabad` - Asia/Ashkhabad + * `Asia/Atyrau` - Asia/Atyrau + * `Asia/Baghdad` - Asia/Baghdad + * `Asia/Bahrain` - Asia/Bahrain + * `Asia/Baku` - Asia/Baku + * `Asia/Bangkok` - Asia/Bangkok + * `Asia/Barnaul` - Asia/Barnaul + * `Asia/Beirut` - Asia/Beirut + * `Asia/Bishkek` - Asia/Bishkek + * `Asia/Brunei` - Asia/Brunei + * `Asia/Calcutta` - Asia/Calcutta + * `Asia/Chita` - Asia/Chita + * `Asia/Choibalsan` - Asia/Choibalsan + * `Asia/Chongqing` - Asia/Chongqing + * `Asia/Chungking` - Asia/Chungking + * `Asia/Colombo` - Asia/Colombo + * `Asia/Dacca` - Asia/Dacca + * `Asia/Damascus` - Asia/Damascus + * `Asia/Dhaka` - Asia/Dhaka + * `Asia/Dili` - Asia/Dili + * `Asia/Dubai` - Asia/Dubai + * `Asia/Dushanbe` - Asia/Dushanbe + * `Asia/Famagusta` - Asia/Famagusta + * `Asia/Gaza` - Asia/Gaza + * `Asia/Harbin` - Asia/Harbin + * `Asia/Hebron` - Asia/Hebron + * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh + * `Asia/Hong_Kong` - Asia/Hong_Kong + * `Asia/Hovd` - Asia/Hovd + * `Asia/Irkutsk` - Asia/Irkutsk + * `Asia/Istanbul` - Asia/Istanbul + * `Asia/Jakarta` - Asia/Jakarta + * `Asia/Jayapura` - Asia/Jayapura + * `Asia/Jerusalem` - Asia/Jerusalem + * `Asia/Kabul` - Asia/Kabul + * `Asia/Kamchatka` - Asia/Kamchatka + * `Asia/Karachi` - Asia/Karachi + * `Asia/Kashgar` - Asia/Kashgar + * `Asia/Kathmandu` - Asia/Kathmandu + * `Asia/Katmandu` - Asia/Katmandu + * `Asia/Khandyga` - Asia/Khandyga + * `Asia/Kolkata` - Asia/Kolkata + * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk + * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur + * `Asia/Kuching` - Asia/Kuching + * `Asia/Kuwait` - Asia/Kuwait + * `Asia/Macao` - Asia/Macao + * `Asia/Macau` - Asia/Macau + * `Asia/Magadan` - Asia/Magadan + * `Asia/Makassar` - Asia/Makassar + * `Asia/Manila` - Asia/Manila + * `Asia/Muscat` - Asia/Muscat + * `Asia/Nicosia` - Asia/Nicosia + * `Asia/Novokuznetsk` - Asia/Novokuznetsk + * `Asia/Novosibirsk` - Asia/Novosibirsk + * `Asia/Omsk` - Asia/Omsk + * `Asia/Oral` - Asia/Oral + * `Asia/Phnom_Penh` - Asia/Phnom_Penh + * `Asia/Pontianak` - Asia/Pontianak + * `Asia/Pyongyang` - Asia/Pyongyang + * `Asia/Qatar` - Asia/Qatar + * `Asia/Qostanay` - Asia/Qostanay + * `Asia/Qyzylorda` - Asia/Qyzylorda + * `Asia/Rangoon` - Asia/Rangoon + * `Asia/Riyadh` - Asia/Riyadh + * `Asia/Saigon` - Asia/Saigon + * `Asia/Sakhalin` - Asia/Sakhalin + * `Asia/Samarkand` - Asia/Samarkand + * `Asia/Seoul` - Asia/Seoul + * `Asia/Shanghai` - Asia/Shanghai + * `Asia/Singapore` - Asia/Singapore + * `Asia/Srednekolymsk` - Asia/Srednekolymsk + * `Asia/Taipei` - Asia/Taipei + * `Asia/Tashkent` - Asia/Tashkent + * `Asia/Tbilisi` - Asia/Tbilisi + * `Asia/Tehran` - Asia/Tehran + * `Asia/Tel_Aviv` - Asia/Tel_Aviv + * `Asia/Thimbu` - Asia/Thimbu + * `Asia/Thimphu` - Asia/Thimphu + * `Asia/Tokyo` - Asia/Tokyo + * `Asia/Tomsk` - Asia/Tomsk + * `Asia/Ujung_Pandang` - Asia/Ujung_Pandang + * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar + * `Asia/Ulan_Bator` - Asia/Ulan_Bator + * `Asia/Urumqi` - Asia/Urumqi + * `Asia/Ust-Nera` - Asia/Ust-Nera + * `Asia/Vientiane` - Asia/Vientiane + * `Asia/Vladivostok` - Asia/Vladivostok + * `Asia/Yakutsk` - Asia/Yakutsk + * `Asia/Yangon` - Asia/Yangon + * `Asia/Yekaterinburg` - Asia/Yekaterinburg + * `Asia/Yerevan` - Asia/Yerevan + * `Atlantic/Azores` - Atlantic/Azores + * `Atlantic/Bermuda` - Atlantic/Bermuda + * `Atlantic/Canary` - Atlantic/Canary + * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde + * `Atlantic/Faeroe` - Atlantic/Faeroe + * `Atlantic/Faroe` - Atlantic/Faroe + * `Atlantic/Jan_Mayen` - Atlantic/Jan_Mayen + * `Atlantic/Madeira` - Atlantic/Madeira + * `Atlantic/Reykjavik` - Atlantic/Reykjavik + * `Atlantic/South_Georgia` - Atlantic/South_Georgia + * `Atlantic/St_Helena` - Atlantic/St_Helena + * `Atlantic/Stanley` - Atlantic/Stanley + * `Australia/ACT` - Australia/ACT + * `Australia/Adelaide` - Australia/Adelaide + * `Australia/Brisbane` - Australia/Brisbane + * `Australia/Broken_Hill` - Australia/Broken_Hill + * `Australia/Canberra` - Australia/Canberra + * `Australia/Currie` - Australia/Currie + * `Australia/Darwin` - Australia/Darwin + * `Australia/Eucla` - Australia/Eucla + * `Australia/Hobart` - Australia/Hobart + * `Australia/LHI` - Australia/LHI + * `Australia/Lindeman` - Australia/Lindeman + * `Australia/Lord_Howe` - Australia/Lord_Howe + * `Australia/Melbourne` - Australia/Melbourne + * `Australia/NSW` - Australia/NSW + * `Australia/North` - Australia/North + * `Australia/Perth` - Australia/Perth + * `Australia/Queensland` - Australia/Queensland + * `Australia/South` - Australia/South + * `Australia/Sydney` - Australia/Sydney + * `Australia/Tasmania` - Australia/Tasmania + * `Australia/Victoria` - Australia/Victoria + * `Australia/West` - Australia/West + * `Australia/Yancowinna` - Australia/Yancowinna + * `Brazil/Acre` - Brazil/Acre + * `Brazil/DeNoronha` - Brazil/DeNoronha + * `Brazil/East` - Brazil/East + * `Brazil/West` - Brazil/West + * `CET` - CET + * `CST6CDT` - CST6CDT + * `Canada/Atlantic` - Canada/Atlantic + * `Canada/Central` - Canada/Central + * `Canada/Eastern` - Canada/Eastern + * `Canada/Mountain` - Canada/Mountain + * `Canada/Newfoundland` - Canada/Newfoundland + * `Canada/Pacific` - Canada/Pacific + * `Canada/Saskatchewan` - Canada/Saskatchewan + * `Canada/Yukon` - Canada/Yukon + * `Chile/Continental` - Chile/Continental + * `Chile/EasterIsland` - Chile/EasterIsland + * `Cuba` - Cuba + * `EET` - EET + * `EST` - EST + * `EST5EDT` - EST5EDT + * `Egypt` - Egypt + * `Eire` - Eire + * `Etc/GMT` - Etc/GMT + * `Etc/GMT+0` - Etc/GMT+0 + * `Etc/GMT+1` - Etc/GMT+1 + * `Etc/GMT+10` - Etc/GMT+10 + * `Etc/GMT+11` - Etc/GMT+11 + * `Etc/GMT+12` - Etc/GMT+12 + * `Etc/GMT+2` - Etc/GMT+2 + * `Etc/GMT+3` - Etc/GMT+3 + * `Etc/GMT+4` - Etc/GMT+4 + * `Etc/GMT+5` - Etc/GMT+5 + * `Etc/GMT+6` - Etc/GMT+6 + * `Etc/GMT+7` - Etc/GMT+7 + * `Etc/GMT+8` - Etc/GMT+8 + * `Etc/GMT+9` - Etc/GMT+9 + * `Etc/GMT-0` - Etc/GMT-0 + * `Etc/GMT-1` - Etc/GMT-1 + * `Etc/GMT-10` - Etc/GMT-10 + * `Etc/GMT-11` - Etc/GMT-11 + * `Etc/GMT-12` - Etc/GMT-12 + * `Etc/GMT-13` - Etc/GMT-13 + * `Etc/GMT-14` - Etc/GMT-14 + * `Etc/GMT-2` - Etc/GMT-2 + * `Etc/GMT-3` - Etc/GMT-3 + * `Etc/GMT-4` - Etc/GMT-4 + * `Etc/GMT-5` - Etc/GMT-5 + * `Etc/GMT-6` - Etc/GMT-6 + * `Etc/GMT-7` - Etc/GMT-7 + * `Etc/GMT-8` - Etc/GMT-8 + * `Etc/GMT-9` - Etc/GMT-9 + * `Etc/GMT0` - Etc/GMT0 + * `Etc/Greenwich` - Etc/Greenwich + * `Etc/UCT` - Etc/UCT + * `Etc/UTC` - Etc/UTC + * `Etc/Universal` - Etc/Universal + * `Etc/Zulu` - Etc/Zulu + * `Europe/Amsterdam` - Europe/Amsterdam + * `Europe/Andorra` - Europe/Andorra + * `Europe/Astrakhan` - Europe/Astrakhan + * `Europe/Athens` - Europe/Athens + * `Europe/Belfast` - Europe/Belfast + * `Europe/Belgrade` - Europe/Belgrade + * `Europe/Berlin` - Europe/Berlin + * `Europe/Bratislava` - Europe/Bratislava + * `Europe/Brussels` - Europe/Brussels + * `Europe/Bucharest` - Europe/Bucharest + * `Europe/Budapest` - Europe/Budapest + * `Europe/Busingen` - Europe/Busingen + * `Europe/Chisinau` - Europe/Chisinau + * `Europe/Copenhagen` - Europe/Copenhagen + * `Europe/Dublin` - Europe/Dublin + * `Europe/Gibraltar` - Europe/Gibraltar + * `Europe/Guernsey` - Europe/Guernsey + * `Europe/Helsinki` - Europe/Helsinki + * `Europe/Isle_of_Man` - Europe/Isle_of_Man + * `Europe/Istanbul` - Europe/Istanbul + * `Europe/Jersey` - Europe/Jersey + * `Europe/Kaliningrad` - Europe/Kaliningrad + * `Europe/Kiev` - Europe/Kiev + * `Europe/Kirov` - Europe/Kirov + * `Europe/Kyiv` - Europe/Kyiv + * `Europe/Lisbon` - Europe/Lisbon + * `Europe/Ljubljana` - Europe/Ljubljana + * `Europe/London` - Europe/London + * `Europe/Luxembourg` - Europe/Luxembourg + * `Europe/Madrid` - Europe/Madrid + * `Europe/Malta` - Europe/Malta + * `Europe/Mariehamn` - Europe/Mariehamn + * `Europe/Minsk` - Europe/Minsk + * `Europe/Monaco` - Europe/Monaco + * `Europe/Moscow` - Europe/Moscow + * `Europe/Nicosia` - Europe/Nicosia + * `Europe/Oslo` - Europe/Oslo + * `Europe/Paris` - Europe/Paris + * `Europe/Podgorica` - Europe/Podgorica + * `Europe/Prague` - Europe/Prague + * `Europe/Riga` - Europe/Riga + * `Europe/Rome` - Europe/Rome + * `Europe/Samara` - Europe/Samara + * `Europe/San_Marino` - Europe/San_Marino + * `Europe/Sarajevo` - Europe/Sarajevo + * `Europe/Saratov` - Europe/Saratov + * `Europe/Simferopol` - Europe/Simferopol + * `Europe/Skopje` - Europe/Skopje + * `Europe/Sofia` - Europe/Sofia + * `Europe/Stockholm` - Europe/Stockholm + * `Europe/Tallinn` - Europe/Tallinn + * `Europe/Tirane` - Europe/Tirane + * `Europe/Tiraspol` - Europe/Tiraspol + * `Europe/Ulyanovsk` - Europe/Ulyanovsk + * `Europe/Uzhgorod` - Europe/Uzhgorod + * `Europe/Vaduz` - Europe/Vaduz + * `Europe/Vatican` - Europe/Vatican + * `Europe/Vienna` - Europe/Vienna + * `Europe/Vilnius` - Europe/Vilnius + * `Europe/Volgograd` - Europe/Volgograd + * `Europe/Warsaw` - Europe/Warsaw + * `Europe/Zagreb` - Europe/Zagreb + * `Europe/Zaporozhye` - Europe/Zaporozhye + * `Europe/Zurich` - Europe/Zurich + * `GB` - GB + * `GB-Eire` - GB-Eire + * `GMT` - GMT + * `GMT+0` - GMT+0 + * `GMT-0` - GMT-0 + * `GMT0` - GMT0 + * `Greenwich` - Greenwich + * `HST` - HST + * `Hongkong` - Hongkong + * `Iceland` - Iceland + * `Indian/Antananarivo` - Indian/Antananarivo + * `Indian/Chagos` - Indian/Chagos + * `Indian/Christmas` - Indian/Christmas + * `Indian/Cocos` - Indian/Cocos + * `Indian/Comoro` - Indian/Comoro + * `Indian/Kerguelen` - Indian/Kerguelen + * `Indian/Mahe` - Indian/Mahe + * `Indian/Maldives` - Indian/Maldives + * `Indian/Mauritius` - Indian/Mauritius + * `Indian/Mayotte` - Indian/Mayotte + * `Indian/Reunion` - Indian/Reunion + * `Iran` - Iran + * `Israel` - Israel + * `Jamaica` - Jamaica + * `Japan` - Japan + * `Kwajalein` - Kwajalein + * `Libya` - Libya + * `MET` - MET + * `MST` - MST + * `MST7MDT` - MST7MDT + * `Mexico/BajaNorte` - Mexico/BajaNorte + * `Mexico/BajaSur` - Mexico/BajaSur + * `Mexico/General` - Mexico/General + * `NZ` - NZ + * `NZ-CHAT` - NZ-CHAT + * `Navajo` - Navajo + * `PRC` - PRC + * `PST8PDT` - PST8PDT + * `Pacific/Apia` - Pacific/Apia + * `Pacific/Auckland` - Pacific/Auckland + * `Pacific/Bougainville` - Pacific/Bougainville + * `Pacific/Chatham` - Pacific/Chatham + * `Pacific/Chuuk` - Pacific/Chuuk + * `Pacific/Easter` - Pacific/Easter + * `Pacific/Efate` - Pacific/Efate + * `Pacific/Enderbury` - Pacific/Enderbury + * `Pacific/Fakaofo` - Pacific/Fakaofo + * `Pacific/Fiji` - Pacific/Fiji + * `Pacific/Funafuti` - Pacific/Funafuti + * `Pacific/Galapagos` - Pacific/Galapagos + * `Pacific/Gambier` - Pacific/Gambier + * `Pacific/Guadalcanal` - Pacific/Guadalcanal + * `Pacific/Guam` - Pacific/Guam + * `Pacific/Honolulu` - Pacific/Honolulu + * `Pacific/Johnston` - Pacific/Johnston + * `Pacific/Kanton` - Pacific/Kanton + * `Pacific/Kiritimati` - Pacific/Kiritimati + * `Pacific/Kosrae` - Pacific/Kosrae + * `Pacific/Kwajalein` - Pacific/Kwajalein + * `Pacific/Majuro` - Pacific/Majuro + * `Pacific/Marquesas` - Pacific/Marquesas + * `Pacific/Midway` - Pacific/Midway + * `Pacific/Nauru` - Pacific/Nauru + * `Pacific/Niue` - Pacific/Niue + * `Pacific/Norfolk` - Pacific/Norfolk + * `Pacific/Noumea` - Pacific/Noumea + * `Pacific/Pago_Pago` - Pacific/Pago_Pago + * `Pacific/Palau` - Pacific/Palau + * `Pacific/Pitcairn` - Pacific/Pitcairn + * `Pacific/Pohnpei` - Pacific/Pohnpei + * `Pacific/Ponape` - Pacific/Ponape + * `Pacific/Port_Moresby` - Pacific/Port_Moresby + * `Pacific/Rarotonga` - Pacific/Rarotonga + * `Pacific/Saipan` - Pacific/Saipan + * `Pacific/Samoa` - Pacific/Samoa + * `Pacific/Tahiti` - Pacific/Tahiti + * `Pacific/Tarawa` - Pacific/Tarawa + * `Pacific/Tongatapu` - Pacific/Tongatapu + * `Pacific/Truk` - Pacific/Truk + * `Pacific/Wake` - Pacific/Wake + * `Pacific/Wallis` - Pacific/Wallis + * `Pacific/Yap` - Pacific/Yap + * `Poland` - Poland + * `Portugal` - Portugal + * `ROC` - ROC + * `ROK` - ROK + * `Singapore` - Singapore + * `Turkey` - Turkey + * `UCT` - UCT + * `US/Alaska` - US/Alaska + * `US/Aleutian` - US/Aleutian + * `US/Arizona` - US/Arizona + * `US/Central` - US/Central + * `US/East-Indiana` - US/East-Indiana + * `US/Eastern` - US/Eastern + * `US/Hawaii` - US/Hawaii + * `US/Indiana-Starke` - US/Indiana-Starke + * `US/Michigan` - US/Michigan + * `US/Mountain` - US/Mountain + * `US/Pacific` - US/Pacific + * `US/Samoa` - US/Samoa + * `UTC` - UTC + * `Universal` - Universal + * `W-SU` - W-SU + * `WET` - WET + * `Zulu` - Zulu + x-spec-enum-id: cd9b66101aa181d2 + version: + type: integer + maximum: 2147483647 + minimum: -2147483648 + created_by: + type: string + format: uuid + nullable: true + updated_by: + type: string + format: uuid + nullable: true + title: Last Modified By + project: + type: string + format: uuid + workspace: + type: string + format: uuid + owned_by: + type: string + format: uuid + required: + - created_at + - id + - name + - owned_by + - project + - updated_at + - workspace + GenericAssetUpload: + type: object + description: Serializer for generic asset upload requests + properties: + name: + type: string + description: Original filename of the asset + type: + type: string + description: MIME type of the file + size: + type: integer + description: File size in bytes + project_id: + type: string + format: uuid + description: UUID of the project to associate with the asset + external_id: + type: string + description: External identifier for the asset (for integration tracking) + external_source: + type: string + description: External source system (for integration tracking) + required: + - name + - size + IntakeIssue: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + issue_detail: + allOf: + - $ref: '#/components/schemas/IssueExpand' + readOnly: true + inbox: + type: string + format: uuid + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + status: + enum: + - -2 + - -1 + - 0 + - 1 + - 2 + type: integer + description: |- + * `-2` - Pending + * `-1` - Rejected + * `0` - Snoozed + * `1` - Accepted + * `2` - Duplicate + x-spec-enum-id: 255d1d18a49d93c5 + minimum: -2147483648 + maximum: 2147483647 + snoozed_till: + type: string + format: date-time + nullable: true + source: + type: string + nullable: true + maxLength: 255 + source_email: + type: string + nullable: true + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + extra: {} + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + intake: + type: string + format: uuid + issue: + type: string + format: uuid + readOnly: true + duplicate_to: + type: string + format: uuid + nullable: true + required: + - created_at + - created_by + - id + - inbox + - intake + - issue + - issue_detail + - project + - updated_at + - updated_by + - workspace + Issue: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + assignees: + type: array + items: + type: string + format: uuid + writeOnly: true + labels: + type: array + items: + type: string + format: uuid + writeOnly: true + type_id: + type: string + format: uuid + nullable: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + point: + type: integer + maximum: 12 + minimum: 0 + nullable: true + name: + type: string + title: Issue Name + maxLength: 255 + description_html: + type: string + description_binary: + type: string + format: byte + readOnly: true + nullable: true + priority: + enum: + - urgent + - high + - medium + - low + - none + type: string + description: |- + * `urgent` - Urgent + * `high` - High + * `medium` - Medium + * `low` - Low + * `none` - None + x-spec-enum-id: c1fd7437c30830ac + title: Issue Priority + start_date: + type: string + format: date + nullable: true + target_date: + type: string + format: date + nullable: true + sequence_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + title: Issue Sequence ID + sort_order: + type: number + format: double + completed_at: + type: string + format: date-time + nullable: true + archived_at: + type: string + format: date + nullable: true + is_draft: + type: boolean + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + created_by: + type: string + format: uuid + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + parent: + type: string + format: uuid + nullable: true + state: + type: string + format: uuid + nullable: true + estimate_point: + type: string + format: uuid + nullable: true + type: + type: string + format: uuid + nullable: true + required: + - created_at + - description_binary + - id + - name + - project + - updated_at + - updated_by + - workspace + IssueActivity: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + verb: + type: string + title: Action + maxLength: 255 + field: + type: string + nullable: true + title: Field Name + maxLength: 255 + old_value: + type: string + nullable: true + new_value: + type: string + nullable: true + comment: + type: string + attachments: + type: array + items: + type: string + format: uri + maxLength: 200 + maxItems: 10 + old_identifier: + type: string + format: uuid + nullable: true + new_identifier: + type: string + format: uuid + nullable: true + epoch: + type: number + format: double + nullable: true + project: + type: string + format: uuid + workspace: + type: string + format: uuid + issue: + type: string + format: uuid + nullable: true + issue_comment: + type: string + format: uuid + nullable: true + actor: + type: string + format: uuid + nullable: true + required: + - created_at + - id + - project + - updated_at + - workspace + IssueAttachment: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + attributes: {} + asset: + type: string + format: uri + entity_type: + type: string + nullable: true + maxLength: 255 + entity_identifier: + type: string + nullable: true + maxLength: 255 + is_deleted: + type: boolean + is_archived: + type: boolean + external_id: + type: string + nullable: true + maxLength: 255 + external_source: + type: string + nullable: true + maxLength: 255 + size: + type: number + format: double + is_uploaded: + type: boolean + storage_metadata: + nullable: true + created_by: + type: string + format: uuid + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + user: + type: string + format: uuid + nullable: true + workspace: + type: string + format: uuid + readOnly: true + nullable: true + draft_issue: + type: string + format: uuid + nullable: true + project: + type: string + format: uuid + readOnly: true + nullable: true + issue: + type: string + format: uuid + readOnly: true + nullable: true + comment: + type: string + format: uuid + nullable: true + page: + type: string + format: uuid + nullable: true + required: + - asset + - created_at + - id + - issue + - project + - updated_at + - updated_by + - workspace + IssueComment: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + is_member: + type: boolean + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + comment_html: + type: string + attachments: + type: array + items: + type: string + format: uri + maxLength: 200 + maxItems: 10 + access: + enum: + - INTERNAL + - EXTERNAL + type: string + description: |- + * `INTERNAL` - INTERNAL + * `EXTERNAL` - EXTERNAL + x-spec-enum-id: bd43942b53ce5eef + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + edited_at: + type: string + format: date-time + nullable: true + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + issue: + type: string + format: uuid + readOnly: true + actor: + type: string + format: uuid + nullable: true + required: + - created_at + - created_by + - id + - is_member + - issue + - project + - updated_at + - updated_by + - workspace + IssueExpand: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + cycle: + allOf: + - $ref: '#/components/schemas/CycleLite' + readOnly: true + module: + allOf: + - $ref: '#/components/schemas/ModuleLite' + readOnly: true + labels: + type: array + items: + $ref: '#/components/schemas/LabelLite' + readOnly: true + assignees: + type: array + items: + $ref: '#/components/schemas/UserLite' + readOnly: true + state: + allOf: + - $ref: '#/components/schemas/StateLite' + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + point: + type: integer + maximum: 12 + minimum: 0 + nullable: true + name: + type: string + title: Issue Name + maxLength: 255 + description: {} + description_html: + type: string + description_stripped: + type: string + nullable: true + description_binary: + type: string + format: byte + readOnly: true + nullable: true + priority: + enum: + - urgent + - high + - medium + - low + - none + type: string + description: |- + * `urgent` - Urgent + * `high` - High + * `medium` - Medium + * `low` - Low + * `none` - None + x-spec-enum-id: c1fd7437c30830ac + title: Issue Priority + start_date: + type: string + format: date + nullable: true + target_date: + type: string + format: date + nullable: true + sequence_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + title: Issue Sequence ID + sort_order: + type: number + format: double + completed_at: + type: string + format: date-time + nullable: true + archived_at: + type: string + format: date + nullable: true + is_draft: + type: boolean + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + parent: + type: string + format: uuid + nullable: true + estimate_point: + type: string + format: uuid + nullable: true + type: + type: string + format: uuid + nullable: true + required: + - assignees + - created_at + - created_by + - cycle + - description_binary + - id + - labels + - module + - name + - project + - state + - updated_at + - updated_by + - workspace + IssueLink: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + title: + type: string + nullable: true + maxLength: 255 + url: + type: string + metadata: {} + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + issue: + type: string + format: uuid + readOnly: true + required: + - created_at + - created_by + - id + - issue + - project + - updated_at + - updated_by + - url + - workspace + Label: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + readOnly: true + nullable: true + name: + type: string + maxLength: 255 + description: + type: string + color: + type: string + maxLength: 255 + sort_order: + type: number + format: double + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + workspace: + type: string + format: uuid + readOnly: true + project: + type: string + format: uuid + readOnly: true + nullable: true + parent: + type: string + format: uuid + nullable: true + required: + - created_at + - created_by + - deleted_at + - id + - name + - project + - updated_at + - updated_by + - workspace + LabelLite: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + name: + type: string + maxLength: 255 + color: + type: string + maxLength: 255 + required: + - id + - name + Module: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + members: + type: array + items: + type: string + format: uuid + writeOnly: true + total_issues: + type: integer + readOnly: true + cancelled_issues: + type: integer + readOnly: true + completed_issues: + type: integer + readOnly: true + started_issues: + type: integer + readOnly: true + unstarted_issues: + type: integer + readOnly: true + backlog_issues: + type: integer + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + readOnly: true + nullable: true + name: + type: string + title: Module Name + maxLength: 255 + description: + type: string + title: Module Description + description_text: + nullable: true + title: Module Description RT + description_html: + nullable: true + title: Module Description HTML + start_date: + type: string + format: date + nullable: true + target_date: + type: string + format: date + nullable: true + status: + enum: + - backlog + - planned + - in-progress + - paused + - completed + - cancelled + type: string + description: |- + * `backlog` - Backlog + * `planned` - Planned + * `in-progress` - In Progress + * `paused` - Paused + * `completed` - Completed + * `cancelled` - Cancelled + x-spec-enum-id: a3d702ffba30a19d + view_props: {} + sort_order: + type: number + format: double + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + archived_at: + type: string + format: date-time + nullable: true + logo_props: {} + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + lead: + type: string + format: uuid + nullable: true + required: + - backlog_issues + - cancelled_issues + - completed_issues + - created_at + - created_by + - deleted_at + - id + - name + - project + - started_issues + - total_issues + - unstarted_issues + - updated_at + - updated_by + - workspace + ModuleIssue: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + sub_issues_count: + type: integer + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + module: + type: string + format: uuid + readOnly: true + issue: + type: string + format: uuid + required: + - created_at + - created_by + - deleted_at + - id + - issue + - module + - project + - sub_issues_count + - updated_at + - updated_by + - workspace + ModuleLite: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + name: + type: string + title: Module Name + maxLength: 255 + description: + type: string + title: Module Description + description_text: + nullable: true + title: Module Description RT + description_html: + nullable: true + title: Module Description HTML + start_date: + type: string + format: date + nullable: true + target_date: + type: string + format: date + nullable: true + status: + enum: + - backlog + - planned + - in-progress + - paused + - completed + - cancelled + type: string + description: |- + * `backlog` - Backlog + * `planned` - Planned + * `in-progress` - In Progress + * `paused` - Paused + * `completed` - Completed + * `cancelled` - Cancelled + x-spec-enum-id: a3d702ffba30a19d + view_props: {} + sort_order: + type: number + format: double + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + archived_at: + type: string + format: date-time + nullable: true + logo_props: {} + created_by: + type: string + format: uuid + nullable: true + updated_by: + type: string + format: uuid + nullable: true + title: Last Modified By + project: + type: string + format: uuid + workspace: + type: string + format: uuid + lead: + type: string + format: uuid + nullable: true + members: + type: array + items: + type: string + format: uuid + readOnly: true + required: + - created_at + - deleted_at + - id + - members + - name + - project + - updated_at + - workspace + PatchedAssetUpdate: + type: object + description: Serializer for asset update requests after upload + properties: + attributes: + description: Additional attributes to update for the asset + PatchedGenericAssetUpdate: + type: object + description: Serializer for generic asset update requests + properties: + is_uploaded: + type: boolean + default: true + description: Whether the asset has been successfully uploaded + PatchedIssue: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + assignees: + type: array + items: + type: string + format: uuid + writeOnly: true + labels: + type: array + items: + type: string + format: uuid + writeOnly: true + type_id: + type: string + format: uuid + nullable: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + nullable: true + point: + type: integer + maximum: 12 + minimum: 0 + nullable: true + name: + type: string + title: Issue Name + maxLength: 255 + description_html: + type: string + description_binary: + type: string + format: byte + readOnly: true + nullable: true + priority: + enum: + - urgent + - high + - medium + - low + - none + type: string + description: |- + * `urgent` - Urgent + * `high` - High + * `medium` - Medium + * `low` - Low + * `none` - None + x-spec-enum-id: c1fd7437c30830ac + title: Issue Priority + start_date: + type: string + format: date + nullable: true + target_date: + type: string + format: date + nullable: true + sequence_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + title: Issue Sequence ID + sort_order: + type: number + format: double + completed_at: + type: string + format: date-time + nullable: true + archived_at: + type: string + format: date + nullable: true + is_draft: + type: boolean + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + created_by: + type: string + format: uuid + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + parent: + type: string + format: uuid + nullable: true + state: + type: string + format: uuid + nullable: true + estimate_point: + type: string + format: uuid + nullable: true + type: + type: string + format: uuid + nullable: true + PatchedProject: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + total_members: + type: integer + readOnly: true + total_cycles: + type: integer + readOnly: true + total_modules: + type: integer + readOnly: true + is_member: + type: boolean + readOnly: true + sort_order: + type: number + format: double + readOnly: true + member_role: + type: integer + readOnly: true + is_deployed: + type: boolean + readOnly: true + cover_image_url: + type: string + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + readOnly: true + nullable: true + name: + type: string + title: Project Name + maxLength: 255 + description: + type: string + title: Project Description + description_text: + nullable: true + title: Project Description RT + description_html: + nullable: true + title: Project Description HTML + network: + enum: + - 0 + - 2 + type: integer + description: |- + * `0` - Secret + * `2` - Public + x-spec-enum-id: ff6cd64f49ca3db3 + minimum: 0 + maximum: 32767 + identifier: + type: string + title: Project Identifier + maxLength: 12 + emoji: + type: string + readOnly: true + nullable: true + icon_prop: + nullable: true + module_view: + type: boolean + cycle_view: + type: boolean + issue_views_view: + type: boolean + page_view: + type: boolean + intake_view: + type: boolean + is_time_tracking_enabled: + type: boolean + is_issue_type_enabled: + type: boolean + guest_view_all_features: + type: boolean + cover_image: + type: string + nullable: true + archive_in: + type: integer + maximum: 12 + minimum: 0 + close_in: + type: integer + maximum: 12 + minimum: 0 + logo_props: {} + archived_at: + type: string + format: date-time + nullable: true + timezone: + enum: + - Africa/Abidjan + - Africa/Accra + - Africa/Addis_Ababa + - Africa/Algiers + - Africa/Asmara + - Africa/Asmera + - Africa/Bamako + - Africa/Bangui + - Africa/Banjul + - Africa/Bissau + - Africa/Blantyre + - Africa/Brazzaville + - Africa/Bujumbura + - Africa/Cairo + - Africa/Casablanca + - Africa/Ceuta + - Africa/Conakry + - Africa/Dakar + - Africa/Dar_es_Salaam + - Africa/Djibouti + - Africa/Douala + - Africa/El_Aaiun + - Africa/Freetown + - Africa/Gaborone + - Africa/Harare + - Africa/Johannesburg + - Africa/Juba + - Africa/Kampala + - Africa/Khartoum + - Africa/Kigali + - Africa/Kinshasa + - Africa/Lagos + - Africa/Libreville + - Africa/Lome + - Africa/Luanda + - Africa/Lubumbashi + - Africa/Lusaka + - Africa/Malabo + - Africa/Maputo + - Africa/Maseru + - Africa/Mbabane + - Africa/Mogadishu + - Africa/Monrovia + - Africa/Nairobi + - Africa/Ndjamena + - Africa/Niamey + - Africa/Nouakchott + - Africa/Ouagadougou + - Africa/Porto-Novo + - Africa/Sao_Tome + - Africa/Timbuktu + - Africa/Tripoli + - Africa/Tunis + - Africa/Windhoek + - America/Adak + - America/Anchorage + - America/Anguilla + - America/Antigua + - America/Araguaina + - America/Argentina/Buenos_Aires + - America/Argentina/Catamarca + - America/Argentina/ComodRivadavia + - America/Argentina/Cordoba + - America/Argentina/Jujuy + - America/Argentina/La_Rioja + - America/Argentina/Mendoza + - America/Argentina/Rio_Gallegos + - America/Argentina/Salta + - America/Argentina/San_Juan + - America/Argentina/San_Luis + - America/Argentina/Tucuman + - America/Argentina/Ushuaia + - America/Aruba + - America/Asuncion + - America/Atikokan + - America/Atka + - America/Bahia + - America/Bahia_Banderas + - America/Barbados + - America/Belem + - America/Belize + - America/Blanc-Sablon + - America/Boa_Vista + - America/Bogota + - America/Boise + - America/Buenos_Aires + - America/Cambridge_Bay + - America/Campo_Grande + - America/Cancun + - America/Caracas + - America/Catamarca + - America/Cayenne + - America/Cayman + - America/Chicago + - America/Chihuahua + - America/Ciudad_Juarez + - America/Coral_Harbour + - America/Cordoba + - America/Costa_Rica + - America/Creston + - America/Cuiaba + - America/Curacao + - America/Danmarkshavn + - America/Dawson + - America/Dawson_Creek + - America/Denver + - America/Detroit + - America/Dominica + - America/Edmonton + - America/Eirunepe + - America/El_Salvador + - America/Ensenada + - America/Fort_Nelson + - America/Fort_Wayne + - America/Fortaleza + - America/Glace_Bay + - America/Godthab + - America/Goose_Bay + - America/Grand_Turk + - America/Grenada + - America/Guadeloupe + - America/Guatemala + - America/Guayaquil + - America/Guyana + - America/Halifax + - America/Havana + - America/Hermosillo + - America/Indiana/Indianapolis + - America/Indiana/Knox + - America/Indiana/Marengo + - America/Indiana/Petersburg + - America/Indiana/Tell_City + - America/Indiana/Vevay + - America/Indiana/Vincennes + - America/Indiana/Winamac + - America/Indianapolis + - America/Inuvik + - America/Iqaluit + - America/Jamaica + - America/Jujuy + - America/Juneau + - America/Kentucky/Louisville + - America/Kentucky/Monticello + - America/Knox_IN + - America/Kralendijk + - America/La_Paz + - America/Lima + - America/Los_Angeles + - America/Louisville + - America/Lower_Princes + - America/Maceio + - America/Managua + - America/Manaus + - America/Marigot + - America/Martinique + - America/Matamoros + - America/Mazatlan + - America/Mendoza + - America/Menominee + - America/Merida + - America/Metlakatla + - America/Mexico_City + - America/Miquelon + - America/Moncton + - America/Monterrey + - America/Montevideo + - America/Montreal + - America/Montserrat + - America/Nassau + - America/New_York + - America/Nipigon + - America/Nome + - America/Noronha + - America/North_Dakota/Beulah + - America/North_Dakota/Center + - America/North_Dakota/New_Salem + - America/Nuuk + - America/Ojinaga + - America/Panama + - America/Pangnirtung + - America/Paramaribo + - America/Phoenix + - America/Port-au-Prince + - America/Port_of_Spain + - America/Porto_Acre + - America/Porto_Velho + - America/Puerto_Rico + - America/Punta_Arenas + - America/Rainy_River + - America/Rankin_Inlet + - America/Recife + - America/Regina + - America/Resolute + - America/Rio_Branco + - America/Rosario + - America/Santa_Isabel + - America/Santarem + - America/Santiago + - America/Santo_Domingo + - America/Sao_Paulo + - America/Scoresbysund + - America/Shiprock + - America/Sitka + - America/St_Barthelemy + - America/St_Johns + - America/St_Kitts + - America/St_Lucia + - America/St_Thomas + - America/St_Vincent + - America/Swift_Current + - America/Tegucigalpa + - America/Thule + - America/Thunder_Bay + - America/Tijuana + - America/Toronto + - America/Tortola + - America/Vancouver + - America/Virgin + - America/Whitehorse + - America/Winnipeg + - America/Yakutat + - America/Yellowknife + - Antarctica/Casey + - Antarctica/Davis + - Antarctica/DumontDUrville + - Antarctica/Macquarie + - Antarctica/Mawson + - Antarctica/McMurdo + - Antarctica/Palmer + - Antarctica/Rothera + - Antarctica/South_Pole + - Antarctica/Syowa + - Antarctica/Troll + - Antarctica/Vostok + - Arctic/Longyearbyen + - Asia/Aden + - Asia/Almaty + - Asia/Amman + - Asia/Anadyr + - Asia/Aqtau + - Asia/Aqtobe + - Asia/Ashgabat + - Asia/Ashkhabad + - Asia/Atyrau + - Asia/Baghdad + - Asia/Bahrain + - Asia/Baku + - Asia/Bangkok + - Asia/Barnaul + - Asia/Beirut + - Asia/Bishkek + - Asia/Brunei + - Asia/Calcutta + - Asia/Chita + - Asia/Choibalsan + - Asia/Chongqing + - Asia/Chungking + - Asia/Colombo + - Asia/Dacca + - Asia/Damascus + - Asia/Dhaka + - Asia/Dili + - Asia/Dubai + - Asia/Dushanbe + - Asia/Famagusta + - Asia/Gaza + - Asia/Harbin + - Asia/Hebron + - Asia/Ho_Chi_Minh + - Asia/Hong_Kong + - Asia/Hovd + - Asia/Irkutsk + - Asia/Istanbul + - Asia/Jakarta + - Asia/Jayapura + - Asia/Jerusalem + - Asia/Kabul + - Asia/Kamchatka + - Asia/Karachi + - Asia/Kashgar + - Asia/Kathmandu + - Asia/Katmandu + - Asia/Khandyga + - Asia/Kolkata + - Asia/Krasnoyarsk + - Asia/Kuala_Lumpur + - Asia/Kuching + - Asia/Kuwait + - Asia/Macao + - Asia/Macau + - Asia/Magadan + - Asia/Makassar + - Asia/Manila + - Asia/Muscat + - Asia/Nicosia + - Asia/Novokuznetsk + - Asia/Novosibirsk + - Asia/Omsk + - Asia/Oral + - Asia/Phnom_Penh + - Asia/Pontianak + - Asia/Pyongyang + - Asia/Qatar + - Asia/Qostanay + - Asia/Qyzylorda + - Asia/Rangoon + - Asia/Riyadh + - Asia/Saigon + - Asia/Sakhalin + - Asia/Samarkand + - Asia/Seoul + - Asia/Shanghai + - Asia/Singapore + - Asia/Srednekolymsk + - Asia/Taipei + - Asia/Tashkent + - Asia/Tbilisi + - Asia/Tehran + - Asia/Tel_Aviv + - Asia/Thimbu + - Asia/Thimphu + - Asia/Tokyo + - Asia/Tomsk + - Asia/Ujung_Pandang + - Asia/Ulaanbaatar + - Asia/Ulan_Bator + - Asia/Urumqi + - Asia/Ust-Nera + - Asia/Vientiane + - Asia/Vladivostok + - Asia/Yakutsk + - Asia/Yangon + - Asia/Yekaterinburg + - Asia/Yerevan + - Atlantic/Azores + - Atlantic/Bermuda + - Atlantic/Canary + - Atlantic/Cape_Verde + - Atlantic/Faeroe + - Atlantic/Faroe + - Atlantic/Jan_Mayen + - Atlantic/Madeira + - Atlantic/Reykjavik + - Atlantic/South_Georgia + - Atlantic/St_Helena + - Atlantic/Stanley + - Australia/ACT + - Australia/Adelaide + - Australia/Brisbane + - Australia/Broken_Hill + - Australia/Canberra + - Australia/Currie + - Australia/Darwin + - Australia/Eucla + - Australia/Hobart + - Australia/LHI + - Australia/Lindeman + - Australia/Lord_Howe + - Australia/Melbourne + - Australia/NSW + - Australia/North + - Australia/Perth + - Australia/Queensland + - Australia/South + - Australia/Sydney + - Australia/Tasmania + - Australia/Victoria + - Australia/West + - Australia/Yancowinna + - Brazil/Acre + - Brazil/DeNoronha + - Brazil/East + - Brazil/West + - CET + - CST6CDT + - Canada/Atlantic + - Canada/Central + - Canada/Eastern + - Canada/Mountain + - Canada/Newfoundland + - Canada/Pacific + - Canada/Saskatchewan + - Canada/Yukon + - Chile/Continental + - Chile/EasterIsland + - Cuba + - EET + - EST + - EST5EDT + - Egypt + - Eire + - Etc/GMT + - Etc/GMT+0 + - Etc/GMT+1 + - Etc/GMT+10 + - Etc/GMT+11 + - Etc/GMT+12 + - Etc/GMT+2 + - Etc/GMT+3 + - Etc/GMT+4 + - Etc/GMT+5 + - Etc/GMT+6 + - Etc/GMT+7 + - Etc/GMT+8 + - Etc/GMT+9 + - Etc/GMT-0 + - Etc/GMT-1 + - Etc/GMT-10 + - Etc/GMT-11 + - Etc/GMT-12 + - Etc/GMT-13 + - Etc/GMT-14 + - Etc/GMT-2 + - Etc/GMT-3 + - Etc/GMT-4 + - Etc/GMT-5 + - Etc/GMT-6 + - Etc/GMT-7 + - Etc/GMT-8 + - Etc/GMT-9 + - Etc/GMT0 + - Etc/Greenwich + - Etc/UCT + - Etc/UTC + - Etc/Universal + - Etc/Zulu + - Europe/Amsterdam + - Europe/Andorra + - Europe/Astrakhan + - Europe/Athens + - Europe/Belfast + - Europe/Belgrade + - Europe/Berlin + - Europe/Bratislava + - Europe/Brussels + - Europe/Bucharest + - Europe/Budapest + - Europe/Busingen + - Europe/Chisinau + - Europe/Copenhagen + - Europe/Dublin + - Europe/Gibraltar + - Europe/Guernsey + - Europe/Helsinki + - Europe/Isle_of_Man + - Europe/Istanbul + - Europe/Jersey + - Europe/Kaliningrad + - Europe/Kiev + - Europe/Kirov + - Europe/Kyiv + - Europe/Lisbon + - Europe/Ljubljana + - Europe/London + - Europe/Luxembourg + - Europe/Madrid + - Europe/Malta + - Europe/Mariehamn + - Europe/Minsk + - Europe/Monaco + - Europe/Moscow + - Europe/Nicosia + - Europe/Oslo + - Europe/Paris + - Europe/Podgorica + - Europe/Prague + - Europe/Riga + - Europe/Rome + - Europe/Samara + - Europe/San_Marino + - Europe/Sarajevo + - Europe/Saratov + - Europe/Simferopol + - Europe/Skopje + - Europe/Sofia + - Europe/Stockholm + - Europe/Tallinn + - Europe/Tirane + - Europe/Tiraspol + - Europe/Ulyanovsk + - Europe/Uzhgorod + - Europe/Vaduz + - Europe/Vatican + - Europe/Vienna + - Europe/Vilnius + - Europe/Volgograd + - Europe/Warsaw + - Europe/Zagreb + - Europe/Zaporozhye + - Europe/Zurich + - GB + - GB-Eire + - GMT + - GMT+0 + - GMT-0 + - GMT0 + - Greenwich + - HST + - Hongkong + - Iceland + - Indian/Antananarivo + - Indian/Chagos + - Indian/Christmas + - Indian/Cocos + - Indian/Comoro + - Indian/Kerguelen + - Indian/Mahe + - Indian/Maldives + - Indian/Mauritius + - Indian/Mayotte + - Indian/Reunion + - Iran + - Israel + - Jamaica + - Japan + - Kwajalein + - Libya + - MET + - MST + - MST7MDT + - Mexico/BajaNorte + - Mexico/BajaSur + - Mexico/General + - NZ + - NZ-CHAT + - Navajo + - PRC + - PST8PDT + - Pacific/Apia + - Pacific/Auckland + - Pacific/Bougainville + - Pacific/Chatham + - Pacific/Chuuk + - Pacific/Easter + - Pacific/Efate + - Pacific/Enderbury + - Pacific/Fakaofo + - Pacific/Fiji + - Pacific/Funafuti + - Pacific/Galapagos + - Pacific/Gambier + - Pacific/Guadalcanal + - Pacific/Guam + - Pacific/Honolulu + - Pacific/Johnston + - Pacific/Kanton + - Pacific/Kiritimati + - Pacific/Kosrae + - Pacific/Kwajalein + - Pacific/Majuro + - Pacific/Marquesas + - Pacific/Midway + - Pacific/Nauru + - Pacific/Niue + - Pacific/Norfolk + - Pacific/Noumea + - Pacific/Pago_Pago + - Pacific/Palau + - Pacific/Pitcairn + - Pacific/Pohnpei + - Pacific/Ponape + - Pacific/Port_Moresby + - Pacific/Rarotonga + - Pacific/Saipan + - Pacific/Samoa + - Pacific/Tahiti + - Pacific/Tarawa + - Pacific/Tongatapu + - Pacific/Truk + - Pacific/Wake + - Pacific/Wallis + - Pacific/Yap + - Poland + - Portugal + - ROC + - ROK + - Singapore + - Turkey + - UCT + - US/Alaska + - US/Aleutian + - US/Arizona + - US/Central + - US/East-Indiana + - US/Eastern + - US/Hawaii + - US/Indiana-Starke + - US/Michigan + - US/Mountain + - US/Pacific + - US/Samoa + - UTC + - Universal + - W-SU + - WET + - Zulu + type: string + description: |- + * `Africa/Abidjan` - Africa/Abidjan + * `Africa/Accra` - Africa/Accra + * `Africa/Addis_Ababa` - Africa/Addis_Ababa + * `Africa/Algiers` - Africa/Algiers + * `Africa/Asmara` - Africa/Asmara + * `Africa/Asmera` - Africa/Asmera + * `Africa/Bamako` - Africa/Bamako + * `Africa/Bangui` - Africa/Bangui + * `Africa/Banjul` - Africa/Banjul + * `Africa/Bissau` - Africa/Bissau + * `Africa/Blantyre` - Africa/Blantyre + * `Africa/Brazzaville` - Africa/Brazzaville + * `Africa/Bujumbura` - Africa/Bujumbura + * `Africa/Cairo` - Africa/Cairo + * `Africa/Casablanca` - Africa/Casablanca + * `Africa/Ceuta` - Africa/Ceuta + * `Africa/Conakry` - Africa/Conakry + * `Africa/Dakar` - Africa/Dakar + * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam + * `Africa/Djibouti` - Africa/Djibouti + * `Africa/Douala` - Africa/Douala + * `Africa/El_Aaiun` - Africa/El_Aaiun + * `Africa/Freetown` - Africa/Freetown + * `Africa/Gaborone` - Africa/Gaborone + * `Africa/Harare` - Africa/Harare + * `Africa/Johannesburg` - Africa/Johannesburg + * `Africa/Juba` - Africa/Juba + * `Africa/Kampala` - Africa/Kampala + * `Africa/Khartoum` - Africa/Khartoum + * `Africa/Kigali` - Africa/Kigali + * `Africa/Kinshasa` - Africa/Kinshasa + * `Africa/Lagos` - Africa/Lagos + * `Africa/Libreville` - Africa/Libreville + * `Africa/Lome` - Africa/Lome + * `Africa/Luanda` - Africa/Luanda + * `Africa/Lubumbashi` - Africa/Lubumbashi + * `Africa/Lusaka` - Africa/Lusaka + * `Africa/Malabo` - Africa/Malabo + * `Africa/Maputo` - Africa/Maputo + * `Africa/Maseru` - Africa/Maseru + * `Africa/Mbabane` - Africa/Mbabane + * `Africa/Mogadishu` - Africa/Mogadishu + * `Africa/Monrovia` - Africa/Monrovia + * `Africa/Nairobi` - Africa/Nairobi + * `Africa/Ndjamena` - Africa/Ndjamena + * `Africa/Niamey` - Africa/Niamey + * `Africa/Nouakchott` - Africa/Nouakchott + * `Africa/Ouagadougou` - Africa/Ouagadougou + * `Africa/Porto-Novo` - Africa/Porto-Novo + * `Africa/Sao_Tome` - Africa/Sao_Tome + * `Africa/Timbuktu` - Africa/Timbuktu + * `Africa/Tripoli` - Africa/Tripoli + * `Africa/Tunis` - Africa/Tunis + * `Africa/Windhoek` - Africa/Windhoek + * `America/Adak` - America/Adak + * `America/Anchorage` - America/Anchorage + * `America/Anguilla` - America/Anguilla + * `America/Antigua` - America/Antigua + * `America/Araguaina` - America/Araguaina + * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires + * `America/Argentina/Catamarca` - America/Argentina/Catamarca + * `America/Argentina/ComodRivadavia` - America/Argentina/ComodRivadavia + * `America/Argentina/Cordoba` - America/Argentina/Cordoba + * `America/Argentina/Jujuy` - America/Argentina/Jujuy + * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja + * `America/Argentina/Mendoza` - America/Argentina/Mendoza + * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos + * `America/Argentina/Salta` - America/Argentina/Salta + * `America/Argentina/San_Juan` - America/Argentina/San_Juan + * `America/Argentina/San_Luis` - America/Argentina/San_Luis + * `America/Argentina/Tucuman` - America/Argentina/Tucuman + * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia + * `America/Aruba` - America/Aruba + * `America/Asuncion` - America/Asuncion + * `America/Atikokan` - America/Atikokan + * `America/Atka` - America/Atka + * `America/Bahia` - America/Bahia + * `America/Bahia_Banderas` - America/Bahia_Banderas + * `America/Barbados` - America/Barbados + * `America/Belem` - America/Belem + * `America/Belize` - America/Belize + * `America/Blanc-Sablon` - America/Blanc-Sablon + * `America/Boa_Vista` - America/Boa_Vista + * `America/Bogota` - America/Bogota + * `America/Boise` - America/Boise + * `America/Buenos_Aires` - America/Buenos_Aires + * `America/Cambridge_Bay` - America/Cambridge_Bay + * `America/Campo_Grande` - America/Campo_Grande + * `America/Cancun` - America/Cancun + * `America/Caracas` - America/Caracas + * `America/Catamarca` - America/Catamarca + * `America/Cayenne` - America/Cayenne + * `America/Cayman` - America/Cayman + * `America/Chicago` - America/Chicago + * `America/Chihuahua` - America/Chihuahua + * `America/Ciudad_Juarez` - America/Ciudad_Juarez + * `America/Coral_Harbour` - America/Coral_Harbour + * `America/Cordoba` - America/Cordoba + * `America/Costa_Rica` - America/Costa_Rica + * `America/Creston` - America/Creston + * `America/Cuiaba` - America/Cuiaba + * `America/Curacao` - America/Curacao + * `America/Danmarkshavn` - America/Danmarkshavn + * `America/Dawson` - America/Dawson + * `America/Dawson_Creek` - America/Dawson_Creek + * `America/Denver` - America/Denver + * `America/Detroit` - America/Detroit + * `America/Dominica` - America/Dominica + * `America/Edmonton` - America/Edmonton + * `America/Eirunepe` - America/Eirunepe + * `America/El_Salvador` - America/El_Salvador + * `America/Ensenada` - America/Ensenada + * `America/Fort_Nelson` - America/Fort_Nelson + * `America/Fort_Wayne` - America/Fort_Wayne + * `America/Fortaleza` - America/Fortaleza + * `America/Glace_Bay` - America/Glace_Bay + * `America/Godthab` - America/Godthab + * `America/Goose_Bay` - America/Goose_Bay + * `America/Grand_Turk` - America/Grand_Turk + * `America/Grenada` - America/Grenada + * `America/Guadeloupe` - America/Guadeloupe + * `America/Guatemala` - America/Guatemala + * `America/Guayaquil` - America/Guayaquil + * `America/Guyana` - America/Guyana + * `America/Halifax` - America/Halifax + * `America/Havana` - America/Havana + * `America/Hermosillo` - America/Hermosillo + * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis + * `America/Indiana/Knox` - America/Indiana/Knox + * `America/Indiana/Marengo` - America/Indiana/Marengo + * `America/Indiana/Petersburg` - America/Indiana/Petersburg + * `America/Indiana/Tell_City` - America/Indiana/Tell_City + * `America/Indiana/Vevay` - America/Indiana/Vevay + * `America/Indiana/Vincennes` - America/Indiana/Vincennes + * `America/Indiana/Winamac` - America/Indiana/Winamac + * `America/Indianapolis` - America/Indianapolis + * `America/Inuvik` - America/Inuvik + * `America/Iqaluit` - America/Iqaluit + * `America/Jamaica` - America/Jamaica + * `America/Jujuy` - America/Jujuy + * `America/Juneau` - America/Juneau + * `America/Kentucky/Louisville` - America/Kentucky/Louisville + * `America/Kentucky/Monticello` - America/Kentucky/Monticello + * `America/Knox_IN` - America/Knox_IN + * `America/Kralendijk` - America/Kralendijk + * `America/La_Paz` - America/La_Paz + * `America/Lima` - America/Lima + * `America/Los_Angeles` - America/Los_Angeles + * `America/Louisville` - America/Louisville + * `America/Lower_Princes` - America/Lower_Princes + * `America/Maceio` - America/Maceio + * `America/Managua` - America/Managua + * `America/Manaus` - America/Manaus + * `America/Marigot` - America/Marigot + * `America/Martinique` - America/Martinique + * `America/Matamoros` - America/Matamoros + * `America/Mazatlan` - America/Mazatlan + * `America/Mendoza` - America/Mendoza + * `America/Menominee` - America/Menominee + * `America/Merida` - America/Merida + * `America/Metlakatla` - America/Metlakatla + * `America/Mexico_City` - America/Mexico_City + * `America/Miquelon` - America/Miquelon + * `America/Moncton` - America/Moncton + * `America/Monterrey` - America/Monterrey + * `America/Montevideo` - America/Montevideo + * `America/Montreal` - America/Montreal + * `America/Montserrat` - America/Montserrat + * `America/Nassau` - America/Nassau + * `America/New_York` - America/New_York + * `America/Nipigon` - America/Nipigon + * `America/Nome` - America/Nome + * `America/Noronha` - America/Noronha + * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah + * `America/North_Dakota/Center` - America/North_Dakota/Center + * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem + * `America/Nuuk` - America/Nuuk + * `America/Ojinaga` - America/Ojinaga + * `America/Panama` - America/Panama + * `America/Pangnirtung` - America/Pangnirtung + * `America/Paramaribo` - America/Paramaribo + * `America/Phoenix` - America/Phoenix + * `America/Port-au-Prince` - America/Port-au-Prince + * `America/Port_of_Spain` - America/Port_of_Spain + * `America/Porto_Acre` - America/Porto_Acre + * `America/Porto_Velho` - America/Porto_Velho + * `America/Puerto_Rico` - America/Puerto_Rico + * `America/Punta_Arenas` - America/Punta_Arenas + * `America/Rainy_River` - America/Rainy_River + * `America/Rankin_Inlet` - America/Rankin_Inlet + * `America/Recife` - America/Recife + * `America/Regina` - America/Regina + * `America/Resolute` - America/Resolute + * `America/Rio_Branco` - America/Rio_Branco + * `America/Rosario` - America/Rosario + * `America/Santa_Isabel` - America/Santa_Isabel + * `America/Santarem` - America/Santarem + * `America/Santiago` - America/Santiago + * `America/Santo_Domingo` - America/Santo_Domingo + * `America/Sao_Paulo` - America/Sao_Paulo + * `America/Scoresbysund` - America/Scoresbysund + * `America/Shiprock` - America/Shiprock + * `America/Sitka` - America/Sitka + * `America/St_Barthelemy` - America/St_Barthelemy + * `America/St_Johns` - America/St_Johns + * `America/St_Kitts` - America/St_Kitts + * `America/St_Lucia` - America/St_Lucia + * `America/St_Thomas` - America/St_Thomas + * `America/St_Vincent` - America/St_Vincent + * `America/Swift_Current` - America/Swift_Current + * `America/Tegucigalpa` - America/Tegucigalpa + * `America/Thule` - America/Thule + * `America/Thunder_Bay` - America/Thunder_Bay + * `America/Tijuana` - America/Tijuana + * `America/Toronto` - America/Toronto + * `America/Tortola` - America/Tortola + * `America/Vancouver` - America/Vancouver + * `America/Virgin` - America/Virgin + * `America/Whitehorse` - America/Whitehorse + * `America/Winnipeg` - America/Winnipeg + * `America/Yakutat` - America/Yakutat + * `America/Yellowknife` - America/Yellowknife + * `Antarctica/Casey` - Antarctica/Casey + * `Antarctica/Davis` - Antarctica/Davis + * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville + * `Antarctica/Macquarie` - Antarctica/Macquarie + * `Antarctica/Mawson` - Antarctica/Mawson + * `Antarctica/McMurdo` - Antarctica/McMurdo + * `Antarctica/Palmer` - Antarctica/Palmer + * `Antarctica/Rothera` - Antarctica/Rothera + * `Antarctica/South_Pole` - Antarctica/South_Pole + * `Antarctica/Syowa` - Antarctica/Syowa + * `Antarctica/Troll` - Antarctica/Troll + * `Antarctica/Vostok` - Antarctica/Vostok + * `Arctic/Longyearbyen` - Arctic/Longyearbyen + * `Asia/Aden` - Asia/Aden + * `Asia/Almaty` - Asia/Almaty + * `Asia/Amman` - Asia/Amman + * `Asia/Anadyr` - Asia/Anadyr + * `Asia/Aqtau` - Asia/Aqtau + * `Asia/Aqtobe` - Asia/Aqtobe + * `Asia/Ashgabat` - Asia/Ashgabat + * `Asia/Ashkhabad` - Asia/Ashkhabad + * `Asia/Atyrau` - Asia/Atyrau + * `Asia/Baghdad` - Asia/Baghdad + * `Asia/Bahrain` - Asia/Bahrain + * `Asia/Baku` - Asia/Baku + * `Asia/Bangkok` - Asia/Bangkok + * `Asia/Barnaul` - Asia/Barnaul + * `Asia/Beirut` - Asia/Beirut + * `Asia/Bishkek` - Asia/Bishkek + * `Asia/Brunei` - Asia/Brunei + * `Asia/Calcutta` - Asia/Calcutta + * `Asia/Chita` - Asia/Chita + * `Asia/Choibalsan` - Asia/Choibalsan + * `Asia/Chongqing` - Asia/Chongqing + * `Asia/Chungking` - Asia/Chungking + * `Asia/Colombo` - Asia/Colombo + * `Asia/Dacca` - Asia/Dacca + * `Asia/Damascus` - Asia/Damascus + * `Asia/Dhaka` - Asia/Dhaka + * `Asia/Dili` - Asia/Dili + * `Asia/Dubai` - Asia/Dubai + * `Asia/Dushanbe` - Asia/Dushanbe + * `Asia/Famagusta` - Asia/Famagusta + * `Asia/Gaza` - Asia/Gaza + * `Asia/Harbin` - Asia/Harbin + * `Asia/Hebron` - Asia/Hebron + * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh + * `Asia/Hong_Kong` - Asia/Hong_Kong + * `Asia/Hovd` - Asia/Hovd + * `Asia/Irkutsk` - Asia/Irkutsk + * `Asia/Istanbul` - Asia/Istanbul + * `Asia/Jakarta` - Asia/Jakarta + * `Asia/Jayapura` - Asia/Jayapura + * `Asia/Jerusalem` - Asia/Jerusalem + * `Asia/Kabul` - Asia/Kabul + * `Asia/Kamchatka` - Asia/Kamchatka + * `Asia/Karachi` - Asia/Karachi + * `Asia/Kashgar` - Asia/Kashgar + * `Asia/Kathmandu` - Asia/Kathmandu + * `Asia/Katmandu` - Asia/Katmandu + * `Asia/Khandyga` - Asia/Khandyga + * `Asia/Kolkata` - Asia/Kolkata + * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk + * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur + * `Asia/Kuching` - Asia/Kuching + * `Asia/Kuwait` - Asia/Kuwait + * `Asia/Macao` - Asia/Macao + * `Asia/Macau` - Asia/Macau + * `Asia/Magadan` - Asia/Magadan + * `Asia/Makassar` - Asia/Makassar + * `Asia/Manila` - Asia/Manila + * `Asia/Muscat` - Asia/Muscat + * `Asia/Nicosia` - Asia/Nicosia + * `Asia/Novokuznetsk` - Asia/Novokuznetsk + * `Asia/Novosibirsk` - Asia/Novosibirsk + * `Asia/Omsk` - Asia/Omsk + * `Asia/Oral` - Asia/Oral + * `Asia/Phnom_Penh` - Asia/Phnom_Penh + * `Asia/Pontianak` - Asia/Pontianak + * `Asia/Pyongyang` - Asia/Pyongyang + * `Asia/Qatar` - Asia/Qatar + * `Asia/Qostanay` - Asia/Qostanay + * `Asia/Qyzylorda` - Asia/Qyzylorda + * `Asia/Rangoon` - Asia/Rangoon + * `Asia/Riyadh` - Asia/Riyadh + * `Asia/Saigon` - Asia/Saigon + * `Asia/Sakhalin` - Asia/Sakhalin + * `Asia/Samarkand` - Asia/Samarkand + * `Asia/Seoul` - Asia/Seoul + * `Asia/Shanghai` - Asia/Shanghai + * `Asia/Singapore` - Asia/Singapore + * `Asia/Srednekolymsk` - Asia/Srednekolymsk + * `Asia/Taipei` - Asia/Taipei + * `Asia/Tashkent` - Asia/Tashkent + * `Asia/Tbilisi` - Asia/Tbilisi + * `Asia/Tehran` - Asia/Tehran + * `Asia/Tel_Aviv` - Asia/Tel_Aviv + * `Asia/Thimbu` - Asia/Thimbu + * `Asia/Thimphu` - Asia/Thimphu + * `Asia/Tokyo` - Asia/Tokyo + * `Asia/Tomsk` - Asia/Tomsk + * `Asia/Ujung_Pandang` - Asia/Ujung_Pandang + * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar + * `Asia/Ulan_Bator` - Asia/Ulan_Bator + * `Asia/Urumqi` - Asia/Urumqi + * `Asia/Ust-Nera` - Asia/Ust-Nera + * `Asia/Vientiane` - Asia/Vientiane + * `Asia/Vladivostok` - Asia/Vladivostok + * `Asia/Yakutsk` - Asia/Yakutsk + * `Asia/Yangon` - Asia/Yangon + * `Asia/Yekaterinburg` - Asia/Yekaterinburg + * `Asia/Yerevan` - Asia/Yerevan + * `Atlantic/Azores` - Atlantic/Azores + * `Atlantic/Bermuda` - Atlantic/Bermuda + * `Atlantic/Canary` - Atlantic/Canary + * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde + * `Atlantic/Faeroe` - Atlantic/Faeroe + * `Atlantic/Faroe` - Atlantic/Faroe + * `Atlantic/Jan_Mayen` - Atlantic/Jan_Mayen + * `Atlantic/Madeira` - Atlantic/Madeira + * `Atlantic/Reykjavik` - Atlantic/Reykjavik + * `Atlantic/South_Georgia` - Atlantic/South_Georgia + * `Atlantic/St_Helena` - Atlantic/St_Helena + * `Atlantic/Stanley` - Atlantic/Stanley + * `Australia/ACT` - Australia/ACT + * `Australia/Adelaide` - Australia/Adelaide + * `Australia/Brisbane` - Australia/Brisbane + * `Australia/Broken_Hill` - Australia/Broken_Hill + * `Australia/Canberra` - Australia/Canberra + * `Australia/Currie` - Australia/Currie + * `Australia/Darwin` - Australia/Darwin + * `Australia/Eucla` - Australia/Eucla + * `Australia/Hobart` - Australia/Hobart + * `Australia/LHI` - Australia/LHI + * `Australia/Lindeman` - Australia/Lindeman + * `Australia/Lord_Howe` - Australia/Lord_Howe + * `Australia/Melbourne` - Australia/Melbourne + * `Australia/NSW` - Australia/NSW + * `Australia/North` - Australia/North + * `Australia/Perth` - Australia/Perth + * `Australia/Queensland` - Australia/Queensland + * `Australia/South` - Australia/South + * `Australia/Sydney` - Australia/Sydney + * `Australia/Tasmania` - Australia/Tasmania + * `Australia/Victoria` - Australia/Victoria + * `Australia/West` - Australia/West + * `Australia/Yancowinna` - Australia/Yancowinna + * `Brazil/Acre` - Brazil/Acre + * `Brazil/DeNoronha` - Brazil/DeNoronha + * `Brazil/East` - Brazil/East + * `Brazil/West` - Brazil/West + * `CET` - CET + * `CST6CDT` - CST6CDT + * `Canada/Atlantic` - Canada/Atlantic + * `Canada/Central` - Canada/Central + * `Canada/Eastern` - Canada/Eastern + * `Canada/Mountain` - Canada/Mountain + * `Canada/Newfoundland` - Canada/Newfoundland + * `Canada/Pacific` - Canada/Pacific + * `Canada/Saskatchewan` - Canada/Saskatchewan + * `Canada/Yukon` - Canada/Yukon + * `Chile/Continental` - Chile/Continental + * `Chile/EasterIsland` - Chile/EasterIsland + * `Cuba` - Cuba + * `EET` - EET + * `EST` - EST + * `EST5EDT` - EST5EDT + * `Egypt` - Egypt + * `Eire` - Eire + * `Etc/GMT` - Etc/GMT + * `Etc/GMT+0` - Etc/GMT+0 + * `Etc/GMT+1` - Etc/GMT+1 + * `Etc/GMT+10` - Etc/GMT+10 + * `Etc/GMT+11` - Etc/GMT+11 + * `Etc/GMT+12` - Etc/GMT+12 + * `Etc/GMT+2` - Etc/GMT+2 + * `Etc/GMT+3` - Etc/GMT+3 + * `Etc/GMT+4` - Etc/GMT+4 + * `Etc/GMT+5` - Etc/GMT+5 + * `Etc/GMT+6` - Etc/GMT+6 + * `Etc/GMT+7` - Etc/GMT+7 + * `Etc/GMT+8` - Etc/GMT+8 + * `Etc/GMT+9` - Etc/GMT+9 + * `Etc/GMT-0` - Etc/GMT-0 + * `Etc/GMT-1` - Etc/GMT-1 + * `Etc/GMT-10` - Etc/GMT-10 + * `Etc/GMT-11` - Etc/GMT-11 + * `Etc/GMT-12` - Etc/GMT-12 + * `Etc/GMT-13` - Etc/GMT-13 + * `Etc/GMT-14` - Etc/GMT-14 + * `Etc/GMT-2` - Etc/GMT-2 + * `Etc/GMT-3` - Etc/GMT-3 + * `Etc/GMT-4` - Etc/GMT-4 + * `Etc/GMT-5` - Etc/GMT-5 + * `Etc/GMT-6` - Etc/GMT-6 + * `Etc/GMT-7` - Etc/GMT-7 + * `Etc/GMT-8` - Etc/GMT-8 + * `Etc/GMT-9` - Etc/GMT-9 + * `Etc/GMT0` - Etc/GMT0 + * `Etc/Greenwich` - Etc/Greenwich + * `Etc/UCT` - Etc/UCT + * `Etc/UTC` - Etc/UTC + * `Etc/Universal` - Etc/Universal + * `Etc/Zulu` - Etc/Zulu + * `Europe/Amsterdam` - Europe/Amsterdam + * `Europe/Andorra` - Europe/Andorra + * `Europe/Astrakhan` - Europe/Astrakhan + * `Europe/Athens` - Europe/Athens + * `Europe/Belfast` - Europe/Belfast + * `Europe/Belgrade` - Europe/Belgrade + * `Europe/Berlin` - Europe/Berlin + * `Europe/Bratislava` - Europe/Bratislava + * `Europe/Brussels` - Europe/Brussels + * `Europe/Bucharest` - Europe/Bucharest + * `Europe/Budapest` - Europe/Budapest + * `Europe/Busingen` - Europe/Busingen + * `Europe/Chisinau` - Europe/Chisinau + * `Europe/Copenhagen` - Europe/Copenhagen + * `Europe/Dublin` - Europe/Dublin + * `Europe/Gibraltar` - Europe/Gibraltar + * `Europe/Guernsey` - Europe/Guernsey + * `Europe/Helsinki` - Europe/Helsinki + * `Europe/Isle_of_Man` - Europe/Isle_of_Man + * `Europe/Istanbul` - Europe/Istanbul + * `Europe/Jersey` - Europe/Jersey + * `Europe/Kaliningrad` - Europe/Kaliningrad + * `Europe/Kiev` - Europe/Kiev + * `Europe/Kirov` - Europe/Kirov + * `Europe/Kyiv` - Europe/Kyiv + * `Europe/Lisbon` - Europe/Lisbon + * `Europe/Ljubljana` - Europe/Ljubljana + * `Europe/London` - Europe/London + * `Europe/Luxembourg` - Europe/Luxembourg + * `Europe/Madrid` - Europe/Madrid + * `Europe/Malta` - Europe/Malta + * `Europe/Mariehamn` - Europe/Mariehamn + * `Europe/Minsk` - Europe/Minsk + * `Europe/Monaco` - Europe/Monaco + * `Europe/Moscow` - Europe/Moscow + * `Europe/Nicosia` - Europe/Nicosia + * `Europe/Oslo` - Europe/Oslo + * `Europe/Paris` - Europe/Paris + * `Europe/Podgorica` - Europe/Podgorica + * `Europe/Prague` - Europe/Prague + * `Europe/Riga` - Europe/Riga + * `Europe/Rome` - Europe/Rome + * `Europe/Samara` - Europe/Samara + * `Europe/San_Marino` - Europe/San_Marino + * `Europe/Sarajevo` - Europe/Sarajevo + * `Europe/Saratov` - Europe/Saratov + * `Europe/Simferopol` - Europe/Simferopol + * `Europe/Skopje` - Europe/Skopje + * `Europe/Sofia` - Europe/Sofia + * `Europe/Stockholm` - Europe/Stockholm + * `Europe/Tallinn` - Europe/Tallinn + * `Europe/Tirane` - Europe/Tirane + * `Europe/Tiraspol` - Europe/Tiraspol + * `Europe/Ulyanovsk` - Europe/Ulyanovsk + * `Europe/Uzhgorod` - Europe/Uzhgorod + * `Europe/Vaduz` - Europe/Vaduz + * `Europe/Vatican` - Europe/Vatican + * `Europe/Vienna` - Europe/Vienna + * `Europe/Vilnius` - Europe/Vilnius + * `Europe/Volgograd` - Europe/Volgograd + * `Europe/Warsaw` - Europe/Warsaw + * `Europe/Zagreb` - Europe/Zagreb + * `Europe/Zaporozhye` - Europe/Zaporozhye + * `Europe/Zurich` - Europe/Zurich + * `GB` - GB + * `GB-Eire` - GB-Eire + * `GMT` - GMT + * `GMT+0` - GMT+0 + * `GMT-0` - GMT-0 + * `GMT0` - GMT0 + * `Greenwich` - Greenwich + * `HST` - HST + * `Hongkong` - Hongkong + * `Iceland` - Iceland + * `Indian/Antananarivo` - Indian/Antananarivo + * `Indian/Chagos` - Indian/Chagos + * `Indian/Christmas` - Indian/Christmas + * `Indian/Cocos` - Indian/Cocos + * `Indian/Comoro` - Indian/Comoro + * `Indian/Kerguelen` - Indian/Kerguelen + * `Indian/Mahe` - Indian/Mahe + * `Indian/Maldives` - Indian/Maldives + * `Indian/Mauritius` - Indian/Mauritius + * `Indian/Mayotte` - Indian/Mayotte + * `Indian/Reunion` - Indian/Reunion + * `Iran` - Iran + * `Israel` - Israel + * `Jamaica` - Jamaica + * `Japan` - Japan + * `Kwajalein` - Kwajalein + * `Libya` - Libya + * `MET` - MET + * `MST` - MST + * `MST7MDT` - MST7MDT + * `Mexico/BajaNorte` - Mexico/BajaNorte + * `Mexico/BajaSur` - Mexico/BajaSur + * `Mexico/General` - Mexico/General + * `NZ` - NZ + * `NZ-CHAT` - NZ-CHAT + * `Navajo` - Navajo + * `PRC` - PRC + * `PST8PDT` - PST8PDT + * `Pacific/Apia` - Pacific/Apia + * `Pacific/Auckland` - Pacific/Auckland + * `Pacific/Bougainville` - Pacific/Bougainville + * `Pacific/Chatham` - Pacific/Chatham + * `Pacific/Chuuk` - Pacific/Chuuk + * `Pacific/Easter` - Pacific/Easter + * `Pacific/Efate` - Pacific/Efate + * `Pacific/Enderbury` - Pacific/Enderbury + * `Pacific/Fakaofo` - Pacific/Fakaofo + * `Pacific/Fiji` - Pacific/Fiji + * `Pacific/Funafuti` - Pacific/Funafuti + * `Pacific/Galapagos` - Pacific/Galapagos + * `Pacific/Gambier` - Pacific/Gambier + * `Pacific/Guadalcanal` - Pacific/Guadalcanal + * `Pacific/Guam` - Pacific/Guam + * `Pacific/Honolulu` - Pacific/Honolulu + * `Pacific/Johnston` - Pacific/Johnston + * `Pacific/Kanton` - Pacific/Kanton + * `Pacific/Kiritimati` - Pacific/Kiritimati + * `Pacific/Kosrae` - Pacific/Kosrae + * `Pacific/Kwajalein` - Pacific/Kwajalein + * `Pacific/Majuro` - Pacific/Majuro + * `Pacific/Marquesas` - Pacific/Marquesas + * `Pacific/Midway` - Pacific/Midway + * `Pacific/Nauru` - Pacific/Nauru + * `Pacific/Niue` - Pacific/Niue + * `Pacific/Norfolk` - Pacific/Norfolk + * `Pacific/Noumea` - Pacific/Noumea + * `Pacific/Pago_Pago` - Pacific/Pago_Pago + * `Pacific/Palau` - Pacific/Palau + * `Pacific/Pitcairn` - Pacific/Pitcairn + * `Pacific/Pohnpei` - Pacific/Pohnpei + * `Pacific/Ponape` - Pacific/Ponape + * `Pacific/Port_Moresby` - Pacific/Port_Moresby + * `Pacific/Rarotonga` - Pacific/Rarotonga + * `Pacific/Saipan` - Pacific/Saipan + * `Pacific/Samoa` - Pacific/Samoa + * `Pacific/Tahiti` - Pacific/Tahiti + * `Pacific/Tarawa` - Pacific/Tarawa + * `Pacific/Tongatapu` - Pacific/Tongatapu + * `Pacific/Truk` - Pacific/Truk + * `Pacific/Wake` - Pacific/Wake + * `Pacific/Wallis` - Pacific/Wallis + * `Pacific/Yap` - Pacific/Yap + * `Poland` - Poland + * `Portugal` - Portugal + * `ROC` - ROC + * `ROK` - ROK + * `Singapore` - Singapore + * `Turkey` - Turkey + * `UCT` - UCT + * `US/Alaska` - US/Alaska + * `US/Aleutian` - US/Aleutian + * `US/Arizona` - US/Arizona + * `US/Central` - US/Central + * `US/East-Indiana` - US/East-Indiana + * `US/Eastern` - US/Eastern + * `US/Hawaii` - US/Hawaii + * `US/Indiana-Starke` - US/Indiana-Starke + * `US/Michigan` - US/Michigan + * `US/Mountain` - US/Mountain + * `US/Pacific` - US/Pacific + * `US/Samoa` - US/Samoa + * `UTC` - UTC + * `Universal` - Universal + * `W-SU` - W-SU + * `WET` - WET + * `Zulu` - Zulu + x-spec-enum-id: cd9b66101aa181d2 + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + workspace: + type: string + format: uuid + readOnly: true + default_assignee: + type: string + format: uuid + nullable: true + project_lead: + type: string + format: uuid + nullable: true + cover_image_asset: + type: string + format: uuid + nullable: true + estimate: + type: string + format: uuid + nullable: true + default_state: + type: string + format: uuid + nullable: true + Project: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + total_members: + type: integer + readOnly: true + total_cycles: + type: integer + readOnly: true + total_modules: + type: integer + readOnly: true + is_member: + type: boolean + readOnly: true + sort_order: + type: number + format: double + readOnly: true + member_role: + type: integer + readOnly: true + is_deployed: + type: boolean + readOnly: true + cover_image_url: + type: string + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + readOnly: true + nullable: true + name: + type: string + title: Project Name + maxLength: 255 + description: + type: string + title: Project Description + description_text: + nullable: true + title: Project Description RT + description_html: + nullable: true + title: Project Description HTML + network: + enum: + - 0 + - 2 + type: integer + description: |- + * `0` - Secret + * `2` - Public + x-spec-enum-id: ff6cd64f49ca3db3 + minimum: 0 + maximum: 32767 + identifier: + type: string + title: Project Identifier + maxLength: 12 + emoji: + type: string + readOnly: true + nullable: true + icon_prop: + nullable: true + module_view: + type: boolean + cycle_view: + type: boolean + issue_views_view: + type: boolean + page_view: + type: boolean + intake_view: + type: boolean + is_time_tracking_enabled: + type: boolean + is_issue_type_enabled: + type: boolean + guest_view_all_features: + type: boolean + cover_image: + type: string + nullable: true + archive_in: + type: integer + maximum: 12 + minimum: 0 + close_in: + type: integer + maximum: 12 + minimum: 0 + logo_props: {} + archived_at: + type: string + format: date-time + nullable: true + timezone: + enum: + - Africa/Abidjan + - Africa/Accra + - Africa/Addis_Ababa + - Africa/Algiers + - Africa/Asmara + - Africa/Asmera + - Africa/Bamako + - Africa/Bangui + - Africa/Banjul + - Africa/Bissau + - Africa/Blantyre + - Africa/Brazzaville + - Africa/Bujumbura + - Africa/Cairo + - Africa/Casablanca + - Africa/Ceuta + - Africa/Conakry + - Africa/Dakar + - Africa/Dar_es_Salaam + - Africa/Djibouti + - Africa/Douala + - Africa/El_Aaiun + - Africa/Freetown + - Africa/Gaborone + - Africa/Harare + - Africa/Johannesburg + - Africa/Juba + - Africa/Kampala + - Africa/Khartoum + - Africa/Kigali + - Africa/Kinshasa + - Africa/Lagos + - Africa/Libreville + - Africa/Lome + - Africa/Luanda + - Africa/Lubumbashi + - Africa/Lusaka + - Africa/Malabo + - Africa/Maputo + - Africa/Maseru + - Africa/Mbabane + - Africa/Mogadishu + - Africa/Monrovia + - Africa/Nairobi + - Africa/Ndjamena + - Africa/Niamey + - Africa/Nouakchott + - Africa/Ouagadougou + - Africa/Porto-Novo + - Africa/Sao_Tome + - Africa/Timbuktu + - Africa/Tripoli + - Africa/Tunis + - Africa/Windhoek + - America/Adak + - America/Anchorage + - America/Anguilla + - America/Antigua + - America/Araguaina + - America/Argentina/Buenos_Aires + - America/Argentina/Catamarca + - America/Argentina/ComodRivadavia + - America/Argentina/Cordoba + - America/Argentina/Jujuy + - America/Argentina/La_Rioja + - America/Argentina/Mendoza + - America/Argentina/Rio_Gallegos + - America/Argentina/Salta + - America/Argentina/San_Juan + - America/Argentina/San_Luis + - America/Argentina/Tucuman + - America/Argentina/Ushuaia + - America/Aruba + - America/Asuncion + - America/Atikokan + - America/Atka + - America/Bahia + - America/Bahia_Banderas + - America/Barbados + - America/Belem + - America/Belize + - America/Blanc-Sablon + - America/Boa_Vista + - America/Bogota + - America/Boise + - America/Buenos_Aires + - America/Cambridge_Bay + - America/Campo_Grande + - America/Cancun + - America/Caracas + - America/Catamarca + - America/Cayenne + - America/Cayman + - America/Chicago + - America/Chihuahua + - America/Ciudad_Juarez + - America/Coral_Harbour + - America/Cordoba + - America/Costa_Rica + - America/Creston + - America/Cuiaba + - America/Curacao + - America/Danmarkshavn + - America/Dawson + - America/Dawson_Creek + - America/Denver + - America/Detroit + - America/Dominica + - America/Edmonton + - America/Eirunepe + - America/El_Salvador + - America/Ensenada + - America/Fort_Nelson + - America/Fort_Wayne + - America/Fortaleza + - America/Glace_Bay + - America/Godthab + - America/Goose_Bay + - America/Grand_Turk + - America/Grenada + - America/Guadeloupe + - America/Guatemala + - America/Guayaquil + - America/Guyana + - America/Halifax + - America/Havana + - America/Hermosillo + - America/Indiana/Indianapolis + - America/Indiana/Knox + - America/Indiana/Marengo + - America/Indiana/Petersburg + - America/Indiana/Tell_City + - America/Indiana/Vevay + - America/Indiana/Vincennes + - America/Indiana/Winamac + - America/Indianapolis + - America/Inuvik + - America/Iqaluit + - America/Jamaica + - America/Jujuy + - America/Juneau + - America/Kentucky/Louisville + - America/Kentucky/Monticello + - America/Knox_IN + - America/Kralendijk + - America/La_Paz + - America/Lima + - America/Los_Angeles + - America/Louisville + - America/Lower_Princes + - America/Maceio + - America/Managua + - America/Manaus + - America/Marigot + - America/Martinique + - America/Matamoros + - America/Mazatlan + - America/Mendoza + - America/Menominee + - America/Merida + - America/Metlakatla + - America/Mexico_City + - America/Miquelon + - America/Moncton + - America/Monterrey + - America/Montevideo + - America/Montreal + - America/Montserrat + - America/Nassau + - America/New_York + - America/Nipigon + - America/Nome + - America/Noronha + - America/North_Dakota/Beulah + - America/North_Dakota/Center + - America/North_Dakota/New_Salem + - America/Nuuk + - America/Ojinaga + - America/Panama + - America/Pangnirtung + - America/Paramaribo + - America/Phoenix + - America/Port-au-Prince + - America/Port_of_Spain + - America/Porto_Acre + - America/Porto_Velho + - America/Puerto_Rico + - America/Punta_Arenas + - America/Rainy_River + - America/Rankin_Inlet + - America/Recife + - America/Regina + - America/Resolute + - America/Rio_Branco + - America/Rosario + - America/Santa_Isabel + - America/Santarem + - America/Santiago + - America/Santo_Domingo + - America/Sao_Paulo + - America/Scoresbysund + - America/Shiprock + - America/Sitka + - America/St_Barthelemy + - America/St_Johns + - America/St_Kitts + - America/St_Lucia + - America/St_Thomas + - America/St_Vincent + - America/Swift_Current + - America/Tegucigalpa + - America/Thule + - America/Thunder_Bay + - America/Tijuana + - America/Toronto + - America/Tortola + - America/Vancouver + - America/Virgin + - America/Whitehorse + - America/Winnipeg + - America/Yakutat + - America/Yellowknife + - Antarctica/Casey + - Antarctica/Davis + - Antarctica/DumontDUrville + - Antarctica/Macquarie + - Antarctica/Mawson + - Antarctica/McMurdo + - Antarctica/Palmer + - Antarctica/Rothera + - Antarctica/South_Pole + - Antarctica/Syowa + - Antarctica/Troll + - Antarctica/Vostok + - Arctic/Longyearbyen + - Asia/Aden + - Asia/Almaty + - Asia/Amman + - Asia/Anadyr + - Asia/Aqtau + - Asia/Aqtobe + - Asia/Ashgabat + - Asia/Ashkhabad + - Asia/Atyrau + - Asia/Baghdad + - Asia/Bahrain + - Asia/Baku + - Asia/Bangkok + - Asia/Barnaul + - Asia/Beirut + - Asia/Bishkek + - Asia/Brunei + - Asia/Calcutta + - Asia/Chita + - Asia/Choibalsan + - Asia/Chongqing + - Asia/Chungking + - Asia/Colombo + - Asia/Dacca + - Asia/Damascus + - Asia/Dhaka + - Asia/Dili + - Asia/Dubai + - Asia/Dushanbe + - Asia/Famagusta + - Asia/Gaza + - Asia/Harbin + - Asia/Hebron + - Asia/Ho_Chi_Minh + - Asia/Hong_Kong + - Asia/Hovd + - Asia/Irkutsk + - Asia/Istanbul + - Asia/Jakarta + - Asia/Jayapura + - Asia/Jerusalem + - Asia/Kabul + - Asia/Kamchatka + - Asia/Karachi + - Asia/Kashgar + - Asia/Kathmandu + - Asia/Katmandu + - Asia/Khandyga + - Asia/Kolkata + - Asia/Krasnoyarsk + - Asia/Kuala_Lumpur + - Asia/Kuching + - Asia/Kuwait + - Asia/Macao + - Asia/Macau + - Asia/Magadan + - Asia/Makassar + - Asia/Manila + - Asia/Muscat + - Asia/Nicosia + - Asia/Novokuznetsk + - Asia/Novosibirsk + - Asia/Omsk + - Asia/Oral + - Asia/Phnom_Penh + - Asia/Pontianak + - Asia/Pyongyang + - Asia/Qatar + - Asia/Qostanay + - Asia/Qyzylorda + - Asia/Rangoon + - Asia/Riyadh + - Asia/Saigon + - Asia/Sakhalin + - Asia/Samarkand + - Asia/Seoul + - Asia/Shanghai + - Asia/Singapore + - Asia/Srednekolymsk + - Asia/Taipei + - Asia/Tashkent + - Asia/Tbilisi + - Asia/Tehran + - Asia/Tel_Aviv + - Asia/Thimbu + - Asia/Thimphu + - Asia/Tokyo + - Asia/Tomsk + - Asia/Ujung_Pandang + - Asia/Ulaanbaatar + - Asia/Ulan_Bator + - Asia/Urumqi + - Asia/Ust-Nera + - Asia/Vientiane + - Asia/Vladivostok + - Asia/Yakutsk + - Asia/Yangon + - Asia/Yekaterinburg + - Asia/Yerevan + - Atlantic/Azores + - Atlantic/Bermuda + - Atlantic/Canary + - Atlantic/Cape_Verde + - Atlantic/Faeroe + - Atlantic/Faroe + - Atlantic/Jan_Mayen + - Atlantic/Madeira + - Atlantic/Reykjavik + - Atlantic/South_Georgia + - Atlantic/St_Helena + - Atlantic/Stanley + - Australia/ACT + - Australia/Adelaide + - Australia/Brisbane + - Australia/Broken_Hill + - Australia/Canberra + - Australia/Currie + - Australia/Darwin + - Australia/Eucla + - Australia/Hobart + - Australia/LHI + - Australia/Lindeman + - Australia/Lord_Howe + - Australia/Melbourne + - Australia/NSW + - Australia/North + - Australia/Perth + - Australia/Queensland + - Australia/South + - Australia/Sydney + - Australia/Tasmania + - Australia/Victoria + - Australia/West + - Australia/Yancowinna + - Brazil/Acre + - Brazil/DeNoronha + - Brazil/East + - Brazil/West + - CET + - CST6CDT + - Canada/Atlantic + - Canada/Central + - Canada/Eastern + - Canada/Mountain + - Canada/Newfoundland + - Canada/Pacific + - Canada/Saskatchewan + - Canada/Yukon + - Chile/Continental + - Chile/EasterIsland + - Cuba + - EET + - EST + - EST5EDT + - Egypt + - Eire + - Etc/GMT + - Etc/GMT+0 + - Etc/GMT+1 + - Etc/GMT+10 + - Etc/GMT+11 + - Etc/GMT+12 + - Etc/GMT+2 + - Etc/GMT+3 + - Etc/GMT+4 + - Etc/GMT+5 + - Etc/GMT+6 + - Etc/GMT+7 + - Etc/GMT+8 + - Etc/GMT+9 + - Etc/GMT-0 + - Etc/GMT-1 + - Etc/GMT-10 + - Etc/GMT-11 + - Etc/GMT-12 + - Etc/GMT-13 + - Etc/GMT-14 + - Etc/GMT-2 + - Etc/GMT-3 + - Etc/GMT-4 + - Etc/GMT-5 + - Etc/GMT-6 + - Etc/GMT-7 + - Etc/GMT-8 + - Etc/GMT-9 + - Etc/GMT0 + - Etc/Greenwich + - Etc/UCT + - Etc/UTC + - Etc/Universal + - Etc/Zulu + - Europe/Amsterdam + - Europe/Andorra + - Europe/Astrakhan + - Europe/Athens + - Europe/Belfast + - Europe/Belgrade + - Europe/Berlin + - Europe/Bratislava + - Europe/Brussels + - Europe/Bucharest + - Europe/Budapest + - Europe/Busingen + - Europe/Chisinau + - Europe/Copenhagen + - Europe/Dublin + - Europe/Gibraltar + - Europe/Guernsey + - Europe/Helsinki + - Europe/Isle_of_Man + - Europe/Istanbul + - Europe/Jersey + - Europe/Kaliningrad + - Europe/Kiev + - Europe/Kirov + - Europe/Kyiv + - Europe/Lisbon + - Europe/Ljubljana + - Europe/London + - Europe/Luxembourg + - Europe/Madrid + - Europe/Malta + - Europe/Mariehamn + - Europe/Minsk + - Europe/Monaco + - Europe/Moscow + - Europe/Nicosia + - Europe/Oslo + - Europe/Paris + - Europe/Podgorica + - Europe/Prague + - Europe/Riga + - Europe/Rome + - Europe/Samara + - Europe/San_Marino + - Europe/Sarajevo + - Europe/Saratov + - Europe/Simferopol + - Europe/Skopje + - Europe/Sofia + - Europe/Stockholm + - Europe/Tallinn + - Europe/Tirane + - Europe/Tiraspol + - Europe/Ulyanovsk + - Europe/Uzhgorod + - Europe/Vaduz + - Europe/Vatican + - Europe/Vienna + - Europe/Vilnius + - Europe/Volgograd + - Europe/Warsaw + - Europe/Zagreb + - Europe/Zaporozhye + - Europe/Zurich + - GB + - GB-Eire + - GMT + - GMT+0 + - GMT-0 + - GMT0 + - Greenwich + - HST + - Hongkong + - Iceland + - Indian/Antananarivo + - Indian/Chagos + - Indian/Christmas + - Indian/Cocos + - Indian/Comoro + - Indian/Kerguelen + - Indian/Mahe + - Indian/Maldives + - Indian/Mauritius + - Indian/Mayotte + - Indian/Reunion + - Iran + - Israel + - Jamaica + - Japan + - Kwajalein + - Libya + - MET + - MST + - MST7MDT + - Mexico/BajaNorte + - Mexico/BajaSur + - Mexico/General + - NZ + - NZ-CHAT + - Navajo + - PRC + - PST8PDT + - Pacific/Apia + - Pacific/Auckland + - Pacific/Bougainville + - Pacific/Chatham + - Pacific/Chuuk + - Pacific/Easter + - Pacific/Efate + - Pacific/Enderbury + - Pacific/Fakaofo + - Pacific/Fiji + - Pacific/Funafuti + - Pacific/Galapagos + - Pacific/Gambier + - Pacific/Guadalcanal + - Pacific/Guam + - Pacific/Honolulu + - Pacific/Johnston + - Pacific/Kanton + - Pacific/Kiritimati + - Pacific/Kosrae + - Pacific/Kwajalein + - Pacific/Majuro + - Pacific/Marquesas + - Pacific/Midway + - Pacific/Nauru + - Pacific/Niue + - Pacific/Norfolk + - Pacific/Noumea + - Pacific/Pago_Pago + - Pacific/Palau + - Pacific/Pitcairn + - Pacific/Pohnpei + - Pacific/Ponape + - Pacific/Port_Moresby + - Pacific/Rarotonga + - Pacific/Saipan + - Pacific/Samoa + - Pacific/Tahiti + - Pacific/Tarawa + - Pacific/Tongatapu + - Pacific/Truk + - Pacific/Wake + - Pacific/Wallis + - Pacific/Yap + - Poland + - Portugal + - ROC + - ROK + - Singapore + - Turkey + - UCT + - US/Alaska + - US/Aleutian + - US/Arizona + - US/Central + - US/East-Indiana + - US/Eastern + - US/Hawaii + - US/Indiana-Starke + - US/Michigan + - US/Mountain + - US/Pacific + - US/Samoa + - UTC + - Universal + - W-SU + - WET + - Zulu + type: string + description: |- + * `Africa/Abidjan` - Africa/Abidjan + * `Africa/Accra` - Africa/Accra + * `Africa/Addis_Ababa` - Africa/Addis_Ababa + * `Africa/Algiers` - Africa/Algiers + * `Africa/Asmara` - Africa/Asmara + * `Africa/Asmera` - Africa/Asmera + * `Africa/Bamako` - Africa/Bamako + * `Africa/Bangui` - Africa/Bangui + * `Africa/Banjul` - Africa/Banjul + * `Africa/Bissau` - Africa/Bissau + * `Africa/Blantyre` - Africa/Blantyre + * `Africa/Brazzaville` - Africa/Brazzaville + * `Africa/Bujumbura` - Africa/Bujumbura + * `Africa/Cairo` - Africa/Cairo + * `Africa/Casablanca` - Africa/Casablanca + * `Africa/Ceuta` - Africa/Ceuta + * `Africa/Conakry` - Africa/Conakry + * `Africa/Dakar` - Africa/Dakar + * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam + * `Africa/Djibouti` - Africa/Djibouti + * `Africa/Douala` - Africa/Douala + * `Africa/El_Aaiun` - Africa/El_Aaiun + * `Africa/Freetown` - Africa/Freetown + * `Africa/Gaborone` - Africa/Gaborone + * `Africa/Harare` - Africa/Harare + * `Africa/Johannesburg` - Africa/Johannesburg + * `Africa/Juba` - Africa/Juba + * `Africa/Kampala` - Africa/Kampala + * `Africa/Khartoum` - Africa/Khartoum + * `Africa/Kigali` - Africa/Kigali + * `Africa/Kinshasa` - Africa/Kinshasa + * `Africa/Lagos` - Africa/Lagos + * `Africa/Libreville` - Africa/Libreville + * `Africa/Lome` - Africa/Lome + * `Africa/Luanda` - Africa/Luanda + * `Africa/Lubumbashi` - Africa/Lubumbashi + * `Africa/Lusaka` - Africa/Lusaka + * `Africa/Malabo` - Africa/Malabo + * `Africa/Maputo` - Africa/Maputo + * `Africa/Maseru` - Africa/Maseru + * `Africa/Mbabane` - Africa/Mbabane + * `Africa/Mogadishu` - Africa/Mogadishu + * `Africa/Monrovia` - Africa/Monrovia + * `Africa/Nairobi` - Africa/Nairobi + * `Africa/Ndjamena` - Africa/Ndjamena + * `Africa/Niamey` - Africa/Niamey + * `Africa/Nouakchott` - Africa/Nouakchott + * `Africa/Ouagadougou` - Africa/Ouagadougou + * `Africa/Porto-Novo` - Africa/Porto-Novo + * `Africa/Sao_Tome` - Africa/Sao_Tome + * `Africa/Timbuktu` - Africa/Timbuktu + * `Africa/Tripoli` - Africa/Tripoli + * `Africa/Tunis` - Africa/Tunis + * `Africa/Windhoek` - Africa/Windhoek + * `America/Adak` - America/Adak + * `America/Anchorage` - America/Anchorage + * `America/Anguilla` - America/Anguilla + * `America/Antigua` - America/Antigua + * `America/Araguaina` - America/Araguaina + * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires + * `America/Argentina/Catamarca` - America/Argentina/Catamarca + * `America/Argentina/ComodRivadavia` - America/Argentina/ComodRivadavia + * `America/Argentina/Cordoba` - America/Argentina/Cordoba + * `America/Argentina/Jujuy` - America/Argentina/Jujuy + * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja + * `America/Argentina/Mendoza` - America/Argentina/Mendoza + * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos + * `America/Argentina/Salta` - America/Argentina/Salta + * `America/Argentina/San_Juan` - America/Argentina/San_Juan + * `America/Argentina/San_Luis` - America/Argentina/San_Luis + * `America/Argentina/Tucuman` - America/Argentina/Tucuman + * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia + * `America/Aruba` - America/Aruba + * `America/Asuncion` - America/Asuncion + * `America/Atikokan` - America/Atikokan + * `America/Atka` - America/Atka + * `America/Bahia` - America/Bahia + * `America/Bahia_Banderas` - America/Bahia_Banderas + * `America/Barbados` - America/Barbados + * `America/Belem` - America/Belem + * `America/Belize` - America/Belize + * `America/Blanc-Sablon` - America/Blanc-Sablon + * `America/Boa_Vista` - America/Boa_Vista + * `America/Bogota` - America/Bogota + * `America/Boise` - America/Boise + * `America/Buenos_Aires` - America/Buenos_Aires + * `America/Cambridge_Bay` - America/Cambridge_Bay + * `America/Campo_Grande` - America/Campo_Grande + * `America/Cancun` - America/Cancun + * `America/Caracas` - America/Caracas + * `America/Catamarca` - America/Catamarca + * `America/Cayenne` - America/Cayenne + * `America/Cayman` - America/Cayman + * `America/Chicago` - America/Chicago + * `America/Chihuahua` - America/Chihuahua + * `America/Ciudad_Juarez` - America/Ciudad_Juarez + * `America/Coral_Harbour` - America/Coral_Harbour + * `America/Cordoba` - America/Cordoba + * `America/Costa_Rica` - America/Costa_Rica + * `America/Creston` - America/Creston + * `America/Cuiaba` - America/Cuiaba + * `America/Curacao` - America/Curacao + * `America/Danmarkshavn` - America/Danmarkshavn + * `America/Dawson` - America/Dawson + * `America/Dawson_Creek` - America/Dawson_Creek + * `America/Denver` - America/Denver + * `America/Detroit` - America/Detroit + * `America/Dominica` - America/Dominica + * `America/Edmonton` - America/Edmonton + * `America/Eirunepe` - America/Eirunepe + * `America/El_Salvador` - America/El_Salvador + * `America/Ensenada` - America/Ensenada + * `America/Fort_Nelson` - America/Fort_Nelson + * `America/Fort_Wayne` - America/Fort_Wayne + * `America/Fortaleza` - America/Fortaleza + * `America/Glace_Bay` - America/Glace_Bay + * `America/Godthab` - America/Godthab + * `America/Goose_Bay` - America/Goose_Bay + * `America/Grand_Turk` - America/Grand_Turk + * `America/Grenada` - America/Grenada + * `America/Guadeloupe` - America/Guadeloupe + * `America/Guatemala` - America/Guatemala + * `America/Guayaquil` - America/Guayaquil + * `America/Guyana` - America/Guyana + * `America/Halifax` - America/Halifax + * `America/Havana` - America/Havana + * `America/Hermosillo` - America/Hermosillo + * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis + * `America/Indiana/Knox` - America/Indiana/Knox + * `America/Indiana/Marengo` - America/Indiana/Marengo + * `America/Indiana/Petersburg` - America/Indiana/Petersburg + * `America/Indiana/Tell_City` - America/Indiana/Tell_City + * `America/Indiana/Vevay` - America/Indiana/Vevay + * `America/Indiana/Vincennes` - America/Indiana/Vincennes + * `America/Indiana/Winamac` - America/Indiana/Winamac + * `America/Indianapolis` - America/Indianapolis + * `America/Inuvik` - America/Inuvik + * `America/Iqaluit` - America/Iqaluit + * `America/Jamaica` - America/Jamaica + * `America/Jujuy` - America/Jujuy + * `America/Juneau` - America/Juneau + * `America/Kentucky/Louisville` - America/Kentucky/Louisville + * `America/Kentucky/Monticello` - America/Kentucky/Monticello + * `America/Knox_IN` - America/Knox_IN + * `America/Kralendijk` - America/Kralendijk + * `America/La_Paz` - America/La_Paz + * `America/Lima` - America/Lima + * `America/Los_Angeles` - America/Los_Angeles + * `America/Louisville` - America/Louisville + * `America/Lower_Princes` - America/Lower_Princes + * `America/Maceio` - America/Maceio + * `America/Managua` - America/Managua + * `America/Manaus` - America/Manaus + * `America/Marigot` - America/Marigot + * `America/Martinique` - America/Martinique + * `America/Matamoros` - America/Matamoros + * `America/Mazatlan` - America/Mazatlan + * `America/Mendoza` - America/Mendoza + * `America/Menominee` - America/Menominee + * `America/Merida` - America/Merida + * `America/Metlakatla` - America/Metlakatla + * `America/Mexico_City` - America/Mexico_City + * `America/Miquelon` - America/Miquelon + * `America/Moncton` - America/Moncton + * `America/Monterrey` - America/Monterrey + * `America/Montevideo` - America/Montevideo + * `America/Montreal` - America/Montreal + * `America/Montserrat` - America/Montserrat + * `America/Nassau` - America/Nassau + * `America/New_York` - America/New_York + * `America/Nipigon` - America/Nipigon + * `America/Nome` - America/Nome + * `America/Noronha` - America/Noronha + * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah + * `America/North_Dakota/Center` - America/North_Dakota/Center + * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem + * `America/Nuuk` - America/Nuuk + * `America/Ojinaga` - America/Ojinaga + * `America/Panama` - America/Panama + * `America/Pangnirtung` - America/Pangnirtung + * `America/Paramaribo` - America/Paramaribo + * `America/Phoenix` - America/Phoenix + * `America/Port-au-Prince` - America/Port-au-Prince + * `America/Port_of_Spain` - America/Port_of_Spain + * `America/Porto_Acre` - America/Porto_Acre + * `America/Porto_Velho` - America/Porto_Velho + * `America/Puerto_Rico` - America/Puerto_Rico + * `America/Punta_Arenas` - America/Punta_Arenas + * `America/Rainy_River` - America/Rainy_River + * `America/Rankin_Inlet` - America/Rankin_Inlet + * `America/Recife` - America/Recife + * `America/Regina` - America/Regina + * `America/Resolute` - America/Resolute + * `America/Rio_Branco` - America/Rio_Branco + * `America/Rosario` - America/Rosario + * `America/Santa_Isabel` - America/Santa_Isabel + * `America/Santarem` - America/Santarem + * `America/Santiago` - America/Santiago + * `America/Santo_Domingo` - America/Santo_Domingo + * `America/Sao_Paulo` - America/Sao_Paulo + * `America/Scoresbysund` - America/Scoresbysund + * `America/Shiprock` - America/Shiprock + * `America/Sitka` - America/Sitka + * `America/St_Barthelemy` - America/St_Barthelemy + * `America/St_Johns` - America/St_Johns + * `America/St_Kitts` - America/St_Kitts + * `America/St_Lucia` - America/St_Lucia + * `America/St_Thomas` - America/St_Thomas + * `America/St_Vincent` - America/St_Vincent + * `America/Swift_Current` - America/Swift_Current + * `America/Tegucigalpa` - America/Tegucigalpa + * `America/Thule` - America/Thule + * `America/Thunder_Bay` - America/Thunder_Bay + * `America/Tijuana` - America/Tijuana + * `America/Toronto` - America/Toronto + * `America/Tortola` - America/Tortola + * `America/Vancouver` - America/Vancouver + * `America/Virgin` - America/Virgin + * `America/Whitehorse` - America/Whitehorse + * `America/Winnipeg` - America/Winnipeg + * `America/Yakutat` - America/Yakutat + * `America/Yellowknife` - America/Yellowknife + * `Antarctica/Casey` - Antarctica/Casey + * `Antarctica/Davis` - Antarctica/Davis + * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville + * `Antarctica/Macquarie` - Antarctica/Macquarie + * `Antarctica/Mawson` - Antarctica/Mawson + * `Antarctica/McMurdo` - Antarctica/McMurdo + * `Antarctica/Palmer` - Antarctica/Palmer + * `Antarctica/Rothera` - Antarctica/Rothera + * `Antarctica/South_Pole` - Antarctica/South_Pole + * `Antarctica/Syowa` - Antarctica/Syowa + * `Antarctica/Troll` - Antarctica/Troll + * `Antarctica/Vostok` - Antarctica/Vostok + * `Arctic/Longyearbyen` - Arctic/Longyearbyen + * `Asia/Aden` - Asia/Aden + * `Asia/Almaty` - Asia/Almaty + * `Asia/Amman` - Asia/Amman + * `Asia/Anadyr` - Asia/Anadyr + * `Asia/Aqtau` - Asia/Aqtau + * `Asia/Aqtobe` - Asia/Aqtobe + * `Asia/Ashgabat` - Asia/Ashgabat + * `Asia/Ashkhabad` - Asia/Ashkhabad + * `Asia/Atyrau` - Asia/Atyrau + * `Asia/Baghdad` - Asia/Baghdad + * `Asia/Bahrain` - Asia/Bahrain + * `Asia/Baku` - Asia/Baku + * `Asia/Bangkok` - Asia/Bangkok + * `Asia/Barnaul` - Asia/Barnaul + * `Asia/Beirut` - Asia/Beirut + * `Asia/Bishkek` - Asia/Bishkek + * `Asia/Brunei` - Asia/Brunei + * `Asia/Calcutta` - Asia/Calcutta + * `Asia/Chita` - Asia/Chita + * `Asia/Choibalsan` - Asia/Choibalsan + * `Asia/Chongqing` - Asia/Chongqing + * `Asia/Chungking` - Asia/Chungking + * `Asia/Colombo` - Asia/Colombo + * `Asia/Dacca` - Asia/Dacca + * `Asia/Damascus` - Asia/Damascus + * `Asia/Dhaka` - Asia/Dhaka + * `Asia/Dili` - Asia/Dili + * `Asia/Dubai` - Asia/Dubai + * `Asia/Dushanbe` - Asia/Dushanbe + * `Asia/Famagusta` - Asia/Famagusta + * `Asia/Gaza` - Asia/Gaza + * `Asia/Harbin` - Asia/Harbin + * `Asia/Hebron` - Asia/Hebron + * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh + * `Asia/Hong_Kong` - Asia/Hong_Kong + * `Asia/Hovd` - Asia/Hovd + * `Asia/Irkutsk` - Asia/Irkutsk + * `Asia/Istanbul` - Asia/Istanbul + * `Asia/Jakarta` - Asia/Jakarta + * `Asia/Jayapura` - Asia/Jayapura + * `Asia/Jerusalem` - Asia/Jerusalem + * `Asia/Kabul` - Asia/Kabul + * `Asia/Kamchatka` - Asia/Kamchatka + * `Asia/Karachi` - Asia/Karachi + * `Asia/Kashgar` - Asia/Kashgar + * `Asia/Kathmandu` - Asia/Kathmandu + * `Asia/Katmandu` - Asia/Katmandu + * `Asia/Khandyga` - Asia/Khandyga + * `Asia/Kolkata` - Asia/Kolkata + * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk + * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur + * `Asia/Kuching` - Asia/Kuching + * `Asia/Kuwait` - Asia/Kuwait + * `Asia/Macao` - Asia/Macao + * `Asia/Macau` - Asia/Macau + * `Asia/Magadan` - Asia/Magadan + * `Asia/Makassar` - Asia/Makassar + * `Asia/Manila` - Asia/Manila + * `Asia/Muscat` - Asia/Muscat + * `Asia/Nicosia` - Asia/Nicosia + * `Asia/Novokuznetsk` - Asia/Novokuznetsk + * `Asia/Novosibirsk` - Asia/Novosibirsk + * `Asia/Omsk` - Asia/Omsk + * `Asia/Oral` - Asia/Oral + * `Asia/Phnom_Penh` - Asia/Phnom_Penh + * `Asia/Pontianak` - Asia/Pontianak + * `Asia/Pyongyang` - Asia/Pyongyang + * `Asia/Qatar` - Asia/Qatar + * `Asia/Qostanay` - Asia/Qostanay + * `Asia/Qyzylorda` - Asia/Qyzylorda + * `Asia/Rangoon` - Asia/Rangoon + * `Asia/Riyadh` - Asia/Riyadh + * `Asia/Saigon` - Asia/Saigon + * `Asia/Sakhalin` - Asia/Sakhalin + * `Asia/Samarkand` - Asia/Samarkand + * `Asia/Seoul` - Asia/Seoul + * `Asia/Shanghai` - Asia/Shanghai + * `Asia/Singapore` - Asia/Singapore + * `Asia/Srednekolymsk` - Asia/Srednekolymsk + * `Asia/Taipei` - Asia/Taipei + * `Asia/Tashkent` - Asia/Tashkent + * `Asia/Tbilisi` - Asia/Tbilisi + * `Asia/Tehran` - Asia/Tehran + * `Asia/Tel_Aviv` - Asia/Tel_Aviv + * `Asia/Thimbu` - Asia/Thimbu + * `Asia/Thimphu` - Asia/Thimphu + * `Asia/Tokyo` - Asia/Tokyo + * `Asia/Tomsk` - Asia/Tomsk + * `Asia/Ujung_Pandang` - Asia/Ujung_Pandang + * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar + * `Asia/Ulan_Bator` - Asia/Ulan_Bator + * `Asia/Urumqi` - Asia/Urumqi + * `Asia/Ust-Nera` - Asia/Ust-Nera + * `Asia/Vientiane` - Asia/Vientiane + * `Asia/Vladivostok` - Asia/Vladivostok + * `Asia/Yakutsk` - Asia/Yakutsk + * `Asia/Yangon` - Asia/Yangon + * `Asia/Yekaterinburg` - Asia/Yekaterinburg + * `Asia/Yerevan` - Asia/Yerevan + * `Atlantic/Azores` - Atlantic/Azores + * `Atlantic/Bermuda` - Atlantic/Bermuda + * `Atlantic/Canary` - Atlantic/Canary + * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde + * `Atlantic/Faeroe` - Atlantic/Faeroe + * `Atlantic/Faroe` - Atlantic/Faroe + * `Atlantic/Jan_Mayen` - Atlantic/Jan_Mayen + * `Atlantic/Madeira` - Atlantic/Madeira + * `Atlantic/Reykjavik` - Atlantic/Reykjavik + * `Atlantic/South_Georgia` - Atlantic/South_Georgia + * `Atlantic/St_Helena` - Atlantic/St_Helena + * `Atlantic/Stanley` - Atlantic/Stanley + * `Australia/ACT` - Australia/ACT + * `Australia/Adelaide` - Australia/Adelaide + * `Australia/Brisbane` - Australia/Brisbane + * `Australia/Broken_Hill` - Australia/Broken_Hill + * `Australia/Canberra` - Australia/Canberra + * `Australia/Currie` - Australia/Currie + * `Australia/Darwin` - Australia/Darwin + * `Australia/Eucla` - Australia/Eucla + * `Australia/Hobart` - Australia/Hobart + * `Australia/LHI` - Australia/LHI + * `Australia/Lindeman` - Australia/Lindeman + * `Australia/Lord_Howe` - Australia/Lord_Howe + * `Australia/Melbourne` - Australia/Melbourne + * `Australia/NSW` - Australia/NSW + * `Australia/North` - Australia/North + * `Australia/Perth` - Australia/Perth + * `Australia/Queensland` - Australia/Queensland + * `Australia/South` - Australia/South + * `Australia/Sydney` - Australia/Sydney + * `Australia/Tasmania` - Australia/Tasmania + * `Australia/Victoria` - Australia/Victoria + * `Australia/West` - Australia/West + * `Australia/Yancowinna` - Australia/Yancowinna + * `Brazil/Acre` - Brazil/Acre + * `Brazil/DeNoronha` - Brazil/DeNoronha + * `Brazil/East` - Brazil/East + * `Brazil/West` - Brazil/West + * `CET` - CET + * `CST6CDT` - CST6CDT + * `Canada/Atlantic` - Canada/Atlantic + * `Canada/Central` - Canada/Central + * `Canada/Eastern` - Canada/Eastern + * `Canada/Mountain` - Canada/Mountain + * `Canada/Newfoundland` - Canada/Newfoundland + * `Canada/Pacific` - Canada/Pacific + * `Canada/Saskatchewan` - Canada/Saskatchewan + * `Canada/Yukon` - Canada/Yukon + * `Chile/Continental` - Chile/Continental + * `Chile/EasterIsland` - Chile/EasterIsland + * `Cuba` - Cuba + * `EET` - EET + * `EST` - EST + * `EST5EDT` - EST5EDT + * `Egypt` - Egypt + * `Eire` - Eire + * `Etc/GMT` - Etc/GMT + * `Etc/GMT+0` - Etc/GMT+0 + * `Etc/GMT+1` - Etc/GMT+1 + * `Etc/GMT+10` - Etc/GMT+10 + * `Etc/GMT+11` - Etc/GMT+11 + * `Etc/GMT+12` - Etc/GMT+12 + * `Etc/GMT+2` - Etc/GMT+2 + * `Etc/GMT+3` - Etc/GMT+3 + * `Etc/GMT+4` - Etc/GMT+4 + * `Etc/GMT+5` - Etc/GMT+5 + * `Etc/GMT+6` - Etc/GMT+6 + * `Etc/GMT+7` - Etc/GMT+7 + * `Etc/GMT+8` - Etc/GMT+8 + * `Etc/GMT+9` - Etc/GMT+9 + * `Etc/GMT-0` - Etc/GMT-0 + * `Etc/GMT-1` - Etc/GMT-1 + * `Etc/GMT-10` - Etc/GMT-10 + * `Etc/GMT-11` - Etc/GMT-11 + * `Etc/GMT-12` - Etc/GMT-12 + * `Etc/GMT-13` - Etc/GMT-13 + * `Etc/GMT-14` - Etc/GMT-14 + * `Etc/GMT-2` - Etc/GMT-2 + * `Etc/GMT-3` - Etc/GMT-3 + * `Etc/GMT-4` - Etc/GMT-4 + * `Etc/GMT-5` - Etc/GMT-5 + * `Etc/GMT-6` - Etc/GMT-6 + * `Etc/GMT-7` - Etc/GMT-7 + * `Etc/GMT-8` - Etc/GMT-8 + * `Etc/GMT-9` - Etc/GMT-9 + * `Etc/GMT0` - Etc/GMT0 + * `Etc/Greenwich` - Etc/Greenwich + * `Etc/UCT` - Etc/UCT + * `Etc/UTC` - Etc/UTC + * `Etc/Universal` - Etc/Universal + * `Etc/Zulu` - Etc/Zulu + * `Europe/Amsterdam` - Europe/Amsterdam + * `Europe/Andorra` - Europe/Andorra + * `Europe/Astrakhan` - Europe/Astrakhan + * `Europe/Athens` - Europe/Athens + * `Europe/Belfast` - Europe/Belfast + * `Europe/Belgrade` - Europe/Belgrade + * `Europe/Berlin` - Europe/Berlin + * `Europe/Bratislava` - Europe/Bratislava + * `Europe/Brussels` - Europe/Brussels + * `Europe/Bucharest` - Europe/Bucharest + * `Europe/Budapest` - Europe/Budapest + * `Europe/Busingen` - Europe/Busingen + * `Europe/Chisinau` - Europe/Chisinau + * `Europe/Copenhagen` - Europe/Copenhagen + * `Europe/Dublin` - Europe/Dublin + * `Europe/Gibraltar` - Europe/Gibraltar + * `Europe/Guernsey` - Europe/Guernsey + * `Europe/Helsinki` - Europe/Helsinki + * `Europe/Isle_of_Man` - Europe/Isle_of_Man + * `Europe/Istanbul` - Europe/Istanbul + * `Europe/Jersey` - Europe/Jersey + * `Europe/Kaliningrad` - Europe/Kaliningrad + * `Europe/Kiev` - Europe/Kiev + * `Europe/Kirov` - Europe/Kirov + * `Europe/Kyiv` - Europe/Kyiv + * `Europe/Lisbon` - Europe/Lisbon + * `Europe/Ljubljana` - Europe/Ljubljana + * `Europe/London` - Europe/London + * `Europe/Luxembourg` - Europe/Luxembourg + * `Europe/Madrid` - Europe/Madrid + * `Europe/Malta` - Europe/Malta + * `Europe/Mariehamn` - Europe/Mariehamn + * `Europe/Minsk` - Europe/Minsk + * `Europe/Monaco` - Europe/Monaco + * `Europe/Moscow` - Europe/Moscow + * `Europe/Nicosia` - Europe/Nicosia + * `Europe/Oslo` - Europe/Oslo + * `Europe/Paris` - Europe/Paris + * `Europe/Podgorica` - Europe/Podgorica + * `Europe/Prague` - Europe/Prague + * `Europe/Riga` - Europe/Riga + * `Europe/Rome` - Europe/Rome + * `Europe/Samara` - Europe/Samara + * `Europe/San_Marino` - Europe/San_Marino + * `Europe/Sarajevo` - Europe/Sarajevo + * `Europe/Saratov` - Europe/Saratov + * `Europe/Simferopol` - Europe/Simferopol + * `Europe/Skopje` - Europe/Skopje + * `Europe/Sofia` - Europe/Sofia + * `Europe/Stockholm` - Europe/Stockholm + * `Europe/Tallinn` - Europe/Tallinn + * `Europe/Tirane` - Europe/Tirane + * `Europe/Tiraspol` - Europe/Tiraspol + * `Europe/Ulyanovsk` - Europe/Ulyanovsk + * `Europe/Uzhgorod` - Europe/Uzhgorod + * `Europe/Vaduz` - Europe/Vaduz + * `Europe/Vatican` - Europe/Vatican + * `Europe/Vienna` - Europe/Vienna + * `Europe/Vilnius` - Europe/Vilnius + * `Europe/Volgograd` - Europe/Volgograd + * `Europe/Warsaw` - Europe/Warsaw + * `Europe/Zagreb` - Europe/Zagreb + * `Europe/Zaporozhye` - Europe/Zaporozhye + * `Europe/Zurich` - Europe/Zurich + * `GB` - GB + * `GB-Eire` - GB-Eire + * `GMT` - GMT + * `GMT+0` - GMT+0 + * `GMT-0` - GMT-0 + * `GMT0` - GMT0 + * `Greenwich` - Greenwich + * `HST` - HST + * `Hongkong` - Hongkong + * `Iceland` - Iceland + * `Indian/Antananarivo` - Indian/Antananarivo + * `Indian/Chagos` - Indian/Chagos + * `Indian/Christmas` - Indian/Christmas + * `Indian/Cocos` - Indian/Cocos + * `Indian/Comoro` - Indian/Comoro + * `Indian/Kerguelen` - Indian/Kerguelen + * `Indian/Mahe` - Indian/Mahe + * `Indian/Maldives` - Indian/Maldives + * `Indian/Mauritius` - Indian/Mauritius + * `Indian/Mayotte` - Indian/Mayotte + * `Indian/Reunion` - Indian/Reunion + * `Iran` - Iran + * `Israel` - Israel + * `Jamaica` - Jamaica + * `Japan` - Japan + * `Kwajalein` - Kwajalein + * `Libya` - Libya + * `MET` - MET + * `MST` - MST + * `MST7MDT` - MST7MDT + * `Mexico/BajaNorte` - Mexico/BajaNorte + * `Mexico/BajaSur` - Mexico/BajaSur + * `Mexico/General` - Mexico/General + * `NZ` - NZ + * `NZ-CHAT` - NZ-CHAT + * `Navajo` - Navajo + * `PRC` - PRC + * `PST8PDT` - PST8PDT + * `Pacific/Apia` - Pacific/Apia + * `Pacific/Auckland` - Pacific/Auckland + * `Pacific/Bougainville` - Pacific/Bougainville + * `Pacific/Chatham` - Pacific/Chatham + * `Pacific/Chuuk` - Pacific/Chuuk + * `Pacific/Easter` - Pacific/Easter + * `Pacific/Efate` - Pacific/Efate + * `Pacific/Enderbury` - Pacific/Enderbury + * `Pacific/Fakaofo` - Pacific/Fakaofo + * `Pacific/Fiji` - Pacific/Fiji + * `Pacific/Funafuti` - Pacific/Funafuti + * `Pacific/Galapagos` - Pacific/Galapagos + * `Pacific/Gambier` - Pacific/Gambier + * `Pacific/Guadalcanal` - Pacific/Guadalcanal + * `Pacific/Guam` - Pacific/Guam + * `Pacific/Honolulu` - Pacific/Honolulu + * `Pacific/Johnston` - Pacific/Johnston + * `Pacific/Kanton` - Pacific/Kanton + * `Pacific/Kiritimati` - Pacific/Kiritimati + * `Pacific/Kosrae` - Pacific/Kosrae + * `Pacific/Kwajalein` - Pacific/Kwajalein + * `Pacific/Majuro` - Pacific/Majuro + * `Pacific/Marquesas` - Pacific/Marquesas + * `Pacific/Midway` - Pacific/Midway + * `Pacific/Nauru` - Pacific/Nauru + * `Pacific/Niue` - Pacific/Niue + * `Pacific/Norfolk` - Pacific/Norfolk + * `Pacific/Noumea` - Pacific/Noumea + * `Pacific/Pago_Pago` - Pacific/Pago_Pago + * `Pacific/Palau` - Pacific/Palau + * `Pacific/Pitcairn` - Pacific/Pitcairn + * `Pacific/Pohnpei` - Pacific/Pohnpei + * `Pacific/Ponape` - Pacific/Ponape + * `Pacific/Port_Moresby` - Pacific/Port_Moresby + * `Pacific/Rarotonga` - Pacific/Rarotonga + * `Pacific/Saipan` - Pacific/Saipan + * `Pacific/Samoa` - Pacific/Samoa + * `Pacific/Tahiti` - Pacific/Tahiti + * `Pacific/Tarawa` - Pacific/Tarawa + * `Pacific/Tongatapu` - Pacific/Tongatapu + * `Pacific/Truk` - Pacific/Truk + * `Pacific/Wake` - Pacific/Wake + * `Pacific/Wallis` - Pacific/Wallis + * `Pacific/Yap` - Pacific/Yap + * `Poland` - Poland + * `Portugal` - Portugal + * `ROC` - ROC + * `ROK` - ROK + * `Singapore` - Singapore + * `Turkey` - Turkey + * `UCT` - UCT + * `US/Alaska` - US/Alaska + * `US/Aleutian` - US/Aleutian + * `US/Arizona` - US/Arizona + * `US/Central` - US/Central + * `US/East-Indiana` - US/East-Indiana + * `US/Eastern` - US/Eastern + * `US/Hawaii` - US/Hawaii + * `US/Indiana-Starke` - US/Indiana-Starke + * `US/Michigan` - US/Michigan + * `US/Mountain` - US/Mountain + * `US/Pacific` - US/Pacific + * `US/Samoa` - US/Samoa + * `UTC` - UTC + * `Universal` - Universal + * `W-SU` - W-SU + * `WET` - WET + * `Zulu` - Zulu + x-spec-enum-id: cd9b66101aa181d2 + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + workspace: + type: string + format: uuid + readOnly: true + default_assignee: + type: string + format: uuid + nullable: true + project_lead: + type: string + format: uuid + nullable: true + cover_image_asset: + type: string + format: uuid + nullable: true + estimate: + type: string + format: uuid + nullable: true + default_state: + type: string + format: uuid + nullable: true + required: + - cover_image_url + - created_at + - created_by + - deleted_at + - emoji + - id + - identifier + - is_deployed + - is_member + - member_role + - name + - sort_order + - total_cycles + - total_members + - total_modules + - updated_at + - updated_by + - workspace + State: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + updated_at: + type: string + format: date-time + readOnly: true + title: Last Modified At + deleted_at: + type: string + format: date-time + readOnly: true + nullable: true + name: + type: string + title: State Name + maxLength: 255 + description: + type: string + title: State Description + color: + type: string + title: State Color + maxLength: 255 + slug: + type: string + maxLength: 100 + pattern: ^[-a-zA-Z0-9_]+$ + sequence: + type: number + format: double + group: + enum: + - backlog + - unstarted + - started + - completed + - cancelled + - triage + type: string + description: |- + * `backlog` - Backlog + * `unstarted` - Unstarted + * `started` - Started + * `completed` - Completed + * `cancelled` - Cancelled + * `triage` - Triage + x-spec-enum-id: 8d09e732e922226e + is_triage: + type: boolean + default: + type: boolean + external_source: + type: string + nullable: true + maxLength: 255 + external_id: + type: string + nullable: true + maxLength: 255 + created_by: + type: string + format: uuid + readOnly: true + nullable: true + updated_by: + type: string + format: uuid + readOnly: true + nullable: true + title: Last Modified By + project: + type: string + format: uuid + readOnly: true + workspace: + type: string + format: uuid + readOnly: true + required: + - color + - created_at + - created_by + - deleted_at + - id + - name + - project + - updated_at + - updated_by + - workspace + StateLite: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + name: + type: string + readOnly: true + title: State Name + color: + type: string + readOnly: true + title: State Color + group: + enum: + - backlog + - unstarted + - started + - completed + - cancelled + - triage + type: string + description: |- + * `backlog` - Backlog + * `unstarted` - Unstarted + * `started` - Started + * `completed` - Completed + * `cancelled` - Cancelled + * `triage` - Triage + x-spec-enum-id: 8d09e732e922226e + readOnly: true + required: + - color + - group + - id + - name + UserAssetUpload: + type: object + description: Serializer for user asset upload requests + properties: + name: + type: string + description: Original filename of the asset + type: + enum: + - image/jpeg + - image/png + - image/webp + - image/jpg + - image/gif + type: string + x-spec-enum-id: c79f3b4ad843519e + default: image/jpeg + description: |- + MIME type of the file + + * `image/jpeg` - JPEG + * `image/png` - PNG + * `image/webp` - WebP + * `image/jpg` - JPG + * `image/gif` - GIF + size: + type: integer + description: File size in bytes + entity_type: + enum: + - USER_AVATAR + - USER_COVER + type: string + x-spec-enum-id: ddb7b8ca3e92601a + description: |- + Type of user asset + + * `USER_AVATAR` - User Avatar + * `USER_COVER` - User Cover + required: + - entity_type + - name + - size + UserLite: + type: object + properties: + id: + type: string + format: uuid + readOnly: true + first_name: + type: string + readOnly: true + last_name: + type: string + readOnly: true + email: + type: string + readOnly: true + nullable: true + avatar: + type: string + readOnly: true + avatar_url: + type: string + readOnly: true + description: Avatar URL + display_name: + type: string + readOnly: true + required: + - display_name + - email + - first_name + - id + - last_name + securitySchemes: + ApiKeyAuthentication: + type: apiKey + in: header + name: X-API-Key + description: API key authentication. Provide your API key in the X-API-Key header. +servers: +- url: /api/v1 + description: API v1 +tags: +- name: Projects + description: Project management endpoints - create, update, delete, and manage projects +- name: Work Items + description: Work item management endpoints - create, update, assign, and track + work items +- name: Cycles + description: Sprint/Cycle management endpoints - manage development cycles and sprints +- name: Modules + description: Module management endpoints - organize work into modules and roadmaps +- name: States + description: Work item state management endpoints - manage workflow states +- name: Labels + description: Issue label management endpoints - categorize and organize issues +- name: Members + description: Project member management endpoints - manage team access and roles +- name: Assets + description: Asset management endpoints - upload, manage, and serve files and media +- name: Users + description: User management endpoints - manage user profiles and preferences +- name: Intake + description: Intake management endpoints - manage intake issues and intake issue + details diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..11433ee --- /dev/null +++ b/setup.cfg @@ -0,0 +1,2 @@ +[flake8] +max-line-length=99 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..14d11c4 --- /dev/null +++ b/setup.py @@ -0,0 +1,49 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from setuptools import setup, find_packages # noqa: H301 + +# To install the library, run the following +# +# python setup.py install +# +# prerequisite: setuptools +# http://pypi.python.org/pypi/setuptools +NAME = "plane" +VERSION = "1.0.0" +PYTHON_REQUIRES = ">=3.7" +REQUIRES = [ + "urllib3 >= 1.25.3, < 3.0.0", + "python-dateutil", + "pydantic >= 1.10.5, < 2", + "aenum" +] + +setup( + name=NAME, + version=VERSION, + description="Plane API", + author="OpenAPI Generator community", + author_email="team@openapitools.org", + url="", + keywords=["OpenAPI", "OpenAPI-Generator", "Plane API"], + install_requires=REQUIRES, + packages=find_packages(exclude=["test", "tests"]), + include_package_data=True, + long_description_content_type='text/markdown', + long_description="""\ + Plane External API + """, # noqa: E501 + package_data={"plane": ["py.typed"]}, +) diff --git a/src/plane/__init__.py b/src/plane/__init__.py deleted file mode 100644 index 2c45e75..0000000 --- a/src/plane/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -"""Plane SDK - Python client library for Plane APIs.""" - -from .client import Client -from .config import Config -from .exceptions import ( - MyAPIError, - AuthenticationError, - RateLimitError, - ValidationError, - NotFoundError, - ServerError, -) -from .models import User - -__version__ = "1.0.0" -__all__ = [ - "Client", - "Config", - "User", - "MyAPIError", - "AuthenticationError", - "RateLimitError", - "ValidationError", - "NotFoundError", - "ServerError", -] diff --git a/src/plane/client.py b/src/plane/client.py deleted file mode 100644 index b63e66e..0000000 --- a/src/plane/client.py +++ /dev/null @@ -1,193 +0,0 @@ -"""Main API client.""" - -import asyncio -from typing import Optional -import httpx -from .config import Config -from .resources.workspaces import UsersResource -from .resources.projects import ProjectsResource - - -class Client: - """Main API client.""" - - def __init__(self, config: Optional[Config] = None, **kwargs): - """Initialize the client.""" - if config is None: - config = Config.from_env(**kwargs) - - self.config = config - self._http_client = self._create_http_client() - - # Initialize resources - self.users = UsersResource(self) - self.projects = ProjectsResource(self) - - def _create_http_client(self) -> httpx.AsyncClient: - """Create HTTP client with proper configuration.""" - headers = { - "Authorization": f"Bearer {self.config.api_key}", - "User-Agent": self.config.user_agent, - "Content-Type": "application/json", - "Accept": "application/json", - } - - return httpx.AsyncClient( - headers=headers, - timeout=self.config.timeout, - limits=httpx.Limits(max_keepalive_connections=10, max_connections=20), - ) - - async def __aenter__(self): - """Async context manager entry.""" - return self - - async def __aexit__(self, exc_type, exc_val, exc_tb): - """Async context manager exit.""" - await self.close() - - async def close(self): - """Close the HTTP client.""" - if self._http_client: - await self._http_client.aclose() - - async def health_check(self) -> dict: - """Check API health.""" - try: - response = await self._http_client.get(f"{self.config.base_url}/health") - return response.json() - except Exception as e: - return {"status": "error", "message": str(e)} - - -class SyncClient: - """Synchronous wrapper for the async client.""" - - def __init__(self, config: Optional[Config] = None, **kwargs): - """Initialize the sync client.""" - self._async_client = Client(config, **kwargs) - self._loop = None - - def _get_loop(self): - """Get or create event loop.""" - try: - return asyncio.get_event_loop() - except RuntimeError: - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - return loop - - def _run_async(self, coro): - """Run async function synchronously.""" - loop = self._get_loop() - return loop.run_until_complete(coro) - - @property - def users(self): - """Access users resource synchronously.""" - return SyncUsersResource(self._async_client.users) - - @property - def projects(self): - """Access projects resource synchronously.""" - return SyncProjectsResource(self._async_client.projects) - - def health_check(self) -> dict: - """Check API health synchronously.""" - return self._run_async(self._async_client.health_check()) - - def close(self): - """Close the client.""" - self._run_async(self._async_client.close()) - - def __enter__(self): - """Sync context manager entry.""" - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - """Sync context manager exit.""" - self.close() - - -class SyncUsersResource: - """Synchronous wrapper for users resource.""" - - def __init__(self, async_resource: UsersResource): - self._async_resource = async_resource - self._client = async_resource._client - - def _run_async(self, coro): - """Run async function synchronously.""" - try: - loop = asyncio.get_event_loop() - except RuntimeError: - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - return loop.run_until_complete(coro) - - def list(self, page: int = 1, per_page: int = 20, search: Optional[str] = None): - """List users synchronously.""" - return self._run_async(self._async_resource.list(page, per_page, search)) - - def get(self, user_id: str): - """Get user synchronously.""" - return self._run_async(self._async_resource.get(user_id)) - - def create(self, user_data): - """Create user synchronously.""" - return self._run_async(self._async_resource.create(user_data)) - - def update(self, user_id: str, user_data): - """Update user synchronously.""" - return self._run_async(self._async_resource.update(user_id, user_data)) - - def delete(self, user_id: str): - """Delete user synchronously.""" - return self._run_async(self._async_resource.delete(user_id)) - - def search(self, query: str, limit: int = 10): - """Search users synchronously.""" - return self._run_async(self._async_resource.search(query, limit)) - - -class SyncProjectsResource: - """Synchronous wrapper for projects resource.""" - - def __init__(self, async_resource: ProjectsResource): - self._async_resource = async_resource - self._client = async_resource._client - - def _run_async(self, coro): - try: - loop = asyncio.get_event_loop() - except RuntimeError: - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - return loop.run_until_complete(coro) - - def list( - self, - workspace_slug: str, - page: int = 1, - per_page: int = 20, - search: Optional[str] = None, - ): - return self._run_async( - self._async_resource.list(workspace_slug, page, per_page, search) - ) - - def get(self, workspace_slug: str, project_id: str): - return self._run_async(self._async_resource.get(workspace_slug, project_id)) - - def create(self, workspace_slug: str, project_data): - return self._run_async( - self._async_resource.create(workspace_slug, project_data) - ) - - def update(self, workspace_slug: str, project_id: str, project_data): - return self._run_async( - self._async_resource.update(workspace_slug, project_id, project_data) - ) - - def delete(self, workspace_slug: str, project_id: str): - return self._run_async(self._async_resource.delete(workspace_slug, project_id)) diff --git a/src/plane/config.py b/src/plane/config.py deleted file mode 100644 index 1a0e5a8..0000000 --- a/src/plane/config.py +++ /dev/null @@ -1,44 +0,0 @@ -"""Configuration management for the API SDK.""" - -import os -from typing import Optional -from dataclasses import dataclass - - -@dataclass -class Config: - """Configuration class for the API client.""" - - api_key: str - base_url: str = "https://api.plane.so/api/v1" - timeout: int = 30 - max_retries: int = 3 - retry_delay: float = 1.0 - user_agent: Optional[str] = None - - def __post_init__(self): - """Validate configuration after initialization.""" - if not self.api_key: - raise ValueError("API key is required") - - if not self.user_agent: - self.user_agent = f"plane-sdk/1.0.0" - - @classmethod - def from_env(cls, **kwargs) -> "Config": - """Create configuration from environment variables.""" - api_key = os.getenv("PLANE_API_KEY") - if not api_key: - raise ValueError("PLANE_API_KEY environment variable is required") - - base_url = os.getenv("MY_API_BASE_URL", "https://api.example.com/v1") - timeout = int(os.getenv("MY_API_TIMEOUT", "30")) - max_retries = int(os.getenv("MY_API_MAX_RETRIES", "3")) - - return cls( - api_key=api_key, - base_url=base_url, - timeout=timeout, - max_retries=max_retries, - **kwargs, - ) diff --git a/src/plane/exceptions.py b/src/plane/exceptions.py deleted file mode 100644 index 397044d..0000000 --- a/src/plane/exceptions.py +++ /dev/null @@ -1,73 +0,0 @@ -"""Custom exceptions for the Plane SDK.""" - -from typing import Optional, Dict, Any - - -class PlaneError(Exception): - """Base exception for all API errors.""" - - def __init__( - self, - message: str, - status_code: Optional[int] = None, - response_data: Optional[Dict[str, Any]] = None, - ): - super().__init__(message) - self.message = message - self.status_code = status_code - self.response_data = response_data or {} - - def __str__(self) -> str: - if self.status_code: - return f"[{self.status_code}] {self.message}" - return self.message - - -class AuthenticationError(PlaneError): - """Raised when authentication fails (401).""" - - pass - - -class AuthorizationError(PlaneError): - """Raised when authorization fails (403).""" - - pass - - -class NotFoundError(PlaneError): - """Raised when a resource is not found (404).""" - - pass - - -class ValidationError(PlaneError): - """Raised when request validation fails (422).""" - - pass - - -class RateLimitError(PlaneError): - """Raised when rate limit is exceeded (429).""" - - def __init__(self, message: str, retry_after: Optional[int] = None, **kwargs): - super().__init__(message, **kwargs) - self.retry_after = retry_after - - -class ServerError(PlaneError): - """Raised when server errors occur (5xx).""" - - pass - - -class TimeoutError(PlaneError): - """Raised when request times out.""" - - pass - - -class ConnectionError(PlaneError): - """Raised when connection fails.""" - - pass diff --git a/src/plane/models/__init__.py b/src/plane/models/__init__.py deleted file mode 100644 index 862a9d9..0000000 --- a/src/plane/models/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -"""Models package.""" - -from .base import BaseAPIModel, TimestampMixin, PaginatedResponse -from .workspace import Workspace, WorkspaceUpdate - -__all__ = [ - "BaseAPIModel", - "TimestampMixin", - "PaginatedResponse", - "Workspace", - "WorkspaceUpdate", -] diff --git a/src/plane/models/base.py b/src/plane/models/base.py deleted file mode 100644 index 6d0bfa3..0000000 --- a/src/plane/models/base.py +++ /dev/null @@ -1,43 +0,0 @@ -"""Base model classes.""" - -from typing import Dict, Any, Optional -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field - - -class BaseAPIModel(BaseModel): - """Base model for all API response models.""" - - model_config = ConfigDict( - str_strip_whitespace=True, - validate_assignment=True, - extra="forbid", - populate_by_name=True, - ) - - def to_dict(self) -> Dict[str, Any]: - """Convert model to dictionary.""" - return self.model_dump(by_alias=True, exclude_none=True) - - @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "BaseAPIModel": - """Create model from dictionary.""" - return cls(**data) - - -class TimestampMixin(BaseModel): - """Mixin for models with timestamp fields.""" - - created_at: Optional[datetime] = Field(None, alias="createdAt") - updated_at: Optional[datetime] = Field(None, alias="updatedAt") - - -class PaginatedResponse(BaseAPIModel): - """Model for paginated API responses.""" - - page: int = 1 - per_page: int = Field(default=20, alias="perPage") - total: int - total_pages: int = Field(alias="totalPages") - has_next: bool = Field(alias="hasNext") - has_prev: bool = Field(alias="hasPrev") diff --git a/src/plane/models/project.py b/src/plane/models/project.py deleted file mode 100644 index 645486c..0000000 --- a/src/plane/models/project.py +++ /dev/null @@ -1,100 +0,0 @@ -from typing import Optional -from pydantic import Field -from .base import BaseAPIModel, TimestampMixin - - -class Project(BaseAPIModel, TimestampMixin): - """Project model.""" - - id: str - name: str - description: Optional[str] = None - description_text: Optional[str] = None - description_html: Optional[str] = None - network: Optional[int] = Field(default=2) - workspace: str - identifier: str - default_assignee: Optional[str] = None - project_lead: Optional[str] = None - emoji: Optional[str] = None - icon_prop: Optional[str] = None - module_view: Optional[bool] = Field(default=True) - cycle_view: Optional[bool] = Field(default=True) - issue_views_view: Optional[bool] = Field(default=True) - page_view: Optional[bool] = Field(default=True) - intake_view: Optional[bool] = Field(default=False) - is_time_tracking_enabled: Optional[bool] = Field(default=False) - is_issue_type_enabled: Optional[bool] = Field(default=False) - guest_view_all_features: Optional[bool] = Field(default=False) - cover_image: Optional[str] = None - cover_image_asset: Optional[str] = None - estimate: Optional[str] = None - archive_in: Optional[int] = Field(default=0) - close_in: Optional[int] = Field(default=0) - logo_props: Optional[str] = None - default_state: Optional[str] = None - archived_at: Optional[str] = None - timezone: Optional[str] = Field(default="UTC") - - -class ProjectCreate(BaseAPIModel): - """Project create model.""" - - name: str - description: Optional[str] = None - description_text: Optional[str] = None - description_html: Optional[str] = None - network: Optional[int] = Field(default=2) - workspace: str - identifier: str - - -class ProjectUpdate(BaseAPIModel): - """Project update model.""" - - name: Optional[str] = None - description: Optional[str] = None - description_text: Optional[str] = None - description_html: Optional[str] = None - network: Optional[int] = Field(default=2) - workspace: Optional[str] = None - identifier: Optional[str] = None - default_assignee: Optional[str] = None - project_lead: Optional[str] = None - emoji: Optional[str] = None - icon_prop: Optional[str] = None - module_view: Optional[bool] = Field(default=True) - cycle_view: Optional[bool] = Field(default=True) - issue_views_view: Optional[bool] = Field(default=True) - page_view: Optional[bool] = Field(default=True) - intake_view: Optional[bool] = Field(default=False) - is_time_tracking_enabled: Optional[bool] = Field(default=False) - is_issue_type_enabled: Optional[bool] = Field(default=False) - guest_view_all_features: Optional[bool] = Field(default=False) - cover_image: Optional[str] = None - cover_image_asset: Optional[str] = None - estimate: Optional[str] = None - archive_in: Optional[int] = Field(default=0) - close_in: Optional[int] = Field(default=0) - logo_props: Optional[str] = None - default_state: Optional[str] = None - archived_at: Optional[str] = None - timezone: Optional[str] = Field(default="UTC") - - -class ProjectDelete(BaseAPIModel): - """Project delete model.""" - - id: str - - -class ProjectArchive(BaseAPIModel): - """Project archive model.""" - - id: str - - -class ProjectUnarchive(BaseAPIModel): - """Project unarchive model.""" - - id: str diff --git a/src/plane/models/workspace.py b/src/plane/models/workspace.py deleted file mode 100644 index 7bf0280..0000000 --- a/src/plane/models/workspace.py +++ /dev/null @@ -1,26 +0,0 @@ -from typing import Optional -from pydantic import Field -from .base import BaseAPIModel, TimestampMixin - - -class Workspace(BaseAPIModel, TimestampMixin): - """Workspace model.""" - - id: str - name: str - logo: Optional[str] = None - logo_asset: Optional[str] = None - owner: str - slug: str - organization_size: Optional[str] = None - timezone: str = Field(default="UTC") - - -class WorkspaceUpdate(BaseAPIModel): - """Model for creating a workspace.""" - - name: str - logo: Optional[str] = None - logo_asset: Optional[str] = None - organization_size: Optional[str] = None - timezone: str = Field(default="UTC") diff --git a/src/plane/resources/__init__.py b/src/plane/resources/__init__.py deleted file mode 100644 index f164c32..0000000 --- a/src/plane/resources/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -"""Resources package.""" - -from .base import BaseResource -from .workspaces import WorkspacesResource -from .projects import ProjectsResource - -__all__ = [ - "BaseResource", - "WorkspacesResource", - "ProjectsResource", -] diff --git a/src/plane/resources/base.py b/src/plane/resources/base.py deleted file mode 100644 index d99b41e..0000000 --- a/src/plane/resources/base.py +++ /dev/null @@ -1,79 +0,0 @@ -"""Base resource class.""" - -from typing import Any, Dict, Optional, Type, TypeVar, Generic, List -import httpx -from ..exceptions import ( - PlaneError, - AuthenticationError, - AuthorizationError, - NotFoundError, - ValidationError, - RateLimitError, - ServerError, - TimeoutError, - ConnectionError, -) -from ..models.base import BaseAPIModel -from ..client import Client - -T = TypeVar("T", bound=BaseAPIModel) - - -class BaseResource(Generic[T]): - """Base class for API resources.""" - - def __init__(self, client: Client): - self._client = client - self._http_client = client._http_client - - def _handle_response(self, response: httpx.Response) -> Dict[str, Any]: - """Handle HTTP response and raise appropriate exceptions.""" - try: - data = response.json() - except Exception: - data = {"message": response.text} - - if response.is_success: - return data - - message = data.get("message", f"HTTP {response.status_code}") - - if response.status_code == 401: - raise AuthenticationError(message, response.status_code, data) - elif response.status_code == 403: - raise AuthorizationError(message, response.status_code, data) - elif response.status_code == 404: - raise NotFoundError(message, response.status_code, data) - elif response.status_code == 422: - raise ValidationError(message, response.status_code, data) - elif response.status_code == 429: - retry_after = response.headers.get("Retry-After") - retry_after_int = int(retry_after) if retry_after else None - raise RateLimitError(message, retry_after_int, response.status_code, data) - elif response.status_code >= 500: - raise ServerError(message, response.status_code, data) - else: - raise PlaneError(message, response.status_code, data) - - async def _request( - self, - method: str, - endpoint: str, - data: Optional[Dict[str, Any]] = None, - params: Optional[Dict[str, Any]] = None, - **kwargs, - ) -> Dict[str, Any]: - """Make HTTP request.""" - url = f"{self._client.config.base_url.rstrip('/')}/{endpoint.lstrip('/')}" - - try: - response = await self._http_client.request( - method=method, url=url, json=data, params=params, **kwargs - ) - return self._handle_response(response) - except httpx.TimeoutException as e: - raise TimeoutError(f"Request timed out: {str(e)}") - except httpx.ConnectError as e: - raise ConnectionError(f"Connection failed: {str(e)}") - except httpx.HTTPError as e: - raise PlaneError(f"HTTP error: {str(e)}") diff --git a/src/plane/resources/projects.py b/src/plane/resources/projects.py deleted file mode 100644 index ded6acc..0000000 --- a/src/plane/resources/projects.py +++ /dev/null @@ -1,69 +0,0 @@ -from typing import List, Optional, Dict, Any -from .base import BaseResource -from ..models.project import Project, ProjectCreate, ProjectUpdate -from ..models.base import PaginatedResponse - - -class ProjectsResource(BaseResource[Project]): - """Resource for managing projects.""" - - async def list( - self, - workspace_slug: str, - page: int = 1, - per_page: int = 20, - search: Optional[str] = None, - ) -> Dict[str, Any]: - """List projects in a workspace with pagination.""" - params = { - "page": page, - "per_page": per_page, - } - if search: - params["search"] = search - - response = await self._request( - "GET", f"api/v1/workspaces/{workspace_slug}/projects/", params=params - ) - - projects_data = response.get("data", []) or response.get("results", []) - projects = [Project.from_dict(project_data) for project_data in projects_data] - pagination = PaginatedResponse.from_dict( - response.get("pagination", {}) or response - ) - - return {"projects": projects, "pagination": pagination} - - async def get(self, workspace_slug: str, project_id: str) -> Project: - """Get a project by ID.""" - response = await self._request( - "GET", f"api/v1/workspaces/{workspace_slug}/projects/{project_id}/" - ) - return Project.from_dict(response) - - async def create(self, workspace_slug: str, project_data: ProjectCreate) -> Project: - """Create a new project in a workspace.""" - response = await self._request( - "POST", - f"api/v1/workspaces/{workspace_slug}/projects/", - data=project_data.to_dict(), - ) - return Project.from_dict(response) - - async def update( - self, workspace_slug: str, project_id: str, project_data: ProjectUpdate - ) -> Project: - """Update a project in a workspace.""" - response = await self._request( - "PATCH", - f"api/v1/workspaces/{workspace_slug}/projects/{project_id}/", - data=project_data.to_dict(), - ) - return Project.from_dict(response) - - async def delete(self, workspace_slug: str, project_id: str) -> bool: - """Delete a project in a workspace.""" - await self._request( - "DELETE", f"api/v1/workspaces/{workspace_slug}/projects/{project_id}/" - ) - return True diff --git a/src/plane/resources/workspaces.py b/src/plane/resources/workspaces.py deleted file mode 100644 index a77e402..0000000 --- a/src/plane/resources/workspaces.py +++ /dev/null @@ -1,70 +0,0 @@ -"""Users resource.""" - -from typing import List, Optional, Dict, Any -from .base import BaseResource -from ..models.workspace import Workspace, WorkspaceUpdate -from ..models.base import PaginatedResponse - - -class WorkspacesResource(BaseResource[Workspace]): - """Resource for managing users.""" - - async def list( - self, page: int = 1, per_page: int = 20, search: Optional[str] = None - ) -> Dict[str, Any]: - """List users with pagination.""" - params = { - "page": page, - "per_page": per_page, - } - if search: - params["search"] = search - - response = await self._request("GET", "workspaces", params=params) - - # Parse users - workspaces_data = response.get("data", []) - workspaces = [ - Workspace.from_dict(workspace_data) for workspace_data in workspaces_data - ] - - # Parse pagination - pagination = PaginatedResponse.from_dict(response.get("pagination", {})) - - return {"workspaces": workspaces, "pagination": pagination} - - async def get(self, workspace_id: str) -> Workspace: - """Get a user by ID.""" - response = await self._request("GET", f"workspaces/{workspace_id}") - return Workspace.from_dict(response) - - async def create(self, workspace_data: WorkspaceUpdate) -> Workspace: - """Create a new user.""" - response = await self._request( - "POST", "workspaces", data=workspace_data.to_dict() - ) - return Workspace.from_dict(response) - - async def update( - self, workspace_id: str, workspace_data: WorkspaceUpdate - ) -> Workspace: - """Update a user.""" - response = await self._request( - "PATCH", f"workspaces/{workspace_id}", data=workspace_data.to_dict() - ) - return Workspace.from_dict(response) - - async def delete(self, workspace_id: str) -> bool: - """Delete a user.""" - await self._request("DELETE", f"workspaces/{workspace_id}") - return True - - async def search(self, query: str, limit: int = 10) -> List[Workspace]: - """Search users.""" - params = {"q": query, "limit": limit} - response = await self._request("GET", "workspaces/search", params=params) - - workspaces_data = response.get("workspaces", []) - return [ - Workspace.from_dict(workspace_data) for workspace_data in workspaces_data - ] diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 0000000..3a0d0b9 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,3 @@ +pytest~=7.1.3 +pytest-cov>=2.8.1 +pytest-randomly>=3.12.0 diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/test_add_cycle_issues_request.py b/test/test_add_cycle_issues_request.py new file mode 100644 index 0000000..b994ba9 --- /dev/null +++ b/test/test_add_cycle_issues_request.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.add_cycle_issues_request import AddCycleIssuesRequest # noqa: E501 + +class TestAddCycleIssuesRequest(unittest.TestCase): + """AddCycleIssuesRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AddCycleIssuesRequest: + """Test AddCycleIssuesRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `AddCycleIssuesRequest` + """ + model = AddCycleIssuesRequest() # noqa: E501 + if include_optional: + return AddCycleIssuesRequest( + issues = [ + '' + ] + ) + else: + return AddCycleIssuesRequest( + ) + """ + + def testAddCycleIssuesRequest(self): + """Test AddCycleIssuesRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_assets_api.py b/test/test_assets_api.py new file mode 100644 index 0000000..9e1df8a --- /dev/null +++ b/test/test_assets_api.py @@ -0,0 +1,157 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.assets_api import AssetsApi # noqa: E501 + + +class TestAssetsApi(unittest.TestCase): + """AssetsApi unit test stubs""" + + def setUp(self) -> None: + self.api = AssetsApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_create_generic_asset_upload(self) -> None: + """Test case for create_generic_asset_upload + + Create Assets # noqa: E501 + """ + pass + + def test_create_generic_asset_upload2(self) -> None: + """Test case for create_generic_asset_upload2 + + Create Assets # noqa: E501 + """ + pass + + def test_create_user_asset_upload(self) -> None: + """Test case for create_user_asset_upload + + Create User Assets # noqa: E501 + """ + pass + + def test_create_user_asset_upload2(self) -> None: + """Test case for create_user_asset_upload2 + + Create User Assets # noqa: E501 + """ + pass + + def test_create_user_server_asset_upload(self) -> None: + """Test case for create_user_server_asset_upload + + Create Server # noqa: E501 + """ + pass + + def test_create_user_server_asset_upload2(self) -> None: + """Test case for create_user_server_asset_upload2 + + Create Server # noqa: E501 + """ + pass + + def test_delete_user_asset(self) -> None: + """Test case for delete_user_asset + + Delete User Assets # noqa: E501 + """ + pass + + def test_delete_user_asset2(self) -> None: + """Test case for delete_user_asset2 + + Delete User Assets # noqa: E501 + """ + pass + + def test_delete_user_server_asset(self) -> None: + """Test case for delete_user_server_asset + + Delete Server # noqa: E501 + """ + pass + + def test_delete_user_server_asset2(self) -> None: + """Test case for delete_user_server_asset2 + + Delete Server # noqa: E501 + """ + pass + + def test_get_generic_asset(self) -> None: + """Test case for get_generic_asset + + Retrieve Assets # noqa: E501 + """ + pass + + def test_get_generic_asset2(self) -> None: + """Test case for get_generic_asset2 + + Retrieve Assets # noqa: E501 + """ + pass + + def test_update_generic_asset(self) -> None: + """Test case for update_generic_asset + + Update Assets # noqa: E501 + """ + pass + + def test_update_generic_asset2(self) -> None: + """Test case for update_generic_asset2 + + Update Assets # noqa: E501 + """ + pass + + def test_update_user_asset(self) -> None: + """Test case for update_user_asset + + Update User Assets # noqa: E501 + """ + pass + + def test_update_user_asset2(self) -> None: + """Test case for update_user_asset2 + + Update User Assets # noqa: E501 + """ + pass + + def test_update_user_server_asset(self) -> None: + """Test case for update_user_server_asset + + Update Server # noqa: E501 + """ + pass + + def test_update_user_server_asset2(self) -> None: + """Test case for update_user_server_asset2 + + Update Server # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_create_cycle_request.py b/test/test_create_cycle_request.py new file mode 100644 index 0000000..8fe5261 --- /dev/null +++ b/test/test_create_cycle_request.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.create_cycle_request import CreateCycleRequest # noqa: E501 + +class TestCreateCycleRequest(unittest.TestCase): + """CreateCycleRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateCycleRequest: + """Test CreateCycleRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CreateCycleRequest` + """ + model = CreateCycleRequest() # noqa: E501 + if include_optional: + return CreateCycleRequest( + name = 'Cycle 1', + description = 'This is a cycle description', + start_date = '2025-01-01T00:00Z', + end_date = '2025-01-01T00:00Z' + ) + else: + return CreateCycleRequest( + name = 'Cycle 1', + ) + """ + + def testCreateCycleRequest(self): + """Test CreateCycleRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_create_intake_issue_request.py b/test/test_create_intake_issue_request.py new file mode 100644 index 0000000..33c0e82 --- /dev/null +++ b/test/test_create_intake_issue_request.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.create_intake_issue_request import CreateIntakeIssueRequest # noqa: E501 + +class TestCreateIntakeIssueRequest(unittest.TestCase): + """CreateIntakeIssueRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateIntakeIssueRequest: + """Test CreateIntakeIssueRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CreateIntakeIssueRequest` + """ + model = CreateIntakeIssueRequest() # noqa: E501 + if include_optional: + return CreateIntakeIssueRequest( + issue = plane.models.create_intake_issue_request_issue.create_intake_issue_request_issue( + issue = plane.models.create_intake_issue_request_issue_issue.create_intake_issue_request_issue_issue( + name = 'Issue 1', + description_html = 'This is an issue description
', + priority = 'low', ), ) + ) + else: + return CreateIntakeIssueRequest( + ) + """ + + def testCreateIntakeIssueRequest(self): + """Test CreateIntakeIssueRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_create_intake_issue_request_issue.py b/test/test_create_intake_issue_request_issue.py new file mode 100644 index 0000000..46122ad --- /dev/null +++ b/test/test_create_intake_issue_request_issue.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.create_intake_issue_request_issue import CreateIntakeIssueRequestIssue # noqa: E501 + +class TestCreateIntakeIssueRequestIssue(unittest.TestCase): + """CreateIntakeIssueRequestIssue unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateIntakeIssueRequestIssue: + """Test CreateIntakeIssueRequestIssue + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CreateIntakeIssueRequestIssue` + """ + model = CreateIntakeIssueRequestIssue() # noqa: E501 + if include_optional: + return CreateIntakeIssueRequestIssue( + issue = plane.models.create_intake_issue_request_issue_issue.create_intake_issue_request_issue_issue( + name = 'Issue 1', + description_html = 'This is an issue description
', + priority = 'low', ) + ) + else: + return CreateIntakeIssueRequestIssue( + ) + """ + + def testCreateIntakeIssueRequestIssue(self): + """Test CreateIntakeIssueRequestIssue""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_create_intake_issue_request_issue_issue.py b/test/test_create_intake_issue_request_issue_issue.py new file mode 100644 index 0000000..8f57f8f --- /dev/null +++ b/test/test_create_intake_issue_request_issue_issue.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.create_intake_issue_request_issue_issue import CreateIntakeIssueRequestIssueIssue # noqa: E501 + +class TestCreateIntakeIssueRequestIssueIssue(unittest.TestCase): + """CreateIntakeIssueRequestIssueIssue unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateIntakeIssueRequestIssueIssue: + """Test CreateIntakeIssueRequestIssueIssue + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CreateIntakeIssueRequestIssueIssue` + """ + model = CreateIntakeIssueRequestIssueIssue() # noqa: E501 + if include_optional: + return CreateIntakeIssueRequestIssueIssue( + name = 'Issue 1', + description_html = 'This is an issue description
', + priority = 'low' + ) + else: + return CreateIntakeIssueRequestIssueIssue( + ) + """ + + def testCreateIntakeIssueRequestIssueIssue(self): + """Test CreateIntakeIssueRequestIssueIssue""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_create_issue_comment_request.py b/test/test_create_issue_comment_request.py new file mode 100644 index 0000000..853d5f5 --- /dev/null +++ b/test/test_create_issue_comment_request.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.create_issue_comment_request import CreateIssueCommentRequest # noqa: E501 + +class TestCreateIssueCommentRequest(unittest.TestCase): + """CreateIssueCommentRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateIssueCommentRequest: + """Test CreateIssueCommentRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CreateIssueCommentRequest` + """ + model = CreateIssueCommentRequest() # noqa: E501 + if include_optional: + return CreateIssueCommentRequest( + comment_html = '' + ) + else: + return CreateIssueCommentRequest( + comment_html = '', + ) + """ + + def testCreateIssueCommentRequest(self): + """Test CreateIssueCommentRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_create_issue_link_request.py b/test/test_create_issue_link_request.py new file mode 100644 index 0000000..650e3e9 --- /dev/null +++ b/test/test_create_issue_link_request.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.create_issue_link_request import CreateIssueLinkRequest # noqa: E501 + +class TestCreateIssueLinkRequest(unittest.TestCase): + """CreateIssueLinkRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateIssueLinkRequest: + """Test CreateIssueLinkRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CreateIssueLinkRequest` + """ + model = CreateIssueLinkRequest() # noqa: E501 + if include_optional: + return CreateIssueLinkRequest( + url = '', + title = '', + metadata = None + ) + else: + return CreateIssueLinkRequest( + url = '', + title = '', + metadata = None, + ) + """ + + def testCreateIssueLinkRequest(self): + """Test CreateIssueLinkRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_create_label_request.py b/test/test_create_label_request.py new file mode 100644 index 0000000..67e4b71 --- /dev/null +++ b/test/test_create_label_request.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.create_label_request import CreateLabelRequest # noqa: E501 + +class TestCreateLabelRequest(unittest.TestCase): + """CreateLabelRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateLabelRequest: + """Test CreateLabelRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CreateLabelRequest` + """ + model = CreateLabelRequest() # noqa: E501 + if include_optional: + return CreateLabelRequest( + name = '', + color = '', + description = '' + ) + else: + return CreateLabelRequest( + name = '', + color = '', + description = '', + ) + """ + + def testCreateLabelRequest(self): + """Test CreateLabelRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_create_module_request.py b/test/test_create_module_request.py new file mode 100644 index 0000000..4991c1d --- /dev/null +++ b/test/test_create_module_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.create_module_request import CreateModuleRequest # noqa: E501 + +class TestCreateModuleRequest(unittest.TestCase): + """CreateModuleRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateModuleRequest: + """Test CreateModuleRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CreateModuleRequest` + """ + model = CreateModuleRequest() # noqa: E501 + if include_optional: + return CreateModuleRequest( + name = 'Module 1', + description = 'This is a module description', + start_date = '2025-01-01T00:00Z', + target_date = '2025-01-01T00:00Z', + status = 'planned', + lead = '123e4567-e89b-12d3-a456-426614174000', + members = [ + '' + ] + ) + else: + return CreateModuleRequest( + ) + """ + + def testCreateModuleRequest(self): + """Test CreateModuleRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_create_project_request.py b/test/test_create_project_request.py new file mode 100644 index 0000000..7db9aca --- /dev/null +++ b/test/test_create_project_request.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.create_project_request import CreateProjectRequest # noqa: E501 + +class TestCreateProjectRequest(unittest.TestCase): + """CreateProjectRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateProjectRequest: + """Test CreateProjectRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CreateProjectRequest` + """ + model = CreateProjectRequest() # noqa: E501 + if include_optional: + return CreateProjectRequest( + name = 'Project 1', + identifier = 'project-1', + description = 'This is a project description', + project_lead = '123e4567-e89b-12d3-a456-426614174000', + intake_view = False, + module_view = True, + cycle_view = True, + issue_views_view = True, + page_view = True, + network = 2 + ) + else: + return CreateProjectRequest( + ) + """ + + def testCreateProjectRequest(self): + """Test CreateProjectRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_create_state_request.py b/test/test_create_state_request.py new file mode 100644 index 0000000..3be4058 --- /dev/null +++ b/test/test_create_state_request.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.create_state_request import CreateStateRequest # noqa: E501 + +class TestCreateStateRequest(unittest.TestCase): + """CreateStateRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateStateRequest: + """Test CreateStateRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CreateStateRequest` + """ + model = CreateStateRequest() # noqa: E501 + if include_optional: + return CreateStateRequest( + name = 'State 1', + description = 'This is a state description', + color = '#000000', + group = 'backlog', + default = False + ) + else: + return CreateStateRequest( + ) + """ + + def testCreateStateRequest(self): + """Test CreateStateRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_cycle.py b/test/test_cycle.py new file mode 100644 index 0000000..ce36ceb --- /dev/null +++ b/test/test_cycle.py @@ -0,0 +1,101 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.cycle import Cycle # noqa: E501 + +class TestCycle(unittest.TestCase): + """Cycle unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Cycle: + """Test Cycle + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `Cycle` + """ + model = Cycle() # noqa: E501 + if include_optional: + return Cycle( + id = '', + total_issues = 56, + cancelled_issues = 56, + completed_issues = 56, + started_issues = 56, + unstarted_issues = 56, + backlog_issues = 56, + total_estimates = 1.337, + completed_estimates = 1.337, + started_estimates = 1.337, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + start_date = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + end_date = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + view_props = None, + sort_order = 1.337, + external_source = '', + external_id = '', + progress_snapshot = None, + archived_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + logo_props = None, + timezone = 'Africa/Abidjan', + version = -2147483648, + created_by = '', + updated_by = '', + project = '', + workspace = '', + owned_by = '' + ) + else: + return Cycle( + id = '', + total_issues = 56, + cancelled_issues = 56, + completed_issues = 56, + started_issues = 56, + unstarted_issues = 56, + backlog_issues = 56, + total_estimates = 1.337, + completed_estimates = 1.337, + started_estimates = 1.337, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + created_by = '', + updated_by = '', + project = '', + workspace = '', + owned_by = '', + ) + """ + + def testCycle(self): + """Test Cycle""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_cycle_issue.py b/test/test_cycle_issue.py new file mode 100644 index 0000000..d988f25 --- /dev/null +++ b/test/test_cycle_issue.py @@ -0,0 +1,71 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.cycle_issue import CycleIssue # noqa: E501 + +class TestCycleIssue(unittest.TestCase): + """CycleIssue unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CycleIssue: + """Test CycleIssue + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CycleIssue` + """ + model = CycleIssue() # noqa: E501 + if include_optional: + return CycleIssue( + id = '', + sub_issues_count = 56, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + created_by = '', + updated_by = '', + project = '', + workspace = '', + issue = '', + cycle = '' + ) + else: + return CycleIssue( + id = '', + sub_issues_count = 56, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + project = '', + workspace = '', + issue = '', + cycle = '', + ) + """ + + def testCycleIssue(self): + """Test CycleIssue""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_cycle_lite.py b/test/test_cycle_lite.py new file mode 100644 index 0000000..bd2a655 --- /dev/null +++ b/test/test_cycle_lite.py @@ -0,0 +1,80 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.cycle_lite import CycleLite # noqa: E501 + +class TestCycleLite(unittest.TestCase): + """CycleLite unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CycleLite: + """Test CycleLite + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `CycleLite` + """ + model = CycleLite() # noqa: E501 + if include_optional: + return CycleLite( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + start_date = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + end_date = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + view_props = None, + sort_order = 1.337, + external_source = '', + external_id = '', + progress_snapshot = None, + archived_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + logo_props = None, + timezone = 'Africa/Abidjan', + version = -2147483648, + created_by = '', + updated_by = '', + project = '', + workspace = '', + owned_by = '' + ) + else: + return CycleLite( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + project = '', + workspace = '', + owned_by = '', + ) + """ + + def testCycleLite(self): + """Test CycleLite""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_cycles_api.py b/test/test_cycles_api.py new file mode 100644 index 0000000..ca1ec84 --- /dev/null +++ b/test/test_cycles_api.py @@ -0,0 +1,122 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.cycles_api import CyclesApi # noqa: E501 + + +class TestCyclesApi(unittest.TestCase): + """CyclesApi unit test stubs""" + + def setUp(self) -> None: + self.api = CyclesApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_add_cycle_issues(self) -> None: + """Test case for add_cycle_issues + + Add cycle issues # noqa: E501 + """ + pass + + def test_archive_cycle(self) -> None: + """Test case for archive_cycle + + Archive cycle # noqa: E501 + """ + pass + + def test_archive_cycle2(self) -> None: + """Test case for archive_cycle2 + + Archive cycle # noqa: E501 + """ + pass + + def test_create_cycle(self) -> None: + """Test case for create_cycle + + Create cycle # noqa: E501 + """ + pass + + def test_delete_cycle(self) -> None: + """Test case for delete_cycle + + Delete cycle # noqa: E501 + """ + pass + + def test_delete_cycle_issue(self) -> None: + """Test case for delete_cycle_issue + + Delete cycle issue # noqa: E501 + """ + pass + + def test_get_cycle_issues(self) -> None: + """Test case for get_cycle_issues + + Get cycle issues # noqa: E501 + """ + pass + + def test_get_cycle_issues2(self) -> None: + """Test case for get_cycle_issues2 + + Get cycle issues # noqa: E501 + """ + pass + + def test_get_cycles(self) -> None: + """Test case for get_cycles + + Get cycles # noqa: E501 + """ + pass + + def test_get_cycles2(self) -> None: + """Test case for get_cycles2 + + Get cycles # noqa: E501 + """ + pass + + def test_transfer_cycle_issues(self) -> None: + """Test case for transfer_cycle_issues + + Transfer issues to a new cycle # noqa: E501 + """ + pass + + def test_unarchive_cycle(self) -> None: + """Test case for unarchive_cycle + + Unarchive cycle # noqa: E501 + """ + pass + + def test_update_cycle(self) -> None: + """Test case for update_cycle + + Update cycle # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_general_api.py b/test/test_general_api.py new file mode 100644 index 0000000..5f7bbf3 --- /dev/null +++ b/test/test_general_api.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.general_api import GeneralApi # noqa: E501 + + +class TestGeneralApi(unittest.TestCase): + """GeneralApi unit test stubs""" + + def setUp(self) -> None: + self.api = GeneralApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_search_issues(self) -> None: + """Test case for search_issues + + Search issues # noqa: E501 + """ + pass + + def test_workspaces_issues_retrieve(self) -> None: + """Test case for workspaces_issues_retrieve + + Retrieve Issues # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_generic_asset_upload.py b/test/test_generic_asset_upload.py new file mode 100644 index 0000000..3487447 --- /dev/null +++ b/test/test_generic_asset_upload.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.generic_asset_upload import GenericAssetUpload # noqa: E501 + +class TestGenericAssetUpload(unittest.TestCase): + """GenericAssetUpload unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GenericAssetUpload: + """Test GenericAssetUpload + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `GenericAssetUpload` + """ + model = GenericAssetUpload() # noqa: E501 + if include_optional: + return GenericAssetUpload( + name = '', + type = '', + size = 56, + project_id = '', + external_id = '', + external_source = '' + ) + else: + return GenericAssetUpload( + name = '', + size = 56, + ) + """ + + def testGenericAssetUpload(self): + """Test GenericAssetUpload""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_get_issue_attachment2_request.py b/test/test_get_issue_attachment2_request.py new file mode 100644 index 0000000..dcf7959 --- /dev/null +++ b/test/test_get_issue_attachment2_request.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.get_issue_attachment2_request import GetIssueAttachment2Request # noqa: E501 + +class TestGetIssueAttachment2Request(unittest.TestCase): + """GetIssueAttachment2Request unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetIssueAttachment2Request: + """Test GetIssueAttachment2Request + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `GetIssueAttachment2Request` + """ + model = GetIssueAttachment2Request() # noqa: E501 + if include_optional: + return GetIssueAttachment2Request( + name = '', + type = '', + size = 56, + external_id = '', + external_source = '' + ) + else: + return GetIssueAttachment2Request( + ) + """ + + def testGetIssueAttachment2Request(self): + """Test GetIssueAttachment2Request""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_get_workspace_members200_response_inner.py b/test/test_get_workspace_members200_response_inner.py new file mode 100644 index 0000000..88563c8 --- /dev/null +++ b/test/test_get_workspace_members200_response_inner.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.get_workspace_members200_response_inner import GetWorkspaceMembers200ResponseInner # noqa: E501 + +class TestGetWorkspaceMembers200ResponseInner(unittest.TestCase): + """GetWorkspaceMembers200ResponseInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetWorkspaceMembers200ResponseInner: + """Test GetWorkspaceMembers200ResponseInner + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `GetWorkspaceMembers200ResponseInner` + """ + model = GetWorkspaceMembers200ResponseInner() # noqa: E501 + if include_optional: + return GetWorkspaceMembers200ResponseInner( + id = '', + first_name = '', + last_name = '', + email = '', + avatar = '', + avatar_url = '', + display_name = '', + role = 56 + ) + else: + return GetWorkspaceMembers200ResponseInner( + id = '', + first_name = '', + last_name = '', + email = '', + display_name = '', + ) + """ + + def testGetWorkspaceMembers200ResponseInner(self): + """Test GetWorkspaceMembers200ResponseInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_intake_api.py b/test/test_intake_api.py new file mode 100644 index 0000000..7b3e6cc --- /dev/null +++ b/test/test_intake_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.intake_api import IntakeApi # noqa: E501 + + +class TestIntakeApi(unittest.TestCase): + """IntakeApi unit test stubs""" + + def setUp(self) -> None: + self.api = IntakeApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_create_intake_issue(self) -> None: + """Test case for create_intake_issue + + Create intake issue # noqa: E501 + """ + pass + + def test_delete_intake_issue(self) -> None: + """Test case for delete_intake_issue + + Delete intake issue # noqa: E501 + """ + pass + + def test_get_intake_issues(self) -> None: + """Test case for get_intake_issues + + Get intake issues # noqa: E501 + """ + pass + + def test_get_intake_issues2(self) -> None: + """Test case for get_intake_issues2 + + Get intake issues # noqa: E501 + """ + pass + + def test_update_intake_issue(self) -> None: + """Test case for update_intake_issue + + Update intake issue # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_intake_issue.py b/test/test_intake_issue.py new file mode 100644 index 0000000..4980c68 --- /dev/null +++ b/test/test_intake_issue.py @@ -0,0 +1,174 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.intake_issue import IntakeIssue # noqa: E501 + +class TestIntakeIssue(unittest.TestCase): + """IntakeIssue unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IntakeIssue: + """Test IntakeIssue + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `IntakeIssue` + """ + model = IntakeIssue() # noqa: E501 + if include_optional: + return IntakeIssue( + id = '', + issue_detail = plane.models.issue_expand.IssueExpand( + id = '', + cycle = null, + module = null, + labels = [ + plane.models.label_lite.LabelLite( + id = '', + name = '', + color = '', ) + ], + assignees = [ + plane.models.user_lite.UserLite( + id = '', + first_name = '', + last_name = '', + email = '', + avatar = '', + avatar_url = '', + display_name = '', ) + ], + state = null, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + point = 0, + name = '', + description = null, + description_html = '', + description_stripped = '', + description_binary = 'YQ==', + priority = 'urgent', + start_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + target_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + sequence_id = -2147483648, + sort_order = 1.337, + completed_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + archived_at = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + is_draft = True, + external_source = '', + external_id = '', + created_by = '', + updated_by = '', + project = '', + workspace = '', + parent = '', + estimate_point = '', + type = '', ), + inbox = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + status = -2, + snoozed_till = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + source = '', + source_email = '', + external_source = '', + external_id = '', + extra = None, + created_by = '', + updated_by = '', + project = '', + workspace = '', + intake = '', + issue = '', + duplicate_to = '' + ) + else: + return IntakeIssue( + id = '', + issue_detail = plane.models.issue_expand.IssueExpand( + id = '', + cycle = null, + module = null, + labels = [ + plane.models.label_lite.LabelLite( + id = '', + name = '', + color = '', ) + ], + assignees = [ + plane.models.user_lite.UserLite( + id = '', + first_name = '', + last_name = '', + email = '', + avatar = '', + avatar_url = '', + display_name = '', ) + ], + state = null, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + point = 0, + name = '', + description = null, + description_html = '', + description_stripped = '', + description_binary = 'YQ==', + priority = 'urgent', + start_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + target_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + sequence_id = -2147483648, + sort_order = 1.337, + completed_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + archived_at = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + is_draft = True, + external_source = '', + external_id = '', + created_by = '', + updated_by = '', + project = '', + workspace = '', + parent = '', + estimate_point = '', + type = '', ), + inbox = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + created_by = '', + updated_by = '', + project = '', + workspace = '', + intake = '', + issue = '', + ) + """ + + def testIntakeIssue(self): + """Test IntakeIssue""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_issue.py b/test/test_issue.py new file mode 100644 index 0000000..917f65b --- /dev/null +++ b/test/test_issue.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.issue import Issue # noqa: E501 + +class TestIssue(unittest.TestCase): + """Issue unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Issue: + """Test Issue + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `Issue` + """ + model = Issue() # noqa: E501 + if include_optional: + return Issue( + id = '', + assignees = [ + '' + ], + labels = [ + '' + ], + type_id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + point = 0, + name = '', + description_html = '', + description_binary = 'YQ==', + priority = 'urgent', + start_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + target_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + sequence_id = -2147483648, + sort_order = 1.337, + completed_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + archived_at = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + is_draft = True, + external_source = '', + external_id = '', + created_by = '', + updated_by = '', + project = '', + workspace = '', + parent = '', + state = '', + estimate_point = '', + type = '' + ) + else: + return Issue( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description_binary = 'YQ==', + updated_by = '', + project = '', + workspace = '', + ) + """ + + def testIssue(self): + """Test Issue""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_issue_activity.py b/test/test_issue_activity.py new file mode 100644 index 0000000..407a439 --- /dev/null +++ b/test/test_issue_activity.py @@ -0,0 +1,76 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.issue_activity import IssueActivity # noqa: E501 + +class TestIssueActivity(unittest.TestCase): + """IssueActivity unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IssueActivity: + """Test IssueActivity + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `IssueActivity` + """ + model = IssueActivity() # noqa: E501 + if include_optional: + return IssueActivity( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + verb = '', + field = '', + old_value = '', + new_value = '', + comment = '', + attachments = [ + '' + ], + old_identifier = '', + new_identifier = '', + epoch = 1.337, + project = '', + workspace = '', + issue = '', + issue_comment = '', + actor = '' + ) + else: + return IssueActivity( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + project = '', + workspace = '', + ) + """ + + def testIssueActivity(self): + """Test IssueActivity""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_issue_attachment.py b/test/test_issue_attachment.py new file mode 100644 index 0000000..2f331eb --- /dev/null +++ b/test/test_issue_attachment.py @@ -0,0 +1,83 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.issue_attachment import IssueAttachment # noqa: E501 + +class TestIssueAttachment(unittest.TestCase): + """IssueAttachment unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IssueAttachment: + """Test IssueAttachment + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `IssueAttachment` + """ + model = IssueAttachment() # noqa: E501 + if include_optional: + return IssueAttachment( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + attributes = None, + asset = '', + entity_type = '', + entity_identifier = '', + is_deleted = True, + is_archived = True, + external_id = '', + external_source = '', + size = 1.337, + is_uploaded = True, + storage_metadata = None, + created_by = '', + updated_by = '', + user = '', + workspace = '', + draft_issue = '', + project = '', + issue = '', + comment = '', + page = '' + ) + else: + return IssueAttachment( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + asset = '', + updated_by = '', + workspace = '', + project = '', + issue = '', + ) + """ + + def testIssueAttachment(self): + """Test IssueAttachment""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_issue_comment.py b/test/test_issue_comment.py new file mode 100644 index 0000000..a197af0 --- /dev/null +++ b/test/test_issue_comment.py @@ -0,0 +1,79 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.issue_comment import IssueComment # noqa: E501 + +class TestIssueComment(unittest.TestCase): + """IssueComment unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IssueComment: + """Test IssueComment + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `IssueComment` + """ + model = IssueComment() # noqa: E501 + if include_optional: + return IssueComment( + id = '', + is_member = True, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + comment_html = '', + attachments = [ + '' + ], + access = 'INTERNAL', + external_source = '', + external_id = '', + edited_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + created_by = '', + updated_by = '', + project = '', + workspace = '', + issue = '', + actor = '' + ) + else: + return IssueComment( + id = '', + is_member = True, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + created_by = '', + updated_by = '', + project = '', + workspace = '', + issue = '', + ) + """ + + def testIssueComment(self): + """Test IssueComment""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_issue_expand.py b/test/test_issue_expand.py new file mode 100644 index 0000000..6adf299 --- /dev/null +++ b/test/test_issue_expand.py @@ -0,0 +1,227 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.issue_expand import IssueExpand # noqa: E501 + +class TestIssueExpand(unittest.TestCase): + """IssueExpand unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IssueExpand: + """Test IssueExpand + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `IssueExpand` + """ + model = IssueExpand() # noqa: E501 + if include_optional: + return IssueExpand( + id = '', + cycle = plane.models.cycle_lite.CycleLite( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + start_date = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + end_date = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + view_props = null, + sort_order = 1.337, + external_source = '', + external_id = '', + progress_snapshot = null, + archived_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + logo_props = null, + timezone = 'Africa/Abidjan', + version = -2147483648, + created_by = '', + updated_by = '', + project = '', + workspace = '', + owned_by = '', ), + module = plane.models.module_lite.ModuleLite( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + description_text = null, + description_html = null, + start_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + target_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + status = 'backlog', + view_props = null, + sort_order = 1.337, + external_source = '', + external_id = '', + archived_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + logo_props = null, + created_by = '', + updated_by = '', + project = '', + workspace = '', + lead = '', + members = [ + '' + ], ), + labels = [ + plane.models.label_lite.LabelLite( + id = '', + name = '', + color = '', ) + ], + assignees = [ + plane.models.user_lite.UserLite( + id = '', + first_name = '', + last_name = '', + email = '', + avatar = '', + avatar_url = '', + display_name = '', ) + ], + state = plane.models.state_lite.StateLite( + id = '', + name = '', + color = '', + group = 'backlog', ), + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + point = 0, + name = '', + description = None, + description_html = '', + description_stripped = '', + description_binary = 'YQ==', + priority = 'urgent', + start_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + target_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + sequence_id = -2147483648, + sort_order = 1.337, + completed_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + archived_at = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + is_draft = True, + external_source = '', + external_id = '', + created_by = '', + updated_by = '', + project = '', + workspace = '', + parent = '', + estimate_point = '', + type = '' + ) + else: + return IssueExpand( + id = '', + cycle = plane.models.cycle_lite.CycleLite( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + start_date = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + end_date = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + view_props = null, + sort_order = 1.337, + external_source = '', + external_id = '', + progress_snapshot = null, + archived_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + logo_props = null, + timezone = 'Africa/Abidjan', + version = -2147483648, + created_by = '', + updated_by = '', + project = '', + workspace = '', + owned_by = '', ), + module = plane.models.module_lite.ModuleLite( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + description_text = null, + description_html = null, + start_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + target_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + status = 'backlog', + view_props = null, + sort_order = 1.337, + external_source = '', + external_id = '', + archived_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + logo_props = null, + created_by = '', + updated_by = '', + project = '', + workspace = '', + lead = '', + members = [ + '' + ], ), + labels = [ + plane.models.label_lite.LabelLite( + id = '', + name = '', + color = '', ) + ], + assignees = [ + plane.models.user_lite.UserLite( + id = '', + first_name = '', + last_name = '', + email = '', + avatar = '', + avatar_url = '', + display_name = '', ) + ], + state = plane.models.state_lite.StateLite( + id = '', + name = '', + color = '', + group = 'backlog', ), + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description_binary = 'YQ==', + created_by = '', + updated_by = '', + project = '', + workspace = '', + ) + """ + + def testIssueExpand(self): + """Test IssueExpand""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_issue_link.py b/test/test_issue_link.py new file mode 100644 index 0000000..d4b0425 --- /dev/null +++ b/test/test_issue_link.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.issue_link import IssueLink # noqa: E501 + +class TestIssueLink(unittest.TestCase): + """IssueLink unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IssueLink: + """Test IssueLink + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `IssueLink` + """ + model = IssueLink() # noqa: E501 + if include_optional: + return IssueLink( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + title = '', + url = '', + metadata = None, + created_by = '', + updated_by = '', + project = '', + workspace = '', + issue = '' + ) + else: + return IssueLink( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + url = '', + created_by = '', + updated_by = '', + project = '', + workspace = '', + issue = '', + ) + """ + + def testIssueLink(self): + """Test IssueLink""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_label.py b/test/test_label.py new file mode 100644 index 0000000..858592e --- /dev/null +++ b/test/test_label.py @@ -0,0 +1,75 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.label import Label # noqa: E501 + +class TestLabel(unittest.TestCase): + """Label unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Label: + """Test Label + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `Label` + """ + model = Label() # noqa: E501 + if include_optional: + return Label( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + color = '', + sort_order = 1.337, + external_source = '', + external_id = '', + created_by = '', + updated_by = '', + workspace = '', + project = '', + parent = '' + ) + else: + return Label( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + created_by = '', + updated_by = '', + workspace = '', + project = '', + ) + """ + + def testLabel(self): + """Test Label""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_label_lite.py b/test/test_label_lite.py new file mode 100644 index 0000000..1bf87e0 --- /dev/null +++ b/test/test_label_lite.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.label_lite import LabelLite # noqa: E501 + +class TestLabelLite(unittest.TestCase): + """LabelLite unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> LabelLite: + """Test LabelLite + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `LabelLite` + """ + model = LabelLite() # noqa: E501 + if include_optional: + return LabelLite( + id = '', + name = '', + color = '' + ) + else: + return LabelLite( + id = '', + name = '', + ) + """ + + def testLabelLite(self): + """Test LabelLite""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_labels_api.py b/test/test_labels_api.py new file mode 100644 index 0000000..e5a6617 --- /dev/null +++ b/test/test_labels_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.labels_api import LabelsApi # noqa: E501 + + +class TestLabelsApi(unittest.TestCase): + """LabelsApi unit test stubs""" + + def setUp(self) -> None: + self.api = LabelsApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_create_label(self) -> None: + """Test case for create_label + + Create a label # noqa: E501 + """ + pass + + def test_delete_label(self) -> None: + """Test case for delete_label + + Delete a label # noqa: E501 + """ + pass + + def test_get_labels(self) -> None: + """Test case for get_labels + + Get labels # noqa: E501 + """ + pass + + def test_get_labels2(self) -> None: + """Test case for get_labels2 + + Get labels # noqa: E501 + """ + pass + + def test_update_label(self) -> None: + """Test case for update_label + + Update a label # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_members_api.py b/test/test_members_api.py new file mode 100644 index 0000000..ffc8bad --- /dev/null +++ b/test/test_members_api.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.members_api import MembersApi # noqa: E501 + + +class TestMembersApi(unittest.TestCase): + """MembersApi unit test stubs""" + + def setUp(self) -> None: + self.api = MembersApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_get_project_members(self) -> None: + """Test case for get_project_members + + Get all the users that are present inside the project # noqa: E501 + """ + pass + + def test_get_workspace_members(self) -> None: + """Test case for get_workspace_members + + Get all the users that are present inside the workspace # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_module.py b/test/test_module.py new file mode 100644 index 0000000..09e6f4c --- /dev/null +++ b/test/test_module.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.module import Module # noqa: E501 + +class TestModule(unittest.TestCase): + """Module unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Module: + """Test Module + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `Module` + """ + model = Module() # noqa: E501 + if include_optional: + return Module( + id = '', + members = [ + '' + ], + total_issues = 56, + cancelled_issues = 56, + completed_issues = 56, + started_issues = 56, + unstarted_issues = 56, + backlog_issues = 56, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + description_text = None, + description_html = None, + start_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + target_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + status = 'backlog', + view_props = None, + sort_order = 1.337, + external_source = '', + external_id = '', + archived_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + logo_props = None, + created_by = '', + updated_by = '', + project = '', + workspace = '', + lead = '' + ) + else: + return Module( + id = '', + total_issues = 56, + cancelled_issues = 56, + completed_issues = 56, + started_issues = 56, + unstarted_issues = 56, + backlog_issues = 56, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + created_by = '', + updated_by = '', + project = '', + workspace = '', + ) + """ + + def testModule(self): + """Test Module""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_module_issue.py b/test/test_module_issue.py new file mode 100644 index 0000000..25af6eb --- /dev/null +++ b/test/test_module_issue.py @@ -0,0 +1,73 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.module_issue import ModuleIssue # noqa: E501 + +class TestModuleIssue(unittest.TestCase): + """ModuleIssue unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ModuleIssue: + """Test ModuleIssue + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `ModuleIssue` + """ + model = ModuleIssue() # noqa: E501 + if include_optional: + return ModuleIssue( + id = '', + sub_issues_count = 56, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + created_by = '', + updated_by = '', + project = '', + workspace = '', + module = '', + issue = '' + ) + else: + return ModuleIssue( + id = '', + sub_issues_count = 56, + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + created_by = '', + updated_by = '', + project = '', + workspace = '', + module = '', + issue = '', + ) + """ + + def testModuleIssue(self): + """Test ModuleIssue""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_module_lite.py b/test/test_module_lite.py new file mode 100644 index 0000000..ecdaf89 --- /dev/null +++ b/test/test_module_lite.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.module_lite import ModuleLite # noqa: E501 + +class TestModuleLite(unittest.TestCase): + """ModuleLite unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ModuleLite: + """Test ModuleLite + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `ModuleLite` + """ + model = ModuleLite() # noqa: E501 + if include_optional: + return ModuleLite( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + description_text = None, + description_html = None, + start_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + target_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + status = 'backlog', + view_props = None, + sort_order = 1.337, + external_source = '', + external_id = '', + archived_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + logo_props = None, + created_by = '', + updated_by = '', + project = '', + workspace = '', + lead = '', + members = [ + '' + ] + ) + else: + return ModuleLite( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + project = '', + workspace = '', + members = [ + '' + ], + ) + """ + + def testModuleLite(self): + """Test ModuleLite""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_modules_api.py b/test/test_modules_api.py new file mode 100644 index 0000000..4d89427 --- /dev/null +++ b/test/test_modules_api.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.modules_api import ModulesApi # noqa: E501 + + +class TestModulesApi(unittest.TestCase): + """ModulesApi unit test stubs""" + + def setUp(self) -> None: + self.api = ModulesApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_add_module_issues(self) -> None: + """Test case for add_module_issues + + Add module issues # noqa: E501 + """ + pass + + def test_archive_module(self) -> None: + """Test case for archive_module + + Archive module # noqa: E501 + """ + pass + + def test_create_module(self) -> None: + """Test case for create_module + + Create module # noqa: E501 + """ + pass + + def test_delete_module(self) -> None: + """Test case for delete_module + + Delete module # noqa: E501 + """ + pass + + def test_delete_module_issue(self) -> None: + """Test case for delete_module_issue + + Delete module issue # noqa: E501 + """ + pass + + def test_get_archived_modules(self) -> None: + """Test case for get_archived_modules + + Get archived modules # noqa: E501 + """ + pass + + def test_get_module(self) -> None: + """Test case for get_module + + Get module # noqa: E501 + """ + pass + + def test_get_module2(self) -> None: + """Test case for get_module2 + + Get module # noqa: E501 + """ + pass + + def test_get_module_issues(self) -> None: + """Test case for get_module_issues + + Get module issues # noqa: E501 + """ + pass + + def test_unarchive_module(self) -> None: + """Test case for unarchive_module + + Unarchive module # noqa: E501 + """ + pass + + def test_update_module(self) -> None: + """Test case for update_module + + Update module # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_patched_asset_update.py b/test/test_patched_asset_update.py new file mode 100644 index 0000000..9774f84 --- /dev/null +++ b/test/test_patched_asset_update.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.patched_asset_update import PatchedAssetUpdate # noqa: E501 + +class TestPatchedAssetUpdate(unittest.TestCase): + """PatchedAssetUpdate unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PatchedAssetUpdate: + """Test PatchedAssetUpdate + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `PatchedAssetUpdate` + """ + model = PatchedAssetUpdate() # noqa: E501 + if include_optional: + return PatchedAssetUpdate( + attributes = None + ) + else: + return PatchedAssetUpdate( + ) + """ + + def testPatchedAssetUpdate(self): + """Test PatchedAssetUpdate""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_patched_generic_asset_update.py b/test/test_patched_generic_asset_update.py new file mode 100644 index 0000000..f10aff3 --- /dev/null +++ b/test/test_patched_generic_asset_update.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.patched_generic_asset_update import PatchedGenericAssetUpdate # noqa: E501 + +class TestPatchedGenericAssetUpdate(unittest.TestCase): + """PatchedGenericAssetUpdate unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PatchedGenericAssetUpdate: + """Test PatchedGenericAssetUpdate + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `PatchedGenericAssetUpdate` + """ + model = PatchedGenericAssetUpdate() # noqa: E501 + if include_optional: + return PatchedGenericAssetUpdate( + is_uploaded = True + ) + else: + return PatchedGenericAssetUpdate( + ) + """ + + def testPatchedGenericAssetUpdate(self): + """Test PatchedGenericAssetUpdate""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_patched_issue.py b/test/test_patched_issue.py new file mode 100644 index 0000000..6d2676a --- /dev/null +++ b/test/test_patched_issue.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.patched_issue import PatchedIssue # noqa: E501 + +class TestPatchedIssue(unittest.TestCase): + """PatchedIssue unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PatchedIssue: + """Test PatchedIssue + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `PatchedIssue` + """ + model = PatchedIssue() # noqa: E501 + if include_optional: + return PatchedIssue( + id = '', + assignees = [ + '' + ], + labels = [ + '' + ], + type_id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + point = 0, + name = '', + description_html = '', + description_binary = 'YQ==', + priority = 'urgent', + start_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + target_date = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + sequence_id = -2147483648, + sort_order = 1.337, + completed_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + archived_at = datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date(), + is_draft = True, + external_source = '', + external_id = '', + created_by = '', + updated_by = '', + project = '', + workspace = '', + parent = '', + state = '', + estimate_point = '', + type = '' + ) + else: + return PatchedIssue( + ) + """ + + def testPatchedIssue(self): + """Test PatchedIssue""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_patched_project.py b/test/test_patched_project.py new file mode 100644 index 0000000..4a08ec3 --- /dev/null +++ b/test/test_patched_project.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.patched_project import PatchedProject # noqa: E501 + +class TestPatchedProject(unittest.TestCase): + """PatchedProject unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PatchedProject: + """Test PatchedProject + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `PatchedProject` + """ + model = PatchedProject() # noqa: E501 + if include_optional: + return PatchedProject( + id = '', + total_members = 56, + total_cycles = 56, + total_modules = 56, + is_member = True, + sort_order = 1.337, + member_role = 56, + is_deployed = True, + cover_image_url = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + description_text = None, + description_html = None, + network = 0, + identifier = '', + emoji = '', + icon_prop = None, + module_view = True, + cycle_view = True, + issue_views_view = True, + page_view = True, + intake_view = True, + is_time_tracking_enabled = True, + is_issue_type_enabled = True, + guest_view_all_features = True, + cover_image = '', + archive_in = 0, + close_in = 0, + logo_props = None, + archived_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + timezone = 'Africa/Abidjan', + created_by = '', + updated_by = '', + workspace = '', + default_assignee = '', + project_lead = '', + cover_image_asset = '', + estimate = '', + default_state = '' + ) + else: + return PatchedProject( + ) + """ + + def testPatchedProject(self): + """Test PatchedProject""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_project.py b/test/test_project.py new file mode 100644 index 0000000..fb25543 --- /dev/null +++ b/test/test_project.py @@ -0,0 +1,111 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.project import Project # noqa: E501 + +class TestProject(unittest.TestCase): + """Project unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Project: + """Test Project + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `Project` + """ + model = Project() # noqa: E501 + if include_optional: + return Project( + id = '', + total_members = 56, + total_cycles = 56, + total_modules = 56, + is_member = True, + sort_order = 1.337, + member_role = 56, + is_deployed = True, + cover_image_url = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + description_text = None, + description_html = None, + network = 0, + identifier = '', + emoji = '', + icon_prop = None, + module_view = True, + cycle_view = True, + issue_views_view = True, + page_view = True, + intake_view = True, + is_time_tracking_enabled = True, + is_issue_type_enabled = True, + guest_view_all_features = True, + cover_image = '', + archive_in = 0, + close_in = 0, + logo_props = None, + archived_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + timezone = 'Africa/Abidjan', + created_by = '', + updated_by = '', + workspace = '', + default_assignee = '', + project_lead = '', + cover_image_asset = '', + estimate = '', + default_state = '' + ) + else: + return Project( + id = '', + total_members = 56, + total_cycles = 56, + total_modules = 56, + is_member = True, + sort_order = 1.337, + member_role = 56, + is_deployed = True, + cover_image_url = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + identifier = '', + emoji = '', + created_by = '', + updated_by = '', + workspace = '', + ) + """ + + def testProject(self): + """Test Project""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_projects_api.py b/test/test_projects_api.py new file mode 100644 index 0000000..285007b --- /dev/null +++ b/test/test_projects_api.py @@ -0,0 +1,80 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.projects_api import ProjectsApi # noqa: E501 + + +class TestProjectsApi(unittest.TestCase): + """ProjectsApi unit test stubs""" + + def setUp(self) -> None: + self.api = ProjectsApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_archive_project(self) -> None: + """Test case for archive_project + + Archive Project # noqa: E501 + """ + pass + + def test_create_project(self) -> None: + """Test case for create_project + + Create Project # noqa: E501 + """ + pass + + def test_delete_project(self) -> None: + """Test case for delete_project + + Delete Project # noqa: E501 + """ + pass + + def test_list_projects(self) -> None: + """Test case for list_projects + + List Projects # noqa: E501 + """ + pass + + def test_list_projects2(self) -> None: + """Test case for list_projects2 + + List Projects # noqa: E501 + """ + pass + + def test_unarchive_project(self) -> None: + """Test case for unarchive_project + + Unarchive Project # noqa: E501 + """ + pass + + def test_update_project(self) -> None: + """Test case for update_project + + Update Project # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_search_issues200_response.py b/test/test_search_issues200_response.py new file mode 100644 index 0000000..3a08f59 --- /dev/null +++ b/test/test_search_issues200_response.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.search_issues200_response import SearchIssues200Response # noqa: E501 + +class TestSearchIssues200Response(unittest.TestCase): + """SearchIssues200Response unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SearchIssues200Response: + """Test SearchIssues200Response + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `SearchIssues200Response` + """ + model = SearchIssues200Response() # noqa: E501 + if include_optional: + return SearchIssues200Response( + issues = [ + plane.models.search_issues_200_response_issues_inner.search_issues_200_response_issues_inner( + name = '', + id = '', + sequence_id = '', + project__identifier = '', + project_id = '', + workspace__slug = '', ) + ] + ) + else: + return SearchIssues200Response( + ) + """ + + def testSearchIssues200Response(self): + """Test SearchIssues200Response""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_search_issues200_response_issues_inner.py b/test/test_search_issues200_response_issues_inner.py new file mode 100644 index 0000000..0b88a19 --- /dev/null +++ b/test/test_search_issues200_response_issues_inner.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.search_issues200_response_issues_inner import SearchIssues200ResponseIssuesInner # noqa: E501 + +class TestSearchIssues200ResponseIssuesInner(unittest.TestCase): + """SearchIssues200ResponseIssuesInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SearchIssues200ResponseIssuesInner: + """Test SearchIssues200ResponseIssuesInner + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `SearchIssues200ResponseIssuesInner` + """ + model = SearchIssues200ResponseIssuesInner() # noqa: E501 + if include_optional: + return SearchIssues200ResponseIssuesInner( + name = '', + id = '', + sequence_id = '', + project__identifier = '', + project_id = '', + workspace__slug = '' + ) + else: + return SearchIssues200ResponseIssuesInner( + ) + """ + + def testSearchIssues200ResponseIssuesInner(self): + """Test SearchIssues200ResponseIssuesInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_state.py b/test/test_state.py new file mode 100644 index 0000000..cd361bb --- /dev/null +++ b/test/test_state.py @@ -0,0 +1,79 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.state import State # noqa: E501 + +class TestState(unittest.TestCase): + """State unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> State: + """Test State + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `State` + """ + model = State() # noqa: E501 + if include_optional: + return State( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + description = '', + color = '', + slug = 'z', + sequence = 1.337, + group = 'backlog', + is_triage = True, + default = True, + external_source = '', + external_id = '', + created_by = '', + updated_by = '', + project = '', + workspace = '' + ) + else: + return State( + id = '', + created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + updated_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + deleted_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), + name = '', + color = '', + created_by = '', + updated_by = '', + project = '', + workspace = '', + ) + """ + + def testState(self): + """Test State""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_state_lite.py b/test/test_state_lite.py new file mode 100644 index 0000000..f7c86ca --- /dev/null +++ b/test/test_state_lite.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.state_lite import StateLite # noqa: E501 + +class TestStateLite(unittest.TestCase): + """StateLite unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> StateLite: + """Test StateLite + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `StateLite` + """ + model = StateLite() # noqa: E501 + if include_optional: + return StateLite( + id = '', + name = '', + color = '', + group = 'backlog' + ) + else: + return StateLite( + id = '', + name = '', + color = '', + group = 'backlog', + ) + """ + + def testStateLite(self): + """Test StateLite""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_states_api.py b/test/test_states_api.py new file mode 100644 index 0000000..cff300d --- /dev/null +++ b/test/test_states_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.states_api import StatesApi # noqa: E501 + + +class TestStatesApi(unittest.TestCase): + """StatesApi unit test stubs""" + + def setUp(self) -> None: + self.api = StatesApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_create_state(self) -> None: + """Test case for create_state + + Create State # noqa: E501 + """ + pass + + def test_delete_state(self) -> None: + """Test case for delete_state + + Delete State # noqa: E501 + """ + pass + + def test_get_state(self) -> None: + """Test case for get_state + + Get State # noqa: E501 + """ + pass + + def test_get_state2(self) -> None: + """Test case for get_state2 + + Get State # noqa: E501 + """ + pass + + def test_update_state(self) -> None: + """Test case for update_state + + Update State # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_transfer_cycle_issues200_response.py b/test/test_transfer_cycle_issues200_response.py new file mode 100644 index 0000000..68fd125 --- /dev/null +++ b/test/test_transfer_cycle_issues200_response.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.transfer_cycle_issues200_response import TransferCycleIssues200Response # noqa: E501 + +class TestTransferCycleIssues200Response(unittest.TestCase): + """TransferCycleIssues200Response unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TransferCycleIssues200Response: + """Test TransferCycleIssues200Response + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `TransferCycleIssues200Response` + """ + model = TransferCycleIssues200Response() # noqa: E501 + if include_optional: + return TransferCycleIssues200Response( + message = '' + ) + else: + return TransferCycleIssues200Response( + ) + """ + + def testTransferCycleIssues200Response(self): + """Test TransferCycleIssues200Response""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_transfer_cycle_issues400_response.py b/test/test_transfer_cycle_issues400_response.py new file mode 100644 index 0000000..3e7c71f --- /dev/null +++ b/test/test_transfer_cycle_issues400_response.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.transfer_cycle_issues400_response import TransferCycleIssues400Response # noqa: E501 + +class TestTransferCycleIssues400Response(unittest.TestCase): + """TransferCycleIssues400Response unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TransferCycleIssues400Response: + """Test TransferCycleIssues400Response + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `TransferCycleIssues400Response` + """ + model = TransferCycleIssues400Response() # noqa: E501 + if include_optional: + return TransferCycleIssues400Response( + error = '' + ) + else: + return TransferCycleIssues400Response( + ) + """ + + def testTransferCycleIssues400Response(self): + """Test TransferCycleIssues400Response""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_update_cycle_request.py b/test/test_update_cycle_request.py new file mode 100644 index 0000000..318cdf3 --- /dev/null +++ b/test/test_update_cycle_request.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.update_cycle_request import UpdateCycleRequest # noqa: E501 + +class TestUpdateCycleRequest(unittest.TestCase): + """UpdateCycleRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateCycleRequest: + """Test UpdateCycleRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `UpdateCycleRequest` + """ + model = UpdateCycleRequest() # noqa: E501 + if include_optional: + return UpdateCycleRequest( + name = 'Cycle 1', + description = 'This is a cycle description', + start_date = '2025-01-01T00:00Z', + end_date = '2025-01-01T00:00Z' + ) + else: + return UpdateCycleRequest( + ) + """ + + def testUpdateCycleRequest(self): + """Test UpdateCycleRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_update_label_request.py b/test/test_update_label_request.py new file mode 100644 index 0000000..9b802a9 --- /dev/null +++ b/test/test_update_label_request.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.update_label_request import UpdateLabelRequest # noqa: E501 + +class TestUpdateLabelRequest(unittest.TestCase): + """UpdateLabelRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateLabelRequest: + """Test UpdateLabelRequest + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `UpdateLabelRequest` + """ + model = UpdateLabelRequest() # noqa: E501 + if include_optional: + return UpdateLabelRequest( + name = '', + color = '', + description = '' + ) + else: + return UpdateLabelRequest( + ) + """ + + def testUpdateLabelRequest(self): + """Test UpdateLabelRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_user_asset_upload.py b/test/test_user_asset_upload.py new file mode 100644 index 0000000..061b38a --- /dev/null +++ b/test/test_user_asset_upload.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.user_asset_upload import UserAssetUpload # noqa: E501 + +class TestUserAssetUpload(unittest.TestCase): + """UserAssetUpload unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UserAssetUpload: + """Test UserAssetUpload + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `UserAssetUpload` + """ + model = UserAssetUpload() # noqa: E501 + if include_optional: + return UserAssetUpload( + name = '', + type = 'image/jpeg', + size = 56, + entity_type = 'USER_AVATAR' + ) + else: + return UserAssetUpload( + name = '', + size = 56, + entity_type = 'USER_AVATAR', + ) + """ + + def testUserAssetUpload(self): + """Test UserAssetUpload""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_user_lite.py b/test/test_user_lite.py new file mode 100644 index 0000000..dc2893a --- /dev/null +++ b/test/test_user_lite.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest +import datetime + +from plane.models.user_lite import UserLite # noqa: E501 + +class TestUserLite(unittest.TestCase): + """UserLite unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UserLite: + """Test UserLite + include_option is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `UserLite` + """ + model = UserLite() # noqa: E501 + if include_optional: + return UserLite( + id = '', + first_name = '', + last_name = '', + email = '', + avatar = '', + avatar_url = '', + display_name = '' + ) + else: + return UserLite( + id = '', + first_name = '', + last_name = '', + email = '', + display_name = '', + ) + """ + + def testUserLite(self): + """Test UserLite""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_users_api.py b/test/test_users_api.py new file mode 100644 index 0000000..251af84 --- /dev/null +++ b/test/test_users_api.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.users_api import UsersApi # noqa: E501 + + +class TestUsersApi(unittest.TestCase): + """UsersApi unit test stubs""" + + def setUp(self) -> None: + self.api = UsersApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_get_current_user(self) -> None: + """Test case for get_current_user + + Get User # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_work_items_api.py b/test/test_work_items_api.py new file mode 100644 index 0000000..b8eeaea --- /dev/null +++ b/test/test_work_items_api.py @@ -0,0 +1,178 @@ +# coding: utf-8 + +""" + Plane API + + Plane External API + + The version of the OpenAPI document: 1.0.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from plane.api.work_items_api import WorkItemsApi # noqa: E501 + + +class TestWorkItemsApi(unittest.TestCase): + """WorkItemsApi unit test stubs""" + + def setUp(self) -> None: + self.api = WorkItemsApi() + + def tearDown(self) -> None: + self.api.api_client.close() + + def test_create_issue_comment(self) -> None: + """Test case for create_issue_comment + + Create an issue comment # noqa: E501 + """ + pass + + def test_create_issue_link(self) -> None: + """Test case for create_issue_link + + Create an issue link # noqa: E501 + """ + pass + + def test_create_work_item(self) -> None: + """Test case for create_work_item + + Create an work item # noqa: E501 + """ + pass + + def test_delete_issue_attachment(self) -> None: + """Test case for delete_issue_attachment + + Delete an issue attachment # noqa: E501 + """ + pass + + def test_delete_issue_comment(self) -> None: + """Test case for delete_issue_comment + + Delete an issue comment # noqa: E501 + """ + pass + + def test_delete_issue_link(self) -> None: + """Test case for delete_issue_link + + Delete an issue link # noqa: E501 + """ + pass + + def test_delete_work_item(self) -> None: + """Test case for delete_work_item + + Delete an work item # noqa: E501 + """ + pass + + def test_get_issue_activities(self) -> None: + """Test case for get_issue_activities + + Get issue activities # noqa: E501 + """ + pass + + def test_get_issue_activities2(self) -> None: + """Test case for get_issue_activities2 + + Get issue activities # noqa: E501 + """ + pass + + def test_get_issue_attachment(self) -> None: + """Test case for get_issue_attachment + + Get an issue attachment # noqa: E501 + """ + pass + + def test_get_issue_attachment2(self) -> None: + """Test case for get_issue_attachment2 + + Get issue attachment # noqa: E501 + """ + pass + + def test_get_issue_attachment3(self) -> None: + """Test case for get_issue_attachment3 + + Get an issue attachment # noqa: E501 + """ + pass + + def test_get_issue_comments(self) -> None: + """Test case for get_issue_comments + + Get issue comments # noqa: E501 + """ + pass + + def test_get_issue_comments2(self) -> None: + """Test case for get_issue_comments2 + + Get issue comments # noqa: E501 + """ + pass + + def test_get_issue_links(self) -> None: + """Test case for get_issue_links + + Get issue links # noqa: E501 + """ + pass + + def test_get_issue_links2(self) -> None: + """Test case for get_issue_links2 + + Get issue links # noqa: E501 + """ + pass + + def test_get_work_item(self) -> None: + """Test case for get_work_item + + Work Item retrieve endpoints # noqa: E501 + """ + pass + + def test_get_work_item2(self) -> None: + """Test case for get_work_item2 + + Work Item retrieve endpoints # noqa: E501 + """ + pass + + def test_patch_work_item(self) -> None: + """Test case for patch_work_item + + Patch an work item # noqa: E501 + """ + pass + + def test_update_issue_comment(self) -> None: + """Test case for update_issue_comment + + Update an issue comment # noqa: E501 + """ + pass + + def test_update_issue_link(self) -> None: + """Test case for update_issue_link + + Update an issue link # noqa: E501 + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/client.py b/tests/client.py deleted file mode 100644 index e557101..0000000 --- a/tests/client.py +++ /dev/null @@ -1,60 +0,0 @@ -import pytest -from unittest.mock import AsyncMock, MagicMock -import httpx -from plane import Client, Config -from plane.exceptions import AuthenticationError - - -class TestClient: - """Test the main client.""" - - def test_client_initialization(self): - """Test client initialization.""" - config = Config(api_key="test-key") - client = Client(config) - - assert client.config == config - assert client.users is not None - assert isinstance(client._http_client, httpx.AsyncClient) - - def test_client_from_env(self, monkeypatch): - """Test client initialization from environment.""" - monkeypatch.setenv("MY_API_KEY", "env-test-key") - monkeypatch.setenv("MY_API_BASE_URL", "https://env.api.com") - - client = Client() - - assert client.config.api_key == "env-test-key" - assert client.config.base_url == "https://env.api.com" - - @pytest.mark.asyncio - async def test_health_check_success(self, client, mock_http_client): - """Test successful health check.""" - mock_response = MagicMock() - mock_response.json.return_value = {"status": "ok"} - mock_http_client.get.return_value = mock_response - - result = await client.health_check() - - assert result == {"status": "ok"} - mock_http_client.get.assert_called_once_with(f"{client.config.base_url}/health") - - @pytest.mark.asyncio - async def test_health_check_error(self, client, mock_http_client): - """Test health check with error.""" - mock_http_client.get.side_effect = Exception("Connection failed") - - result = await client.health_check() - - assert result["status"] == "error" - assert "Connection failed" in result["message"] - - @pytest.mark.asyncio - async def test_context_manager(self, config): - """Test client as async context manager.""" - async with Client(config) as client: - assert client is not None - assert client._http_client is not None - - # Client should be closed after context - assert client._http_client.is_closed diff --git a/tests/conf_test.py b/tests/conf_test.py deleted file mode 100644 index 273974b..0000000 --- a/tests/conf_test.py +++ /dev/null @@ -1,57 +0,0 @@ -import pytest -import httpx -from unittest.mock import AsyncMock -from plane import Client, Config - - -@pytest.fixture -def config(): - """Test configuration.""" - return Config(api_key="x-api-key", base_url="https://api.plane.so/api/v1") - - -@pytest.fixture -def mock_http_client(): - """Mock HTTP client.""" - return AsyncMock(spec=httpx.AsyncClient) - - -@pytest.fixture -async def client(config, mock_http_client): - """Test client.""" - client = Client(config) - client._http_client = mock_http_client - yield client - await client.close() - - -@pytest.fixture -def sample_user_data(): - """Sample user data for testing.""" - return { - "id": "123", - "email": "test@example.com", - "firstName": "John", - "lastName": "Doe", - "username": "johndoe", - "isActive": True, - "createdAt": "2023-01-01T00:00:00Z", - "updatedAt": "2023-01-01T00:00:00Z", - } - - -@pytest.fixture -def sample_workspace_data(): - """Sample workspace data for testing.""" - return { - "id": "ws-123", - "name": "Test Workspace", - "logo": "https://logo.url/logo.png", - "logo_asset": "https://logo.url/asset.png", - "owner": "user-123", - "slug": "test-workspace", - "organization_size": "small", - "timezone": "UTC", - "createdAt": "2023-01-01T00:00:00Z", - "updatedAt": "2023-01-01T00:00:00Z", - } diff --git a/tests/workspace.py b/tests/workspace.py deleted file mode 100644 index 30aea34..0000000 --- a/tests/workspace.py +++ /dev/null @@ -1,141 +0,0 @@ -import pytest -from unittest.mock import MagicMock -import httpx -from plane.models.workspace import Workspace, WorkspaceUpdate -from plane.exceptions import NotFoundError - - -class TestWorkspacesResource: - """Test workspaces resource.""" - - @pytest.mark.asyncio - async def test_list_workspaces( - self, client, mock_http_client, sample_workspace_data - ): - """Test listing workspaces.""" - mock_response = MagicMock() - mock_response.is_success = True - mock_response.json.return_value = { - "data": [sample_workspace_data], - "pagination": { - "page": 1, - "perPage": 20, - "total": 1, - "totalPages": 1, - "hasNext": False, - "hasPrev": False, - }, - } - mock_http_client.request.return_value = mock_response - - result = await client.workspaces.list() - - assert len(result["workspaces"]) == 1 - assert isinstance(result["workspaces"][0], Workspace) - assert result["workspaces"][0].name == "Test Workspace" - assert result["pagination"].total == 1 - - @pytest.mark.asyncio - async def test_get_workspace(self, client, mock_http_client, sample_workspace_data): - """Test getting a workspace.""" - mock_response = MagicMock() - mock_response.is_success = True - mock_response.json.return_value = sample_workspace_data - mock_http_client.request.return_value = mock_response - - workspace = await client.workspaces.get("ws-123") - - assert isinstance(workspace, Workspace) - assert workspace.id == "ws-123" - assert workspace.name == "Test Workspace" - assert workspace.slug == "test-workspace" - - @pytest.mark.asyncio - async def test_get_workspace_not_found(self, client, mock_http_client): - """Test getting a non-existent workspace.""" - mock_response = MagicMock() - mock_response.is_success = False - mock_response.status_code = 404 - mock_response.json.return_value = {"message": "Workspace not found"} - mock_http_client.request.return_value = mock_response - - with pytest.raises(NotFoundError): - await client.workspaces.get("ws-999") - - @pytest.mark.asyncio - async def test_create_workspace( - self, client, mock_http_client, sample_workspace_data - ): - """Test creating a workspace.""" - workspace_create = WorkspaceUpdate( - name="New Workspace", - logo="https://logo.url/newlogo.png", - logo_asset="https://logo.url/newasset.png", - organization_size="medium", - timezone="UTC", - ) - - mock_response = MagicMock() - mock_response.is_success = True - mock_response.json.return_value = { - **sample_workspace_data, - "name": "New Workspace", - "logo": "https://logo.url/newlogo.png", - "logo_asset": "https://logo.url/newasset.png", - "organization_size": "medium", - } - mock_http_client.request.return_value = mock_response - - workspace = await client.workspaces.create(workspace_create) - - assert isinstance(workspace, Workspace) - assert workspace.name == "New Workspace" - assert workspace.logo == "https://logo.url/newlogo.png" - - @pytest.mark.asyncio - async def test_update_workspace( - self, client, mock_http_client, sample_workspace_data - ): - """Test updating a workspace.""" - workspace_update = WorkspaceUpdate(name="Updated Workspace") - - mock_response = MagicMock() - mock_response.is_success = True - mock_response.json.return_value = { - **sample_workspace_data, - "name": "Updated Workspace", - } - mock_http_client.request.return_value = mock_response - - workspace = await client.workspaces.update("ws-123", workspace_update) - - assert isinstance(workspace, Workspace) - assert workspace.name == "Updated Workspace" - - @pytest.mark.asyncio - async def test_delete_workspace(self, client, mock_http_client): - """Test deleting a workspace.""" - mock_response = MagicMock() - mock_response.is_success = True - mock_response.json.return_value = {} - mock_http_client.request.return_value = mock_response - - result = await client.workspaces.delete("ws-123") - - assert result is True - - @pytest.mark.asyncio - async def test_search_workspaces( - self, client, mock_http_client, sample_workspace_data - ): - """Test searching workspaces.""" - mock_response = MagicMock() - mock_response.is_success = True - mock_response.json.return_value = {"workspaces": [sample_workspace_data]} - mock_http_client.request.return_value = mock_response - - workspaces = await client.workspaces.search("test", limit=5) - - assert len(workspaces) == 1 - assert isinstance(workspaces[0], Workspace) - assert workspaces[0].name == "Test Workspace" diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..c8c555a --- /dev/null +++ b/tox.ini @@ -0,0 +1,9 @@ +[tox] +envlist = py3 + +[testenv] +deps=-r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +commands= + pytest --cov=plane