Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-07-19 17:16:28 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-07-19 17:16:28 +0300
commite4384360a16dd9a19d4d2d25d0ef1f2b862ed2a6 (patch)
tree2fcdfa7dcdb9db8f5208b2562f4b4e803d671243 /spec/fixtures
parentffda4e7bcac36987f936b4ba515995a6698698f0 (diff)
Add latest changes from gitlab-org/gitlab@16-2-stable-eev16.2.0-rc42
Diffstat (limited to 'spec/fixtures')
-rw-r--r--spec/fixtures/api/schemas/public_api/v4/project_hook.json116
-rw-r--r--spec/fixtures/api/schemas/public_api/v4/wiki_blobs.json57
-rw-r--r--spec/fixtures/api/schemas/slack/manifest.json1250
-rw-r--r--spec/fixtures/csv_missing_milestones.csv5
-rw-r--r--spec/fixtures/grafana/expected_grafana_embed.json6
-rw-r--r--spec/fixtures/lib/gitlab/import_export/complex/tree/project/issues.ndjson6
-rw-r--r--spec/fixtures/lib/gitlab/metrics/dashboard/schemas/metrics.json60
7 files changed, 1456 insertions, 44 deletions
diff --git a/spec/fixtures/api/schemas/public_api/v4/project_hook.json b/spec/fixtures/api/schemas/public_api/v4/project_hook.json
index 6070f3a55f9..b89f5af8078 100644
--- a/spec/fixtures/api/schemas/public_api/v4/project_hook.json
+++ b/spec/fixtures/api/schemas/public_api/v4/project_hook.json
@@ -22,38 +22,106 @@
"releases_events",
"alert_status",
"disabled_until",
- "url_variables"
+ "url_variables",
+ "emoji_events"
],
"properties": {
- "id": { "type": "integer" },
- "project_id": { "type": "integer" },
- "url": { "type": "string" },
- "created_at": { "type": "string", "format": "date-time" },
- "push_events": { "type": "boolean" },
- "push_events_branch_filter": { "type": ["string", "null"] },
- "tag_push_events": { "type": "boolean" },
- "merge_requests_events": { "type": "boolean" },
- "repository_update_events": { "type": "boolean" },
- "enable_ssl_verification": { "type": "boolean" },
- "issues_events": { "type": "boolean" },
- "confidential_issues_events": { "type": ["boolean", "null"] },
- "note_events": { "type": "boolean" },
- "confidential_note_events": { "type": ["boolean", "null"] },
- "pipeline_events": { "type": "boolean" },
- "wiki_page_events": { "type": "boolean" },
- "job_events": { "type": "boolean" },
- "deployment_events": { "type": "boolean" },
- "releases_events": { "type": "boolean" },
- "alert_status": { "type": "string", "enum": ["executable","disabled","temporarily_disabled"] },
- "disabled_until": { "type": ["string", "null"] },
+ "id": {
+ "type": "integer"
+ },
+ "project_id": {
+ "type": "integer"
+ },
+ "url": {
+ "type": "string"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "push_events": {
+ "type": "boolean"
+ },
+ "push_events_branch_filter": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "tag_push_events": {
+ "type": "boolean"
+ },
+ "merge_requests_events": {
+ "type": "boolean"
+ },
+ "repository_update_events": {
+ "type": "boolean"
+ },
+ "enable_ssl_verification": {
+ "type": "boolean"
+ },
+ "issues_events": {
+ "type": "boolean"
+ },
+ "confidential_issues_events": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "note_events": {
+ "type": "boolean"
+ },
+ "confidential_note_events": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "pipeline_events": {
+ "type": "boolean"
+ },
+ "wiki_page_events": {
+ "type": "boolean"
+ },
+ "job_events": {
+ "type": "boolean"
+ },
+ "deployment_events": {
+ "type": "boolean"
+ },
+ "releases_events": {
+ "type": "boolean"
+ },
+ "emoji_events": {
+ "type": "boolean"
+ },
+ "alert_status": {
+ "type": "string",
+ "enum": [
+ "executable",
+ "disabled",
+ "temporarily_disabled"
+ ]
+ },
+ "disabled_until": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
"url_variables": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
- "required": ["key"],
+ "required": [
+ "key"
+ ],
"properties": {
- "key": { "type": "string" }
+ "key": {
+ "type": "string"
+ }
}
}
}
diff --git a/spec/fixtures/api/schemas/public_api/v4/wiki_blobs.json b/spec/fixtures/api/schemas/public_api/v4/wiki_blobs.json
new file mode 100644
index 00000000000..26379c56a46
--- /dev/null
+++ b/spec/fixtures/api/schemas/public_api/v4/wiki_blobs.json
@@ -0,0 +1,57 @@
+{
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "basename": {
+ "type": "string"
+ },
+ "data": {
+ "type": "string"
+ },
+ "path": {
+ "type": [
+ "string"
+ ]
+ },
+ "filename": {
+ "type": [
+ "string"
+ ]
+ },
+ "id": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "project_id": {
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "group_id": {
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "ref": {
+ "type": "string"
+ },
+ "startline": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "basename",
+ "data",
+ "path",
+ "filename",
+ "ref",
+ "startline"
+ ],
+ "additionalProperties": false
+ }
+}
diff --git a/spec/fixtures/api/schemas/slack/manifest.json b/spec/fixtures/api/schemas/slack/manifest.json
new file mode 100644
index 00000000000..3be7feec27b
--- /dev/null
+++ b/spec/fixtures/api/schemas/slack/manifest.json
@@ -0,0 +1,1250 @@
+{
+ "type": "object",
+ "title": "App Manifest",
+ "required": [
+ "display_information"
+ ],
+ "properties": {
+ "$schema": {
+ "type": "string",
+ "format": "uri"
+ },
+ "_metadata": {
+ "$ref": "#/definitions/app-manifests.metadata"
+ },
+ "app_directory": {
+ "$ref": "#/definitions/app-manifests.v1.app_directory.schema"
+ },
+ "display_information": {
+ "$ref": "#/definitions/app-manifests.v1.display_information.schema"
+ },
+ "features": {
+ "$ref": "#/definitions/app-manifests.v1.features.schema"
+ },
+ "oauth_config": {
+ "$ref": "#/definitions/app-manifests.v1.oauth_config.schema"
+ },
+ "settings": {
+ "$ref": "#/definitions/app-manifests.v1.settings.schema"
+ },
+ "functions": {
+ "$ref": "#/definitions/app-manifests.v2.hermes.functions"
+ },
+ "workflows": {
+ "$ref": "#/definitions/app-manifests.v2.hermes.workflows"
+ },
+ "datastores": {
+ "$ref": "#/definitions/app-manifests.v1.hermes.datastores"
+ },
+ "outgoing_domains": {
+ "$ref": "#/definitions/app-manifests.v1.hermes.outgoing_domains"
+ },
+ "types": {
+ "$ref": "#/definitions/app-manifests.v1.hermes.types"
+ },
+ "external_auth_providers": {
+ "$ref": "#/definitions/app-manifests.v2.hermes.third_party_auth.providers"
+ }
+ },
+ "description": "Describes core app information and functionality.",
+ "definitions": {
+ "app-manifests.metadata": {
+ "type": "object",
+ "properties": {
+ "schema_version": {
+ "type": "integer"
+ },
+ "min_version": {
+ "type": "integer"
+ },
+ "major_version": {
+ "type": "integer",
+ "description": "An integer that specifies the major version of the manifest schema to target."
+ },
+ "minor_version": {
+ "type": "integer",
+ "description": "An integer that specifies the minor version of the manifest schema to target."
+ }
+ },
+ "description": "A group of settings that describe the manifest",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.app_directory.schema": {
+ "type": "object",
+ "required": [
+ "installation_landing_page",
+ "privacy_policy_url",
+ "support_url",
+ "support_email",
+ "supported_languages",
+ "pricing"
+ ],
+ "properties": {
+ "app_directory_categories": {
+ "type": "array",
+ "maxItems": 3,
+ "items": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 255
+ }
+ },
+ "use_direct_install": {
+ "type": "boolean"
+ },
+ "direct_install_url": {
+ "type": "string",
+ "pattern": "^https?:\\/\\/",
+ "maxLength": 255
+ },
+ "installation_landing_page": {
+ "type": "string",
+ "pattern": "^https?:\\/\\/",
+ "maxLength": 255
+ },
+ "privacy_policy_url": {
+ "type": "string",
+ "pattern": "^https?:\\/\\/",
+ "maxLength": 500
+ },
+ "support_url": {
+ "type": "string",
+ "pattern": "^https?:\\/\\/",
+ "maxLength": 350
+ },
+ "support_email": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$",
+ "maxLength": 100,
+ "_note": "Regex follows HTML5 spec for an email address, not RFC 5322"
+ },
+ "supported_languages": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 50,
+ "items": {
+ "type": "string",
+ "maxLength": 50
+ }
+ },
+ "pricing": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 30
+ }
+ },
+ "description": "Information displayed in the App Directory.",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.display_information.schema": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 35,
+ "description": "A string of the name of the app. Maximum length is 35 characters."
+ },
+ "description": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 140,
+ "description": "A string with a short description of the app for display to users. Maximum length is 140 characters."
+ },
+ "background_color": {
+ "type": "string",
+ "regex": "^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$",
+ "minLength": 4,
+ "maxLength": 7,
+ "description": "A string containing a hex color value (including the hex sign) that specifies the background color used on hovercards that display information about your app. Can be 3-digit (#000) or 6-digit (#000000) hex values. Once an app has set a background color value, it cannot be removed, only updated."
+ },
+ "long_description": {
+ "type": "string",
+ "minLength": 175,
+ "maxLength": 4000,
+ "description": "A string with a longer version of the description of the app. Maximum length is 4000 characters."
+ }
+ },
+ "description": "A group of settings that describe parts of an app's appearance within Slack. If you're distributing the app via the App Directory, read our listing guidelines to pick the best values for these settings",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.features.app_home": {
+ "type": "object",
+ "properties": {
+ "home_tab_enabled": {
+ "type": "boolean",
+ "description": "A boolean that specifies whether or not the Home tab is enabled."
+ },
+ "messages_tab_enabled": {
+ "type": "boolean",
+ "description": "A boolean that specifies whether or not the Messages tab in your App Home is enabled."
+ },
+ "messages_tab_read_only_enabled": {
+ "type": "boolean",
+ "description": "A boolean that specifies whether or not the users can send messages to your app in the Messages tab of your App Home."
+ }
+ },
+ "description": "A group of settings corresponding to the Features section of the app config pages.",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.features.bot_user": {
+ "type": "object",
+ "required": [
+ "display_name"
+ ],
+ "properties": {
+ "display_name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 80,
+ "description": "A string containing the display name of the bot user. Maximum length is 80 characters."
+ },
+ "always_online": {
+ "type": "boolean",
+ "description": "A boolean that specifies whether or not the bot user will always appear to be online."
+ }
+ },
+ "description": "A subgroup of settings that describe bot user configuration.",
+ "additionalProperties": false
+ },
+ "slack-functions.parameter": {
+ "type": "object",
+ "required": [
+ "type",
+ "name"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "title": "Slack function parameter type",
+ "enum": [
+ "integer",
+ "number",
+ "boolean",
+ "string",
+ "object",
+ "array",
+ "slack#/types/user_context",
+ "slack#/types/user_permission",
+ "slack#/types/user_id",
+ "slack#/types/channel_id",
+ "slack#/types/usergroup_id",
+ "slack#/types/timestamp",
+ "slack#/types/blocks",
+ "slack#/types/credential/oauth2",
+ "slack#/types/date",
+ "slack#/types/interactivity",
+ "slack#/types/rich_text",
+ "slack#/types/form_input",
+ "slack#/types/form_input_object",
+ "slack#/types/message_ts",
+ "slack#/types/message_context"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "is_required": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": true
+ },
+ "app-manifests.v1.features.functions": {
+ "type": "array",
+ "minItems": 0,
+ "maxItems": 50,
+ "items": {
+ "type": "object",
+ "required": [
+ "callback_id",
+ "title",
+ "description",
+ "input_parameters",
+ "output_parameters"
+ ],
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "callback_id": {
+ "type": "string"
+ },
+ "input_parameters": {
+ "type": "array",
+ "minItems": 0,
+ "maxItems": 20,
+ "items": {
+ "$ref": "#/definitions/slack-functions.parameter"
+ }
+ },
+ "output_parameters": {
+ "type": "array",
+ "minItems": 0,
+ "maxItems": 20,
+ "items": {
+ "$ref": "#/definitions/slack-functions.parameter"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "description": "Make functionality of your app reusable."
+ },
+ "app-manifests.v1.features.shortcuts": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 10,
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "type",
+ "callback_id",
+ "description"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 24,
+ "description": "A string containing the name of the shortcut."
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "message",
+ "global"
+ ],
+ "description": "A string containing one of message or global. This specifies which type of shortcut is being described."
+ },
+ "callback_id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 255,
+ "description": "A string containing the callback_id of this shortcut. Maximum length is 255 characters."
+ },
+ "description": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 150,
+ "description": "A string containing a short description of this shortcut. Maximum length is 150 characters."
+ }
+ },
+ "additionalProperties": false
+ },
+ "description": "An array of settings groups that describe shortcuts configuration. A maximum of 5 shortcuts can be included in this array."
+ },
+ "app-manifests.v1.features.slash_commands": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 50,
+ "items": {
+ "type": "object",
+ "required": [
+ "command",
+ "description"
+ ],
+ "properties": {
+ "command": {
+ "type": "string",
+ "pattern": "^\\/",
+ "minLength": 2,
+ "maxLength": 32,
+ "description": "A string containing the actual slash command. Maximum length is 32 characters, and should include the leading / character."
+ },
+ "url": {
+ "type": "string",
+ "pattern": "^https?:\\/\\/",
+ "maxLength": 3000,
+ "description": "A string containing the full https URL that acts as the slash command's request URL"
+ },
+ "description": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 2000,
+ "description": "A string containing a description of the slash command that will be displayed to users. Maximum length is 2000 characters."
+ },
+ "usage_hint": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1000,
+ "description": "A string a short usage hint about the slash command for users. Maximum length is 1000 characters."
+ },
+ "should_escape": {
+ "type": "boolean",
+ "description": "A boolean that specifies whether or not channels, users, and links typed with the slash command should be escaped.",
+ "default": false
+ }
+ },
+ "additionalProperties": false
+ },
+ "description": "An array of settings groups that describe slash commands configuration. A maximum of 5 slash commands can be included in this array."
+ },
+ "app-manifests.v1.features.workflow_steps": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 10,
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "callback_id"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 50,
+ "description": "A string containing the name of the workflow step. Maximum length of 50 characters."
+ },
+ "callback_id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 50,
+ "description": "A string containing the callback_id of the workflow step. Maximum length of 50 characters."
+ }
+ },
+ "additionalProperties": false
+ },
+ "description": "An array of settings groups that describe workflow steps configuration. A maximum of 10 workflow steps can be included in this array."
+ },
+ "app-manifests.v1.features.unfurl_domains": {
+ "uniqueItems": true,
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 5,
+ "items": {
+ "type": "string",
+ "pattern": "^(?![\\.\\-])([-a-z0-9\\.])+([a-z0-9])$",
+ "maxLength": 255
+ },
+ "description": "An array of strings containing valid unfurl domains to register. A maximum of 5 unfurl domains can be included in this array. Please consult the unfurl docs for a list of domain requirements."
+ },
+ "app-manifests.v1.features.schema": {
+ "type": "object",
+ "properties": {
+ "app_home": {
+ "$ref": "#/definitions/app-manifests.v1.features.app_home"
+ },
+ "bot_user": {
+ "$ref": "#/definitions/app-manifests.v1.features.bot_user"
+ },
+ "functions": {
+ "$ref": "#/definitions/app-manifests.v1.features.functions"
+ },
+ "shortcuts": {
+ "$ref": "#/definitions/app-manifests.v1.features.shortcuts"
+ },
+ "slash_commands": {
+ "$ref": "#/definitions/app-manifests.v1.features.slash_commands"
+ },
+ "workflow_steps": {
+ "$ref": "#/definitions/app-manifests.v1.features.workflow_steps"
+ },
+ "unfurl_domains": {
+ "$ref": "#/definitions/app-manifests.v1.features.unfurl_domains"
+ }
+ },
+ "description": "A group of settings corresponding to the Features section of the app config pages.",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.oauth_config.redirect_urls": {
+ "uniqueItems": true,
+ "type": "array",
+ "maxItems": 1000,
+ "items": {
+ "type": "string",
+ "maxLength": 2500,
+ "_note": "Not including a regex bc currently we accept anything like '://asdf'"
+ },
+ "description": "An array of strings containing OAuth redirect URLs. A maximum of 1000 redirect URLs can be included in this array."
+ },
+ "app-manifests.v1.oauth_config.scopes": {
+ "type": "object",
+ "properties": {
+ "user": {
+ "type": "array",
+ "maxItems": 255,
+ "items": {
+ "type": "string",
+ "maxLength": 50
+ },
+ "description": "An array of strings containing user scopes to request upon app installation. A maximum of 255 scopes can included in this array."
+ },
+ "bot": {
+ "type": "array",
+ "maxItems": 255,
+ "items": {
+ "type": "string",
+ "maxLength": 50
+ },
+ "description": "An array of strings containing bot scopes to request upon app installation. A maximum of 255 scopes can included in this array."
+ }
+ },
+ "description": "A subgroup of settings that describe permission scopes configuration.",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.oauth_config.schema": {
+ "type": "object",
+ "properties": {
+ "redirect_urls": {
+ "$ref": "#/definitions/app-manifests.v1.oauth_config.redirect_urls"
+ },
+ "scopes": {
+ "$ref": "#/definitions/app-manifests.v1.oauth_config.scopes"
+ },
+ "token_management_enabled": {
+ "type": "boolean"
+ }
+ },
+ "description": "A group of settings describing OAuth configuration for the app.",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.settings.allowed_ip_address_ranges": {
+ "uniqueItems": true,
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 50,
+ "items": {
+ "type": "string",
+ "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(3[0-2]|[1-2][0-9]|[0-9]))?$"
+ },
+ "description": "An array of strings that contain IP addresses that conform to the Allowed IP Ranges feature"
+ },
+ "app-manifests.v1.settings.event_subscriptions": {
+ "type": "object",
+ "properties": {
+ "request_url": {
+ "type": "string",
+ "pattern": "^https?:\\/\\/",
+ "maxLength": 3500,
+ "description": "A string containing the full https URL that acts as the Events API request URL. If set, you'll need to manually verify the Request URL in the App Manifest section of App Management."
+ },
+ "user_events": {
+ "uniqueItems": true,
+ "type": "array",
+ "maxItems": 100,
+ "items": {
+ "type": "string",
+ "maxLength": 50
+ },
+ "description": "An array of strings matching the event types you want to the app to subscribe to on behalf of authorized users. A maximum of 100 event types can be used."
+ },
+ "bot_events": {
+ "uniqueItems": true,
+ "type": "array",
+ "maxItems": 100,
+ "items": {
+ "type": "string",
+ "maxLength": 50
+ },
+ "description": "An array of strings matching the event types you want to the app to subscribe to. A maximum of 100 event types can be used."
+ },
+ "metadata_subscriptions": {
+ "uniqueItems": true,
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 20,
+ "items": {
+ "type": "object",
+ "required": [
+ "app_id",
+ "event_type"
+ ],
+ "properties": {
+ "app_id": {
+ "type": "string"
+ },
+ "event_type": {
+ "type": "string",
+ "maxLength": 50
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ },
+ "description": "A subgroup of settings that describe Events API configuration for the app.",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.settings.incoming_webhooks": {
+ "type": "object",
+ "properties": {
+ "incoming_webhooks_enabled": {
+ "type": "boolean"
+ }
+ },
+ "description": "Incoming Webhooks settings",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.settings.interactivity": {
+ "type": "object",
+ "required": [
+ "is_enabled"
+ ],
+ "properties": {
+ "is_enabled": {
+ "type": "boolean",
+ "description": "A boolean that specifies whether or not interactivity features are enabled."
+ },
+ "request_url": {
+ "type": "string",
+ "pattern": "^https?:\\/\\/",
+ "maxLength": 3500,
+ "description": "A string containing the full https URL that acts as the interactive Request URL."
+ },
+ "message_menu_options_url": {
+ "type": "string",
+ "pattern": "^https?:\\/\\/",
+ "maxLength": 3500,
+ "description": "A string containing the full https URL that acts as the interactive Options Load URL."
+ }
+ },
+ "description": "A subgroup of settings that describe interactivity configuration for the app.",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.settings.siws_links": {
+ "type": "object",
+ "properties": {
+ "initiate_uri": {
+ "type": "string",
+ "pattern": "^https:\\/\\/",
+ "maxLength": 3500
+ }
+ },
+ "additionalProperties": false
+ },
+ "app-manifests.v1.settings.schema": {
+ "type": "object",
+ "properties": {
+ "allowed_ip_address_ranges": {
+ "$ref": "#/definitions/app-manifests.v1.settings.allowed_ip_address_ranges"
+ },
+ "event_subscriptions": {
+ "$ref": "#/definitions/app-manifests.v1.settings.event_subscriptions"
+ },
+ "incoming_webhooks": {
+ "$ref": "#/definitions/app-manifests.v1.settings.incoming_webhooks"
+ },
+ "interactivity": {
+ "$ref": "#/definitions/app-manifests.v1.settings.interactivity"
+ },
+ "org_deploy_enabled": {
+ "type": "boolean",
+ "description": "A boolean that specifies whether or not org-wide deploy is enabled."
+ },
+ "socket_mode_enabled": {
+ "type": "boolean",
+ "description": "A boolean that specifies whether or not Socket Mode is enabled."
+ },
+ "is_hosted": {
+ "type": "boolean"
+ },
+ "token_rotation_enabled": {
+ "type": "boolean"
+ },
+ "siws_links": {
+ "$ref": "#/definitions/app-manifests.v1.settings.siws_links"
+ },
+ "hermes_app_type": {
+ "type": "string"
+ },
+ "function_runtime": {
+ "type": "string"
+ }
+ },
+ "description": "A group of settings corresponding to the Settings section of the app config pages.",
+ "additionalProperties": false
+ },
+ "app-manifests.v1.hermes.types.type": {
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "title": "Slack primitive type",
+ "enum": [
+ "integer",
+ "number",
+ "boolean",
+ "string",
+ "object",
+ "array",
+ "slack#/types/user_context",
+ "slack#/types/user_permission",
+ "slack#/types/user_id",
+ "slack#/types/channel_id",
+ "slack#/types/usergroup_id",
+ "slack#/types/timestamp",
+ "slack#/types/blocks",
+ "slack#/types/credential/oauth2",
+ "slack#/types/date",
+ "slack#/types/interactivity",
+ "slack#/types/rich_text",
+ "slack#/types/form_input",
+ "slack#/types/form_input_object",
+ "slack#/types/message_ts",
+ "slack#/types/message_context"
+ ]
+ },
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "is_required": {
+ "type": "boolean"
+ },
+ "is_hidden": {
+ "type": "boolean"
+ },
+ "hint": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": true
+ },
+ "app-manifests.v1.hermes.types": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/app-manifests.v1.hermes.types.type"
+ }
+ },
+ "minProperties": 0,
+ "maxProperties": 50,
+ "description": "Declare the types the app provides",
+ "default": {
+ "your_type_name": {
+ "type": "string"
+ }
+ }
+ },
+ "app-manifests.v2.hermes.functions": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "required": [
+ "title",
+ "description",
+ "input_parameters",
+ "output_parameters"
+ ],
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "input_parameters": {
+ "type": "object",
+ "required": [
+ "properties"
+ ],
+ "properties": {
+ "properties": {
+ "$ref": "#/definitions/app-manifests.v1.hermes.types"
+ },
+ "required": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "output_parameters": {
+ "type": "object",
+ "required": [
+ "properties"
+ ],
+ "properties": {
+ "properties": {
+ "$ref": "#/definitions/app-manifests.v1.hermes.types"
+ },
+ "required": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "minProperties": 0,
+ "maxProperties": 50,
+ "description": "Make functionality of your app reusable.",
+ "default": {
+ "your_callback_id": {
+ "title": "Your Function Title",
+ "description": "Your Function Description",
+ "input_parameters": {
+ },
+ "output_parameters": {
+ }
+ }
+ }
+ },
+ "app-manifests.v2.hermes.step": {
+ "type": "object",
+ "required": [
+ "id",
+ "function_id",
+ "inputs"
+ ],
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "function_id": {
+ "type": "string"
+ },
+ "inputs": {
+ "type": "object",
+ "patternProperties": {
+ "^.+$": {
+ "type": [
+ "string",
+ "object",
+ "array",
+ "number",
+ "boolean"
+ ]
+ }
+ },
+ "default": {
+ "your_input": "string"
+ },
+ "additionalProperties": false
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "function",
+ "switch",
+ "conditional"
+ ]
+ }
+ },
+ "description": "Declare a workflow step",
+ "additionalProperties": false
+ },
+ "slack-functions.value-template": {
+ "type": "object",
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "string"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "object"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "initial_value": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "string"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "object"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "locked": {
+ "type": "boolean",
+ "default": false
+ },
+ "hidden": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ "description": "An object describing how to render a value at runtime",
+ "additionalProperties": false
+ },
+ "slack-functions.parameter-value-templates": {
+ "type": "object",
+ "patternProperties": {
+ "^.+$": {
+ "$ref": "#/definitions/slack-functions.value-template"
+ }
+ },
+ "description": "A mapping of parameter names to template objects",
+ "default": {
+ "your_input": {
+ "value": {
+ "type": "integer"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "app-manifests.v2.hermes.workflows": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "required": [
+ "title",
+ "description",
+ "steps"
+ ],
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "input_parameters": {
+ "type": "object",
+ "required": [
+ "properties"
+ ],
+ "properties": {
+ "properties": {
+ "$ref": "#/definitions/app-manifests.v1.hermes.types"
+ },
+ "required": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "steps": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/app-manifests.v2.hermes.step"
+ }
+ },
+ "suggested_triggers": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "inputs"
+ ],
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "inputs": {
+ "$ref": "#/definitions/slack-functions.parameter-value-templates"
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "minProperties": 0,
+ "maxProperties": 50,
+ "description": "Declare the workflow functions the app provides.",
+ "default": {
+ "your_workflow_id": {
+ "title": "Your Workflow Title",
+ "description": "Your Workflow Description",
+ "steps": [
+
+ ]
+ }
+ }
+ },
+ "app-manifests.v1.hermes.datastores": {
+ "type": "object",
+ "patternProperties": {
+ "^.+$": {
+ "type": "object",
+ "required": [
+ "primary_key",
+ "attributes"
+ ],
+ "properties": {
+ "primary_key": {
+ "type": "string",
+ "minLength": 1
+ },
+ "attributes": {
+ "type": "object",
+ "patternProperties": {
+ "^.+$": {
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "minLength": 1
+ },
+ "items": {
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ },
+ "properties": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ "minProperties": 0,
+ "maxProperties": 100,
+ "default": {
+ "your_attribute_id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "minProperties": 0,
+ "maxProperties": 10,
+ "description": "Declares the datastores used by the app.",
+ "default": {
+ "your_datastore_id": {
+ "primary_key": "Your Primary Key",
+ "attributes": {
+ "your_attribute_id": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "app-manifests.v1.hermes.outgoing_domains": {
+ "uniqueItems": true,
+ "type": "array",
+ "minItems": 0,
+ "maxItems": 10,
+ "items": {
+ "type": "string",
+ "pattern": "^(?![\\.\\-])([-a-z0-9\\.])+([a-z0-9])$",
+ "maxLength": 50
+ },
+ "description": "Allowed Egress Domains for the Hosted App"
+ },
+ "app-manifests.v2.hermes.third_party_auth.providers.oauth2": {
+ "type": "object",
+ "patternProperties": {
+ ".*": {
+ "type": "object",
+ "required": [
+ "provider_type",
+ "options"
+ ],
+ "properties": {
+ "provider_type": {
+ "type": "string",
+ "enum": [
+ "CUSTOM",
+ "SLACK_PROVIDED"
+ ]
+ },
+ "options": {
+ "anyOf": [
+ {
+ "type": "object",
+ "required": [
+ "client_id",
+ "scope"
+ ],
+ "properties": {
+ "client_id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1024
+ },
+ "scope": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "minItems": 0
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ {
+ "type": "object",
+ "required": [
+ "client_id",
+ "provider_name",
+ "authorization_url",
+ "token_url",
+ "scope",
+ "identity_config"
+ ],
+ "properties": {
+ "client_id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1024
+ },
+ "provider_name": {
+ "type": "string",
+ "minLength": 2,
+ "maxLength": 255
+ },
+ "authorization_url": {
+ "type": "string",
+ "pattern": "^https:\\/\\/",
+ "minLength": 5,
+ "maxLength": 255
+ },
+ "token_url": {
+ "type": "string",
+ "pattern": "^https:\\/\\/",
+ "minLength": 5,
+ "maxLength": 255
+ },
+ "scope": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "pattern": "^(\\x21|[\\x23-\\x5B]|[\\x5D-\\x7E]){1,}$",
+ "minItems": 0
+ }
+ },
+ "authorization_url_extras": {
+ "type": "object"
+ },
+ "identity_config": {
+ "type": "object",
+ "required": [
+ "url",
+ "account_identifier"
+ ],
+ "properties": {
+ "url": {
+ "type": "string",
+ "pattern": "^https:\\/\\/",
+ "minLength": 5,
+ "maxLength": 255
+ },
+ "account_identifier": {
+ "type": "string",
+ "pattern": "^\\$\\.(.)+",
+ "minLength": 1,
+ "maxLength": 255
+ },
+ "headers": {
+ "type": "object"
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false
+ }
+ ]
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "description": "Declares the oauth configurations used by the app.",
+ "default": {
+ "your_oauth2_id": {
+ "provider_type": "CUSTOM",
+ "options": {
+ "client_id": "Your Client ID",
+ "scope": [
+
+ ]
+ }
+ }
+ }
+ },
+ "app-manifests.v2.hermes.third_party_auth.providers": {
+ "type": "object",
+ "properties": {
+ "oauth2": {
+ "$ref": "#/definitions/app-manifests.v2.hermes.third_party_auth.providers.oauth2"
+ }
+ },
+ "description": "Declares the oauth configurations used by the app.",
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+}
diff --git a/spec/fixtures/csv_missing_milestones.csv b/spec/fixtures/csv_missing_milestones.csv
new file mode 100644
index 00000000000..ec2b20df018
--- /dev/null
+++ b/spec/fixtures/csv_missing_milestones.csv
@@ -0,0 +1,5 @@
+title,description,milestone
+"Issue with missing milestone","",15.10,
+"Issue without milestone","",,
+"Issue with milestone","",10.1,
+"Issue with duplicate milestone","",15.10,
diff --git a/spec/fixtures/grafana/expected_grafana_embed.json b/spec/fixtures/grafana/expected_grafana_embed.json
index 72fb5477b9e..0cee0385886 100644
--- a/spec/fixtures/grafana/expected_grafana_embed.json
+++ b/spec/fixtures/grafana/expected_grafana_embed.json
@@ -10,14 +10,12 @@
{
"id": "In_0",
"query_range": "sum( rate(redis_net_input_bytes_total{instance=~\"localhost:9121\"}[1m]))",
- "label": "In",
- "prometheus_endpoint_path": "/foo/bar/-/grafana/proxy/1/api/v1/query_range?query=sum%28++rate%28redis_net_input_bytes_total%7Binstance%3D~%22localhost%3A9121%22%7D%5B1m%5D%29%29"
+ "label": "In"
},
{
"id": "Out_1",
"query_range": "sum( rate(redis_net_output_bytes_total{instance=~\"localhost:9121\"}[1m]))",
- "label": "Out",
- "prometheus_endpoint_path": "/foo/bar/-/grafana/proxy/1/api/v1/query_range?query=sum%28++rate%28redis_net_output_bytes_total%7Binstance%3D~%22localhost%3A9121%22%7D%5B1m%5D%29%29"
+ "label": "Out"
}
]
}
diff --git a/spec/fixtures/lib/gitlab/import_export/complex/tree/project/issues.ndjson b/spec/fixtures/lib/gitlab/import_export/complex/tree/project/issues.ndjson
index 3955107865d..8b6dfaf72d7 100644
--- a/spec/fixtures/lib/gitlab/import_export/complex/tree/project/issues.ndjson
+++ b/spec/fixtures/lib/gitlab/import_export/complex/tree/project/issues.ndjson
@@ -3,8 +3,8 @@
{"id":38,"title":"Quasi adipisci non cupiditate dolorem quo qui earum sed.","author_id":6,"project_id":5,"created_at":"2016-06-14T15:02:08.154Z","updated_at":"2016-06-14T15:02:48.614Z","position":0,"branch_name":null,"description":"Ea recusandae neque autem tempora.","state":"closed","iid":8,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"label_links":[{"id":99,"label_id":2,"target_id":38,"target_type":"Issue","created_at":"2016-07-22T08:57:02.840Z","updated_at":"2016-07-22T08:57:02.840Z","label":{"id":2,"title":"test2","color":"#428bca","project_id":8,"created_at":"2016-07-22T08:55:44.161Z","updated_at":"2016-07-22T08:55:44.161Z","template":false,"description":"","type":"ProjectLabel"}}],"notes":[{"id":367,"note":"Accusantium fugiat et eaque quisquam esse corporis.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:48.235Z","updated_at":"2016-06-14T15:02:48.235Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":38,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":368,"note":"Ea labore eum nam qui laboriosam.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:48.261Z","updated_at":"2016-06-14T15:02:48.261Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":38,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":369,"note":"Accusantium quis sed molestiae et.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:48.294Z","updated_at":"2016-06-14T15:02:48.294Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":38,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":370,"note":"Corporis numquam a voluptatem pariatur asperiores dolorem delectus autem.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:48.523Z","updated_at":"2016-06-14T15:02:48.523Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":38,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":371,"note":"Ea accusantium maxime voluptas rerum.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:48.546Z","updated_at":"2016-06-14T15:02:48.546Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":38,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":372,"note":"Pariatur iusto et et excepturi similique ipsam eum.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:48.569Z","updated_at":"2016-06-14T15:02:48.569Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":38,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":373,"note":"Aliquam et culpa officia iste eius.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:48.591Z","updated_at":"2016-06-14T15:02:48.591Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":38,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":374,"note":"Ab id velit id unde laborum.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:48.613Z","updated_at":"2016-06-14T15:02:48.613Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":38,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
{"id":37,"title":"Cupiditate quo aut ducimus minima molestiae vero numquam possimus.","author_id":20,"project_id":5,"created_at":"2016-06-14T15:02:08.051Z","updated_at":"2016-06-14T15:02:48.854Z","position":0,"branch_name":null,"description":"Maiores architecto quos in dolorem.","state":"opened","iid":7,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"notes":[{"id":375,"note":"Quasi fugit qui sed eligendi aut quia.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:48.647Z","updated_at":"2016-06-14T15:02:48.647Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":37,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":376,"note":"Esse nesciunt voluptatem ex vero est consequatur.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:48.674Z","updated_at":"2016-06-14T15:02:48.674Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":37,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":377,"note":"Similique qui quas non aut et velit sequi in.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:48.696Z","updated_at":"2016-06-14T15:02:48.696Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":37,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":378,"note":"Eveniet ut cupiditate repellendus numquam in esse eius.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:48.720Z","updated_at":"2016-06-14T15:02:48.720Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":37,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":379,"note":"Velit est dolorem adipisci rerum sed iure.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:48.755Z","updated_at":"2016-06-14T15:02:48.755Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":37,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":380,"note":"Voluptatem ullam ab ut illo ut quo.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:48.793Z","updated_at":"2016-06-14T15:02:48.793Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":37,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":381,"note":"Voluptatem impedit beatae quasi ipsa earum consectetur.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:48.823Z","updated_at":"2016-06-14T15:02:48.823Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":37,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":382,"note":"Nihil officiis eaque incidunt sunt voluptatum excepturi.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:48.852Z","updated_at":"2016-06-14T15:02:48.852Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":37,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
{"id":36,"title":"Necessitatibus dolor est enim quia rem suscipit quidem voluptas ullam.","author_id":16,"project_id":5,"created_at":"2016-06-14T15:02:07.958Z","updated_at":"2016-06-14T15:02:49.044Z","position":0,"branch_name":null,"description":"Ut aut ut et tenetur velit aut id modi.","state":"opened","iid":6,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"notes":[{"id":383,"note":"Excepturi deleniti sunt rerum nesciunt vero fugiat possimus.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:48.885Z","updated_at":"2016-06-14T15:02:48.885Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":36,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":384,"note":"Et est nemo sed nam sed.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:48.910Z","updated_at":"2016-06-14T15:02:48.910Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":36,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":385,"note":"Animi mollitia nulla facere amet aut quaerat.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:48.934Z","updated_at":"2016-06-14T15:02:48.934Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":36,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":386,"note":"Excepturi id voluptas ut odio officiis omnis.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:48.955Z","updated_at":"2016-06-14T15:02:48.955Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":36,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":387,"note":"Molestiae labore officiis magni et eligendi quasi maxime.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:48.978Z","updated_at":"2016-06-14T15:02:48.978Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":36,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":388,"note":"Officia tenetur praesentium rem nam non.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:49.001Z","updated_at":"2016-06-14T15:02:49.001Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":36,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":389,"note":"Et et et molestiae reprehenderit.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:49.022Z","updated_at":"2016-06-14T15:02:49.022Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":36,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":390,"note":"Aperiam in consequatur est sunt cum quia.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:49.043Z","updated_at":"2016-06-14T15:02:49.043Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":36,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
-{"id":35,"title":"Repellat praesentium deserunt maxime incidunt harum porro qui.","author_id":20,"project_id":5,"created_at":"2016-06-14T15:02:07.832Z","updated_at":"2016-06-14T15:02:49.226Z","position":0,"branch_name":null,"description":"Dicta nisi nihil non ipsa velit.","state":"closed","iid":5,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"notes":[{"id":391,"note":"Qui magnam et assumenda quod id dicta necessitatibus.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:49.075Z","updated_at":"2016-06-14T15:02:49.075Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":392,"note":"Consectetur deserunt possimus dolor est odio.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:49.095Z","updated_at":"2016-06-14T15:02:49.095Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":393,"note":"Labore nisi quo cumque voluptas consequatur aut qui.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:49.117Z","updated_at":"2016-06-14T15:02:49.117Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":394,"note":"Et totam facilis voluptas et enim.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:49.138Z","updated_at":"2016-06-14T15:02:49.138Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":395,"note":"Ratione sint pariatur sed omnis eligendi quo libero exercitationem.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:49.160Z","updated_at":"2016-06-14T15:02:49.160Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":396,"note":"Iure hic autem id voluptatem.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:49.182Z","updated_at":"2016-06-14T15:02:49.182Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":397,"note":"Excepturi eum laboriosam delectus repellendus odio nisi et voluptatem.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:49.205Z","updated_at":"2016-06-14T15:02:49.205Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":398,"note":"Ut quis ex soluta consequatur et blanditiis.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:49.225Z","updated_at":"2016-06-14T15:02:49.225Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
+{"id":35,"title":"task by both attributes","work_item_type":{"base_type":"task"},"issue_type":"incident","author_id":20,"project_id":5,"created_at":"2016-06-14T15:02:07.832Z","updated_at":"2016-06-14T15:02:49.226Z","position":0,"branch_name":null,"description":"Dicta nisi nihil non ipsa velit.","state":"closed","iid":5,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"notes":[{"id":391,"note":"Qui magnam et assumenda quod id dicta necessitatibus.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:49.075Z","updated_at":"2016-06-14T15:02:49.075Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":392,"note":"Consectetur deserunt possimus dolor est odio.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:49.095Z","updated_at":"2016-06-14T15:02:49.095Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":393,"note":"Labore nisi quo cumque voluptas consequatur aut qui.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:49.117Z","updated_at":"2016-06-14T15:02:49.117Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":394,"note":"Et totam facilis voluptas et enim.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:49.138Z","updated_at":"2016-06-14T15:02:49.138Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":395,"note":"Ratione sint pariatur sed omnis eligendi quo libero exercitationem.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:49.160Z","updated_at":"2016-06-14T15:02:49.160Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":396,"note":"Iure hic autem id voluptatem.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:49.182Z","updated_at":"2016-06-14T15:02:49.182Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":397,"note":"Excepturi eum laboriosam delectus repellendus odio nisi et voluptatem.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:49.205Z","updated_at":"2016-06-14T15:02:49.205Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":398,"note":"Ut quis ex soluta consequatur et blanditiis.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:49.225Z","updated_at":"2016-06-14T15:02:49.225Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":35,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
{"id":34,"title":"Ullam expedita deserunt libero consequatur quia dolor harum perferendis facere quidem.","author_id":1,"project_id":5,"created_at":"2016-06-14T15:02:07.717Z","updated_at":"2016-06-14T15:02:49.416Z","position":0,"branch_name":null,"description":"Ut et explicabo vel voluptatem consequuntur ut sed.","state":"closed","iid":4,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"notes":[{"id":399,"note":"Dolor iste tempora tenetur non vitae maiores voluptatibus.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:49.256Z","updated_at":"2016-06-14T15:02:49.256Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":34,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":400,"note":"Aut sit quidem qui adipisci maxime excepturi iusto.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:49.284Z","updated_at":"2016-06-14T15:02:49.284Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":34,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":401,"note":"Et a necessitatibus autem quidem animi sunt voluptatum rerum.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:49.305Z","updated_at":"2016-06-14T15:02:49.305Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":34,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":402,"note":"Esse laboriosam quo voluptatem quis molestiae.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:49.328Z","updated_at":"2016-06-14T15:02:49.328Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":34,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":403,"note":"Nemo magnam distinctio est ut voluptate ea.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:49.350Z","updated_at":"2016-06-14T15:02:49.350Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":34,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":404,"note":"Omnis sed rerum neque rerum quae quam nulla officiis.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:49.372Z","updated_at":"2016-06-14T15:02:49.372Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":34,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":405,"note":"Quo soluta dolorem vitae ad consequatur qui aut dicta.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:49.394Z","updated_at":"2016-06-14T15:02:49.394Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":34,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":406,"note":"Magni minus est aut aut totam ut.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:49.414Z","updated_at":"2016-06-14T15:02:49.414Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":34,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
-{"id":33,"title":"Numquam accusamus eos iste exercitationem magni non inventore.","author_id":26,"project_id":5,"created_at":"2016-06-14T15:02:07.611Z","updated_at":"2016-06-14T15:02:49.661Z","position":0,"branch_name":null,"description":"Non asperiores velit accusantium voluptate.","state":"closed","iid":3,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"notes":[{"id":407,"note":"Quod ea et possimus architecto.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:49.450Z","updated_at":"2016-06-14T15:02:49.450Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":408,"note":"Reiciendis est et unde perferendis dicta ut praesentium quasi.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:49.503Z","updated_at":"2016-06-14T15:02:49.503Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":409,"note":"Magni quia odio blanditiis pariatur voluptas.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:49.527Z","updated_at":"2016-06-14T15:02:49.527Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":410,"note":"Enim quam ut et et et.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:49.551Z","updated_at":"2016-06-14T15:02:49.551Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":411,"note":"Fugit voluptatem ratione maxime expedita.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:49.578Z","updated_at":"2016-06-14T15:02:49.578Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":412,"note":"Voluptatem enim aut ipsa et et ducimus.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:49.604Z","updated_at":"2016-06-14T15:02:49.604Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":413,"note":"Quia repellat fugiat consectetur quidem.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:49.631Z","updated_at":"2016-06-14T15:02:49.631Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":414,"note":"Corporis ipsum et ea necessitatibus quod assumenda repudiandae quam.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:49.659Z","updated_at":"2016-06-14T15:02:49.659Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
-{"id":32,"title":"Necessitatibus magnam qui at velit consequatur perspiciatis.","author_id":15,"project_id":5,"created_at":"2016-06-14T15:02:07.431Z","updated_at":"2016-06-14T15:02:49.884Z","position":0,"branch_name":null,"description":"Molestiae corporis magnam et fugit aliquid nulla quia.","state":"closed","iid":2,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"notes":[{"id":415,"note":"Nemo consequatur sed blanditiis qui id iure dolores.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:49.694Z","updated_at":"2016-06-14T15:02:49.694Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":416,"note":"Voluptas ab accusantium dicta in.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:49.718Z","updated_at":"2016-06-14T15:02:49.718Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":417,"note":"Esse odit qui a et eum ducimus.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:49.741Z","updated_at":"2016-06-14T15:02:49.741Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":418,"note":"Sequi dolor doloribus ratione placeat repellendus.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:49.767Z","updated_at":"2016-06-14T15:02:49.767Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":419,"note":"Quae aspernatur rem est similique.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:49.796Z","updated_at":"2016-06-14T15:02:49.796Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":420,"note":"Voluptate omnis et id rerum non nesciunt laudantium assumenda.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:49.825Z","updated_at":"2016-06-14T15:02:49.825Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":421,"note":"Quia enim ab et eligendi.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:49.853Z","updated_at":"2016-06-14T15:02:49.853Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":422,"note":"In fugiat rerum voluptas quas officia.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:49.881Z","updated_at":"2016-06-14T15:02:49.881Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
+{"id":33,"title":"task by issue_type","issue_type":"task","author_id":26,"project_id":5,"created_at":"2016-06-14T15:02:07.611Z","updated_at":"2016-06-14T15:02:49.661Z","position":0,"branch_name":null,"description":"Non asperiores velit accusantium voluptate.","state":"closed","iid":3,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"notes":[{"id":407,"note":"Quod ea et possimus architecto.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:49.450Z","updated_at":"2016-06-14T15:02:49.450Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":408,"note":"Reiciendis est et unde perferendis dicta ut praesentium quasi.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:49.503Z","updated_at":"2016-06-14T15:02:49.503Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":409,"note":"Magni quia odio blanditiis pariatur voluptas.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:49.527Z","updated_at":"2016-06-14T15:02:49.527Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":410,"note":"Enim quam ut et et et.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:49.551Z","updated_at":"2016-06-14T15:02:49.551Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":411,"note":"Fugit voluptatem ratione maxime expedita.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:49.578Z","updated_at":"2016-06-14T15:02:49.578Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":412,"note":"Voluptatem enim aut ipsa et et ducimus.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:49.604Z","updated_at":"2016-06-14T15:02:49.604Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":413,"note":"Quia repellat fugiat consectetur quidem.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:49.631Z","updated_at":"2016-06-14T15:02:49.631Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":414,"note":"Corporis ipsum et ea necessitatibus quod assumenda repudiandae quam.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:49.659Z","updated_at":"2016-06-14T15:02:49.659Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":33,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
+{"id":32,"title":"incident by work_item_type","work_item_type":{"base_type":"incident"},"author_id":15,"project_id":5,"created_at":"2016-06-14T15:02:07.431Z","updated_at":"2016-06-14T15:02:49.884Z","position":0,"branch_name":null,"description":"Molestiae corporis magnam et fugit aliquid nulla quia.","state":"closed","iid":2,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"notes":[{"id":415,"note":"Nemo consequatur sed blanditiis qui id iure dolores.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:49.694Z","updated_at":"2016-06-14T15:02:49.694Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":416,"note":"Voluptas ab accusantium dicta in.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:49.718Z","updated_at":"2016-06-14T15:02:49.718Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":417,"note":"Esse odit qui a et eum ducimus.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:49.741Z","updated_at":"2016-06-14T15:02:49.741Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":418,"note":"Sequi dolor doloribus ratione placeat repellendus.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:49.767Z","updated_at":"2016-06-14T15:02:49.767Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":419,"note":"Quae aspernatur rem est similique.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:49.796Z","updated_at":"2016-06-14T15:02:49.796Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":420,"note":"Voluptate omnis et id rerum non nesciunt laudantium assumenda.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:49.825Z","updated_at":"2016-06-14T15:02:49.825Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":421,"note":"Quia enim ab et eligendi.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:49.853Z","updated_at":"2016-06-14T15:02:49.853Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":422,"note":"In fugiat rerum voluptas quas officia.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:49.881Z","updated_at":"2016-06-14T15:02:49.881Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":32,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
{"id":31,"title":"issue_with_timelogs","author_id":16,"project_id":5,"created_at":"2016-06-14T15:02:07.280Z","updated_at":"2016-06-14T15:02:50.134Z","position":0,"branch_name":null,"description":"Quod ad architecto qui est sed quia.","state":"closed","iid":1,"updated_by_id":null,"confidential":false,"due_date":null,"moved_to_id":null,"timelogs":[{"id":1,"time_spent":72000,"user_id":1,"created_at":"2019-12-27T09:15:22.302Z","updated_at":"2019-12-27T09:15:22.302Z","spent_at":"2019-12-27T00:00:00.000Z"}],"notes":[{"id":423,"note":"A mollitia qui iste consequatur eaque iure omnis sunt.","noteable_type":"Issue","author_id":26,"created_at":"2016-06-14T15:02:49.933Z","updated_at":"2016-06-14T15:02:49.933Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":31,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 4"},"events":[]},{"id":424,"note":"Eveniet est et blanditiis sequi alias.","noteable_type":"Issue","author_id":25,"created_at":"2016-06-14T15:02:49.965Z","updated_at":"2016-06-14T15:02:49.965Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":31,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 3"},"events":[]},{"id":425,"note":"Commodi tempore voluptas doloremque est.","noteable_type":"Issue","author_id":22,"created_at":"2016-06-14T15:02:49.996Z","updated_at":"2016-06-14T15:02:49.996Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":31,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"User 0"},"events":[]},{"id":426,"note":"Quo libero impedit odio debitis rerum aspernatur.","noteable_type":"Issue","author_id":20,"created_at":"2016-06-14T15:02:50.024Z","updated_at":"2016-06-14T15:02:50.024Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":31,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ottis Schuster II"},"events":[]},{"id":427,"note":"Dolorem voluptatem qui labore deserunt.","noteable_type":"Issue","author_id":16,"created_at":"2016-06-14T15:02:50.049Z","updated_at":"2016-06-14T15:02:50.049Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":31,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Rhett Emmerich IV"},"events":[]},{"id":428,"note":"Est blanditiis laboriosam enim ipsam.","noteable_type":"Issue","author_id":15,"created_at":"2016-06-14T15:02:50.077Z","updated_at":"2016-06-14T15:02:50.077Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":31,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Burdette Bernier"},"events":[]},{"id":429,"note":"Et in voluptatem animi dolorem eos.","noteable_type":"Issue","author_id":6,"created_at":"2016-06-14T15:02:50.107Z","updated_at":"2016-06-14T15:02:50.107Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":31,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Ari Wintheiser"},"events":[]},{"id":430,"note":"Unde culpa voluptate qui sint quos.","noteable_type":"Issue","author_id":1,"created_at":"2016-06-14T15:02:50.132Z","updated_at":"2016-06-14T15:02:50.132Z","project_id":5,"attachment":{"url":null},"line_code":null,"commit_id":null,"noteable_id":31,"system":false,"st_diff":null,"updated_by_id":null,"author":{"name":"Administrator"},"events":[]}]}
diff --git a/spec/fixtures/lib/gitlab/metrics/dashboard/schemas/metrics.json b/spec/fixtures/lib/gitlab/metrics/dashboard/schemas/metrics.json
index 8ee207b7ebf..79132c0d039 100644
--- a/spec/fixtures/lib/gitlab/metrics/dashboard/schemas/metrics.json
+++ b/spec/fixtures/lib/gitlab/metrics/dashboard/schemas/metrics.json
@@ -2,23 +2,57 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": [
- "label",
- "prometheus_endpoint_path"
+ "label"
],
"oneOf": [
- { "required": ["query"] },
- { "required": ["query_range"] }
+ {
+ "required": [
+ "query"
+ ]
+ },
+ {
+ "required": [
+ "query_range"
+ ]
+ }
],
"properties": {
- "id": { "type": "string" },
- "query_range": { "type": ["string", "number"] },
- "query": { "type": ["string", "number"] },
- "unit": { "type": "string" },
- "label": { "type": "string" },
- "track": { "type": "string" },
- "prometheus_endpoint_path": { "type": "string" },
- "metric_id": { "type": "number" },
- "edit_path": { "type": ["string", "null"] }
+ "id": {
+ "type": "string"
+ },
+ "query_range": {
+ "type": [
+ "string",
+ "number"
+ ]
+ },
+ "query": {
+ "type": [
+ "string",
+ "number"
+ ]
+ },
+ "unit": {
+ "type": "string"
+ },
+ "label": {
+ "type": "string"
+ },
+ "track": {
+ "type": "string"
+ },
+ "prometheus_endpoint_path": {
+ "type": "string"
+ },
+ "metric_id": {
+ "type": "number"
+ },
+ "edit_path": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
},
"additionalProperties": false
}