@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
282 lines (281 loc) • 10.9 kB
TypeScript
import { Observable } from 'rxjs';
import { AuthorizationManager, AuthorizationToken } from '../security/authorization-manager';
import { GatewayConnection, GatewayRequest } from './gateway-connection';
import { PowerShellCommandWithoutState } from './powershell';
/**
* Node Cim output type.
*/
export declare enum NodeCimOutput {
/**
* Single instance.
*/
Single = 0,
/**
* Multiple instances.
*/
Multiple = 1,
/**
* Invoke result.
*/
Result = 2,
/**
* WQL query result.
*/
Query = 3
}
/**
* Node Request options that we use to extend the GatewayRequest interface
*/
export interface NodeRequestOptions {
/**
* Indicates that no auth failure handling should take place, however, any auth headers for this node will still be added.
*/
noAuth?: boolean;
/**
* Provides an alternative token to use for just this request
*/
authToken?: AuthorizationToken;
/**
* Authentication mechanism.
*/
authenticationMechanism?: 'Credssp' | 'NotSpecified';
/**
* Indicates if command should run in local runspace instead of remote runspace.
*/
useInProcRunspace?: boolean;
/**
* Indicates that audit logging for this request should be made. Default is false.
*/
logAudit?: boolean;
/**
* Indicates that telemetry logging for this request should be made. Default is false.
* SmeWebTelemetry will not be sent for polling PS events.
*/
logTelemetry?: boolean;
/**
* Indicates targeting to specific PowerShell endpoint.
* The endpoint data is inserted to the endpoint header.
*/
powerShellEndpoint?: string;
/**
* The PowerShell command resource on JEA PowerShell endpoint.
* The command object is used for auto fallback time on a CIM query.
* (Only CIM query uses this property)
*/
powerShell?: PowerShellCommandWithoutState;
/**
* The parameters for instance query powershell alternative.
* (Only CIM query uses this property)
*/
powerShellParameters?: any;
/**
* The PowerShell context to replace CIM call.
* (Only CIM query uses this property)
*/
powerShellContext?: {
/**
* CIM output data type.
*/
cimOutput: NodeCimOutput;
/**
* CIM input parameters.
*/
parameters?: any;
};
}
/**
* Extension of GatewayRequest interface for calling the Gateway Node API
*/
export interface NodeRequest extends GatewayRequest, NodeRequestOptions {
}
/**
* Service request interface for gateway version 2.
*/
export interface ServiceRequest {
/**
* The service name such as "WinRest", "WinStream", "LinuxBase" and so on.
*/
serviceName: string;
/**
* The controller name such as "PowerShell", "Cim", "Ssh" and so on.
*/
controllerName: string;
/**
* The node name.
*/
nodeName: string;
}
/**
* The Node Connection class for creating requests and calling the Gateway's Node API
*/
export declare class NodeConnection {
private gateway;
private authorizationManager;
/**
* Initializes a new instance of the GatewayService class.
*
* @param gateway the gateway Connection
* @param authorizationManager the authorization manager.
*/
constructor(gateway: GatewayConnection, authorizationManager: AuthorizationManager);
/**
* Makes a POST call to the gateway node api
*
* @param serviceRequest the object of service request.
* @param remained the remained Url after 'nodes/<nodeName>'.
* @param body the body string JSON.stringfy'ed
* @param request the node request object.
* @remarks this API is for gateway version 2. It doesn't work on gateway version 1.
*/
post(serviceRequest: ServiceRequest, remained: string, body?: any, request?: NodeRequest): Observable<any>;
/**
* @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.
* Makes a POST call to the gateway node api
*
* @param nodeName the name of the node to call the API for
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param body the body string JSON.stringfy'ed
* @param request the node request object.
*/
post(nodeName: string, relativeUrl: string, body?: any, request?: NodeRequest): Observable<any>;
/**
* Makes a GET call to the gateway node api
*
* @param serviceRequest the object of service request.
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param request the node request object.
* @remarks this API is for gateway version 2. It doesn't work on gateway version 1.
*/
get(serviceRequest: ServiceRequest, relativeUrl: string, request?: NodeRequest): Observable<any>;
/**
* @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.
* Makes a GET call to the gateway node api
*
* @param nodeName the name of the node to call the API for
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param request the node request object.
*/
get(nodeName: string, relativeUrl: string, request?: NodeRequest): Observable<any>;
/**
* Makes a PUT call to the gateway node api
*
* @param serviceRequest the object of service request.
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param body the body string JSON.stringfy'ed
* @param request the node request object.
* @remarks this API is for gateway version 2. It doesn't work on gateway version 1.
*/
put(serviceRequest: ServiceRequest, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;
/**
* @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.
* Makes a PUT call to the gateway node api
*
* @param nodeName the name of the node to call the API for
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param body the body string JSON.stringfy'ed
* @param request the node request object.
*/
put(nodeName: string, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;
/**
* Makes a PATCH call to the gateway node api
*
* @param serviceRequest the object of service request.
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param body the body string JSON.stringfy'ed
* @param request the node request object.
* @remarks this API is for gateway version 2. It doesn't work on gateway version 1.
*/
patch(serviceRequest: ServiceRequest, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;
/**
* @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.
* Makes a PATCH call to the gateway node api
*
* @param nodeName the name of the node to call the API for
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param body the body string JSON.stringfy'ed
* @param request the node request object.
*/
patch(nodeName: string, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;
/**
* Makes a DELETE call to the gateway node api
*
* @param serviceRequest the object of service request.
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param body the body string JSON.stringfy'ed
* @param request the node request object.
* @remarks this API is for gateway version 2. It doesn't work on gateway version 1.
*/
delete(serviceRequest: ServiceRequest, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;
/**
* @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.
* Makes a DELETE call to the gateway node api
*
* @param nodeName the name of the node to call the API for
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param body the body string JSON.stringfy'ed
* @param request the node request object.
*/
delete(nodeName: string, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;
/**
* Makes a DELETE call to the gateway node api without waiting for the response.
*
* @param serviceRequest the object of service request.
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param request the node request object.
* @remarks this API is for gateway version 2. It doesn't work on gateway version 1.
*/
deleteQuick(serviceRequest: ServiceRequest, relativeUrl: string, request?: NodeRequest): void;
/**
* @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.
* Makes a DELETE call to the gateway node api without waiting for the response.
*
* @param nodeName the name of the node to call the API for
* @param relativeUrl the relative Url after "/api/nodes/<nodeName>"
* @param request the node request object.
*/
deleteQuick(nodeName: string, relativeUrl: string, request?: NodeRequest): void;
/**
* Persists the JEA powershell endpoint context
* @param nodeName The node name
* @param endpoint The powershell endpoint
*/
saveJeaContext(nodeName: string, endpoint: string): void;
/**
* Gets the JEA powershell endpoint, if it exists
* @param nodeName The node name
*/
getJeaEndpoint(nodeName: string): string;
/**
* Creates service node API for Gateway V2.
*
* @param serviceName the name of service.
* @param apiName the name of api.
* @param nodeName the name of node.
* @param remained the remained URL after it including option parameters.
* @returns URL string.
*/
getServiceUrl(serviceName: string, apiName: string, nodeName: string, remained: string): string;
/**
* Adds default parameters to a NodeRequest
*
* @param method the http method to use
* @param relativeUrl the relative Url after "/api/"
* @param body the body string JSON.stringfy'ed
* @param request the node request object to extend.
*/
private createNodeRequest;
/**
* Get node name and node url.
* @param nodeOrService The node name or service request object.
* @param remained The remained url.
* @returns node name and node url.
*/
private getNodeUrl;
/**
* Creates a Node url
*
* @param nodeName the name of the node to make a call against
* @param relativeUrl the relative Url after "/nodes/<nodeName>/"
*/
private getNodeMappedUrl;
}