From 4a81c2244f7e0a1c29719d6549e3e83eef41bda4 Mon Sep 17 00:00:00 2001 From: Vincent Mejan <91658566+VincentMejan@users.noreply.github.com> Date: Fri, 15 Dec 2023 06:50:27 +0100 Subject: [PATCH] Cloud Commander version 1.0.131223 (#3138) * Cloud Commander version 1.0.131223 * Fix review comments --- .../apiDefinition.swagger.json | 6000 +++++++++++++++++ .../N-able Cloud Commander/apiProperties.json | 49 + .../N-able Cloud Commander/readme.md | 60 + 3 files changed, 6109 insertions(+) create mode 100644 certified-connectors/N-able Cloud Commander/apiDefinition.swagger.json create mode 100644 certified-connectors/N-able Cloud Commander/apiProperties.json create mode 100644 certified-connectors/N-able Cloud Commander/readme.md diff --git a/certified-connectors/N-able Cloud Commander/apiDefinition.swagger.json b/certified-connectors/N-able Cloud Commander/apiDefinition.swagger.json new file mode 100644 index 0000000000..9788a5c539 --- /dev/null +++ b/certified-connectors/N-able Cloud Commander/apiDefinition.swagger.json @@ -0,0 +1,6000 @@ +{ + "swagger": "2.0", + "info": { + "title": "N-able Cloud Commander", + "description": "Cloud Commander lets you automate common tasks across Microsoft 365 and Azure without switching consoles or customers.", + "contact": { + "name": "Cloud Commander Support", + "url": "https://documentation.cloudcommander.management/kb/en", + "email": "technicalsupport@n-able.com" + }, + "version": "1.0.131223" + }, + "host": "apis.cm.prd.cloudapp.n-able.com", + "basePath": "/", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/directory/v1/organizations": { + "get": { + "responses": { + "200": { + "description": "The request succeeded.", + "schema": { + "type": "object", + "properties": { + "@odata.count": { + "type": "integer", + "format": "int32", + "description": "Organization count.", + "title": "Count" + }, + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the organization.", + "title": "Name" + }, + "microsoftTenantId": { + "type": "string", + "description": "Unique Microsoft user identifier.", + "title": "Microsoft tenant Id" + }, + "type": { + "type": "string", + "description": "Microsoft CSP partner type.", + "title": "Microsoft CSP Type" + }, + "productIdentifier": { + "type": "string", + "description": "N-able product identifier.", + "title": "Product Id" + }, + "productIdentifierType": { + "type": "string", + "description": "N-able product identifier type.", + "title": "Product Id type" + }, + "hybridADEnabled": { + "type": "boolean", + "description": "Hybrid identity enabled.", + "title": "Hybrid identity enabled", + "enum": [ + true, + false + ] + }, + "createdOn": { + "type": "string", + "description": "Created on.", + "title": "Created on" + }, + "modifiedOn": { + "type": "string", + "description": "Modified on.", + "title": "Modified on" + }, + "id": { + "type": "string", + "description": "Unique identifier of the organization.", + "title": "Id" + } + } + }, + "description": "value" + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "List organizations", + "parameters": [ + { + "name": "provider", + "in": "query", + "required": true, + "type": "string", + "default": "spinpanel.platform", + "x-ms-visibility": "internal" + } + ], + "operationId": "GetOrganizations", + "description": "List all organizations you are authorized to view." + } + }, + "/directory/v1/users": { + "get": { + "responses": { + "200": { + "description": "The request succeeded.", + "schema": { + "type": "object", + "properties": { + "@odata.count": { + "type": "integer", + "format": "int32", + "description": "User count.", + "title": "Total count" + }, + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "organizationId": { + "type": "string", + "description": "Unique identifier of the organization the user is a member of.", + "title": "Organization Id" + }, + "microsoftObjectIdentifier": { + "type": "string", + "description": "Unique Microsoft user identifier.", + "title": "Microsoft Object Identifier" + }, + "upn": { + "type": "string", + "description": "User Principal Name.", + "title": "UPN" + }, + "firstName": { + "type": "string", + "description": "First name of the user.", + "title": "First Name" + }, + "lastName": { + "type": "string", + "description": "Last name of the user.", + "title": "Last name" + }, + "displayName": { + "type": "string", + "description": "Display name of the user.", + "title": "Display name" + }, + "language": { + "type": "string", + "description": "Language of the user.", + "title": "Language" + }, + "usageLocation": { + "type": "string", + "description": "Usage location.", + "title": "Usage location" + }, + "isHybridUser": { + "type": "boolean", + "description": "Set if user is synchronized from on premises.", + "title": "Hybrid user", + "enum": [ + true, + false + ] + }, + "id": { + "type": "string", + "description": "Unique identifier of the user.", + "title": "Id" + }, + "createdOn": { + "type": "string", + "description": "User creation timestamp.", + "title": "Created on", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "description": "User modification timestamp.", + "title": "Modified on", + "format": "date-time" + } + } + }, + "description": "value" + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "$filter", + "in": "query", + "required": true, + "type": "string", + "x-ms-visibility": "important", + "description": "Filter on users in an organization. Use: organizationId in ('{organizationId}').", + "x-ms-summary": "Filter users." + }, + { + "name": "$top", + "in": "query", + "required": true, + "type": "integer", + "x-ms-visibility": "important", + "description": "Max results", + "x-ms-summary": "Maximum results." + }, + { + "name": "$skip", + "in": "query", + "required": false, + "type": "integer", + "x-ms-visibility": "important", + "description": "Skip results", + "x-ms-summary": "Results to skip.", + "enum": [ + 0, + 5, + 15, + 30, + 50, + 100 + ] + }, + { + "name": "$count", + "in": "query", + "required": true, + "type": "boolean", + "x-ms-visibility": "internal", + "description": "Count", + "x-ms-summary": "Count of items returned.", + "default": true + }, + { + "name": "provider", + "in": "query", + "required": true, + "type": "string", + "default": "spinpanel.platform", + "x-ms-visibility": "internal" + } + ], + "summary": "List users", + "description": "Retrieve a list of users.", + "operationId": "GetUsers" + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/users": { + "post": { + "responses": { + "201": { + "description": "Created.", + "schema": { + "type": "object", + "properties": { + "@odata.context": { + "type": "string", + "description": "OData context.", + "title": "OData context" + }, + "id": { + "type": "string", + "description": "Cloud Commander Identifier.", + "title": "Id" + }, + "businessPhones": { + "type": "array", + "items": { + "description": "The telephone numbers for the user. NOTE: Although this is a string collection, only one number can be set for this property.", + "title": "Business phones", + "type": "string" + }, + "description": "Business phones of the user." + }, + "displayName": { + "type": "string", + "description": "Display name of the user.", + "title": "Display name" + }, + "givenName": { + "type": "string", + "description": "Given name.", + "title": "Given name" + }, + "jobTitle": { + "type": "string", + "description": "Job title of the user.", + "title": "Job title" + }, + "mail": { + "type": "string", + "description": "E-mail address of the user.", + "title": "Mail" + }, + "mobilePhone": { + "type": "string", + "description": "Mobile phonenumber of the user.", + "title": "Mobile phone" + }, + "officeLocation": { + "type": "string", + "description": "Office location of the user.", + "title": "Office location" + }, + "preferredLanguage": { + "type": "string", + "description": "Preferred language as configured in Azure AD.", + "title": "Preferred language" + }, + "surname": { + "type": "string", + "description": "Surname of the user.", + "title": "Surname" + }, + "userPrincipalName": { + "type": "string", + "description": "User principal name of the user.", + "title": "User Principal Name" + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Create user", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "accountEnabled": { + "type": "boolean", + "description": "Account enabled true or false.", + "title": "Account enabled", + "enum": [ + true, + false + ] + }, + "displayName": { + "type": "string", + "description": "Display name of the user.", + "title": "Display name" + }, + "mailNickname": { + "type": "string", + "description": "Mail nickname of the user.", + "title": "Mail nickname" + }, + "userPrincipalName": { + "type": "string", + "description": "User principal name of the user.", + "title": "User principal name" + }, + "passwordProfile": { + "type": "object", + "properties": { + "forceChangePasswordNextSignIn": { + "type": "boolean", + "description": "Force the user to change the password at next sign in.", + "title": "Force change password next signin", + "enum": [ + true, + false + ] + }, + "password": { + "type": "string", + "description": "New password for the user.", + "title": "Password" + } + }, + "description": "Password profile." + } + } + } + } + ], + "operationId": "CreateUser", + "description": "The request body contains the user to create. At a minimum, you must specify the required properties for the user. You can optionally specify any other writable properties." + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/users/{microsoftObjectId}": { + "get": { + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "accountEnabled": { + "type": "boolean", + "description": "Account enabled true or false.", + "title": "Account enabled", + "enum": [ + true, + false + ] + }, + "employeeId": { + "type": "string", + "description": "Employee identifier of the user.", + "title": "Employee id" + }, + "displayName": { + "type": "string", + "description": "Display name of the user.", + "title": "Display name" + }, + "givenName": { + "type": "string", + "description": "Given name of the user.", + "title": "Given name" + }, + "surname": { + "type": "string", + "description": "Surname of the user.", + "title": "Surname" + }, + "userPrincipalName": { + "type": "string", + "description": "User principal name of the user.", + "title": "User principal name" + }, + "jobTitle": { + "type": "string", + "description": "Job title of the user.", + "title": "Job title" + }, + "department": { + "type": "string", + "description": "Department of the user.", + "title": "Department" + }, + "companyName": { + "type": "string", + "description": "Company name of the user.", + "title": "Company name" + }, + "usageLocation": { + "type": "string", + "description": "Usage location of the user.", + "title": "Usagelocation" + }, + "streetAddress": { + "type": "string", + "description": "Street address of the user.", + "title": "Street address" + }, + "city": { + "type": "string", + "description": "City of the user.", + "title": "City" + }, + "state": { + "type": "string", + "description": "State of the user.", + "title": "State" + }, + "postalCode": { + "type": "string", + "description": "Postal code of the user.", + "title": "Postal code" + }, + "country": { + "type": "string", + "description": "Country of the user.", + "title": "Country" + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Get user details", + "description": "Get a user by Microsoft object identifier.", + "operationId": "GetGraphUser", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "microsoftObjectId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft object identifier of the user.", + "x-ms-summary": "Microsoft object id of the user.", + "x-ms-url-encoding": "single" + } + ] + }, + "delete": { + "responses": { + "204": { + "description": "No Content." + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Delete user", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "microsoftObjectId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft object identifier of the user.", + "x-ms-summary": "Microsoft object id of the user.", + "x-ms-url-encoding": "single" + } + ], + "operationId": "DeleteGraphUser", + "description": "Delete a user. When deleted, user resources are moved to a temporary container and can be restored within 30 days. After that time, they are permanently deleted." + }, + "patch": { + "responses": { + "204": { + "description": "No Content." + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Update user", + "description": "Update the user.", + "operationId": "PatchGraphUser", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "microsoftObjectId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft object identifier of the user.", + "x-ms-summary": "Microsoft object id of the user.", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "displayName": { + "type": "string", + "description": "Display name of the user.", + "title": "Display name" + }, + "givenName": { + "type": "string", + "description": "Given name of the user.", + "title": "Given name" + }, + "jobTitle": { + "type": "string", + "description": "Job title of the user.", + "title": "Job title" + }, + "mail": { + "type": "string", + "description": "Mail nickname of the user.", + "title": "Mail nickname" + }, + "mobilePhone": { + "type": "string", + "description": "Mobile phone number of the user.", + "title": "Mobile Phone" + }, + "officeLocation": { + "type": "string", + "description": "Office location of the user.", + "title": "Office location" + }, + "preferredLanguage": { + "type": "string", + "description": "Preferred language of the user.", + "title": "Preferred language" + }, + "surname": { + "type": "string", + "description": "Surname of the user.", + "title": "Surname" + }, + "userPrincipalName": { + "type": "string", + "description": "User principal name of the user.", + "title": "User principal name" + }, + "accountEnabled": { + "type": "boolean", + "description": "Account enabled true or false.", + "title": "Account enabled", + "enum": [ + true, + false + ] + }, + "passwordProfile": { + "type": "object", + "properties": { + "forceChangePasswordNextSignIn": { + "type": "boolean", + "description": "Force the user to change the password at next sign in.", + "title": "Force change password next signin", + "enum": [ + true, + false + ] + }, + "password": { + "type": "string", + "description": "New password for the user.", + "title": "Password" + } + }, + "description": "passwordProfile" + } + } + } + } + ] + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/users/{microsoftObjectId}/licenseDetails": { + "get": { + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier of the user's license.", + "title": "Id" + }, + "skuId": { + "type": "string", + "description": "Sku identifier of the Microsoft license.", + "title": "Sku id" + }, + "skuPartNumber": { + "type": "string", + "description": "Sku partnumber of the Microsoft license.", + "title": "Sku partnumber" + }, + "servicePlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "servicePlanId": { + "type": "string", + "description": "Serviceplan identifier." + }, + "servicePlanName": { + "type": "string", + "description": "Serviceplan name." + }, + "provisioningStatus": { + "type": "string", + "description": "Provisioning status." + }, + "appliesTo": { + "type": "string", + "description": "Applies to." + } + } + }, + "description": "Service plans." + } + } + }, + "description": "Value." + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "microsoftObjectId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft object identifier of the user.", + "x-ms-summary": "Microsoft object id of the user.", + "x-ms-url-encoding": "single" + } + ], + "summary": "Get user license details", + "description": "Retrieve a list of license details objects for enterprise users.", + "operationId": "GetUserLicenseDetails" + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/subscribedSkus": { + "get": { + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "capabilityStatus": { + "type": "string", + "description": "Capability status of the Microsoft sku.", + "title": "Capability status" + }, + "consumedUnits": { + "type": "integer", + "format": "int32", + "description": "Consumed units for this sku.", + "title": "Consumed units" + }, + "id": { + "type": "string", + "description": "Identifier of the subscribed sku object.", + "title": "Id" + }, + "skuId": { + "type": "string", + "description": "Sku identifier of the Microsoft license.", + "title": "Sku id" + }, + "skuPartNumber": { + "type": "string", + "description": "Sku partnumber of the Microsoft license.", + "title": "Sku partnumber" + }, + "appliesTo": { + "type": "string", + "description": "Applies to user or organization.", + "title": "Applies to" + }, + "prepaidUnits": { + "type": "object", + "properties": { + "enabled": { + "type": "integer", + "format": "int32", + "description": "Enabled subscribed skus.", + "title": "Enabled" + }, + "suspended": { + "type": "integer", + "format": "int32", + "description": "Suspended subscribed skus.", + "title": "Suspended" + }, + "warning": { + "type": "integer", + "format": "int32", + "description": "Subscribed skus with warning.", + "title": "Warning" + } + }, + "description": "Prepaid units." + }, + "servicePlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "servicePlanId": { + "type": "string", + "description": "Serviceplan identifier." + }, + "servicePlanName": { + "type": "string", + "description": "Serviceplan name." + }, + "provisioningStatus": { + "type": "string", + "description": "Provisioning status." + }, + "appliesTo": { + "type": "string", + "description": "Applies to." + } + } + }, + "description": "Service plans." + } + } + }, + "description": "Value." + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Get organization subscribed SKUs", + "description": "Get the list of commercial subscriptions that an organization has acquired.", + "operationId": "GetsubscribedSkus", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + } + ] + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/users/{microsoftObjectId}/assignlicense": { + "post": { + "responses": { + "201": { + "description": "Created.", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier of the license object.", + "title": "Id" + }, + "skuId": { + "type": "string", + "description": "Microsoft sku identifier.", + "title": "Sku id" + }, + "skuPartNumber": { + "type": "string", + "description": "Microsoft Sku partnumber.", + "title": "Sku partnumber" + }, + "servicePlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "servicePlanId": { + "type": "string", + "description": "Serviceplan identifier." + }, + "servicePlanName": { + "type": "string", + "description": "Serviceplan name." + }, + "provisioningStatus": { + "type": "string", + "description": "Provisioning status." + }, + "appliesTo": { + "type": "string", + "description": "Applies to." + } + } + }, + "description": "Service plans." + } + } + }, + "description": "Value." + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "microsoftObjectId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft object identifier of the user.", + "x-ms-summary": "Microsoft object id of the user.", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "addLicenses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabledPlans": { + "type": "array", + "items": { + "type": "string" + }, + "description": "disabledPlans" + }, + "skuId": { + "type": "string", + "description": "A collection of assignedLicense objects that specify the licenses to add.", + "title": "addLicenses" + } + }, + "required": [ + "skuId" + ] + }, + "description": "addLicenses" + }, + "removeLicenses": { + "type": "array", + "items": { + "type": "string", + "description": "A collection of assignedLicense objects that specify the licenses to remove.", + "title": "removeLicenses" + }, + "description": "removeLicenses" + } + }, + "required": [ + "addLicenses" + ] + } + } + ], + "description": "Add or remove licenses for the user. You can also enable and disable specific plans associated with a license.", + "operationId": "PostUserLicense", + "summary": "Assign a license to a user" + } + }, + "/directory/v1/usergroups": { + "get": { + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "@odata.count": { + "type": "integer", + "format": "int32", + "description": "OData count.", + "title": "Count" + }, + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "organizationId": { + "type": "string", + "description": "Cloud Commander organization identifier.", + "title": "Organization Id" + }, + "name": { + "type": "string", + "description": "Name of the group.", + "title": "Name" + }, + "description": { + "type": "string", + "description": "Description for the group.", + "title": "Description" + }, + "id": { + "type": "string", + "description": "Identifier of the group.", + "title": "Id" + }, + "createdOn": { + "type": "string", + "description": "Created on.", + "title": "Created on" + }, + "modifiedOn": { + "type": "string", + "description": "Modified on.", + "title": "Modified on" + } + } + }, + "description": "Value." + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "$filter", + "in": "query", + "required": true, + "type": "string", + "x-ms-visibility": "important", + "description": "Filter on groups in an organization. Use: organizationId in ('{organizationId}').", + "x-ms-summary": "Filter groups." + }, + { + "name": "provider", + "in": "query", + "required": true, + "type": "string", + "default": "spinpanel.groups", + "x-ms-visibility": "internal" + } + ], + "summary": "Get Cloud Commander groups", + "description": "Get a list of Cloud Commander groups of all organizations you are authorized to view.", + "operationId": "GetGroups" + } + }, + "/directory/v1/organizations/{organizationId}/usergroups/{userGroupId}/members": { + "get": { + "responses": { + "200": { + "description": "The request succeeded.", + "schema": { + "type": "object", + "properties": { + "@odata.count": { + "type": "integer", + "format": "int32", + "description": "OData count.", + "title": "Count" + }, + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name.", + "title": "Name" + }, + "upn": { + "type": "string", + "description": "User principal name of the group.", + "title": "User principal name" + }, + "id": { + "type": "string", + "description": "Identifier of the group member object.", + "title": "Id" + }, + "groupId": { + "type": "string", + "description": "Cloud Commander identifier of the group.", + "title": "Group id" + }, + "createdOn": { + "type": "string", + "description": "Created on.", + "title": "Created on" + }, + "modifiedOn": { + "type": "string", + "description": "Modified on.", + "title": "Modified on" + } + } + }, + "description": "Value." + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "userGroupId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander identifier of the group.", + "x-ms-summary": "Cloud Commander identifier of the group.", + "x-ms-url-encoding": "single" + }, + { + "name": "provider", + "in": "query", + "required": true, + "type": "string", + "default": "spinpanel.groups", + "x-ms-visibility": "internal" + } + ], + "summary": "Get a list of Cloud Commander group members", + "description": "Get a list of Cloud Commander group members of a specific group.", + "operationId": "UserGroupMembers" + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/groups": { + "get": { + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "createdDateTime": { + "type": "string", + "description": "Created on.", + "title": "Created on" + }, + "displayName": { + "type": "string", + "description": "Display name.", + "title": "Displayname" + }, + "groupTypes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Group types." + }, + "id": { + "type": "string", + "description": "Microsoft object identifier of the group.", + "title": "Id" + }, + "securityEnabled": { + "type": "boolean", + "description": "Indicates if the group is security enabled.", + "title": "Security enabled", + "enum": [ + true, + false + ] + }, + "mail": { + "type": "string", + "description": "E-mail address of the group.", + "title": "Mail" + } + } + }, + "description": "Value." + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "$select", + "in": "query", + "required": true, + "type": "string", + "default": "createdDateTime,displayName,groupTypes,id,securityEnabled", + "x-ms-visibility": "internal" + } + ], + "operationId": "GetADSecurityGroups", + "summary": "Get Microsoft Entra ID security groups", + "description": "Get a list of Microsoft Entra ID security groups of all organizations you are authorized to view." + }, + "post": { + "responses": { + "201": { + "description": "Created.", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier of the group.", + "title": "Id" + }, + "deletedDateTime": { + "type": "string", + "description": "Deleted on.", + "title": "Deleted on" + }, + "classification": { + "type": "string", + "description": "Classification of the group.", + "title": "Classification" + }, + "createdDateTime": { + "type": "string", + "description": "Created on.", + "title": "Created on" + }, + "creationOptions": { + "type": "array", + "items": { + "description": "Created options of the group.", + "title": "Created options", + "type": "string" + }, + "description": "Creation options." + }, + "description": { + "type": "string", + "description": "Description.", + "title": "Description" + }, + "displayName": { + "type": "string", + "description": "Display name.", + "title": "Display name" + }, + "groupTypes": { + "type": "array", + "items": { + "type": "string", + "description": "Group types for the group.", + "title": "Group types" + }, + "description": "groupTypes" + }, + "mail": { + "type": "string", + "description": "E-mail address of the group.", + "title": "Mail" + }, + "mailEnabled": { + "type": "boolean", + "description": "Indicates the group is mail enabled.", + "title": "Mail enabled", + "enum": [ + true, + false + ] + }, + "mailNickname": { + "type": "string", + "description": "Mail nickname of the group.", + "title": "Mail nickname" + }, + "onPremisesLastSyncDateTime": { + "type": "string", + "description": "Indicates when the group was synced to on premise.", + "title": "On premise last sync" + }, + "onPremisesSecurityIdentifier": { + "type": "string", + "description": "On premise security identifier of the group.", + "title": "On premise security identifier" + }, + "onPremisesSyncEnabled": { + "type": "string", + "description": "Indicates if on premise sync is enabled.", + "title": "On premise sync enabled" + }, + "preferredDataLocation": { + "type": "string", + "description": "Preferred data location of the group.", + "title": "Preferred data location" + }, + "proxyAddresses": { + "type": "array", + "items": { + "type": "string", + "description": "Proxy addresses of the group.", + "title": "Proxy addresses" + }, + "description": "Proxy addresses." + }, + "renewedDateTime": { + "type": "string", + "description": "Renewed date time of the group.", + "title": "Renewed" + }, + "resourceBehaviorOptions": { + "type": "array", + "items": { + "description": "Resource behavior options of the group.", + "title": "Resource behaviour options", + "type": "string" + }, + "description": "Resource behavior options." + }, + "resourceProvisioningOptions": { + "type": "array", + "items": { + "description": "Resource provisioning options of the group.", + "title": "Resource provisioning options", + "type": "string" + }, + "description": "Resource provisioning options." + }, + "securityEnabled": { + "type": "boolean", + "description": "Indicates if the group is security enabled.", + "title": "Security enabled", + "enum": [ + true, + false + ] + }, + "visibility": { + "type": "string", + "description": "Visibility of the group.", + "title": "Visibility" + }, + "onPremisesProvisioningErrors": { + "type": "array", + "items": { + "description": "On premise provisioning errors of the group.", + "title": "On premise provisioning errors", + "type": "string" + }, + "description": "On premise provisioning errors." + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Create Microsoft Entra ID group", + "operationId": "PostGraphGroup", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Description of the group.", + "title": "Description" + }, + "displayName": { + "type": "string", + "description": "Display name of the group.", + "title": "Display name" + }, + "groupTypes": { + "type": "array", + "items": { + "type": "string", + "description": "Group types for the group.", + "title": "Group types" + }, + "description": "Group types." + }, + "mailEnabled": { + "type": "boolean", + "description": "Indicates if the group is mail enabled.", + "title": "Mail enabled", + "enum": [ + true, + false + ] + }, + "mailNickname": { + "type": "string", + "description": "Mail nickname of the group.", + "title": "Mail nickname" + }, + "securityEnabled": { + "type": "boolean", + "description": "Indicates if the group is security enabled.", + "title": "Security enabled", + "enum": [ + true, + false + ] + } + } + } + } + ], + "description": "Create Microsoft Entra ID group." + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/domains": { + "get": { + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "authenticationType": { + "type": "string", + "description": "Authentication type of the domain.", + "title": "Authentication type" + }, + "availabilityStatus": { + "type": "string", + "description": "Availability status of the domain.", + "title": "Availability status" + }, + "id": { + "type": "string", + "description": "Identifier of the domain.", + "title": "Id" + }, + "isAdminManaged": { + "type": "boolean", + "description": "Indicates if the domain is admin managed.", + "title": "Admin managed", + "enum": [ + true, + false + ] + }, + "isDefault": { + "type": "boolean", + "description": "Indicates if this is the default domain.", + "title": "Default", + "enum": [ + true, + false + ] + }, + "isInitial": { + "type": "boolean", + "description": "Indicates if this is the initial domain.", + "title": "Initial", + "enum": [ + true, + false + ] + }, + "isRoot": { + "type": "boolean", + "description": "Indicates if this is the root domain.", + "title": "Root", + "enum": [ + true, + false + ] + }, + "isVerified": { + "type": "boolean", + "description": "Indicates if the domain is verified.", + "title": "Verified", + "enum": [ + true, + false + ] + }, + "supportedServices": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Supported services." + }, + "passwordValidityPeriodInDays": { + "type": "integer", + "format": "int32", + "description": "Indicates the password validity in days.", + "title": "Password validity" + }, + "passwordNotificationWindowInDays": { + "type": "integer", + "format": "int32", + "description": "Indicates the password notification window in days.", + "title": "Password notification windows" + }, + "state": { + "type": "string", + "description": "State of the domain.", + "title": "State" + } + } + }, + "description": "Value." + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + } + ], + "operationId": "GetGraphDomains", + "description": "Retrieve a list of domain objects.", + "summary": "List organization domains" + } + }, + "/directory/v1/organizations/{organizationId}/usergroups/{userGroupId}": { + "delete": { + "responses": { + "204": { + "description": "Cloud Commander usergroup removed." + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Delete Cloud Commander group", + "description": "Delete a Cloud Commander group.", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "userGroupId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander identifier for the user group.", + "x-ms-summary": "Cloud Commander identifier for the user group.", + "x-ms-url-encoding": "single" + } + ], + "operationId": "DeleteUserGroup" + } + }, + "/directory/v1/organizations/{organizationId}/usergroups/{userGroupId}/members/{userId}": { + "delete": { + "responses": { + "204": { + "description": "Member removed from group." + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "userGroupId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander user group identifier.", + "x-ms-summary": "Cloud Commander user group id.", + "x-ms-url-encoding": "single" + }, + { + "name": "userId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander user identifier.", + "x-ms-summary": "Cloud Commander user id.", + "x-ms-url-encoding": "single" + } + ], + "summary": "Remove a member from a Cloud Commander group", + "description": "Remove a member to a Cloud Commander group.", + "operationId": "DeleteUserGroupMember" + }, + "post": { + "responses": { + "204": { + "description": "Member added to group." + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "userGroupId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander user group identifier.", + "x-ms-summary": "Cloud Commander user group id.", + "x-ms-url-encoding": "single" + }, + { + "name": "userId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander user identifier.", + "x-ms-summary": "Cloud Commander user id.", + "x-ms-url-encoding": "single" + } + ], + "description": "Add a member to a Cloud Commander group, the member should belong to the same organization as the group.", + "summary": "Add a member to a Cloud Commander group", + "operationId": "PostUserGroupMember" + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/groups/{microsoftObjectId}/members/$ref": { + "post": { + "responses": { + "201": { + "description": "Created." + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "microsoftObjectId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft object identifier of the group.", + "x-ms-summary": "Microsoft object id of the group.", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "@odata.id": { + "type": "string", + "description": "URI of the directory, user, group, or organizational contact object to be added.", + "title": "Member" + } + }, + "required": [ + "@odata.id" + ] + } + } + ], + "summary": "Add a member to a Microsoft Entra ID group", + "description": "Add a member to a Microsoft 365 group or a security group through the members navigation property.", + "operationId": "AddGraphGroupMember" + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/groups/{groupMicrosoftObjectId}/members/{userMicrosoftObjectId}/$ref": { + "delete": { + "responses": { + "204": { + "description": "No content." + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Remove member from a Microsoft Entra ID group", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "groupMicrosoftObjectId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft object identifier of the group.", + "x-ms-summary": "Microsoft object id of the group.", + "x-ms-url-encoding": "single" + }, + { + "name": "userMicrosoftObjectId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft object identifier of the user.", + "x-ms-summary": "Microsoft object id of the user.", + "x-ms-url-encoding": "single" + } + ], + "description": "Remove a member from a group via the members navigation property.", + "operationId": "RemoveGraphGroupMember" + } + }, + "/partnercenter/v1/partners/{partnerId}/organizations/{customerId}/v1.0/customers/{tenantId}/subscriptions": { + "get": { + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "totalCount": { + "type": "integer", + "format": "int32", + "description": "Total count of the subscription object.", + "title": "Total count" + }, + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier of the subscription.", + "title": "Id" + }, + "entitlementId": { + "type": "string", + "description": "Entitlement identifier of the subscription.", + "title": "Entitlement id" + }, + "friendlyName": { + "type": "string", + "description": "Friendly name of the subscription.", + "title": "Friendly name" + }, + "quantity": { + "type": "integer", + "format": "int32", + "description": "Quantity of the subscription.", + "title": "Quantity" + }, + "unitType": { + "type": "string", + "description": "Unit type of the subscription.", + "title": "Unit type" + }, + "creationDate": { + "type": "string", + "description": "Created on date of the subscription.", + "title": "Created on" + }, + "effectiveStartDate": { + "type": "string", + "description": "Effective start date of the subscription.", + "title": "Effective start date" + }, + "commitmentEndDate": { + "type": "string", + "description": "Commitment end date of the subscription.", + "title": "Commitment end date" + }, + "status": { + "type": "string", + "description": "Status of the subscription.", + "title": "Status" + }, + "autoRenewEnabled": { + "type": "boolean", + "description": "Indicates if auto renew is enabled for the subscription.", + "title": "Auto renew", + "enum": [ + true, + false + ] + }, + "billingType": { + "type": "string", + "description": "Billing type of the subscription.", + "title": "Billing type" + }, + "contractType": { + "type": "string", + "description": "Contract type of the subscription.", + "title": "Contract type" + }, + "links": { + "type": "object", + "properties": { + "offer": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "Uri of the subscription.", + "title": "Uri" + }, + "method": { + "type": "string", + "description": "Method of the subscription.", + "title": "Method" + }, + "headers": { + "type": "array", + "items": {}, + "description": "Headers." + } + }, + "description": "Offer." + }, + "self": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "Uri of the subscription.", + "title": "Uri" + }, + "method": { + "type": "string", + "description": "Method of the subscription.", + "title": "Method" + }, + "headers": { + "type": "array", + "items": {}, + "description": "Headers." + } + }, + "description": "Self." + } + }, + "description": "Links." + }, + "orderId": { + "type": "string", + "description": "Order identifier of the subscription.", + "title": "Order id" + }, + "attributes": { + "type": "object", + "properties": { + "etag": { + "type": "string", + "description": "Etag of the subscription.", + "title": "Etag" + }, + "objectType": { + "type": "string", + "description": "Object type of the subscription.", + "title": "Object type" + } + }, + "description": "Attributes." + } + } + }, + "description": "Items." + }, + "attributes": { + "type": "object", + "properties": { + "objectType": { + "type": "string", + "description": "Object type of the subscription.", + "title": "Object type" + } + }, + "description": "Attributes." + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Get Partner Center subscriptions", + "description": "Retrieves all subscriptions for the customer of a partner by their active directory tenant identifier.", + "parameters": [ + { + "name": "partnerId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander partner identifier.", + "x-ms-summary": "Cloud Commander partner identifier.", + "x-ms-url-encoding": "single" + }, + { + "name": "customerId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander customer identifier.", + "x-ms-summary": "Cloud Commander customer identifier.", + "x-ms-url-encoding": "single" + }, + { + "name": "tenantId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft tenant identifier of the customer.", + "x-ms-summary": "Microsoft tenant Id of the customer.", + "x-ms-url-encoding": "single" + } + ], + "operationId": "GetSubscriptions" + } + }, + "/partnercenter/v1/partners/{partnerId}/organizations/{customerId}/v1.0/customers/{tenantId}/subscriptions/{subscriptionId}": { + "patch": { + "responses": { + "200": { + "description": "Ok." + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Update Partner Center subscription quantity", + "parameters": [ + { + "name": "partnerId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander partner identifier.", + "x-ms-summary": "Cloud Commander partner id.", + "x-ms-url-encoding": "single" + }, + { + "name": "customerId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander customer identifier.", + "x-ms-summary": "Cloud Commander customer id.", + "x-ms-url-encoding": "single" + }, + { + "name": "tenantId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft tenant identifier of the customer.", + "x-ms-summary": "Microsoft tenant id of the customer.", + "x-ms-url-encoding": "single" + }, + { + "name": "subscriptionId", + "in": "path", + "required": true, + "type": "string", + "description": "Subscription identifier of the customer.", + "x-ms-summary": "Subscription id.", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "quantity": { + "type": "integer", + "format": "int32", + "description": "Quantity of the subscription.", + "title": "Quantity" + } + } + } + } + ], + "operationId": "PatchSubscriptionQuantity", + "description": "Update the quantity of a subscription." + } + }, + "/command/v1/commandblocks": { + "get": { + "description": "Retrieve a list of available Command Blocks.", + "operationId": "GetCommandBlocks", + "summary": "List Command Blocks", + "tags": [ + "Command Blocks" + ], + "parameters": [ + { + "name": "$top", + "in": "query", + "description": "Return only the first $top items.", + "type": "string", + "x-ms-summary": "$top items" + }, + { + "name": "$skip", + "in": "query", + "description": "The number of items to skip.", + "type": "string", + "x-ms-summary": "$skip items" + }, + { + "name": "$select", + "in": "query", + "description": "$select odata filter.", + "type": "string", + "x-ms-summary": "Select filter" + }, + { + "name": "$orderby", + "in": "query", + "description": "Determines what values are used to order a collection of records.", + "type": "string", + "x-ms-summary": "Order by" + }, + { + "name": "$filter", + "in": "query", + "description": "A function that must evaluate to true for a record to be returned.", + "type": "string", + "x-ms-summary": "Filter" + }, + { + "name": "$count", + "in": "query", + "description": "Determines not to include the count of items in a collection.", + "type": "string", + "x-ms-summary": "Count" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "@odata.context": { + "type": "string", + "description": "OData context.", + "title": "OData context" + }, + "@odata.count": { + "type": "integer", + "format": "int32", + "description": "OData count.", + "title": "OData count" + }, + "@odata.nextLink": { + "type": "string", + "description": "OData next link.", + "title": "OData next link" + }, + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier.", + "title": "Id" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "type": { + "type": "string", + "description": "Type.", + "title": "Type" + }, + "version": { + "type": "integer", + "format": "int32", + "description": "Version.", + "title": "Version" + }, + "categoryId": { + "type": "string", + "description": "Category Identifier.", + "title": "Category id" + }, + "requiredReadAction": { + "type": "string", + "description": "Required read action.", + "title": "Required read action" + }, + "requiredWriteAction": { + "type": "string", + "description": "Required write action.", + "title": "Required write action" + }, + "requiredProvider": { + "type": "string", + "description": "Required provider.", + "title": "Required provider" + }, + "menuCategory": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier of the menu category.", + "title": "Menu category id" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + } + }, + "description": "Menu category." + }, + "parentCategory": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier of the parent category.", + "title": "Parent category id" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + } + }, + "description": "Parent category." + }, + "category": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id of the category.", + "title": "Id" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical identifier.", + "title": "Technical identifier" + } + }, + "description": "Category." + } + } + }, + "description": "Value." + } + } + }, + "examples": { + "application/json": { + "@odata.context": "string", + "@odata.count": 0, + "@odata.nextLink": "string", + "value": [ + { + "id": "string", + "technicalIdentifier": "string", + "type": "User", + "version": 3, + "categoryId": "GUID value", + "requiredReadAction": "command.xyz.read", + "requiredWriteAction": "command.xyz.write", + "requiredProvider": "command.xyz", + "menuCategory": { + "id": "GUID value", + "technicalIdentifier": "Chats" + }, + "parentCategory": { + "id": "GUID value", + "technicalIdentifier": "Chats" + }, + "category": { + "id": "GUID value", + "technicalIdentifier": "Chats" + } + } + ] + } + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request Id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/commandblocks/jobs": { + "get": { + "description": "Get Command Block jobs for Command Blocks you're authorized to view.", + "operationId": "GetCommandBlockJobs", + "summary": "Get Command Block jobs for all authorized organizations", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "$top", + "in": "query", + "description": "Return only the first $top items.", + "type": "string", + "x-ms-summary": "$top items" + }, + { + "name": "$skip", + "in": "query", + "description": "The number of items to skip.", + "type": "string", + "x-ms-summary": "$skip items" + }, + { + "name": "$select", + "in": "query", + "description": "$select odata filter.", + "type": "string", + "x-ms-summary": "Select filter" + }, + { + "name": "$orderby", + "in": "query", + "description": "Determines what values are used to order a collection of records.", + "type": "string", + "x-ms-summary": "Order by" + }, + { + "name": "$filter", + "in": "query", + "description": "A function that must evaluate to true for a record to be returned.", + "type": "string", + "x-ms-summary": "Filter" + }, + { + "name": "$count", + "in": "query", + "description": "Determines if the count of items should be included in a collection.", + "type": "string", + "x-ms-summary": "Count" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "@odata.context": { + "type": "string", + "description": "OData context.", + "title": "OData context" + }, + "@odata.count": { + "type": "integer", + "format": "int32", + "description": "OData count.", + "title": "OData count" + }, + "@odata.nextLink": { + "type": "string", + "description": "OData next link", + "title": "OData next link" + }, + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier.", + "title": "Id" + }, + "commandBlockId": { + "type": "string", + "description": "Command Block identifier.", + "title": "Command Block id" + }, + "commandSetName": { + "type": "string", + "description": "Command Set name.", + "title": "Command Set name" + }, + "commandSetId": { + "type": "string", + "description": "Command Set identifier", + "title": "Command Set id" + }, + "commandSetBlockId": { + "type": "string", + "description": "Command Set Block identifier.", + "title": "Command Set Block id" + }, + "userId": { + "type": "string", + "description": "User identifier.", + "title": "User id" + }, + "userUpn": { + "type": "string", + "description": "User principal name.", + "title": "User principal name" + }, + "groupId": { + "type": "string", + "description": "Group identifier.", + "title": "Group id" + }, + "groupName": { + "type": "string", + "description": "Group name.", + "title": "Group name" + }, + "organizationId": { + "type": "string", + "description": "Organization identifier.", + "title": "Organization id" + }, + "organizationName": { + "type": "string", + "description": "Organization name.", + "title": "Organization name" + }, + "actorUserUpn": { + "type": "string", + "description": "Actor user principal name.", + "title": "Actor user upn" + }, + "actorOrganizationId": { + "type": "string", + "description": "Actor organization identifier.", + "title": "Actor organization id" + }, + "actorOrganizationName": { + "type": "string", + "description": "Actor organization name.", + "title": "Actor organization name" + }, + "status": { + "type": "string", + "description": "Status.", + "title": "Status" + }, + "executedOn": { + "type": "string", + "description": "Executed on.", + "title": "Executed on" + }, + "commandBlockTechnicalIdentifier": { + "type": "string", + "description": "Command Block technical identifier.", + "title": "Command Block technical id" + }, + "commandBlockVersion": { + "type": "integer", + "format": "int32", + "description": "Command Block version.", + "title": "Command Block version" + }, + "plannedExecution": { + "type": "string", + "description": "Planned execution.", + "title": "Planned execution" + }, + "scheduleId": { + "type": "string", + "description": "Schedule identifier.", + "title": "Schedule id" + }, + "scheduleName": { + "type": "string", + "description": "Schedule name.", + "title": "Schedule name" + } + } + }, + "description": "Value." + } + } + }, + "examples": { + "application/json": { + "@odata.context": "string", + "@odata.count": 0, + "@odata.nextLink": "string", + "value": [ + { + "id": "string", + "commandBlockId": "string", + "commandSetName": "string", + "commandSetId": "string", + "commandSetBlockId": "string", + "userId": "string", + "userUpn": "string", + "groupId": "string", + "groupName": "string", + "organizationId": "string", + "organizationName": "string", + "actorUserUpn": "string", + "actorOrganizationId": "string", + "actorOrganizationName": "string", + "status": "Pending", + "executedOn": "string", + "commandBlockTechnicalIdentifier": "string", + "commandBlockVersion": 0 + } + ] + } + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/categories/{categoryId}/commandblocks/JobStats()": { + "get": { + "description": "Get statistics on the Command Block jobs for Command Blocks you're authorized to view.", + "operationId": "GetCommandBlockJobStats", + "summary": "Get statistics on the Command Block jobs for all authorized organizations", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Format - uuid. Unique identifier of the category.", + "required": true, + "type": "string", + "x-ms-summary": "Category Id", + "x-ms-url-encoding": "single" + }, + { + "name": "$select", + "in": "query", + "description": "$select odata filter.", + "type": "string", + "x-ms-summary": "Select filter" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Ok", + "schema": { + "type": "object", + "properties": { + "@odata.context": { + "type": "string", + "description": "OData context.", + "title": "OData context" + }, + "type": { + "type": "string", + "description": "Type.", + "title": "Type" + }, + "category": { + "type": "string", + "description": "Category.", + "title": "Category" + }, + "period": { + "type": "string", + "description": "Period.", + "title": "Period" + }, + "completed": { + "type": "integer", + "format": "int32", + "description": "Completed.", + "title": "Completed" + }, + "queued": { + "type": "integer", + "format": "int32", + "description": "Queued.", + "title": "Queued" + }, + "failed": { + "type": "integer", + "format": "int32", + "description": "Failed.", + "title": "Failed" + } + } + }, + "examples": { + "application/json": { + "@odata.context": "string", + "type": "CommandBlock", + "category": "Microsoft_365", + "period": "last24h", + "completed": 30, + "queued": 8, + "failed": 2 + } + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request Id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "404": { + "description": "The specified resource was not found" + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/organizations/{organizationId}/commandblocks/jobs": { + "get": { + "description": "Get Command Block jobs for Command Blocks you're authorized to view.", + "operationId": "GetCommandBlockJobsByOrganization", + "summary": "Get Command Block jobs of a specific organization", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Format - uuid. Unique identifier of the organization.", + "required": true, + "type": "string", + "x-ms-summary": "Organization Id.", + "x-ms-url-encoding": "single" + }, + { + "name": "$top", + "in": "query", + "description": "Return only the first $top items.", + "type": "string", + "x-ms-summary": "$top items" + }, + { + "name": "$skip", + "in": "query", + "description": "The number of items to skip.", + "type": "string", + "x-ms-summary": "$skip items" + }, + { + "name": "$select", + "in": "query", + "description": "$select odata filter.", + "type": "string", + "x-ms-summary": "Select filter" + }, + { + "name": "$orderby", + "in": "query", + "description": "Determines what values are used to order a collection of records.", + "type": "string", + "x-ms-summary": "Order by" + }, + { + "name": "$filter", + "in": "query", + "description": "A function that must evaluate to true for a record to be returned.", + "type": "string", + "x-ms-summary": "Filter" + }, + { + "name": "$count", + "in": "query", + "description": "Determines weather or not to include the count of items in a collection.", + "type": "string", + "x-ms-summary": "Count" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Ok", + "schema": { + "type": "object", + "properties": { + "@odata.context": { + "type": "string", + "description": "OData context.", + "title": "OData context" + }, + "@odata.count": { + "type": "integer", + "format": "int32", + "description": "OData count.", + "title": "OData count" + }, + "@odata.nextLink": { + "type": "string", + "description": "OData nextlink.", + "title": "OData nextlink" + }, + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id.", + "title": "Id" + }, + "commandBlockId": { + "type": "string", + "description": "Command Block identifier.", + "title": "Command Block id" + }, + "commandSetName": { + "type": "string", + "description": "Command set name.", + "title": "Command Set name" + }, + "commandSetId": { + "type": "string", + "description": "Command Set identifier.", + "title": "Command Set id" + }, + "commandSetBlockId": { + "type": "string", + "description": "Command Set Block identifier.", + "title": "Command Set Block id" + }, + "userId": { + "type": "string", + "description": "User identifier.", + "title": "User id" + }, + "userUpn": { + "type": "string", + "description": "User principal name.", + "title": "User upn" + }, + "groupId": { + "type": "string", + "description": "Group identifier.", + "title": "Group id" + }, + "groupName": { + "type": "string", + "description": "Group name.", + "title": "Group name" + }, + "organizationId": { + "type": "string", + "description": "Organization identifier.", + "title": "Organization id" + }, + "organizationName": { + "type": "string", + "description": "Organization name.", + "title": "Organization name" + }, + "actorUserUpn": { + "type": "string", + "description": "Actor user principal name.", + "title": "Actor user principal name" + }, + "actorOrganizationId": { + "type": "string", + "description": "Actor organization identifier.", + "title": "Actor organization id" + }, + "actorOrganizationName": { + "type": "string", + "description": "Actor organization name.", + "title": "Actor organization name" + }, + "status": { + "type": "string", + "description": "Status.", + "title": "Status" + }, + "executedOn": { + "type": "string", + "description": "Executed on.", + "title": "Executed on" + }, + "commandBlockTechnicalIdentifier": { + "type": "string", + "description": "Command Block technical identifier.", + "title": "Command Block technical id" + }, + "commandBlockVersion": { + "type": "integer", + "format": "int32", + "description": "Command Block version.", + "title": "Command Block version" + }, + "plannedExecution": { + "type": "string", + "description": "Planned execution.", + "title": "Planned execution" + }, + "scheduleId": { + "type": "string", + "description": "Schedule identifier.", + "title": "Schedule id" + }, + "scheduleName": { + "type": "string", + "description": "Schedule name.", + "title": "Schedule name" + } + } + }, + "description": "Value." + } + } + }, + "examples": { + "application/json": { + "@odata.context": "string", + "@odata.count": 0, + "@odata.nextLink": "string", + "value": [ + { + "id": "string", + "commandBlockId": "string", + "commandSetName": "string", + "commandSetId": "string", + "commandSetBlockId": "string", + "userId": "string", + "userUpn": "string", + "groupId": "string", + "groupName": "string", + "organizationId": "string", + "organizationName": "string", + "actorUserUpn": "string", + "actorOrganizationId": "string", + "actorOrganizationName": "string", + "status": "Pending", + "executedOn": "string", + "commandBlockTechnicalIdentifier": "string", + "commandBlockVersion": 0 + } + ] + } + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request Id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/commandblocks/{commandBlockId}": { + "get": { + "description": "Get the details of a Command Block. Provider and action validation depend on the specific Command Block.", + "operationId": "GetCommandBlockV2", + "summary": "Get Command Block details", + "tags": [ + "Command Blocks" + ], + "parameters": [ + { + "name": "commandBlockId", + "in": "path", + "description": "Format - uuid. Unique identifier of the Command Block.", + "required": true, + "type": "string", + "x-ms-summary": "Command Block Id", + "x-ms-url-encoding": "single" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id.", + "title": "Id" + }, + "version": { + "type": "integer", + "format": "int32", + "description": "Version.", + "title": "Version" + }, + "categoryId": { + "type": "string", + "description": "Category Id.", + "title": "Category id" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "requiredReadAction": { + "type": "string", + "description": "Required read action.", + "title": "Required read action" + }, + "requiredWriteAction": { + "type": "string", + "description": "Required write action.", + "title": "Required write action" + }, + "requiredProvider": { + "type": "string", + "description": "Required provider.", + "title": "Required provider" + }, + "type": { + "type": "string", + "description": "Type.", + "title": "Type" + }, + "category": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id.", + "title": "Id" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + } + }, + "description": "Category." + }, + "parentCategory": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id.", + "title": "Id" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + } + }, + "description": "Parent category." + }, + "menuCategory": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id.", + "title": "Id" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + } + }, + "description": "Menu category." + }, + "commandInput": { + "type": "object", + "properties": { + "multiSelection": { + "type": "string", + "description": "Multi selection.", + "title": "Multi selection" + }, + "layoutGroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "layoutGroupFormats": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type." + }, + "property": { + "type": "string", + "description": "Property." + }, + "properties": { + "type": "array", + "items": {}, + "description": "Properties." + } + } + }, + "description": "Layout group formats." + } + } + }, + "description": "Layout groups." + }, + "parameters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "defaultValue": { + "type": "string", + "description": "Default value.", + "title": "Default value" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "schema": { + "type": "string", + "description": "Schema.", + "title": "Schema" + }, + "sensitive": { + "type": "boolean", + "description": "Sensitive.", + "title": "Sensitive", + "enum": [ + "true", + "false" + ] + }, + "required": { + "type": "boolean", + "description": "Required.", + "title": "Required", + "enum": [ + "true", + "false" + ] + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + }, + "placeholderEnabled": { + "type": "object", + "properties": { + "commandSet": { + "type": "boolean", + "description": "Command Set.", + "title": "Command Set", + "enum": [ + "true", + "false" + ] + }, + "commandBlock": { + "type": "boolean", + "description": "Command Block.", + "title": "Command Block", + "enum": [ + "true", + "false" + ] + }, + "linkedCommandBlocks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier." + }, + "version": { + "type": "integer", + "format": "int32", + "description": "Version." + } + } + }, + "description": "Linked Command Blocks." + } + }, + "description": "Placeholder enabled." + } + } + }, + "description": "Parameters." + } + }, + "description": "Command input." + }, + "commandOutput": { + "type": "object", + "properties": { + "layoutGroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "layoutGroupFormats": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type." + }, + "property": { + "type": "string", + "description": "Property." + }, + "properties": { + "type": "array", + "items": {}, + "description": "Properties." + } + } + }, + "description": "Layout group formats." + } + } + }, + "description": "Layout groups." + }, + "parameters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "example": { + "type": "string", + "description": "Example.", + "title": "Example" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical identifier.", + "title": "Technical id" + }, + "schema": { + "type": "string", + "description": "Schema.", + "title": "Schema" + }, + "sensitive": { + "type": "boolean", + "description": "Sensitive.", + "title": "Sensitive", + "enum": [ + true, + false + ] + }, + "required": { + "type": "boolean", + "description": "Required.", + "title": "Required", + "enum": [ + true, + false + ] + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + }, + "placeholderEnabled": { + "type": "object", + "properties": { + "commandSet": { + "type": "boolean", + "description": "Command Set.", + "title": "Command Set", + "enum": [ + true, + false + ] + }, + "commandBlock": { + "type": "boolean", + "description": "Command Block.", + "title": "Command Block", + "enum": [ + true, + false + ] + } + }, + "description": "Placeholder enabled." + } + } + }, + "description": "Parameters." + } + }, + "description": "Command Output." + } + } + }, + "examples": { + "application/json": { + "id": "string", + "technicalIdentifier": "string", + "type": "User", + "version": 0, + "categoryId": "GUID value", + "requiredReadAction": "command.xyz.read", + "requiredWriteAction": "command.xyz.write", + "requiredProvider": "command.xyz", + "menuCategory": { + "id": "GUID value", + "technicalIdentifier": "Chats" + }, + "parentCategory": { + "id": "GUID value", + "technicalIdentifier": "Chats" + }, + "category": { + "id": "GUID value", + "technicalIdentifier": "Chats" + }, + "commandInput": { + "layoutGroups": [ + { + "layoutGroupFormats": [ + { + "type": "SingleInput", + "property": "email" + }, + { + "type": "DoubleInput", + "properties": [ + "firstName", + "lastName" + ] + } + ] + } + ], + "multiSelection": { + "multipleOrganizations": true, + "multipleUsers": true + }, + "parameters": [ + { + "technicalIdentifier": "string", + "value": "string", + "defaultValue": "string", + "schema": { + "type": "string", + "format": "uuid", + "pattern": "^[\\da-zA-Z]{8}-([\\da-zA-Z]{4}-){3}[\\da-zA-Z]{12}$" + }, + "placeholderEnabled": { + "commandSet": true, + "commandBlock": true, + "linkedCommandBlocks": [ + { + "technicalIdentifier": "getazureadgroup", + "version": 4 + }, + { + "technicalIdentifier": "getazureadsecuritygroup", + "version": 2 + } + ] + } + } + ] + }, + "commandOutput": { + "body": { + "layoutGroups": [ + { + "layoutGroupFormats": [ + { + "type": "SingleInput", + "property": "email" + }, + { + "type": "DoubleInput", + "properties": [ + "firstName", + "lastName" + ] + } + ] + } + ], + "parameters": [ + { + "technicalIdentifier": "string", + "value": "string", + "schema": { + "type": "string", + "example": "First name" + }, + "placeholderEnabled": { + "commandSet": true, + "commandBlock": true + } + } + ] + }, + "errorCode": "string", + "isSuccess": true + } + } + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request Id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "404": { + "description": "The specified resource was not found." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/organizations/{organizationId}/commandblocks/{commandBlockId}/jobs/ForUser(targetUserId={targetUserId})": { + "post": { + "description": "Add a Command Block job. The provider and action validation is based on the specific Command Block.", + "operationId": "PostCommandBlockJobForUser", + "summary": "Add a Command Block job for a user", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Format - uuid. Unique identifier of the organization.", + "required": true, + "type": "string", + "x-ms-summary": "Organization Id", + "x-ms-url-encoding": "single" + }, + { + "name": "commandBlockId", + "in": "path", + "description": "Format - uuid. Unique identifier of the Command Block.", + "required": true, + "type": "string", + "x-ms-summary": "Command Block Id", + "x-ms-url-encoding": "single" + }, + { + "name": "targetUserId", + "in": "path", + "description": "Format - uuid. Unique identifier of the target user.", + "required": true, + "type": "string", + "x-ms-summary": "Target User Id", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "inputOverrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "description": "Input overrides." + }, + "scheduleId": { + "type": "string", + "description": "Schedule identifier.", + "title": "Schedule id" + } + } + } + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "examples": { + "application/json": "string" + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/organizations/{organizationId}/commandblocks/{commandBlockId}/jobs/ForUser(targetDeviceId={targetDeviceId})": { + "post": { + "description": "Add a Command Block job. The provider and action validation is based on the specific Command Block.", + "operationId": "PostCommandBlockJobForDevice", + "summary": "Add a Command Block job for a device", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Format - uuid. Unique identifier of the organization.", + "required": true, + "type": "string", + "x-ms-summary": "Organization Id", + "x-ms-url-encoding": "single" + }, + { + "name": "commandBlockId", + "in": "path", + "description": "Format - uuid. Unique identifier of the Command Block.", + "required": true, + "type": "string", + "x-ms-summary": "Command Block Id", + "x-ms-url-encoding": "single" + }, + { + "name": "targetDeviceId", + "in": "path", + "description": "Format - uuid. Unique identifier of the target device.", + "required": true, + "type": "string", + "x-ms-summary": "Target Device Id", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "inputOverrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "description": "Input overrides." + }, + "scheduleId": { + "type": "string", + "description": "Schedule identifier.", + "title": "Schedule id" + } + } + } + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "examples": { + "application/json": "string" + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/organizations/{organizationId}/commandblocks/{commandBlockId}/jobs/ForGroup(targetGroupId={targetGroupId})": { + "post": { + "description": "Add a Command Block job. The provider and action validation is based on the specific Command Block.", + "operationId": "PostCommandBlockJobForGroup", + "summary": "Add a Command Block job for a group", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Format - uuid. Unique identifier of the organization.", + "required": true, + "type": "string", + "x-ms-summary": "Organization Id", + "x-ms-url-encoding": "single" + }, + { + "name": "commandBlockId", + "in": "path", + "description": "Format - uuid. Unique identifier of the Command Block.", + "required": true, + "type": "string", + "x-ms-summary": "Command Block Id", + "x-ms-url-encoding": "single" + }, + { + "name": "targetGroupId", + "in": "path", + "description": "Format - uuid. Unique identifier of the target group.", + "required": true, + "type": "string", + "x-ms-summary": "Target Group Id", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "inputOverrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "description": "Input overrides." + }, + "scheduleId": { + "type": "string", + "description": "Schedule identifier.", + "title": "Schedule id" + } + } + } + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "examples": { + "application/json": [ + "string" + ] + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/organizations/{organizationId}/commandblocks/{commandBlockId}/jobs/ForOrganization(targetOrganizationId={targetOrganizationId})": { + "post": { + "description": "Add a Command Block job. The provider and action validation is based on the specific Command Block.", + "operationId": "PostCommandBlockJobForOrganization", + "summary": "Add a Command Block job for an organization", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Format - uuid. Unique identifier of the organization.", + "required": true, + "type": "string", + "x-ms-summary": "Organization Id", + "x-ms-url-encoding": "single" + }, + { + "name": "commandBlockId", + "in": "path", + "description": "Format - uuid. Unique identifier of the Command Block.", + "required": true, + "type": "string", + "x-ms-summary": "Command Block Id", + "x-ms-url-encoding": "single" + }, + { + "name": "targetOrganizationId", + "in": "path", + "description": "Format - uuid. Unique identifier of the target organization.", + "required": true, + "type": "string", + "x-ms-summary": "Target Organization Id", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "inputOverrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier", + "title": "Technical id" + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "description": "Input overrides." + }, + "scheduleId": { + "type": "string", + "description": "Schedule identifier.", + "title": "Schedule id" + } + } + } + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "examples": { + "application/json": "string" + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/organizations/{organizationId}/commandblocks/{commandBlockId}/jobs/{jobId}": { + "get": { + "description": "Get details of a single user job, provider and action validation depend on the specific command block.", + "operationId": "GetCommandBlockUserJob", + "summary": "Get details of a single user job", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Format - uuid. Unique identifier of the organization.", + "required": true, + "type": "string", + "x-ms-summary": "Organization Id", + "x-ms-url-encoding": "single" + }, + { + "name": "commandBlockId", + "in": "path", + "description": "Format - uuid. Unique identifier of the command block.", + "required": true, + "type": "string", + "x-ms-summary": "Command Block Id", + "x-ms-url-encoding": "single" + }, + { + "name": "jobId", + "in": "path", + "description": "Format - uuid. Unique identifier of the job.", + "required": true, + "type": "string", + "x-ms-summary": "Job Id", + "x-ms-url-encoding": "single" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id.", + "title": "Id" + }, + "commandBlockId": { + "type": "string", + "description": "Command Block identifier.", + "title": "Command Block id" + }, + "commandSetName": { + "type": "string", + "description": "Command set name.", + "title": "Command Set name" + }, + "commandSetId": { + "type": "string", + "description": "Command Set identifier.", + "title": "Command Set id" + }, + "commandSetBlockId": { + "type": "string", + "description": "Command Set Block identifier.", + "title": "Command Set Block id" + }, + "userId": { + "type": "string", + "description": "User identifier.", + "title": "User id" + }, + "userUpn": { + "type": "string", + "description": "User principal name of the user.", + "title": "User upn" + }, + "groupId": { + "type": "string", + "description": "Group identifier.", + "title": "Group id" + }, + "groupName": { + "type": "string", + "description": "Group name.", + "title": "Group name" + }, + "organizationId": { + "type": "string", + "description": "Organization identifier.", + "title": "Organization id" + }, + "organizationName": { + "type": "string", + "description": "Organization name.", + "title": "Organization name" + }, + "actorUserUpn": { + "type": "string", + "description": "Actor user principal name.", + "title": "Actor upn" + }, + "actorOrganizationId": { + "type": "string", + "description": "Actor organization identifier.", + "title": "Actor organization id" + }, + "actorOrganizationName": { + "type": "string", + "description": "Actor organization name.", + "title": "Actor organization name" + }, + "status": { + "type": "string", + "description": "Status.", + "title": "Status" + }, + "executedOn": { + "type": "string", + "description": "Executed on.", + "title": "Executed on" + }, + "commandBlockTechnicalIdentifier": { + "type": "string", + "description": "Command Block technical identifier.", + "title": "Command Block technical id" + }, + "commandBlockVersion": { + "type": "integer", + "format": "int32", + "description": "Command Block version.", + "title": "Command Block version" + }, + "output": { + "type": "object", + "properties": { + "body": { + "type": "object", + "properties": { + "layoutGroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "layoutGroupFormats": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type." + }, + "property": { + "type": "string", + "description": "Property." + }, + "properties": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Properties." + } + } + }, + "description": "Layout group formats." + } + } + }, + "description": "Layout group formats." + }, + "parameters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + }, + "schema": { + "type": "string", + "description": "Schema.", + "title": "Schema" + }, + "placeholderEnabled": { + "type": "object", + "properties": { + "commandSet": { + "type": "boolean", + "description": "Command Set.", + "title": "Command Set", + "enum": [ + true, + false + ] + }, + "commandBlock": { + "type": "boolean", + "description": "Command Block.", + "title": "Command Block", + "enum": [ + true, + false + ] + } + }, + "description": "Placeholder enabled." + } + } + }, + "description": "Parameters." + } + }, + "description": "Body." + }, + "errorCode": { + "type": "string", + "description": "Error code.", + "title": "Error code" + }, + "isSuccess": { + "type": "boolean", + "description": "Successful.", + "title": "Success", + "enum": [ + true, + false + ] + } + }, + "description": "Output." + }, + "input": { + "type": "object", + "properties": { + "layoutGroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "layoutGroupFormats": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type." + }, + "property": { + "type": "string", + "description": "Property." + }, + "properties": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Properties." + } + } + }, + "description": "Layout group formats." + } + } + }, + "description": "Layout groups." + }, + "multiSelection": { + "type": "object", + "properties": { + "multipleOrganizations": { + "type": "boolean", + "description": "Multiple organizations.", + "title": "Multiple organizations", + "enum": [ + true, + false + ] + }, + "multipleUsers": { + "type": "boolean", + "description": "Multiple users.", + "title": "Multiple users", + "enum": [ + true, + false + ] + } + }, + "description": "Multiple selections." + }, + "parameters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + }, + "defaultValue": { + "type": "string", + "description": "Default value.", + "title": "Default value" + }, + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type.", + "title": "Type" + }, + "format": { + "type": "string", + "description": "Format.", + "title": "Format" + }, + "pattern": { + "type": "string", + "description": "Pattern.", + "title": "Pattern" + }, + "minLength": { + "type": "string", + "description": "Minimal length.", + "title": "Minimal length" + } + }, + "description": "Schema." + }, + "placeholderEnabled": { + "type": "object", + "properties": { + "commandSet": { + "type": "boolean", + "description": "Command Set.", + "title": "Command Set", + "enum": [ + true, + false + ] + }, + "commandBlock": { + "type": "boolean", + "description": "Command Block.", + "title": "Command Block", + "enum": [ + true, + false + ] + }, + "linkedCommandBlocks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier." + }, + "version": { + "type": "integer", + "format": "int32", + "description": "Version." + } + } + }, + "description": "Linked Command Blocks." + } + }, + "description": "Placeholder enabled." + } + } + }, + "description": "Parameters." + } + }, + "description": "Input." + } + } + }, + "examples": { + "application/json": { + "id": "string", + "commandBlockId": "string", + "commandSetName": "string", + "commandSetId": "string", + "commandSetBlockId": "string", + "userId": "string", + "userUpn": "string", + "groupId": "string", + "groupName": "string", + "organizationId": "string", + "organizationName": "string", + "actorUserUpn": "string", + "actorOrganizationId": "string", + "actorOrganizationName": "string", + "status": "Pending", + "executedOn": "string", + "commandBlockTechnicalIdentifier": "string", + "commandBlockVersion": 0, + "output": { + "body": { + "layoutGroups": [ + { + "layoutGroupFormats": [ + { + "type": "SingleInput", + "property": "email" + }, + { + "type": "DoubleInput", + "properties": [ + "firstName", + "lastName" + ] + } + ] + } + ], + "parameters": [ + { + "technicalIdentifier": "string", + "value": "string", + "schema": { + "type": "object", + "example": "First name" + }, + "placeholderEnabled": { + "commandSet": true, + "commandBlock": true + } + } + ] + }, + "errorCode": "string", + "isSuccess": true + }, + "input": { + "layoutGroups": [ + { + "layoutGroupFormats": [ + { + "type": "SingleInput", + "property": "email" + }, + { + "type": "DoubleInput", + "properties": [ + "firstName", + "lastName" + ] + } + ] + } + ], + "multiSelection": { + "multipleOrganizations": true, + "multipleUsers": true + }, + "parameters": [ + { + "technicalIdentifier": "string", + "value": "string", + "defaultValue": "string", + "schema": { + "type": "string", + "format": "uuid", + "pattern": "^[\\da-zA-Z]{8}-([\\da-zA-Z]{4}-){3}[\\da-zA-Z]{12}$" + }, + "placeholderEnabled": { + "commandSet": true, + "commandBlock": true, + "linkedCommandBlocks": [ + { + "technicalIdentifier": "getazureadgroup", + "version": 4 + }, + { + "technicalIdentifier": "getazureadsecuritygroup", + "version": 2 + } + ] + } + } + ] + } + } + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "404": { + "description": "The specified resource was not found." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/commandcategories": { + "get": { + "description": "Get all available categories and subcategories.", + "operationId": "GetCommandCategories", + "summary": "Get Command Categories", + "tags": [ + "Command Category" + ], + "parameters": [ + { + "name": "$top", + "in": "query", + "description": "Return only the first $top items.", + "type": "string", + "x-ms-summary": "$top items" + }, + { + "name": "$skip", + "in": "query", + "description": "The number of items to skip.", + "type": "string", + "x-ms-summary": "$skip items" + }, + { + "name": "$select", + "in": "query", + "description": "$select odata filter.", + "type": "string", + "x-ms-summary": "Select filter" + }, + { + "name": "$orderby", + "in": "query", + "description": "Determines what values are used to order a collection of records.", + "type": "string", + "x-ms-summary": "Order by" + }, + { + "name": "$filter", + "in": "query", + "description": "A function that must evaluate to true for a record to be returned.", + "type": "string", + "x-ms-summary": "Filter" + }, + { + "name": "$count", + "in": "query", + "description": "Determines weather or not to include the count of items in a collection.", + "type": "string", + "x-ms-summary": "Count" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Ok.", + "schema": { + "type": "object", + "properties": { + "@odata.context": { + "type": "string", + "description": "OData context.", + "title": "OData context" + }, + "@odata.count": { + "type": "integer", + "format": "int32", + "description": "OData count.", + "title": "OData count" + }, + "@odata.nextLink": { + "type": "string", + "description": "OData next link.", + "title": "OData next link" + }, + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id.", + "title": "Id" + }, + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical id" + }, + "parentCategoryId": { + "type": "string", + "description": "Parent category identifier.", + "title": "Parent category id" + } + } + }, + "description": "Value." + } + } + }, + "examples": { + "application/json": { + "@odata.context": "string", + "@odata.count": 0, + "@odata.nextLink": "string", + "value": [ + { + "id": "GUID value", + "technicalIdentifier": "Microsoft_365", + "parentCategoryId": null + }, + { + "id": "GUID value", + "technicalIdentifier": "Microsoft_Teams", + "parentCategoryId": "GUID value" + }, + { + "id": "GUID value", + "technicalIdentifier": "Chats", + "parentCategoryId": "GUID value" + } + ] + } + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "404": { + "description": "The specified resource was not found." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/directory/v1/locales": { + "get": { + "responses": { + "200": { + "description": "The request succeeded.", + "schema": { + "type": "object", + "properties": { + "@odata.context": { + "type": "string", + "description": "OData context.", + "title": "OData context" + }, + "@odata.count": { + "type": "integer", + "format": "int32", + "description": "OData count.", + "title": "Count" + }, + "@odata.nextLink": { + "type": "string", + "description": "OData nextlink.", + "title": "OData nextLink" + }, + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Locale identifier.", + "title": "Id" + }, + "localeCode": { + "type": "string", + "description": "ISO-639 Language Codes.", + "title": "Locale code" + }, + "countryCode": { + "type": "string", + "description": "ISO-3166 Country Codes.", + "title": "Country code" + }, + "countryName": { + "type": "string", + "description": "Country name.", + "title": "Country name" + } + } + }, + "description": "Value." + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Spinpanel APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Get locales", + "description": "Get locales.", + "operationId": "GetLocales", + "parameters": [ + { + "name": "provider", + "in": "query", + "required": true, + "type": "string", + "default": "spinpanel.platform", + "x-ms-visibility": "internal" + } + ], + "x-ms-visibility": "advanced" + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/users/{microsoftObjectId}/manager": { + "get": { + "responses": { + "200": { + "description": "The request succeeded.", + "schema": { + "type": "object", + "properties": { + "@odata.count": { + "type": "integer", + "format": "int32", + "description": "Organization count.", + "title": "Count" + }, + "value": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the organization.", + "title": "Name" + }, + "microsoftTenantId": { + "type": "string", + "description": "Unique Microsoft user identifier.", + "title": "Microsoft tenant Id" + }, + "type": { + "type": "string", + "description": "Microsoft CSP partner type.", + "title": "Microsoft CSP Type" + }, + "productIdentifier": { + "type": "string", + "description": "N-able product identifier.", + "title": "Product Id" + }, + "productIdentifierType": { + "type": "string", + "description": "N-able product identifier type.", + "title": "Product Id type" + }, + "hybridADEnabled": { + "type": "boolean", + "description": "Hybrid identity enabled.", + "title": "Hybrid identity enabled", + "enum": [ + true, + false + ] + }, + "createdOn": { + "type": "string", + "description": "Created on.", + "title": "Created on" + }, + "modifiedOn": { + "type": "string", + "description": "Modified on.", + "title": "Modified on" + }, + "id": { + "type": "string", + "description": "Unique identifier of the organization.", + "title": "Id" + } + } + }, + "description": "value" + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "summary": "Get manager", + "description": "Get manager of the user.", + "operationId": "GetAssignManager", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "microsoftObjectId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft object identifier of the user.", + "x-ms-summary": "Microsoft object id of the user.", + "x-ms-url-encoding": "single" + } + ] + } + }, + "/graph/v1/organizations/{organizationId}/v1.0/users/{microsoftObjectId}/manager/$ref": { + "put": { + "responses": { + "204": { + "description": "No Content." + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + }, + "parameters": [ + { + "name": "organizationId", + "in": "path", + "required": true, + "type": "string", + "description": "Cloud Commander organization identifier.", + "x-ms-summary": "Cloud Commander organization id.", + "x-ms-url-encoding": "single" + }, + { + "name": "microsoftObjectId", + "in": "path", + "required": true, + "type": "string", + "description": "Microsoft object identifier of the user.", + "x-ms-summary": "Microsoft object id of the user.", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "@odata.id": { + "type": "string", + "description": "URI of the user object to be added.", + "title": "Manager" + } + } + } + } + ], + "summary": "Assign manager", + "description": "Assign manager to the user.", + "operationId": "PutAssignManager" + } + }, + "/command/v1/organizations/{organizationId}/commandblocks/267a964e-e99d-4d97-ba14-d2671a0ab199/jobs/ForUser(targetUserId={targetUserId})": { + "post": { + "description": "Convert user mailbox to shared mailbox.", + "operationId": "PostConvertSharedMailboxJobForUser", + "summary": "Convert to shared mailbox", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Format - uuid. Unique identifier of the organization.", + "required": true, + "type": "string", + "x-ms-summary": "Organization Id", + "x-ms-url-encoding": "single" + }, + { + "name": "targetUserId", + "in": "path", + "description": "Format - uuid. Unique identifier of the target user.", + "required": true, + "type": "string", + "x-ms-summary": "Target User Id", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "inputOverrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical Identifier", + "enum": [ + "tenantId", + "identity" + ] + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + }, + "required": [ + "value", + "technicalIdentifier" + ] + }, + "description": "Input overrides." + }, + "scheduleId": { + "type": "string", + "description": "Schedule identifier.", + "title": "Schedule id", + "x-ms-visibility": "internal" + } + }, + "required": [ + "inputOverrides" + ] + } + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "examples": { + "application/json": "string" + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/organizations/{organizationId}/commandblocks/2bfc081b-d4b8-4a16-9979-ae473c9949d6/jobs/ForUser(targetUserId={targetUserId})": { + "post": { + "description": "Set mailbox forwarding address.", + "operationId": "PostForwardMailboxJobForUser", + "summary": "Set mailbox forwarding address", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Format - uuid. Unique identifier of the organization.", + "required": true, + "type": "string", + "x-ms-summary": "Organization Id", + "x-ms-url-encoding": "single" + }, + { + "name": "targetUserId", + "in": "path", + "description": "Format - uuid. Unique identifier of the target user.", + "required": true, + "type": "string", + "x-ms-summary": "Target User Id", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "inputOverrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical Identifier", + "enum": [ + "tenantId", + "identity", + "forwardingAddress" + ] + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + }, + "required": [ + "value", + "technicalIdentifier" + ] + }, + "description": "Input overrides." + }, + "scheduleId": { + "type": "string", + "description": "Schedule identifier.", + "title": "Schedule id", + "x-ms-visibility": "internal" + } + }, + "required": [ + "inputOverrides" + ] + } + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "examples": { + "application/json": "string" + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + } + } + }, + "/command/v1/organizations/{organizationId}/commandblocks/1639c9a8-ae6f-4a68-b61d-32d8596ae7c0/jobs/ForUser(targetUserId={targetUserId})": { + "post": { + "description": "Set OneDrive site permissions.", + "operationId": "PostSetOneDriveSitePermissionsJobForUser", + "summary": "Set OneDrive site permissions", + "tags": [ + "Command Block Jobs" + ], + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Format - uuid. Unique identifier of the organization.", + "required": true, + "type": "string", + "x-ms-summary": "Organization Id", + "x-ms-url-encoding": "single" + }, + { + "name": "targetUserId", + "in": "path", + "description": "Format - uuid. Unique identifier of the target user.", + "required": true, + "type": "string", + "x-ms-summary": "Target User Id", + "x-ms-url-encoding": "single" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "inputOverrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "technicalIdentifier": { + "type": "string", + "description": "Technical Identifier.", + "title": "Technical Identifier", + "enum": [ + "siteCollectionAdminUpn", + "sharePointSiteUrl" + ] + }, + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + }, + "required": [ + "value", + "technicalIdentifier" + ] + }, + "description": "Input overrides." + }, + "scheduleId": { + "type": "string", + "description": "Schedule identifier.", + "title": "Schedule id", + "x-ms-visibility": "internal" + } + }, + "required": [ + "inputOverrides" + ] + } + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Value.", + "title": "Value" + } + } + }, + "examples": { + "application/json": "string" + } + }, + "400": { + "description": "There was missing or invalid input. The response body contains the error details.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Code.", + "title": "Code" + }, + "message": { + "type": "string", + "description": "Message.", + "title": "Message" + }, + "innerError": { + "type": "object", + "properties": { + "request-id": { + "type": "string", + "description": "Request id.", + "title": "Request id" + }, + "date": { + "type": "string", + "description": "Date.", + "title": "Date" + } + }, + "description": "Inner error." + } + }, + "description": "Error." + } + } + }, + "examples": { + "application/json": { + "error": { + "code": "string", + "message": "string", + "innerError": { + "request-id": "string", + "date": "string" + } + } + } + } + }, + "401": { + "description": "The request was not authenticated. The client needs to authenticate with Cloud Commander APIs first." + }, + "403": { + "description": "The request was not authorized. The client needs to have authorization to access this resource." + }, + "500": { + "description": "Unexpected error." + } + } + } + } + }, + "definitions": {}, + "parameters": {}, + "responses": {}, + "securityDefinitions": { + "oauth2-auth": { + "type": "oauth2", + "flow": "accessCode", + "tokenUrl": "https://login.windows.net/common/oauth2/authorize", + "scopes": { + "api://cloudapp.n-able.com/cloudapp_apis openid offline_access": "api://cloudapp.n-able.com/cloudapp_apis openid offline_access" + }, + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize" + } + }, + "security": [ + { + "oauth2-auth": [ + "api://cloudapp.n-able.com/cloudapp_apis openid offline_access" + ] + } + ], + "tags": [], + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://www.n-able.com" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://www.n-able.com/legal/privacy" + }, + { + "propertyName": "Categories", + "propertyValue": "Business Management;IT Operations" + } + ] +} \ No newline at end of file diff --git a/certified-connectors/N-able Cloud Commander/apiProperties.json b/certified-connectors/N-able Cloud Commander/apiProperties.json new file mode 100644 index 0000000000..b7344fca46 --- /dev/null +++ b/certified-connectors/N-able Cloud Commander/apiProperties.json @@ -0,0 +1,49 @@ +{ + "properties": { + "connectionParameters": { + "token": { + "type": "oauthSetting", + "oAuthSettings": { + "identityProvider": "oauth2", + "clientId": "[[DUMMY]]", + "scopes": [ + "api://cloudapp.n-able.com/cloudapp_apis openid offline_access" + ], + "redirectMode": "GlobalPerConnector", + "redirectUrl": "https://global.consent.azure-apim.net/redirect/n-2dable-20cloud-20commander-5f3a2dd1faea314cd7-4e7247cbad6f0e7f", + "properties": { + "IsFirstParty": "False", + "IsOnbehalfofLoginSupported": false + }, + "customParameters": { + "authorizationUrl": { + "value": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize" + }, + "tokenUrl": { + "value": "https://login.microsoftonline.com/common/oauth2/v2.0/token" + }, + "refreshUrl": { + "value": "https://login.microsoftonline.com/common/oauth2/v2.0/token" + } + } + } + } + }, + "iconBrandColor": "#28282B", + "capabilities": [], + "policyTemplateInstances": [ + { + "templateId": "setheader", + "title": "Accept_header", + "parameters": { + "x-ms-apimTemplateParameter.name": "Accept", + "x-ms-apimTemplateParameter.value": "application/json;odata.metadata=none", + "x-ms-apimTemplateParameter.existsAction": "override", + "x-ms-apimTemplate-policySection": "Request" + } + } + ], + "publisher": "N-Able Technologies Ltd.", + "stackOwner": "N-Able Technologies Ltd." + } +} \ No newline at end of file diff --git a/certified-connectors/N-able Cloud Commander/readme.md b/certified-connectors/N-able Cloud Commander/readme.md new file mode 100644 index 0000000000..fc8a3a2e87 --- /dev/null +++ b/certified-connectors/N-able Cloud Commander/readme.md @@ -0,0 +1,60 @@ +## Cloud Commander +Cloud Commander is a unified Microsoft CSP portal that lets you automate common tasks across all Microsoft 365 apps without switching consoles or customers. + +## Publisher: N-Able Technologies Ltd. + +## Prerequisites +You will need the following to proceed: +* A Cloud Commander subscription https://www.n-able.com/products/cloud-commander. +* Configured and customers with an approved status in Cloud Commander for the specific operations you intend to use. +* Configured roles in Cloud Commander for the specific operations you intend to use. + +## Supported Operations +The connector supports the following operations: +* `List organizations`: List all organizations you are authorized to view. +* `List users`: Retrieve a list of user objects from Cloud Commander. +* `Create user`: The request body contains the user to create. At a minimum, you must specify the required properties for the user. +* `Get user details`: Get user by Microsoft object identifier. +* `Delete user`: Delete a user. When deleted, user resources are moved to a temporary container and can be restored within 30 days. +* `Update user`: Update the user. +* `Get user license details`: Retrieve a list of license details objects for enterprise users. +* `Get organization subscribed SKUs`: Get the list of commercial subscriptions that an organization has acquired. +* `Assign a license to a user`: Add or remove licenses for the user. You can also enable and disable specific plans associated with a license. +* `Get Cloud Commander groups`: Get a list of Cloud Commander groups of all organizations you are authorized to view. +* `Get a list of Cloud Commander group membe`: Get a list of Cloud Commander group members of a specific group. +* `Get Microsoft Entra ID security groups`: Get a list of Microsoft Entra ID security groups of all organizations you are authorized to view. +* `Create Microsoft Entra ID group`: Create an Microsoft Entra ID group. +* `List organization domains`: Retrieve a list of domain objects. +* `Delete Cloud Commander group`: Delete a Cloud Commander group. +* `Remove a member from a Cloud Commander group`: Remove a member to a Cloud Commander group. +* `Add a member to a Cloud Commander group`: Add a member to a Cloud Commander group, the member should belong to the same organization as the group. +* `Add a member to a Microsoft Entra ID group`: Add a member to a Microsoft 365 group or a security group through the members navigation property. +* `Remove member from a Microsoft Entra ID group`: Remove a member from a group via the members navigation property. +* `Get Partner Center subscriptions`: Retrieves all subscriptions for the customer of a partner by their active directory tenant identifier. +* `Update Partner Center subscription quantity`: Update the quantity of a subscription. +* `List Command Blocks`: Retrieve a list of available Command Blocks. +* `Get commandblock jobs for all authorized organizations`: Get commandblock jobs for Command Blocks the calling user is authorized to view. +* `Get statistics on the Command Block jobs for all authorized organizations`: Get statistics on the Command Block jobs for Command Block the calling user is authorized to view. +* `Get commandblock jobs of a specific organization`: Get commandblock jobs for Command Blocks the calling user is authorized to view. +* `Get Command Block details`: Get the details of Command Block, provider and action validation depend on the specific Command Block. +* `Add a Command Block job for a user`: Add a Command Block job, provider and action validation depend on the specific Command Block. +* `Add a Command Block job for a device`: Add a Command Block job, provider and action validation depend on the specific Command Block. +* `Add a Command Block job for a group`: Add a Command Block job, provider and action validation depend on the specific Command Block. +* `Add a Command Block job for an organization`: Add a Command Block job, provider and action validation depend on the specific Command Block. +* `Get details of a single user job`: Get details of a single user job, provider and action validation depend on the specific Command Block. +* `Get Command Categories`: Get all available categories and subcategories. +* `Get locales`: Get a list of locales. +* `Get manager`: Get manager of the user. +* `Assign manager`: Assign manager to the user. +* `Convert to shared mailbox`: Convert user mailbox to shared mailbox. +* `Set mailbox forwarding address`: Set mailbox forwarding address. +* `Set OneDrive site permissions`: Set OneDrive site permissions. + +## Obtaining Credentials +You can login with any account that is configured to access Cloud Commander. For automation scenarios we advise you to use a dedicated service account. + +## Known issues and limitations +There are no known issues or limitations specific to the Cloud Commander connector. + +## Deployment instructions +Please refer to [these instructions](https://docs.microsoft.com/en-us/connectors/custom-connectors/paconn-cli) to deploy this connector as custom connector in Microsoft Power Automate and Power Apps. \ No newline at end of file