{
	"swagger" : "2.0",
	"info" : {
		"description" : "The following is a list of the API calls supported by Worksnaps. They are grouped by business entities (objects). You can expand each section to view and test the API calls related to each entity.",
		"version" : "1.0.0",
		"title" : "API Document",
		"termsOfService" : "http://www.worksnaps.com/terms/"
	},
	"host" : "api.worksnaps.com",
	"basePath" : "/api",
	"schemes" : ["https"],
	"paths" : {
		"/projects.xml" : {
			"get" : {
				"tags" : ["Project API"],
				"summary" : "Get list of projects",
				"description" : "This API gets a list of projects that the current user is involved in. <br/><br/>You can add an optional query string parameter \"<b>include_user_assignment=1</b>\" to also fetch the User Assignment objects (i.e., members) of the projects.",
				"operationId" : "getProjects",
				"produces" : ["application/xml"],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned ",
						"schema" : {
							"$ref" : "#/definitions/ReplyAllProjects"
						}
					},
					"200(OK)" : {
						"description" : "The operation is successful and a reply is returned "
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"post" : {
				"tags" : ["Project API"],
				"summary" : "Create a new project",
				"description" : "This API creates a new project. The data of the new project is passed as XML in the POST body. ",
				"operationId" : "addproject",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "body",
						"name" : "body",
						"description" : "Project object that needs to be added ",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/Project"
						}
					}
				],
				"responses" : {
					"201" : {
						"description" : "The operation is successful and the object is created",
						"schema" : {
							"$ref" : "#/definitions/ReplyCreateOrUpdateProject"
						}
					},
					"201 (Created)" : {
						"description" : "The operation is successful and the object is created"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409(Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be created (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}.xml" : {
			"get" : {
				"tags" : ["Project API"],
				"summary" : "Get a specific project",
				"description" : "This API gets a specific project. <br/><br/>You can add an optional query string parameter \"<b>include_user_assignment=1</b>\" to also fetch the User Assignment objects (i.e., members) of the project.",
				"operationId" : "getAProjectById",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project that needs to be fetched",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyAProject"
						}
					},
					"200(OK)" : {
						"description" : "The operation is successful and a reply is returned "
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"put" : {
				"tags" : ["Project API"],
				"summary" : "Update an existing project",
				"description" : "This API updates the specified project. The data of the updated project is passed as XML in the PUT body.",
				"operationId" : "updateproject",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project that need to be updated",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "body",
						"name" : "body",
						"description" : "Project object that needs to be updated. <br/><span style='font-size: 9px;'>(It can only contain the attributes that need to be updated. The unchanged attributes do not need to be included.)</span>",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/Project"
						}
					}
				],
				"responses" : {
				    "200" : {
						"description" : "The operation is successful and the object is updated",
						"schema" : {
							"$ref" : "#/definitions/ReplyCreateOrUpdateProject"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and the object is updated"
					},
					"409 (Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be updated (for example, due to duplicated unique key)"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"delete" : {
				"tags" : ["Project API"],
				"summary" : "Delete a project ",
				"description" : "This API archives the specified project (i.e., make it not active).",
				"operationId" : "deleteproject",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project to be deleted",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200 (OK)" : {
						"description" : "The operation is successful and the object is deleted"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}/tasks.xml" : {
			"get" : {
				"tags" : ["Task API"],
				"summary" : "Get Tasks In a Project",
				"description" : "This API fetches the tasks in a specified project. <br/><br/>You can add an optional query string parameter \"<b>include_task_assignment=1</b>\" to also fetch the Task Assignment objects (i.e., the assigned users) of the tasks.",
				"operationId" : "getTasksByProjectId",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project from which the tasks are fetched",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyAllTasks"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"post" : {
				"tags" : ["Task API"],
				"summary" : "Create a Task ",
				"description" : "This API creates a new task in a project. The data of the new task is passed as XML in the POST body. The project is specified in the URL path.",
				"operationId" : "createTaskInProject",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project in which the task is created",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "body",
						"name" : "body",
						"description" : "Task object that needs to be added in the specified project",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/Task"
						}
					}
				],
				"responses" : {
					"201" : {
						"description" : "The operation is successful and the object is created",
						"schema" : {
							"$ref" : "#/definitions/ReplyATaskCreation"
						}
					},
					"201(Created)" : {
						"description" : "The operation is successful and the object is created"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409(Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be created (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}/tasks/{task_id}.xml" : {
			"get" : {
				"tags" : ["Task API"],
				"summary" : "Get a Task",
				"description" : "This API get a task in a specific project. <br/><br/>You can add an optional query string parameter \"<b>include_task_assignment=1</b>\" to also fetch the Task Assignment objects (i.e., the assigned users) of the task.",
				"operationId" : "getTasksByProjectIdAndTaskid",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "task_id",
						"description" : "ID of the target task that needs to be fetched",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyAtask"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"put" : {
				"tags" : ["Task API"],
				"summary" : "Update a Task",
				"description" : "This API updates a task in a speficied project",
				"operationId" : "UpdateaTask",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the project that the task to be updated is in",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "path",
						"name" : "task_id",
						"description" : "ID of the target task that needs to be updated.",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "body",
						"name" : "body",
						"description" : "Task object that need to be updated.  <br/><span style='font-size: 9px;'>(It can only contain the attributes that need to be updated. The unchanged attributes do not need to be included.)</span>",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/Task"
						}
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and the object is updated",
						"schema" : {
							"$ref" : "#/definitions/ReplyATaskCreation"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and the object is updated"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409 (Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be updated (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"delete" : {
				"tags" : ["Task API"],
				"summary" : "Deletes a task ",
				"description" : "This API deletes a task in a project.",
				"operationId" : "deleteproject",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the project that the task to be deleted is in",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "path",
						"name" : "task_id",
						"description" : "ID of the target task to be deleted",
						"required" : true,
						"type" : "string"
					}
				],
				"responses" : {
					"200 (OK)" : {
						"description" : "The operation is successful and the object is deleted"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}/time_entries/{time_entry_id}.xml" : {
			"get" : {
				"tags" : ["Time Entry API"],
				"summary" : "Get a time entry ",
				"description" : "This API returns a time entry object. Usually you issue an API to get the list of time entries of a user in a project first (see below), then you can invoke this API to get the detail of a time entry. ",
				"operationId" : "getTimeByProjectIdAndTime",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "time_entry_id",
						"description" : "ID of the Time Entry that needs to be fetched",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyATimeEntry"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"put" : {
				"tags" : ["Time Entry API"],
				"summary" : "Update time entry ",
				"description" : "This API updates one or more time entries, such as task ID (which tasks the time entries are logged against) and user comment. <br/>If you want to update multiple entries, you can use the following format in the URL: <br/><br/><b>PUT /projects/#{project_id}/time_entries/#{time_entry_id_1};#{time_entry_id_2};...;#{time_entry_id_n}.xml</b><br/><br/>For example,<br/><br/><b>PUT /projects/#{project_id}/time_entries/1110;1111;1112.xml</b><br/><br/>This API call updates the time entries 1110, 1111, 1112 with the content in the PUT body. <br/>Semi-colon is used as the separator between the IDs.",
				"operationId" : "UpdateTimeByProjectIdAndTime",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "time_entry_id",
						"description" : "IDs of the target Time Entry to be updated, separated by semi-colon",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "body",
						"name" : "body",
						"description" : "Offline time entry object ",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/TimeEntryToUpdate"
						}
					}
				],
				"responses" : {
					"200 (OK)" : {
						"description" : "The operation is successful and the object is updated"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409 (Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be updated (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"delete" : {
				"tags" : ["Time Entry API"],
				"summary" : "Delete time entry ",
				"description" : "Delete one or more time entries. If you want to delete multiple entries, you can use the following format in the URL:<br/><br/><b>DELETE /projects/#{project_id}/time_entries/#{time_entry_id_1};#{time_entry_id_2};...;#{time_entry_id_n}.xml</b><br/><br/>For example,<br/><br/><b>DELETE /projects/#{project_id}/time_entries/1110;1111;1112.xml</b><br/><br/>This API call deletes the time entries 1110, 1111, 1112. <br/>Semi-colon is used as the separator between the IDs.",
				"operationId" : "DeleteTimeEntry",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "time_entry_id",
						"description" : "IDs of the target Time Entry that needs to be deleted, separated by semi-colon.",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200 (OK)" : {
						"description" : "The operation is successful and the object is deleted"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}/time_entries/{time_entry_id}.xml?full_resolution_url=1" : {
			"get" : {
				"tags" : ["Time Entry API"],
				"summary" : "Get full resolution screenshot URL",
				"description" : "This API is to get the URL of full resolution screenshot of a time entry",
				"operationId" : "getTimeEntries",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "time_entry_id",
						"description" : "ID of the target Time Entry",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyATimeEntryFullURL"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}/users/{user_id}/time_entries.xml" : {
			"get" : {
				"tags" : ["Time Entry API"],
				"summary" : "Get time entries for a user in a project",
				"description" : "This API returns time entries of the specified user in the specified project. <br/>The &lt;time_entry&gt; in the response do not include the &lt;activities&gt; for performance consideration",
				"operationId" : "getTimeEntries",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "user_id",
						"description" : "ID of the target user",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "query",
						"name" : "from_timestamp",
						"description" : "The starting timestamp. <br/>It must be at the boundary of a 10-minute interval. For example, 1300616400 (10:20am March 20, 2011 GMT) is valid while 1300616700 (10:25am March 20, 2011 GMT) is invalid. ",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "query",
						"name" : "to_timestamp",
						"description" : "The ending timestamp. <br/>It must be at the boundary of a 10-minute interval",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "query",
						"name" : "time_entry_type",
						"enum" : ["offline", "online"],
						"description" : "It specifies whether to fetch online time or offline time entries. When not specified, both online and offline time entries will be fetched. ",
						"required" : false,
						"type" : "string"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyAllTimeEntries"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"post" : {
				"tags" : ["Time Entry API"],
				"summary" : "Creating offline time entries for a user",
				"description" : "This API creates offline time entries for a user. (You must be a manager of the project to create offline time entries for a user.) <br/>",
				"operationId" : "addOfflineTimeEntriesForUser",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "user_id",
						"description" : "ID of the target user",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "body",
						"name" : "body",
						"description" : "Offline time entry object to be added ",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/TimeEntry"
						}
					}
				],
				"responses" : {
					"201(Created)" : {
						"description" : "The operation is successful and the object is created"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409(Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be created (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}/time_entries.xml" : {
			"get" : {
				"tags" : ["Time Entry API"],
				"summary" : "Get time entries in a project (for one or more users)",
				"description" : "This API returns the time entries in the specified project.<br/>Example - <br/><br/><b>GET /projects/3456/time_entries.xml?user_ids=122;123;124&from_timestamp=1425204000&to_timestamp=1425211200&task_ids=10021;10023;10025&time_entry_type=online</b><br/><br/> ",
				"operationId" : "getTimeEntryData",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "query",
						"name" : "user_ids",
						"description" : "&lt;user_ids&gt; can contain a sequence of IDs separated by semi-colon.",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "query",
						"name" : "from_timestamp",
						"description" : "The starting timestamp. <br/>It must be at the boundary of a 10-minute interval. For example, 1300616400 (10:20am March 20, 2011 GMT) is valid while 1300616700 (10:25am March 20, 2011 GMT) is invalid. ",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "query",
						"name" : "to_timestamp",
						"description" : "The ending timnestamp. <br/>It must be at the boundary of a 10-minute interval",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "query",
						"name" : "task_ids",
						"description" : "&lt;task_ids&gt; can contain a sequence of IDs separated by semi-colon.",
						"required" : false,
						"type" : "string"
					}, {
						"in" : "query",
						"name" : "time_entry_type",
						"enum" : ["offline", "online"],
						"description" : "specify whether to fetch online time or offline time entries. When not specified, both online and offline time entries will be fetched.",
						"required" : false,
						"type" : "string"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyAllTimeEntries"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"post" : {
				"tags" : ["Time Entry API"],
				"summary" : "For creating offline time entries for YOURSELF",
				"description" : "This API creates offline time entries for yourself. <br/>",
				"operationId" : "addOfflineTimeEntries",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "body",
						"name" : "body",
						"description" : "Offline time entry object to be added ",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/TimeEntry"
						}
					}
				],
				"responses" : {
					"201(Created)" : {
						"description" : "The operation is successful and the object is created"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409(Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be created (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}/task_assignments.xml" : {
			"get" : {
				"tags" : ["Task Assignment API"],
				"summary" : "Get tasks assignments",
				"description" : "This API returns the task assignments in a project (i.e., which users are assigned to the tasks in a project). ",
				"operationId" : "getTasksAssignmentsByProjectId",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyAllTaskAssignments"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"post" : {
				"tags" : ["Task Assignment API"],
				"summary" : "Create a task assignment (i.e., assign a user to a task)",
				"description" : "This API creates a task assignment, i.e., assign a user to a task. <br/>You can also creates multiple task assignments at the same time by specifying something like the following in the POST body.<br/><br/><span style='font-size: 12px; background-color: #EEEEEE'>&lt;task_assignments&gt;\n&nbsp;&nbsp;&lt;task_assignment&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;user_id&gt;12&lt;/user_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;task_id&gt;23&lt;/task_id&gt;\n&nbsp;&nbsp;&lt;/task_assignment&gt;\n&nbsp;&nbsp;&lt;task_assignment&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;user_id&gt;20&lt;/user_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;task_id&gt;23&lt;/task_id&gt;\n&nbsp;&nbsp;&lt;/task_assignment&gt;\n&nbsp;&nbsp;&lt;task_assignment&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;user_id&gt;22&lt;/user_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;task_id&gt;23&lt;/task_id&gt;\n&nbsp;&nbsp;&lt;/task_assignment&gt;\n&lt;/task_assignments&gt;</span>",
				"operationId" : "createTaskAssignmentInProject",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project that the task is in",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "body",
						"name" : "body",
						"description" : "Task assignment object to be created",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/TaskAssignment"
						}
					}
				],
				"responses" : {
					"201" : {
						"description" : "The operation is successful and the object is created",
						"schema" : {
							"$ref" : "#/definitions/ReplyCreateOrUpdateTaskAssignment"
						}
					},
					"201(Created)" : {
						"description" : "The operation is successful and the object is created"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409(Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be created (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},		
			"delete" : {
				"tags" : ["Task Assignment API"],
				"summary" : "Delete a task assignment",
				"description" : "This API deletes a task assignment, i.e., unassigned a task to a user. <br/>For Example, <b>DELETE http://api.worksnaps.com/api/projects/11233/task_assignments.xml?user_id=12&task_id=567</b>. This invocation unassigns task 567 to user 12 in project 11233. <br/><br/>Note: This API does not delete a task. To delete a task, you need to use the Task API. ",
				"operationId" : "deletetaskassignment1",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "query",
						"name" : "user_id",
						"description" : "ID of the target user that need to be unassigned the specified task",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "query",
						"name" : "task_id",
						"description" : "ID of the target task",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200 (OK)" : {
						"description" : "The operation is successful and the object is deleted"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}/task_assignments/{task_assignment_id}.xml" : {
			"get" : {
				"tags" : ["Task Assignment API"],
				"summary" : "Get a task assignment ",
				"description" : "This API returns a task assignment object by its ID.",
				"operationId" : "getTaskAssignmentByProjectId",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "task_assignment_id",
						"description" : "ID of the task assignment to be fetched",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyGetATaskAssignment"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"delete" : {
				"tags" : ["Task Assignment API"],
				"summary" : "Delete a task assignment",
				"description" : "This API deletes a task assignment, i.e., unassign a task to a user. <br/>Note: This API does not delete a task. To delete a task, you need to use the Task API.",
				"operationId" : "deleteproject",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "path",
						"name" : "task_assignment_id",
						"description" : "ID of the task assignment to be deleted",
						"required" : true,
						"type" : "string"
					}
				],
				"responses" : {
					"200 (OK)" : {
						"description" : "The operation is successful and the object is deleted"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}/user_assignments/{user_assignment_id}.xml" : {
			"get" : {
				"tags" : ["User Assignment API"],
				"summary" : "Get a user assignment",
				"description" : "A <b>user assignment</b> indicates that a user is in a project and the user's settings in the project. <br/>This API fetches a user assignment by ID.",
				"operationId" : "getUserAssignmentByProjectId",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "user_assignment_id",
						"description" : "ID of the user assignment that needs to be fetched",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyAUserAssignment"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"delete" : {
				"tags" : ["User Assignment API"],
				"summary" : "Delete a user assignment",
				"description" : "This API deletes a user assignment, i.e., remove a user from a project.",
				"operationId" : "deleteuserassignment",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "user_assignment_id",
						"description" : "ID of the user assignment to be deleted",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200 (OK)" : {
						"description" : "The operation is successful and the object is deleted"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"put" : {
				"tags" : ["User Assignment API"],
				"summary" : "Update a user assignment",
				"description" : "This API updates a task assignment, i.e., change a user's settings in a project. <br/>You can change a user's following settings in a project: hourly rate, whether allow user to log time in the project, window for user to delete logged time, window for user to add offline time. <br/><br/><b>Note:</b><br/><UL><LI><b>hourly_rate</b> - the hourly rate of the user in the project in the form of xxx.xx. </p></LI><LI><p><b>flag_allow_logging_time</b> - it can have value 0 or 1. If the value is 0, it means the user is not allowed to log time to the project. If the value is 1, it means the user is allowed to log time to the project. </p></LI><LI><p><b>window_for_deleting_time</b> - it can have value -1, 0, 1, 2, 3, 5, 7, 10, 14, 30. If the value is -1, it means the user is always allowed to delete his/her time in the project. If the value is 0, it means the user is always not allowed to delete his/her time in the project. If the value is one of the positive numbers, it means the user is allowed to delete his/her time within the number of days after it is logged.</p></LI><LI><p><b>window_for_adding_offline_time</b> - it can have value -1, 0, 1, 2, 3, 5, 7, 10, 14, 30. If the value is -1, it means the user is always allowed to add offline time in the project. If the value is 0, it means the user is always not allowed to add offline time in the project. If the value is one of the positive numbers, it means the user is allowed to add offline time within the number of days prior to the current day. </p></LI></UL>",
				"operationId" : "changeUserAssignmentByProjectId",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "path",
						"name" : "user_assignment_id",
						"description" : "ID of the user assignment to be updated",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "body",
						"name" : "body",
						"description" : "User Assignment object to be updated",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/UserAssignment"
						}
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and the object is updated",
						"schema" : {
							"$ref" : "#/definitions/ReplyCreateOrUpdateUserAssignment"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and the object is updated"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409 (Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be updated (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}			
		},
		"/projects/{project_id}/user_assignments.xml" : {
			"get" : {
				"tags" : ["User Assignment API"],
				"summary" : "Get users (i.e., all user assignments) in a project ",
				"description" : "This API returns user assignments in a project (i.e., which users are in the project and their attributes in the project). ",
				"operationId" : "getAllUserAssignmentByProjectId",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyAllUserAssignments"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"post" : {
				"tags" : ["User Assignment API"],
				"summary" : "Create a user assignment (i.e., assign a user to a project)",
				"description" : "This API creates a user assignment (i.e., assign a user to a project), also sets attributes of created user in the project. You can also set certain settings for the user in the project, namely hourly_rate, flag_allow_logging_time, window_for_deleting_time, window_for_adding_offline_time. For the explanation of the values of these settings, please refer to <b>PUT</b> action. ",
				"operationId" : "CreateAUserAssignment",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "body",
						"name" : "body",
						"description" : "User Assignment object to be created",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/UserAssignment"
						}
					}
				],
				"responses" : {
					"201" : {
						"description" : "The operation is successful and the object is fetched",
						"schema" : {
							"$ref" : "#/definitions/ReplyCreateOrUpdateUserAssignment"
						}
					},
					"201(Created)" : {
						"description" : "The operation is successful and the object is created"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409(Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be created (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/me.xml" : {
			"get" : {
				"tags" : ["User Account API"],
				"summary" : "Get current user ",
				"description" : "This API returns the information about the currently logged in user (i.e., the user which is associated with the specified API token).",
				"operationId" : "loginUser",
				"produces" : ["application/xml"],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyGetMe"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/users.xml" : {

			"get" : {
				"tags" : ["User Account API"],
				"summary" : "Get list of users",
				"description" : "This API gets a list of users that are in the projects that are managed by you.",
				"operationId" : "getUsers",
				"produces" : ["application/xml"],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned ",
						"schema" : {
							"$ref" : "#/definitions/ReplyGetUsers"
						}
					},
					"200(OK)" : {
						"description" : "The operation is successful and a reply is returned "
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},

			"post" : {
				"tags" : ["User Account API"],
				"summary" : "Create a new user",
				"description" : "This API creates a new user. <br/><b style='color: red'>Note: This can only be done by trusted partner using partner's API token. </b>",
				"operationId" : "createUser",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "body",
						"name" : "body",
						"description" : "Created user object",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/User"
						}
					}
				],
				"responses" : {
					"201" : {
						"description" : "The operation is successful and the object is created",
						"schema" : {
							"$ref" : "#/definitions/ReplyCreateOrUpdateUser"
						}
					},
					"201(Created)" : {
						"description" : "The operation is successful and the object is created"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409(Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be created (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/users/{user_id}.xml" : {
			"get" : {
				"tags" : ["User Account API"],
				"summary" : "Get a user",
				"description" : "This API gets the information of a user by user ID.",
				"operationId" : "getUserById",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "user_id",
						"description" : "ID of the target user",
						"required" : true,
						"type" : "string"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyGetAUser"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			},
			"put" : {
				"tags" : ["User Account API"],
				"summary" : "Update a user",
				"description" : "This API updates a user. <br/>This can only be done by \n(a) the user himself, or\n(b) trusted partner using partner's API token",
				"operationId" : "updateUser",
				"consumes" : ["application/xml"],
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "user_id",
						"description" : "ID of the target user",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "body",
						"name" : "body",
						"description" : "User object that needs to be updated. <br/><span style='font-size: 9px;'>(It can only contain the attributes that need to be updated. The unchanged attributes do not need to be included.)</span>",
						"required" : false,
						"schema" : {
							"$ref" : "#/definitions/User"
						}
					}
				],
				"responses" : {
					"201" : {
						"description" : "The operation is successful and the object is updated",
						"schema" : {
							"$ref" : "#/definitions/ReplyCreateOrUpdateUser"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and the object is updated"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404(Not Found)" : {
						"description" : "The requested resource is not found"
					},
					"409 (Unprocessable Entity)" : {
						"description" : "The request is valid but the object cannot be updated (for example, due to duplicated unique key)"
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},
		"/projects/{project_id}/reports" : {
			"get" : {
				"tags" : ["Project Report API"],
				"summary" : "Get time entry or time summary report",
				"description" : "This API fetches the time entries or time summary logged by users in a project for a given time frame. \nIf you want to retrieve report on multiple projects that you manage, please use <b>Manager Report API</b>. ",
				"operationId" : "getTimeEntriesByUsersid",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "path",
						"name" : "project_id",
						"description" : "ID of the target project for which the reported is generated ",
						"required" : true,
						"type" : "integer",
						"format" : "int32"
					}, {
						"in" : "query",
						"name" : "name",
						"description" : "The type of report, either time entries ('time_entries') and time summary ('time_summary')",
						"required" : true,
						"type" : "string",
						"enum" : ["time_entries", "time_summary"]
					}, {
						"in" : "query",
						"name" : "from_timestamp",
						"description" : "The starting timestamp. <br/>It must be at the boundary of a 10-minute interval. For example, 1300616400 (10:20am March 20, 2011 GMT) is valid while 1300616700 (10:25am March 20, 2011 GMT) is invalid. ",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "query",
						"name" : "to_timestamp",
						"description" : "The ending timestamp. <br/>It must be at the boundary of a 10-minute interval. <br><br>The difference between from_timestamp and to_timestamp cannot be larger than 30 days.",
						"required" : true,
						"type" : "string"
					}, {
						"in" : "query",
						"name" : "user_ids",
						"required" : true,
						"description" : "List of user IDs separated by semi-colon. (Note: when querying time entries (i.e., name=time_entries) this field is required.)",						
						"type" : "string"
					}, {
						"in" : "query",
						"name" : "task_ids",
						"description" : "List of task IDs separated by semi-colon.",
						"required" : false,
						"type" : "string"
					}, {
						"in" : "query",
						"name" : "time_entry_type",
						"enum" : ["offline", "online"],
						"description" : "whether to include only online or offline time. <br/>If not specified, the report will include both online and offline time.",
						"required" : false,
						"type" : "string"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplyTimeSummary"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		},

"/summary_reports" : {
			"get" : {
				"tags" : ["Summary Report API"],
				"summary" : "Get the time report of the projects and users you manage",
				"description" : "This API fetches the time reports logged by users in projects that you manage for a given time frame.\nThe result is grouped by user, project, task and type. If you want to do higher level grouping, you can parse the result and do the grouping yourself. <br>Example: <br><b>GET /summary_reports.xml?name=manager_report&from_date=2018-01-14&to_date=2018-01-20</b><br><b>GET /summary_reports.xml?name=manager_report&from_date=2018-01-14&to_date=2018-01-20&timezone_offset=-8&project_ids=23;24;25&user_ids=111;112</b>",
				"operationId" : "getTimeEntriesByUsersid",
				"produces" : ["application/xml"],
				"parameters" : [{
						"in" : "query",
						"name" : "from_date",
						"description" : "The starting date, in the format of YYYY-mm-dd.",
						"required" : true,
						"type" : "string"
					}, 
					{
						"in" : "query",
						"name" : "to_date",
						"description" : "The ending date, in the format of YYYY-mm-dd. <br><br>The difference between from_date and to_date cannot be larger than 30 days.",
						"required" : true,
						"type" : "string"
					},
					{										
						"in" : "query",
						"name" : "timezone_offset",
						"description" : "The timezone offset that is used to determine the timestamp associated with from_date and to_date. For example, 8, -8, +5.5, 0.<br>If not specified, the current user's timezone is used.",
						"required" : false,
						"type" : "string"
					},
					{
						"in" : "query",
						"name" : "name",
						"description" : "this is a constant",
						"required" : true,
						"type" : "string",
						"enum" : ["manager_report"]
					}, 
					{
						"in" : "query",
						"name" : "project_ids",
						"description" : "List of project IDs, separated by semi-colon. (If not specified, all of your managed projects will be used.) ",
						"required" : false,
						"type" : "string",
						"format" : "int32"
					}, 
					{
						"in" : "query",
						"name" : "user_ids",
						"description" : "List of user IDs separated by semi-colon. (If not specified, all the users in your managed projects will be used.)",
						"required" : false,
						"type" : "string"
					}
				],
				"responses" : {
					"200" : {
						"description" : "The operation is successful and a reply is returned",
						"schema" : {
							"$ref" : "#/definitions/ReplySummaryReport"
						}
					},
					"200 (OK)" : {
						"description" : "The operation is successful and a reply is returned"
					},
					"400 (Bad Request)" : {
						"description" : "The request could not be understood due to malformed syntax or incorrect parameters"
					},
					"401 (Unauthorized)" : {
						"description" : "The user did not provide a valid authentication token"
					},
					"403 (Forbidden)" : {
						"description" : "The user is not allowed to perform the operation"
					},
					"404 (Not Found)" : {
						"description" : "The requested resource is not found "
					},
					"500 (Server Error)" : {
						"description" : "The server encounters an error when processing the request"
					}
				}
			}
		}

	},
	"securityDefinitions" : {
		"api_key" : {
			"type" : "apiKey",
			"name" : "api_key",
			"in" : "header"
		},
		"petstore_auth" : {
			"type" : "oauth2",
			"authorizationUrl" : "http://petstore.swagger.wordnik.com/api/oauth/dialog",
			"flow" : "implicit",
			"scopes" : {
				"write:pets" : "modify pets in your account",
				"read:pets" : "read your pets"
			}
		}
	},
	"definitions" : {
		"User" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int11",
					"xml" : {
						"name" : "id"
					}
				},
				"login" : {
					"type" : "string",
					"xml" : {
						"name" : "login"
					}
				},
				"first_name" : {
					"type" : "string",
					"xml" : {
						"name" : "first_name"
					}
				},
				"last_name" : {
					"type" : "string",
					"xml" : {
						"name" : "last_name"
					}
				},
				"password" : {
					"type" : "string",
					"xml" : {
						"name" : "password"
					}
				},
				"email" : {
					"type" : "string",
					"xml" : {
						"name" : "email"
					}
				},
				"timezone_id" : {
					"type" : "integer",
					"format" : "int11",
					"xml" : {
						"name" : "timezone_id"
					}
				}
			},
			"example" : "<user>\n  <login>helenyoung</login>\n  <first_name>Helen</first_name>\n  <last_name>Young</last_name>\n  <password>pass123</password>\n  <email>hyoung@mydesigninc.net</email>\n  <timezone_id>10</timezone_id>\n</user>",
			"xml" : {
				"name" : "User"
			}
		},
		"ReplyGetMe" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int11",
					"description": "the ID of the user that is myself",
					"xml" : {
						"name" : "id"
					}
				},
				"login" : {
					"type" : "string",
					"description": "my login",
					"xml" : {
						"name" : "login"
					}
				},
				"first_name" : {
					"type" : "string",
					"description": "my first name",
					"xml" : {
						"name" : "first_name"
					}
				},
				"last_name" : {
					"type" : "string",
					"description": "my last name",
					"xml" : {
						"name" : "last_name"
					}
				},
				"password" : {
					"type" : "string",
					"description": "my password",
					"xml" : {
						"name" : "password"
					}
				},
				"email" : {
					"type" : "string",
					"description": "my email",
					"xml" : {
						"name" : "email"
					}
				},
				"timezone_id" : {
					"type" : "integer",
					"format" : "int11",
					"description": "my timezone ID",
					"xml" : {
						"name" : "timezone_id"
					}
				},
				"timezone_name" : {
					"type" : "string",
					"description": "my timezone name",
					"xml" : {
						"name" : "timezone_name"
					}
				},
				"is_in_daylight_time" : {
					"type" : "boolean",
					"description": "whether I am in daylight saving time (true or false)",
					"xml" : {
						"name" : "is_in_daylight_time"
					}
				}
			},
			"example" : "<user>\n  <id type=\"integer\">#{id}</id>\n  <login>#{login}</login>\n  <first_name>#{first_name}</first_name>\n  <last_name>#{last_name}</last_name>\n  <email>#{email}</email>\n  <api_token>#{api_token}</api_token>\n  <timezone_id type=\"integer\">#{timezone_id}</timezone_id>\n  <timezone_name>#{timezone_name}</timezone>\n  <is_in_daylight_time type=\"boolean\">true|false</is_in_daylight_time>\n</user>",
			"xml" : {
				"name" : "ReplyGetMe"
			}
		},
		"ReplyGetAUser" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int11",
					"description": "the ID of the user",
					"xml" : {
						"name" : "id"
					}
				},
				"login" : {
					"type" : "string",
					"description": "the login of the user",
					"xml" : {
						"name" : "login"
					}
				},
				"first_name" : {
					"type" : "string",
					"description": "the first name of the user",
					"xml" : {
						"name" : "first_name"
					}
				},
				"last_name" : {
					"type" : "string",
					"description": "last name of the user",
					"xml" : {
						"name" : "last_name"
					}
				},
				"password" : {
					"type" : "string",
					"description": "the password of the user",
					"xml" : {
						"name" : "password"
					}
				},
				"email" : {
					"type" : "string",
					"description": "the email of the user",
					"xml" : {
						"name" : "email"
					}
				},
				"timezone_id" : {
					"type" : "integer",
					"format" : "int11",
					"description": "the timezone ID of the user",
					"xml" : {
						"name" : "timezone_id"
					}
				},
				"timezone_name" : {
					"type" : "string",
					"description": "the timezone name of the user",
					"xml" : {
						"name" : "timezone_name"
					}
				},
				"is_in_daylight_time" : {
					"type" : "boolean",
					"description": "whether the user is in daylight saving time (true or false)",
					"xml" : {
						"name" : "is_in_daylight_time"
					}
				}
			},
			"example" : "<user>\n  <id type=\"integer\">#{id}</id>\n  <login>#{login}</login>\n  <first_name>#{first_name}</first_name>\n  <last_name>#{last_name}</last_name>\n  <email>#{email}</email>\n  <api_token>#{api_token}</api_token>\n  <timezone_id type=\"integer\">#{timezone_id}</timezone_id>\n  <timezone_name>#{timezone_name}</timezone>\n  <is_in_daylight_time type=\"boolean\">true|false</is_in_daylight_time>\n</user>",
			"xml" : {
				"name" : "ReplyGetAUser"
			}
		},
		"ReplyGetUsers" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int11",
					"description": "the ID of the user",
					"xml" : {
						"name" : "id"
					}
				},
				"login" : {
					"type" : "string",
					"description": "the login of the user",
					"xml" : {
						"name" : "login"
					}
				},
				"first_name" : {
					"type" : "string",
					"description": "the first name of the user",
					"xml" : {
						"name" : "first_name"
					}
				},
				"last_name" : {
					"type" : "string",
					"description": "last name of the user",
					"xml" : {
						"name" : "last_name"
					}
				},
				"password" : {
					"type" : "string",
					"description": "the password of the user",
					"xml" : {
						"name" : "password"
					}
				},
				"email" : {
					"type" : "string",
					"description": "the email of the user",
					"xml" : {
						"name" : "email"
					}
				},
				"timezone_id" : {
					"type" : "integer",
					"format" : "int11",
					"description": "the timezone ID of the user",
					"xml" : {
						"name" : "timezone_id"
					}
				},
				"timezone_name" : {
					"type" : "string",
					"description": "the timezone name of the user",
					"xml" : {
						"name" : "timezone_name"
					}
				},
				"is_in_daylight_time" : {
					"type" : "boolean",
					"description": "whether the user is in daylight saving time (true or false)",
					"xml" : {
						"name" : "is_in_daylight_time"
					}
				}
			},
			"example" : "<users>\n <user>\n    <id type=\"integer\">#{id}</id>\n    <login>#{login}</login>\n    <first_name>#{first_name}</first_name>\n    <last_name>#{last_name}</last_name>\n    <email>#{email}</email>\n    <api_token>#{api_token}</api_token>\n    <timezone_id type=\"integer\">#{timezone_id}</timezone_id>\n    <timezone_name>#{timezone_name}</timezone>\n    <is_in_daylight_time type=\"boolean\">true|false</is_in_daylight_time>\n  </user>\n  <user>\n    ....\n  </user>\n  <user>\n    ....\n  </user>\n</users>",
			"xml" : {
				"name" : "ReplyGetUsers"
			}
		},
		"ReplyCreateOrUpdateUser" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int11",
					"description": "the ID of the user",
					"xml" : {
						"name" : "id"
					}
				},
				"login" : {
					"type" : "string",
					"description": "the login of the user",
					"xml" : {
						"name" : "login"
					}
				},
				"first_name" : {
					"type" : "string",
					"description": "the first name of the user",
					"xml" : {
						"name" : "first_name"
					}
				},
				"last_name" : {
					"type" : "string",
					"description": "last name of the user",
					"xml" : {
						"name" : "last_name"
					}
				},
				"password" : {
					"type" : "string",
					"description": "the password of the user",
					"xml" : {
						"name" : "password"
					}
				},
				"email" : {
					"type" : "string",
					"description": "the email of the user",
					"xml" : {
						"name" : "email"
					}
				},
				"timezone_id" : {
					"type" : "integer",
					"format" : "int11",
					"description": "the timezone ID of the user",
					"xml" : {
						"name" : "timezone_id"
					}
				}
			},
			"example" : "<reply>\n  <status>1</status>\n  <user>\n    <id type=\"integer\">#{id}</id>\n    <login>helenyoung</login>\n    <first_name>Helen</first_name>\n    <last_name>Young</last_name>\n    <email>hyoung@mydesigninc.net</email>\n    <timezone_id>10</timezone_id>\n    <api_token>#{api_token}</api_token>\n  </user>\n</reply>",
			"xml" : {
				"name" : "ReplyCreateOrUpdateUser"
			}
		},
		"Category" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"xml" : {
						"name" : "id"
					}
				},
				"name" : {
					"type" : "string",
					"xml" : {
						"name" : "name"
					}
				}
			},
			"xml" : {
				"name" : "Category"
			}
		},
		"Project" : {
			"properties" : {
				"name" : {
					"type" : "string",
					"example" : "Web Design Project",
					"required": false,
					"xml" : {
						"name" : "name"
					}
				},
				"description" : {
					"type" : "string",
					"xml" : {
						"name" : "description"
					}
				}
			},
			"example" : "<project>\n  <name>Web Design Project</name>\n  <description>design web site for Acme Inc.</description>\n</project>",
			"xml" : {
				"name" : "project"
			}
		},
		"ReplyCreateOrUpdateProject" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project", 
					"xml" : {
						"name" : "id"
					}
				},
				"name" : {
					"type" : "string",
					"example" : "Web Design Project",
					"description" : "the name of the project", 
					"xml" : {
						"name" : "name"
					}
				},
				"description" : {
					"type" : "string",
					"description" : "the description of the project", 
					"xml" : {
						"name" : "description"
					}
				}
			},
			"example" : "<reply>\n  <status>1</status>\n  <project>\n    <id>12</id>\n    <name>Web Design Project</name>\n    <description>design web site for Acme Inc.</description>\n  </project>\n</reply>",
			"xml" : {
				"name" : "ReplyCreateOrUpdateProject"
			}
		},
		"ReplyAllProjects" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project", 
					"xml" : {
						"name" : "id"
					}
				},
				"name" : {
					"type" : "string",
					"example" : "Web Design Project",
					"description" : "the name of the project", 
					"xml" : {
						"name" : "name"
					}
				},
				"description" : {
					"type" : "string",
					"description" : "the description of the project", 
					"xml" : {
						"name" : "description"
					}
				}
			},
			"example" : "<projects>\n <project>\n   <id>3455</id>\n   <name>Web Design Project</name>\n   <description>web page design for ACME Inc.</description>\n </project>\n <project>\n  ...\n </project>\n ...\n</projects>",
			"xml" : {
				"name" : "ReplyAllProjects"
			}
		},
		"ReplyAProject" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project", 
					"xml" : {
						"name" : "id"
					}
				},
				"name" : {
					"type" : "string",
					"example" : "Web Design Project",
					"description" : "the name of the project", 
					"xml" : {
						"name" : "name"
					}
				},
				"description" : {
					"type" : "string",
					"description" : "the description of the project", 
					"xml" : {
						"name" : "description"
					}
				}
			},
			"example" : "<project>\n  <id type=\"integer\">#{id}</id>\n  <name>#{name}</name>\n  <description>#{description}</description>\n  <status>active|archived</status>\n</project>",
			"xml" : {
				"name" : "ReplyAProject"
			}
		},
		"TaskAssignment" : {
			"properties" : {
				"user_id" : {
					"type" : "integer",
					"format" : "int32",
					"xml" : {
						"name" : "user_id"
					}
				},
				"task_id" : {
					"type" : "integer",
					"format" : "int32",
					"xml" : {
						"name" : "task_id"
					}
				}
			},
			"example" : "<task_assignment>\n  <user_id>12</user_id>\n  <task_id>23</task_id>\n</task_assignment>",
			"xml" : {
				"name" : "TaskAssignment"
			}
		},
		"ReplyCreateOrUpdateUserAssignment" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user assignment", 
					"xml" : {
						"name" : "id"
					}
				},
				"project_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project", 
					"xml" : {
						"name" : "project_id"
					}
				},
				"user_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user", 
					"xml" : {
						"name" : "user_id"
					}
				},
				"hourly_rate" : {
					"type" : "float",
					"description" : "the hourly rate of the user in the project", 
					"xml" : {
						"name" : "hourly_rate"
					}
				},
				"role" : {
					"type" : "string",
					"description" : "the role of the user in the project", 
					"xml" : {
						"name" : "role"
					}
				},
				"flag_allow_logging_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "whether this user is allowed logging time in the project (0 or 1)", 
					"xml" : {
						"name" : "flag_allow_logging_time"
					}
				},
				"window_for_deleting_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "The number of days after which the user is now allowed to delete logged time (-1 means the user is always allowed to delete his/her logged time, 0 means the user is always not allowed to delete his/her logged time. Other allowed values are 1, 2, 3, 5, 7, 10, 14, 30, indicating number of days)", 
					"xml" : {
						"name" : "window_for_deleting_time"
					}
				},
				"window_for_adding_offline_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "The number of days after which the user is now allowed to add offline time (-1 means the user is always allowed to delete his/her logged time, 0 means the user is always not allowed to delete his/her logged time. Other allowed values are 1, 2, 3, 5, 7, 10, 14, 30, indicating number of days)", 
					"xml" : {
						"name" : "window_for_adding_offline_time"
					}
				}				
			},
			"example" : "<reply>\n  <status>1</status>\n  <user_assignment>\n    <id>12</id>\n    <user_id>123</user_id>\n    <project_id>345</project_id>\n    <role>member</role>\n    <flag_allow_logging_time>1</flag_allow_logging_time>\n    <window_for_deleting_time>0</window_for_deleting_time>\n    <window_for_adding_offline_time>3</window_for_adding_offline_time>\n    <hourly_rate>20.00</hourly_rate>\n  </user_assignment>\n<reply>",
			"xml" : {
				"name" : "project"
			}
		},
		"UserAssignment" : {
			"properties" : {
				"role" : {
					"type" : "string",
					"example" : "Manager",
					"xml" : {
						"name" : "role"
					}
				},
				"hourly_rate" : {
					"type" : "float",
					"xml" : {
						"name" : "hourly_rate"
					}
				},
				"flag_allow_logging_time" : {
					"type" : "integer",
					"format" : "int32",
					"xml" : {
						"name" : "flag_allow_logging_time"
					}
				},
				"window_for_deleting_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "The number of days after which the user is now allowed to delete logged time (-1 means the user is always allowed to delete his/her logged time, 0 means the user is always not allowed to delete his/her logged time. Other allowed values are 1, 2, 3, 5, 7, 10, 14, 30, indicating number of days)", 
					"xml" : {
						"name" : "window_for_deleting_time"
					}
				},
				"window_for_adding_offline_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "The number of days after which the user is now allowed to add offline time (-1 means the user is always allowed to delete his/her logged time, 0 means the user is always not allowed to delete his/her logged time. Other allowed values are 1, 2, 3, 5, 7, 10, 14, 30, indicating number of days)", 
					"xml" : {
						"name" : "window_for_adding_offline_time"
					}
				}				
			},
			"example" : "<user_assignment>\n  <user_id>13</user_id>\n  <role>member</role>\n  <hourly_rate>20.00</hourly_rate>\n  <flag_allow_logging_time>1</flag_allow_logging_time>\n  <window_for_deleting_time>0</window_for_deleting_time>\n  <window_for_adding_offline_time>3</window_for_adding_offline_time>\n</user_assignment>",
			"xml" : {
				"name" : "UserAssignment"
			}
		},
		"ReplyAUserAssignment" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user assignment", 
					"xml" : {
						"name" : "id"
					}
				},
				"project_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project", 
					"xml" : {
						"name" : "project_id"
					}
				},
				"user_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user", 
					"xml" : {
						"name" : "user_id"
					}
				},
				"user_first_name" : {
					"type" : "string",
					"description" : "the first name of the user", 
					"xml" : {
						"name" : "user_first_name"
					}
				},
				"user_last_name" : {
					"type" : "string",
					"description" : "the last name of the user", 
					"xml" : {
						"name" : "user_last_name"
					}
				},
				"user_email" : {
					"type" : "string",
					"description" : "the email of the user", 
					"xml" : {
						"name" : "user_email"
					}
				},
				"hourly_rate" : {
					"type" : "decimal",
					"description" : "the hourly rate of the user in the project", 
					"xml" : {
						"name" : "hourly_rate"
					}
				},
				"role" : {
					"type" : "string",
					"description" : "the role of the user in the project", 
					"xml" : {
						"name" : "role"
					}
				},
				"flag_allow_logging_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "whether this user is allowed logging time in the project (0 or 1)", 
					"xml" : {
						"name" : "flag_allow_logging_time"
					}
				},
				"window_for_deleting_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "The number of days after which the user is now allowed to delete logged time (-1 means the user is always allowed to delete his/her logged time, 0 means the user is always not allowed to delete his/her logged time. Other allowed values are 1, 2, 3, 5, 7, 10, 14, 30, indicating number of days)", 
					"xml" : {
						"name" : "window_for_deleting_time"
					}
				},
				"window_for_adding_offline_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "The number of days after which the user is now allowed to add offline time (-1 means the user is always allowed to delete his/her logged time, 0 means the user is always not allowed to delete his/her logged time. Other allowed values are 1, 2, 3, 5, 7, 10, 14, 30, indicating number of days)", 
					"xml" : {
						"name" : "window_for_adding_offline_time"
					}
				}				
			},
			"example" : "<user_assignment>\n  <id type=\"integer\">#{id}</id>\n  <project_id type=\"integer\">#{project_id}</project_id>\n  <user_id type=\"integer\">#{user_id}</user_id>\n  <user_first_name type=\"string\">#{user_first_name}</user_first_name>\n  <user_last_name type=\"string\">#{user_first_name}</user_last_name>\n  <user_email type=\"string\">#{user_first_name}</user_email>\n  <hourly_rate type=\"decimal\">#{hourly_rate}</hourly_rate>\n  <role>manager|member|observer</role>\n  <flag_allow_logging_time>0|1</flag_allow_logging_time>\n  <window_for_deleting_time>-1|0|1|2|3|5|7|10|14|30</window_for_deleting_time>\n  <window_for_adding_offline_time>-1|0|1|2|3|5|7|10|14|30</window_for_adding_offline_time>\n</user_assignment>",
			"xml" : {
				"name" : "ReplyAUserAssignment"
			}
		},
		"ReplyAllUserAssignments" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user assignment", 
					"xml" : {
						"name" : "id"
					}
				},
				"project_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project", 
					"xml" : {
						"name" : "project_id"
					}
				},
				"user_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user", 
					"xml" : {
						"name" : "user_id"
					}
				},
				"user_first_name" : {
					"type" : "string",
					"description" : "the first name of the user", 
					"xml" : {
						"name" : "user_first_name"
					}
				},
				"user_last_name" : {
					"type" : "string",
					"description" : "the last name of the user", 
					"xml" : {
						"name" : "user_last_name"
					}
				},
				"user_email" : {
					"type" : "string",
					"description" : "the email of the user", 
					"xml" : {
						"name" : "user_email"
					}
				},
				"hourly_rate" : {
					"type" : "float",
					"description" : "the hourly rate of the user in the project", 
					"xml" : {
						"name" : "hourly_rate"
					}
				},
				"role" : {
					"type" : "string",
					"description" : "the role of the user in the project", 
					"xml" : {
						"name" : "role"
					}
				}, 
				"flag_allow_logging_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "whether this user is allowed logging time in the project (0 or 1)", 
					"xml" : {
						"name" : "flag_allow_logging_time"
					}
				},
				"window_for_deleting_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "The number of days after which the user is now allowed to delete logged time (-1 means the user is always allowed to delete his/her logged time, 0 means the user is always not allowed to delete his/her logged time. Other allowed values are 1, 2, 3, 5, 7, 10, 14, 30, indicating number of days)", 
					"xml" : {
						"name" : "window_for_deleting_time"
					}
				},
				"window_for_adding_offline_time" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "The number of days after which the user is now allowed to add offline time (-1 means the user is always allowed to delete his/her logged time, 0 means the user is always not allowed to delete his/her logged time. Other allowed values are 1, 2, 3, 5, 7, 10, 14, 30, indicating number of days)", 
					"xml" : {
						"name" : "window_for_adding_offline_time"
					}
				}								
			},
			"example" : "<user_assignments>\n  <user_assignment>\n    <id>146</id>\n    <project_id>118</project_id>\n    <user_id>72</user_id>\n    <user_first_name>Helen</user_first_name>\n    <user_last_name>Young</user_last_name>\n    <user_email>hyoung@mydesigninc.net</user_email>\n    <hourly_rate>20.00</hourly_rate>\n    <role>Member</role>\n    <flag_allow_logging_time>1</flag_allow_logging_time>\n    <window_for_deleting_time>0</window_for_deleting_time>\n    <window_for_adding_offline_time>3</window_for_adding_offline_time>\n  </user_assignment>\n  <user_assignment>\n  ...\n  </user_assignment>\n  ....\n  <user_assignment>\n  ...\n  </user_assignment>\n</user_assignments>",
			"xml" : {
				"name" : "ReplyAllUserAssignments"
			}
		},
		"Replyuserassignment" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"xml" : {
						"name" : "id"
					}
				},
				"name" : {
					"type" : "string",
					"example" : "Web Design Project",
					"xml" : {
						"name" : "name"
					}
				},
				"description" : {
					"type" : "string",
					"xml" : {
						"name" : "description"
					}
				},
				"status" : {
					"type" : "string",
					"xml" : {
						"name" : "status"
					},
					"description" : "project status "
				}
			},
			"example" : "<user_assignments>\n <user_assignment>\n ...\n </user_assignment>\n ...\n <user_assignment>\n ...\n </user_assignment>\n</user_assignments>",
			"xml" : {
				"name" : "Replyuserassignment"
			}
		},
		"ReplyGetATaskAssignment" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the task assignment",
					"xml" : {
						"name" : "id"
					}
				},
				"task_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the Id of the task",
					"xml" : {
						"name" : "task_id"
					}
				},
				"user_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user",
					"xml" : {
						"name" : "user_id"
					}
				},
				"project_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project",
					"xml" : {
						"name" : "project_id"
					}
				}
			},
			"example" : "<task_assignment>\n  <id type=\"integer\">#{id}</id>\n  <project_id type=\"integer\">#{project_id}</project_id>\n  <task_id type=\"integer\">#{task_id}</task_id>\n  <user_id type=\"integer\">#{user_id}</user_id>\n</task_assignment>",
			"xml" : {
				"name" : "ReplyGetATaskAssignment"
			}
		},
		"ReplyCreateOrUpdateTaskAssignment" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the task assignment",
					"xml" : {
						"name" : "id"
					}
				},
				"task_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the Id of the task",
					"xml" : {
						"name" : "task_id"
					}
				},
				"user_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user",
					"xml" : {
						"name" : "user_id"
					}
				},
				"project_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project",
					"xml" : {
						"name" : "project_id"
					}
				}
			},
			"example" : "<reply>\n  <status>1</status>\n  <task_assignment>\n    <id>234</id>\n    <project_id>101</project_id>\n    <user_id>12</user_id>\n    <task_id>23</task_id>\n  </task_assignment>\n</reply>",
			"xml" : {
				"name" : "ReplyCreateOrUpdateTaskAssignment"
			}
		},
		"ReplyAllTaskAssignments" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the task assignment",
					"xml" : {
						"name" : "id"
					}
				},
				"task_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the Id of the task",
					"xml" : {
						"name" : "task_id"
					}
				},
				"user_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user",
					"xml" : {
						"name" : "user_id"
					}
				},
				"project_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project",
					"xml" : {
						"name" : "project_id"
					}
				}
			},
			"example" : "<task_assignments>\n  <task_assignment>\n    <id>5010</id>\n    <project_id>123</project_id>\n    <task_id>68932</task_id>\n    <user_id>98</user_id>\n  </task_assignment>\n  <task_assignment>\n  ...\n  </task_assignment>\n  <task_assignment>\n  ...\n  </task_assignment>\n</task_assignments>",
			"xml" : {
				"name" : "ReplyAllTaskAssignments"
			}
		},
		"getProjectByProjectID" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project", 
					"xml" : {
						"name" : "id"
					}
				},
				"name" : {
					"type" : "string",
					"example" : "Web Design Project",
					"xml" : {
						"name" : "name"
					}
				},
				"description" : {
					"type" : "string",
					"xml" : {
						"name" : "description"
					}
				},
				"status" : {
					"type" : "string",
					"xml" : {
						"name" : "status"
					},
					"description" : "project status "
				}
			},
			"example" : "<project>\n<id type=\"integer\">#{id}</id>\n<name>#{name}</name>\n<description>#{description}</description>\n<status>active|archived</status>\n</project>",
			"xml" : {
				"name" : "getProjectByProjectID"
			}
		},
		"ReplyATimeEntry" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the time entry", 
					"xml" : {
						"name" : "id"
					}
				},
				"logged_timestamp" : {
					"type" : "timestamp",
					"description" : "the timestamp that the time entry is logged", 
					"xml" : {
						"name" : "logged_timestamp"
					}
				},
				"from_timestamp" : {
					"type" : "timestamp",
					"description" : "the starting timestamp of the time entry (each time entry represents 10 minutes)", 
					"xml" : {
						"name" : "from_timestamp"
					}
				},
				"duration_in_minutes" : {
					"type" : "integer",
					"description" : "the duration of the time entry (now it is always 10 minutes)", 
					"xml" : {
						"name" : "duration_in_minutes"
					}
				},
				"type" : {
					"type" : "string",
					"description" : "the type of the time entry (either online or offline)", 
					"xml" : {
						"name" : "type"
					}
				},
				"project_id" : {
					"type" : "integer",
					"description" : "the ID of the project in which the time entry is logged", 
					"xml" : {
						"name" : "project_id"
					}
				},
				"user_id" : {
					"type" : "string",
					"description" : "the ID of the user who logged the time", 
					"xml" : {
						"name" : "user_id"
					}
				},
				"task_id" : {
					"type" : "string",
					"description" : "the ID of the task to which the entry is logged", 
					"xml" : {
						"name" : "task_id"
					}
				},
				"user_comment" : {
					"type" : "string",
					"description" : "the comment that user entered when logging the time entry", 
					"xml" : {
						"name" : "user_comment"
					}
				},
				"thumbnail_url" : {
					"type" : "string",
					"description" : "the URL of the recorded thumbnail screen shot image", 
					"xml" : {
						"name" : "thumbnail_url"
					}
				},
				"webcam_url" : {
					"type" : "string",
					"description" : "the URL of the recorded webcam image", 
					"xml" : {
						"name" : "thumbnail_url"
					}
				},
				"activity_level" : {
					"type" : "integer",
					"description" : "the activity level (0 to 10) of the time entry", 
					"xml" : {
						"name" : "activity_level"
					}
				},
				"activities" : {
					"type" : "list of activity records",
					"xml" : {
						"name" : "activities"
					}
				}
			},
			"example" : "<time_entry>\n <id type=\"integer\">#{id}</id>\n <!-- the time that the worksnap is logged -->\n <logged_timestamp type=\"timestamp\">#{logged_timestamp}</logged_timestamp>  \n <!-- the start time of the 10-minute slot represented by this worksnap -->\n <from_timestamp type=\"timestamp\">#{from_timestamp}</from_timestamp>\n <!--duration is always 10 minute -->\n <duration_in_minutes type=\"integer\">10</duration_in_minutes>\n <!-- online time is logged by Client, offline time is manually added -->\n <type>online|offline</type>\n <project_id>#{project_id}</project_id>\n <user_id>#{user_id}</user_id>\n <task_id>#{task_id}</task_id>\n <user_comment>#{user_comment}</user_comment}\n <!-- the url to the thumbnail screen image -->\n <thumbnail_url type=\"url\">#{thumbnail_url}</thumbnail_url>\n <webcam_url type=\"url\">#{webcam_url}</webcam_url>\n <!--activity_level is from 0 to 10, representing how many minutes (out of 10) there is mouse or keyboard activity being captured -->\n <activity_level type=\"integer\">#{activity_level}</activity_level}\n <activities>\n   <activity>\n     ...\n   </activity>\n   ...\n   <activity>\n     ...\n   </activity>\n </activities>\n</time_entry>",
			"xml" : {
				"name" : "ReplyATimeEntry"
			}
		},
		"ReplyATimeEntryFullURL" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the time entry",
					"xml" : {
						"name" : "id"
					}
				},
				"full_resolution_url" : {
					"type" : "string",
					"description" : "the URL of the full-resolution screen shot associated with the time entry",
					"xml" : {
						"name" : "full_resolution_url"
					}
				}
			},
			"example" : "<time_entry>\n <id type=\"integer\">#{id}</id>\n <full_resolution_url type=\"url\">#{full_url}</full_resolution_url>\n</time_entry>",
			"xml" : {
				"name" : "ReplyATimeEntryFullURL"
			}
		},
		"ReplyAllTimeEntries" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the time entry", 
					"xml" : {
						"name" : "id"
					}
				},
				"logged_timestamp" : {
					"type" : "timestamp",
					"description" : "the timestamp that the time entry is logged", 
					"xml" : {
						"name" : "logged_timestamp"
					}
				},
				"from_timestamp" : {
					"type" : "timestamp",
					"description" : "the starting timestamp of the time entry (each time entry represents 10 minutes)", 
					"xml" : {
						"name" : "from_timestamp"
					}
				},
				"duration_in_minutes" : {
					"type" : "integer",
					"description" : "the duration of the time entry (now it is always 10 minutes)", 
					"xml" : {
						"name" : "duration_in_minutes"
					}
				},
				"type" : {
					"type" : "string",
					"description" : "the type of the time entry (either online or offline)", 
					"xml" : {
						"name" : "type"
					}
				},
				"project_id" : {
					"type" : "integer",
					"description" : "the ID of the project in which the time entry is logged", 
					"xml" : {
						"name" : "project_id"
					}
				},
				"user_id" : {
					"type" : "string",
					"description" : "the ID of the user who logged the time", 
					"xml" : {
						"name" : "user_id"
					}
				},
				"task_id" : {
					"type" : "string",
					"description" : "the ID of the task to which the entry is logged", 
					"xml" : {
						"name" : "task_id"
					}
				},
				"user_comment" : {
					"type" : "string",
					"description" : "the comment that user entered when logging the time entry", 
					"xml" : {
						"name" : "user_comment"
					}
				},
				"thumbnail_url" : {
					"type" : "string",
					"description" : "the URL of the recorded thumbnail screen shot image", 
					"xml" : {
						"name" : "thumbnail_url"
					}
				},
				"webcam_url" : {
					"type" : "string",
					"description" : "the URL of the recorded webcam image", 
					"xml" : {
						"name" : "thumbnail_url"
					}
				},
				"activity_level" : {
					"type" : "integer",
					"description" : "the activity level (0 to 10) of the time entry", 
					"xml" : {
						"name" : "activity_level"
					}
				},
				"activities" : {
					"type" : "list of activity records",
					"xml" : {
						"name" : "activities"
					}
				}
			},
			"example" : "<time_entries>\n  <time_entry>\n   ... \n  (please see the definition of time_entry) \n  </time_entry>\n  <time_entry>\n  ...\n  </time_entry>\n  <time_entry>\n  ...\n  </time_entry>\n  ...\n</time_entries>",
			"xml" : {
				"name" : "ReplyAllTimeEntries"
			}
		},
		"ReplyTimeSummary" : {
			"properties" : {
				"user_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user", 
					"xml" : {
						"name" : "user_id"
					}
				},
				"project_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project", 
					"xml" : {
						"name" : "project_id"
					}
				},
				"duration_in_minutes" : {
					"type" : "integer",
					"description" : "the duration of the time entry (now it is always 10 minutes)", 
					"xml" : {
						"name" : "duration_in_minutes"
					}
				},
				"task_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the task", 
					"xml" : {
						"name" : "id"
					}
				},
				"project_id" : {
					"type" : "integer",
					"description" : "the ID of the project in which the time entry is logged", 
					"xml" : {
						"name" : "project_id"
					}
				},
				"user_id" : {
					"type" : "string",
					"description" : "the ID of the user who logged the time", 
					"xml" : {
						"name" : "user_id"
					}
				},
				"task_id" : {
					"type" : "string",
					"description" : "the ID of the task to which the entry is logged", 
					"xml" : {
						"name" : "task_id"
					}
				},
				"task_name" : {
					"type" : "string",
					"description" : "the URL of the recorded webcam image", 
					"xml" : {
						"name" : "task_name"
					}
				},
				"user_comment" : {
					"type" : "string",
					"description" : "the comment that user entered when logging the time entry", 
					"xml" : {
						"name" : "user_comment"
					}
				},
				"time_entry_type" : {
					"type" : "string",
					"description" : "the type of the time entry (online or offline)", 
					"xml" : {
						"name" : "time_entry_type"
					}
				}
			},
			"example" : "<time_summary>\n  <summary_line_item>\n    <user_id>#{user_id}</user_id>\n    <project_id>#{project_id}</project_id>\n    <duration_in_minutes>#{duration_in_minutes}</duration_in_minutes>\n    <task_id>#{task_id}</task_id>\n    <task_name>#{task_name}</task_name>\n    <user_comment>#{user_comment}</user_comment>\n    <time_entry_type>online|offline</time_entry_type>\n  </summary_line_item>\n  <summary_line_item>\n    ....\n  </summary_line_item>\n  ....\n  <summary_line_item>\n    ....\n  </summary_line_item>\n</time_summary>",
			"xml" : {
				"name" : "ReplyAllTimeEntries"
			}
		},
		"ReplySummaryReport" : {
			"properties" : {
				"user_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the user", 
					"xml" : {
						"name" : "user_id"
					}
				},
				"project_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the project", 
					"xml" : {
						"name" : "project_id"
					}
				},
				"duration_in_minutes" : {
					"type" : "integer",
					"description" : "the duration of the time entry (now it is always 10 minutes)", 
					"xml" : {
						"name" : "duration_in_minutes"
					}
				},
				"task_id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the task", 
					"xml" : {
						"name" : "id"
					}
				},
				"project_id" : {
					"type" : "integer",
					"description" : "the ID of the project in which the time entry is logged", 
					"xml" : {
						"name" : "project_id"
					}
				},
				"user_id" : {
					"type" : "string",
					"description" : "the ID of the user who logged the time", 
					"xml" : {
						"name" : "user_id"
					}
				},
				"task_id" : {
					"type" : "string",
					"description" : "the ID of the task to which the entry is logged", 
					"xml" : {
						"name" : "task_id"
					}
				},
				"task_name" : {
					"type" : "string",
					"description" : "the URL of the recorded webcam image", 
					"xml" : {
						"name" : "task_name"
					}
				},
				"user_comment" : {
					"type" : "string",
					"description" : "the comment that user entered when logging the time entry", 
					"xml" : {
						"name" : "user_comment"
					}
				},
				"time_entry_type" : {
					"type" : "string",
					"description" : "the type of the time entry (online or offline)", 
					"xml" : {
						"name" : "time_entry_type"
					}
				}
			},
			"example" : "<manager_report>\n  <line_item>\n    <user_id>#{user_id}</user_id>\n    <user_name>#{user_name}</user_id>\n    <project_id>#{project_id}</project_id>\n    <project_name>#{project_name}</project_name>\n    <duration_in_minutes>#{duration_in_minutes}</duration_in_minutes>\n    <task_id>#{task_id}</task_id>\n    <task_name>#{task_name}</task_name>\n    <type>online|offline</type>\n  </line_item>\n  <line_item>\n    ....\n  </line_item>\n  ....\n  <line_item>\n    ....\n  </line_item>\n</manager_report>",
			"xml" : {
				"name" : "ReplySummaryReport"
			}
		},		
		"TimeEntry" : {
			"properties" : {
				"task_id" : {
					"type" : "integer",
					"format" : "int32",
					"xml" : {
						"name" : "task_id"
					}
				},
				"user_comment" : {
					"type" : "string",
					"xml" : {
						"name" : "user_comment"
					}
				},
				"from_timestamp" : {
					"type" : "timestamp",
					"xml" : {
						"name" : "from_timestamp"
					}
				},
				"duration_in_minutes" : {
					"type" : "integer",
					"format" : "int32",
					"xml" : {
						"name" : "duration_in_minutes"
					}
				}
			},
			"example" : "<time_entry>\n <task_id>12</task_id>\n <user_comment>doing web page design using Dreamweaver</user_comment>\n <from_timestamp>1334257200</from_timestamp>\n <duration_in_minutes>30</duration_in_minutes>\n</time_entry>",
			"xml" : {
				"name" : "TimeEntry"
			}
		},
		"ReplyAtask" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the task", 
					"xml" : {
						"name" : "id"
					}
				},
				"name" : {
					"type" : "string",
					"description" : "the name of the task", 
					"xml" : {
						"name" : "name"
					}
				},
				"description" : {
					"type" : "string",
					"description" : "the description of the task", 
					"xml" : {
						"name" : "description"
					}
				}
			},
			"example" : "<task>\n  <id type=\"integer\">#{id}</id>\n  <name>#{name}</name>\n  <description>#{description}</description>\n</task>",
			"xml" : {
				"name" : "ReplyAtask"
			}
		},
		"Task" : {
			"properties" : {
				"name" : {
					"type" : "string",
					"xml" : {
						"name" : "name"
					}
				},
				"description" : {
					"type" : "string",
					"xml" : {
						"name" : "description"
					}
				}
			},
			"example" : "<task>\n  <name>website design</name>\n  <description>design the web pages, logo and content</description>\n</task>",
			"xml" : {
				"name" : "Task"
			}
		},
		"ReplyAllTasks" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the task", 
					"xml" : {
						"name" : "id"
					}
				},
				"name" : {
					"type" : "string",
					"description" : "the name of the task", 
					"xml" : {
						"name" : "name"
					}
				},
				"description" : {
					"type" : "string",
					"description" : "the description of the task", 
					"xml" : {
						"name" : "description"
					}
				}
			},
			"example" : "<tasks>\n  <task>\n    <id>50</id>\n    <name>Design web page</name>\n    <description>create page layout, design color scheme and font style.</description>\n  </task>\n  <task>\n   ...\n  </task>\n  <task>\n   ...\n  </task>\n  <task>\n   ...\n  </task>\n</tasks>",
			"xml" : {
				"name" : "ReplyAllTasks"
			}
		},
		"ReplyATaskCreation" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"description" : "the ID of the task", 
					"xml" : {
						"name" : "id"
					}
				},
				"name" : {
					"type" : "string",
					"description" : "the name of the task", 
					"xml" : {
						"name" : "name"
					}
				},
				"description" : {
					"type" : "string",
					"description" : "the description of the task", 
					"xml" : {
						"name" : "description"
					}
				}
			},
			"example" : "<reply>\n  <status>1</status>\n  <task>\n    <id>123</id>\n    <name>website design</name>\n    <description>design the web pages, logo and content</description>\n  </task>\n</reply>",
			"xml" : {
				"name" : "ReplyATaskCreation"
			}
		},
		"TimeEntryToUpdate" : {
			"properties" : {
				"task_id" : {
					"type" : "integeter",
					"xml" : {
						"name" : "task_id"
					}
				},
				"user_comment" : {
					"type" : "string",
					"xml" : {
						"name" : "user_comment"
					}
				}
			},
			"example" : "<time_entry>\n  <task_id>12</task_id>\n  <user_comment>doing web page design using Dreamweaver</user_comment>\n</time_entry>",
			"xml" : {
				"name" : "TimeEntry_updated"
			}
		},
		"Order" : {
			"properties" : {
				"id" : {
					"type" : "integer",
					"format" : "int32",
					"xml" : {
						"name" : "id"
					}
				},
				"petId" : {
					"type" : "integer",
					"format" : "int32",
					"xml" : {
						"name" : "petId"
					}
				},
				"quantity" : {
					"type" : "integer",
					"format" : "int32",
					"xml" : {
						"name" : "quantity"
					}
				},
				"shipDate" : {
					"type" : "string",
					"format" : "date-time",
					"xml" : {
						"name" : "shipDate"
					}
				},
				"status" : {
					"type" : "string",
					"xml" : {
						"name" : "status"
					},
					"description" : "Order Status"
				},
				"complete" : {
					"type" : "boolean"
				}
			},
			"xml" : {
				"name" : "Order"
			}
		}
	}
}
