solarwinds-itsm-api-definitions 0.1.7 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -70,7 +70,7 @@
70
70
  "value_of_custom_field": {
71
71
  "anyOf":[
72
72
  { "type": "string", "example": "content" }, { "type": "integer", "example": 1 }, { "type": "null" },
73
- { "content": { "application/octet-stream": {} }, "description": "attachment custom field" }
73
+ { "content": { "application/octet-stream": {} }, "description": "attachment custom field" }, { "nullable": true }
74
74
  ]
75
75
  },
76
76
  "custom_field": {
@@ -79,7 +79,7 @@
79
79
  "properties": {
80
80
  "name": { "type": "string", "example": "Name of custom text field" },
81
81
  "value": { "$ref": "components.json#/components/request/schemas/value_of_custom_field" },
82
- "user_value": { "$ref": "components.json#/components/request/schemas/association_by_email" }
82
+ "user_value": { "anyOf": [{ "$ref": "components.json#/components/request/schemas/association_by_email" }, { "nullable": true }] }
83
83
  }
84
84
  },
85
85
  "custom_fields_value": {
@@ -427,6 +427,11 @@
427
427
  },
428
428
  "number_or_string": {
429
429
  "anyOf": [{ "type": "string", "example": "1" }, { "type": "integer", "example": 1 }]
430
+ },
431
+ "string_or_null": {
432
+ "type": "string",
433
+ "nullable": true,
434
+ "example": "string"
430
435
  }
431
436
  }
432
437
  }
@@ -0,0 +1,29 @@
1
+ {
2
+ "examples": {
3
+ "change_request": {
4
+ "name": "Change name",
5
+ "description": "Change description",
6
+ "change_plan": "Change plan",
7
+ "test_plan": "Test plan",
8
+ "rollback_plan": "Rollback plan",
9
+ "priority": "Low",
10
+ "change_type": "None",
11
+ "assignee": { "email": "john.doe@email.com" },
12
+ "site": { "name":"Site name" },
13
+ "department": { "name":"Department name" },
14
+ "request_variables_attributes": [
15
+ {
16
+ "name": "Variable name",
17
+ "value": "Content"
18
+ },
19
+ {
20
+ "name": "User Variable",
21
+ "user_value": { "email": "john.doe@email.com" }
22
+ },
23
+ {
24
+ "name": "MultyPickList variable",
25
+ "value": "option1#dlmtr#option2"
26
+ }
27
+ ]}
28
+ }
29
+ }
@@ -27,7 +27,7 @@
27
27
  "request_properties": {
28
28
  "name": { "type": "string", "example": "Change Name" },
29
29
  "change_type": { "type": "integer", "example": 1 },
30
- "description": { "type": "string", "example": "description" },
30
+ "description": { "$ref": "../../components.json#/components/common/schemas/string_or_null" },
31
31
  "site": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
32
32
  "department": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
33
33
  "site_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
@@ -27,7 +27,7 @@
27
27
  "request_properties": {
28
28
  "name": { "type": "string", "example": "Change Name" },
29
29
  "change_type": { "type": "integer", "example": 1 },
30
- "description": { "type": "string", "example": "description" },
30
+ "description": { "$ref": "../../components.json#/components/common/schemas/string_or_null" },
31
31
  "site": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
32
32
  "department": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
33
33
  "site_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
@@ -0,0 +1,30 @@
1
+ {
2
+ "components": {
3
+ "schemas": {
4
+ "request": {
5
+ "type": "object",
6
+ "xml": { "name": "/" },
7
+ "properties": {
8
+ "change_request": {
9
+ "type": "object",
10
+ "properties": {
11
+ "site_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
12
+ "department_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
13
+ "priority": { "type": "string", "example": "High" },
14
+ "change_plan": { "type": "string", "example": "Change Plan" },
15
+ "test_plan": { "type": "string", "example": "Test Plan" },
16
+ "rollback_plan": { "type": "string", "example": "Rollback Plan" },
17
+ "assignee": { "$ref": "../../components.json#/components/request/schemas/association_by_email" },
18
+ "request_variables_attributes": {
19
+ "anyOf": [
20
+ { "$ref": "../../components.json#/components/request/schemas/variable" },
21
+ { "type": "array", "items": { "$ref": "../../components.json#/components/request/schemas/variable" } }
22
+ ]
23
+ }
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
@@ -26,7 +26,8 @@
26
26
  },
27
27
  "request_properties": {
28
28
  "body": { "type": "string", "example": "Comment body" },
29
- "is_private": { "anyOf": [{ "type": "string", "example": "true" }, { "type": "boolean", "example": true }] }
29
+ "is_private": { "anyOf": [{ "type": "string", "example": "true" }, { "type": "boolean", "example": true }] },
30
+ "user_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" }
30
31
  },
31
32
  "response": {
32
33
  "type": "object",
@@ -28,7 +28,7 @@
28
28
  "type": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
29
29
  "type_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
30
30
  "name": { "type": "string", "example": "CI Name" },
31
- "description": { "type": "string", "example": "description" },
31
+ "description": { "$ref": "../../components.json#/components/common/schemas/string_or_null" },
32
32
  "asset_tag": { "type": "string", "example": "Configuration Item Tag" },
33
33
  "site_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
34
34
  "department_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
@@ -28,7 +28,7 @@
28
28
  "name": { "type": "string", "example": "Incident Name" },
29
29
  "site_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
30
30
  "department_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
31
- "description": { "type": "string", "example": "description" },
31
+ "description": { "$ref": "../../components.json#/components/common/schemas/string_or_null" },
32
32
  "state_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
33
33
  "assignee": { "$ref": "../../components.json#/components/request/schemas/association_by_email" },
34
34
  "assignee_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "request_properties": {
28
28
  "name": { "type": "string", "example": "Problem Name" },
29
- "description": { "type": "string", "example": "description" },
29
+ "description": { "$ref": "../../components.json#/components/common/schemas/string_or_null" },
30
30
  "site": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
31
31
  "department": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
32
32
  "site_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "request_properties": {
28
28
  "name": { "type": "string", "example": "Release Name" },
29
- "description": { "type": "string", "example": "description" },
29
+ "description": { "$ref": "../../components.json#/components/common/schemas/string_or_null" },
30
30
  "site": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
31
31
  "department": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
32
32
  "site_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
@@ -28,7 +28,7 @@
28
28
  "name": { "type": "string", "example": "Solution Name" },
29
29
  "site_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
30
30
  "department_id": { "$ref": "../../components.json#/components/common/schemas/association_by_id" },
31
- "description": { "type": "string", "example": "description" },
31
+ "description": { "$ref": "../../components.json#/components/common/schemas/string_or_null" },
32
32
  "state": { "type": "string", "example": "Approved" },
33
33
  "category": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
34
34
  "subcategory": { "$ref": "../../components.json#/components/request/schemas/association_by_name" },
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "request_properties": {
28
28
  "name": { "type": "string", "example": "Support" },
29
- "description": { "type": "string", "example": "Support Department" }
29
+ "description": { "anyOf":[{ "type": "string", "example": "Support Department" }, { "nullable": true }] }
30
30
  },
31
31
  "response": {
32
32
  "type": "object",
@@ -45,4 +45,4 @@
45
45
  }
46
46
  }
47
47
  }
48
- }
48
+ }
@@ -27,7 +27,7 @@
27
27
  "request_properties": {
28
28
  "name": { "type": "string", "example": "Austin TX, USA" },
29
29
  "location": { "type": "string", "example": "AUS" },
30
- "description": { "type": "string", "example": "Description Austin TX, USA" },
30
+ "description": { "anyOf":[{ "type": "string", "example": "Description Austin TX, USA" }, { "nullable": true }] },
31
31
  "time_zone": { "type": "string", "example": "Texas" },
32
32
  "language": { "type": "string", "minLength": 2, "maxLength": 2, "example": "en" },
33
33
  "manager_id": {
@@ -61,4 +61,4 @@
61
61
  }
62
62
  }
63
63
  }
64
- }
64
+ }
@@ -4,7 +4,7 @@
4
4
  "title": "SolarWinds Service Desk API",
5
5
  "description":
6
6
  "All SolarWinds Service Desk API definitions\n# General Concepts\n## Service URL\nFor US based customers, please use `https://api.samanage.com`\n\n For European based customers, please use `https://apieu.samanage.com`\n\n## Formats\n\nYou can use XML or JSON format for your request.\n\nXML Example: `curl -H \"X-Samanage-Authorization: Bearer TOKEN\" -H \"Accept: application/vnd.samanage.v2.1+xml\" -X GET https://api.samanage.com/incidents.xml`\n\nJSON Example: `curl -H \"X-Samanage-Authorization: Bearer TOKEN\" -H \"Accept: application/vnd.samanage.v2.1+json\" -H \"Content-Type: application/json\" -X GET https://api.samanage.com/incidents.json`\n\nFor create and update, the provided data needs to be in the correct format.\n\nXML Example: `<incident> <field_to_update>content</field_to_update> </incident>`\n\nJSON Example: `{\"incident\": {\"field_to_update\": \"content\"}}`\n\nTo clear fields, use the following format:\n\nXML Example: `<incident> <field_to_update></field_to_update> </incident>`\n\nJSON Example: `{\"incident\": {\"field_to_update\": \"\"}}`\n\n## Authentication\nThe API authentication is token-based. Admins can generate a token directly from the user setup page. The token is needed by the API developer to gain access to specific items in SolarWinds accessible only via the API. When an admin re-generates their token (via the user setup page), all previously generated tokens become invalid.\n\nThe tokens are relatively long strings that resemble the following: <div style=\"word-wrap: break-word;\"> AAAZWV0YXkubmF0YW4rNUBzYW1hbmFnZS5jb20hbGciOiJIUzUxMiJ9.eyJ1c2VyX2ljIjoxMjU2OTQzLCJnZW5lcmF0ZWRfYXQiOiIyMDE3LTA2LTA3IDA5OjE3OjI5In0.j_H15qzJJr9vXGAHCThLEOQrE9GGbjMxZJOs5zAf_iqaGqxlIOAmvPpBx0td_C3r7dliAfXXIgdqhZHVoK1KTwAzd1</div>\n\nIn order to supply the API token you should pass X-Samanage-Authorization header in the following format: “Bearer API_TOKEN_STRING”.\n\nThe API call resembles the following:\n\n`curl -H \"X-Samanage-Authorization: Bearer AAAZWV0YXkubmF0YW4rNUBzYW1hbmFnZS5jb20hbGciOiJIUzUxMiJ9.eyJ1c2VyX2ljIjoxMjU2OTQzLCJnZW5lcmF0ZWRfYXQiOiIyMDE3LTA2LTA3IDA5OjE3OjI5In0.j_H15qzJJr9vXGAHCThLEOQrE9GGbjMxZJOs5zAf_iqaGqxlIOAmvPpBx0td_C3r7dliAfXXIgdqhZHVoK1KTwAzd1\" -H \"Accept: application/vnd.samanage.v2.1+json\" https://api.samanage.com/hardwares.json`\n\nIf the authentication fails, a “401 Unauthorized” message will be returned.\n## Security\nSWSD uses a secured API channel. To connect to the regional API server, use the account admin users’ token information and connect using Token-based authentication. Requests should never be transferred in plain text over the wire. Instead, use SSL version 1.2 or higher (which can be accessed using https://) to ensure that all communication with the server is encrypted and secured.\n\nTo ensure API performance and avoid denial of service, we employ API call limits based per minute as defined by the Service Desk plan of the endpoint user.\n\nPackages:\n\nProfessional Plan - 1000 calls per minute\n\nEnterprise Plan - 1500 calls per minute\n## Versioning\nClients must provide the version number they are ready to work with in the “Accept” HTTP header. A valid \"Accept\" header should specify current content type and version number. For example, “application/vnd.samanage.v2.1+xml”.\n When no “Accept” header is specified, the API will default to version 2.1.\nIf you request an API version that is no longer supported, the API will respond with an HTTP status code of “406 – Not Acceptable”.\n\nExample: \n`curl -H \"X-Samanage-Authorization: Bearer TOKEN\" -H \"Accept: application/vnd.samanage.v2.1+json\" https://api.samanage.com/hardwares.json`\n## Version History\n* 1.0: Deprecated\n* 1.1: Changed structure of custom_fields_values\n* 1.2: Changed name of “incident_type” to “category” in Catalog items and Incidents\n* 1.3: Updates to incidents or comments will not send an email or a notification to the users. To enable this feature you must add add_callbacks=true to the url.\n* 2.1: Token based authentication\n## Pagination\nEvery response with a large data set will be paginated. The response will include the pagination data as headers and links (formatted as <url>; rel=”relative”). For example:\n\nX-Per-Page: 50\n\nX-Total-Count: 3099\n\nX-Total-Pages: 62\n\nLink: `<https://api.samanage.com/incidents.xml?page=1>`; rel=\"first\",\n\n`<https://api.samanage.com/incidents.xml?page=8>`; rel=\"prev\",\n\n`<https://api.samanage.com/incidents.xml?page=10>`; rel=\"next\",\n\n`<https://api.samanage.com/incidents.xml?page=62>`; rel=\"last\"\n\nYou can request a specific page by providing a “page” parameter. For example, to request the third page of the hardware list, you can use the following command: `curl -H \"X-Samanage-Authorization: Bearer TOKEN\" https://api.samanage.com/hardwares.json?page=3`\n\nTo control the number of rows returned, provide the per_page parameter. For example, to request 100 rows with each results page, you can use the following command: `curl -H \"X-Samanage-Authorization: Bearer TOKEN\" https://api.samanage.com/hardwares.json?per_page=100`\n## API Entry Point\n All communication with the API begins with a list of available services. Although it is possible to get directly to a specific service URL, we advise you begin with the api.xml entry point. This ensures your program will run seamlessly if changes are made to the underlying URLs for services in future versions of the API.\n\n**Request**\n\nGET api.samanage.com/api.json \n`curl -H \"X-Samanage-Authorization: Bearer TOKEN\" -H \"Accept: application/json\" -X GET https://api.samanage.com/api.json`\n\n**Response**\n\n`[{\"name\":\"Computers List\",\"href\":\"https://api.samanage.com/hardwares.json\"},`\n\n`{\"name\":\"Helpdesk Incidents List\",\"href\":\"https://api.samanage.com/incidents.json\"},`\n\n`{\"name\":\"Changes List\",\"href\":\"https://api.samanage.com/changes.json\"},`\n\n`...]`\n## Short / long layout\nFor all APIs, you can specify the layout (short / long). This affects the length of the returned records, and is relevant for changes, contracts, hardwares, incidents, other assets, problems, and solutions.\n\nTo use, add the parameter to the request: “?layout=short” or “?layout=long”. If not present, the default is “short”.\n## Searching\nYou can search for records by using query parameters on top of the base URL. For example, when requesting a list of hardwares, you may want to limit them to only those with a specific IP address. This could be accomplished with a request like -\n\n GET api.samanage.com/hardwares.xml?ip_address=123.456*\n\nHere, ip_address is a query parameter that implements a filter where the IP equals 123.456.xxx.xxx.\n\nOther examples: `https://api.samanage.com/other_assets.json?asset_id=XXXXXXXX`, `https://api.samanage.com/hardwares.json?asset_tag=XXXXXXXX`\n## Date formats\nThe following date formats are allowed as input when updating date fields:\n\n* January 21, 2015\n* January 21 2015\n* Jan 21, 2015\n* Jan 21 2015\n* 21/1/2015\n* 2015/1/21\n* 21-1-2015\n* 2015-1-21\n*21.1.2015 \n* 2015.1.21\n## Custom fields\nTo set custom fields, use the following data format:\n\n XML Example:\n\n`<incident><custom_fields_values>`\n\n`<custom_fields_value><name>field name</name><value>content</value></custom_fields_value>`\n\n`</custom_fields_values></incident>`\n\nJSON Example:\n\n`{\"incident\": {\"custom_fields_values\": {\"custom_fields_value\": [{\"name\": \"field name\",\"value\": \"content\"}]}}}`<br><br><hr></hr>",
7
- "version": "0.1.7",
7
+ "version": "0.2.1",
8
8
  "x-logo": {
9
9
  "url": "https://tse4.mm.bing.net/th?id=OIP.lhiASqIhZ7Ow90BTOuu5kAHaEH&pid=Api&P=0&w=301&h=168",
10
10
  "href": "https://support.solarwinds.com"
@@ -28,6 +28,7 @@
28
28
  "/changes": { "$ref": "paths/changes/changes.json" },
29
29
  "/change_catalogs/{id}": { "$ref": "paths/change_catalogs/change_catalog_by_id.json" },
30
30
  "/change_catalogs": { "$ref": "paths/change_catalogs/change_catalogs.json" },
31
+ "/change_catalogs/{id}/change_requests": { "$ref": "paths/change_requests/request_by_id.json" },
31
32
  "/releases/{id}": { "$ref": "paths/releases/release_by_id.json" },
32
33
  "/releases": { "$ref": "paths/releases/releases.json" },
33
34
  "/solutions/{id}": { "$ref": "paths/solutions/solution_by_id.json" },
@@ -91,6 +92,7 @@
91
92
  { "name": "Problem", "description": "Problem operations" },
92
93
  { "name": "Change", "description": "Change operations" },
93
94
  { "name": "Change Catalog", "description": "Change catalog operations" },
95
+ { "name": "Change Request", "description": "Requesting a change" },
94
96
  { "name": "Release", "description": "Release operations" },
95
97
  { "name": "Solution", "description": "Solution operations" },
96
98
  { "name": "Catalog Item", "description": "Catalog Item operations" },
@@ -0,0 +1,36 @@
1
+ {
2
+ "post": {
3
+ "operationId": "createChangeRequest",
4
+ "description": "Request a Change",
5
+ "tags": ["Change Request"],
6
+ "parameters": [
7
+ { "$ref": "../../common/components.json#/components/request/parameters/token_param" },
8
+ { "$ref": "../../common/components.json#/components/request/parameters/id_param" }
9
+ ],
10
+ "requestBody": {
11
+ "description": "Change Request fields to fill",
12
+ "content": {
13
+ "application/json": {
14
+ "schema": { "$ref": "../../common/schemas/service_desk/change_request.json#/components/schemas/request" },
15
+ "example": { "$ref": "../../common/examples/change_request.json#/examples" }
16
+ },
17
+ "application/xml": { "schema": { "$ref": "../../common/schemas/service_desk/change_request.json#/components/schemas/request" } }
18
+ }
19
+ },
20
+ "responses": {
21
+ "200": {
22
+ "description": "Object created and returned correctly",
23
+ "content": {
24
+ "application/json": {
25
+ "schema": { "$ref": "../../common/schemas/service_desk/change.json#/components/schemas/response" },
26
+ "example": { "$ref": "../../common/examples/change.json#/examples/response/json" }
27
+ },
28
+ "application/xml": { "schema": { "$ref": "../../common/schemas/service_desk/change.json#/components/schemas/response" } }
29
+ }
30
+ },
31
+ "400": { "description": "Bad request" },
32
+ "404": { "description": "Not found" },
33
+ "500": { "description": "Server error" }
34
+ }
35
+ }
36
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solarwinds-itsm-api-definitions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Goldstein
@@ -10,20 +10,25 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-05-11 00:00:00.000000000 Z
13
+ date: 2021-12-21 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: SolarWinds ITSM OpenAPI definitions gem
16
16
  email:
17
- - jonsgold@gmail.com
17
+ - jonathan.goldstein@solarwinds.com
18
18
  - sagi.gold@solarwinds.com
19
19
  executables: []
20
20
  extensions: []
21
21
  extra_rdoc_files: []
22
22
  files:
23
+ - Redocly/development.html
24
+ - Redocly/index.html
25
+ - Redocly/redoc/favicon.ico
26
+ - Redocly/redoc/schema/resolved_schema.json
23
27
  - lib/definitions/common/components.json
24
28
  - lib/definitions/common/examples/catalog_item.json
25
29
  - lib/definitions/common/examples/change.json
26
30
  - lib/definitions/common/examples/change_catalog.json
31
+ - lib/definitions/common/examples/change_request.json
27
32
  - lib/definitions/common/examples/configuration_item.json
28
33
  - lib/definitions/common/examples/hardware.json
29
34
  - lib/definitions/common/examples/incident.json
@@ -48,6 +53,7 @@ files:
48
53
  - lib/definitions/common/schemas/service_desk/catalog_item.json
49
54
  - lib/definitions/common/schemas/service_desk/change.json
50
55
  - lib/definitions/common/schemas/service_desk/change_catalog.json
56
+ - lib/definitions/common/schemas/service_desk/change_request.json
51
57
  - lib/definitions/common/schemas/service_desk/comment.json
52
58
  - lib/definitions/common/schemas/service_desk/configuration_item.json
53
59
  - lib/definitions/common/schemas/service_desk/incident.json
@@ -73,6 +79,7 @@ files:
73
79
  - lib/definitions/paths/categories/category_by_id.json
74
80
  - lib/definitions/paths/change_catalogs/change_catalog_by_id.json
75
81
  - lib/definitions/paths/change_catalogs/change_catalogs.json
82
+ - lib/definitions/paths/change_requests/request_by_id.json
76
83
  - lib/definitions/paths/changes/change_by_id.json
77
84
  - lib/definitions/paths/changes/changes.json
78
85
  - lib/definitions/paths/comments/comment_by_id.json
@@ -149,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
156
  - !ruby/object:Gem::Version
150
157
  version: '0'
151
158
  requirements: []
152
- rubygems_version: 3.0.8
159
+ rubygems_version: 3.1.6
153
160
  signing_key:
154
161
  specification_version: 4
155
162
  summary: OpenAPI definitions