Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
f539bbb
ApiTransform changes
jworkmanjc Feb 2, 2026
b4d696a
apiTransform changes for workflows
jworkmanjc Feb 10, 2026
15675a8
v2 sdk generated v0.2.0
jworkmanjc Feb 10, 2026
930e8e9
v2 sdk generated
jworkmanjc Feb 10, 2026
1443e1b
changelog date
jworkmanjc Feb 10, 2026
eb17a90
get examples [skip ci]
jworkmanjc Feb 10, 2026
351036d
update gitLeaks
jworkmanjc Feb 10, 2026
af59499
remove "new" functions
jworkmanjc Feb 11, 2026
da897e6
examples on generated
jworkmanjc Feb 11, 2026
45a1af3
get function tests
jworkmanjc Feb 11, 2026
6691fad
changelog date
jworkmanjc Feb 11, 2026
042457b
update key test
jworkmanjc Feb 11, 2026
ac919f7
fix for SSH key tests
jworkmanjc Feb 11, 2026
cf0a659
Workflow -> ApprovalFlow
jworkmanjc Feb 16, 2026
64885c7
examples generated for Get endpoints
jworkmanjc Feb 16, 2026
6872200
examples
jworkmanjc Feb 16, 2026
fb5fd08
changelog date
jworkmanjc Feb 16, 2026
55ae191
New-jcSDKApprovalWorkflow example
jworkmanjc Feb 18, 2026
cdde8f0
generated examples
jworkmanjc Feb 18, 2026
a990763
CI v1, v2 triggers
jworkmanjc Feb 18, 2026
110d1ab
changeLog date
jworkmanjc Feb 18, 2026
8d99e39
Tests updated for Set-JcSdkApprovalflow
shashisinghjc Feb 23, 2026
abe8f4c
changelog updated for v2
shashisinghjc Feb 23, 2026
9f4a1d8
Tests updated for New-JcSdkApprovalFlow
shashisinghjc Feb 23, 2026
63a26eb
Remove-JcSdkApprovalFlow & New-JcSdkApprovalFlow test updated.
shashisinghjc Feb 23, 2026
0c4d441
changelog address & CI permission
jworkmanjc Feb 25, 2026
53855ad
Merge branch 'CUT-4022_AccessRequests' of ssh://github.com/TheJumpClo…
jworkmanjc Feb 25, 2026
96a17f9
trim datetime moduleValidation tests
jworkmanjc Feb 25, 2026
c1e4cfb
generate /w docs from master branch
jworkmanjc Feb 26, 2026
0cd2712
date
jworkmanjc Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
100 changes: 91 additions & 9 deletions .github/workflows/jcapi-powershell-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ on:
pull_request:
branches:
- master

permissions:
contents: read
pull-requests: read
actions: write

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
Expand Down Expand Up @@ -186,7 +192,7 @@ jobs:

Build-SDK-V1:
needs: ["Setup-Build-Dependencies", "Check-PR-Labels", "Validate-SDK-Module"]
if: contains(github.event.pull_request.labels.*.name, 'v1') || contains(github.event.pull_request.labels.*.name, 'v2')
if: contains(github.event.pull_request.labels.*.name, 'v1')
runs-on: ubuntu-latest
timeout-minutes: 70
steps:
Expand Down Expand Up @@ -296,7 +302,7 @@ jobs:

Test-SDK-V1:
needs: ["Build-SDK-V1", "Check-PR-Labels"]
if: contains(github.event.pull_request.labels.*.name, 'v1') || contains(github.event.pull_request.labels.*.name, 'v2')
if: contains(github.event.pull_request.labels.*.name, 'v1')
runs-on: ubuntu-latest
timeout-minutes: 70
steps:
Expand Down Expand Up @@ -324,9 +330,9 @@ jobs:
$ErrorActionnPreference = 'Stop'
./Test-Module.ps1 -JCApiKey:($env:PESTER_APIKEY) -JCOrgId:($env:PESTER_ORGID) -JCApiKeyMTP:($env:PESTER_MSP_APIKEY) -JCProviderId:($env:PESTER_PROVIDERID) -ExcludeTagList:("MTP") -IncludeTagList:("*") -testModulePath:("./SDKs/PowerShell/JumpCloud.SDK.V1/test-module.ps1")

Test-SDK-V2:
needs: ["Build-SDK-V1", "Build-SDK-V2", "Check-PR-Labels"]
if: contains(github.event.pull_request.labels.*.name, 'v2')
Test-SDK-V2-Only:
needs: ["Build-SDK-V2", "Check-PR-Labels"]
if: contains(github.event.pull_request.labels.*.name, 'v2') && !contains(github.event.pull_request.labels.*.name, 'v1')
runs-on: ubuntu-latest
timeout-minutes: 70
steps:
Expand Down Expand Up @@ -383,13 +389,51 @@ jobs:
$ErrorActionnPreference = 'Stop'
./Test-Module.ps1 -JCApiKey:($env:PESTER_APIKEY) -JCOrgId:($env:PESTER_ORGID) -JCApiKeyMTP:($env:PESTER_MSP_APIKEY) -JCProviderId:($env:PESTER_PROVIDERID) -ExcludeTagList:("MTP") -IncludeTagList:("*") -testModulePath:("./SDKs/PowerShell/JumpCloud.SDK.V2/test-module.ps1")

Test-SDK-V2-With-V1:
needs: ["Build-SDK-V1", "Build-SDK-V2", "Check-PR-Labels"]
if: contains(github.event.pull_request.labels.*.name, 'v2') && contains(github.event.pull_request.labels.*.name, 'v1')
runs-on: ubuntu-latest
timeout-minutes: 70
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: "/home/runner/.local/share/powershell/Modules/"
key: PS-Dependencies
- uses: actions/download-artifact@v4
with:
name: build-JumpCloud.SDK.V1
path: /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/
- name: Unzip JumpCloud.SDK.V1 module
shell: pwsh
run: |
Expand-Archive -Path /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/JumpCloud.SDK.V1.zip -DestinationPath /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/ -Force
- uses: actions/download-artifact@v4
with:
name: build-JumpCloud.SDK.V2
path: /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/
- name: Unzip JumpCloud.SDK.V2 module
shell: pwsh
run: |
Expand-Archive -Path /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/JumpCloud.SDK.V2.zip -DestinationPath /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/ -Force
- name: Test JumpCloud.SDK.V2
shell: pwsh
env:
PESTER_APIKEY: ${{ secrets.PESTER_APIKEY }}
PESTER_ORGID: ${{ secrets.PESTER_ORGID }}
PESTER_MSP_APIKEY: ${{ secrets.PESTER_MSP_APIKEY }}
PESTER_PROVIDERID: ${{ secrets.PESTER_PROVIDERID }}
run: |
$ErrorActionnPreference = 'Stop'
./Test-Module.ps1 -JCApiKey:($env:PESTER_APIKEY) -JCOrgId:($env:PESTER_ORGID) -JCApiKeyMTP:($env:PESTER_MSP_APIKEY) -JCProviderId:($env:PESTER_PROVIDERID) -ExcludeTagList:("MTP") -IncludeTagList:("*") -testModulePath:("./SDKs/PowerShell/JumpCloud.SDK.V2/test-module.ps1")

## ----------------------------------------------------------------
## MTP Test Jobs
## ----------------------------------------------------------------

Test-SDK-MTP-V1:
needs: ["Build-SDK-V1", "Check-PR-Labels"]
if: contains(github.event.pull_request.labels.*.name, 'v1') || contains(github.event.pull_request.labels.*.name, 'v2')
if: contains(github.event.pull_request.labels.*.name, 'v1')
runs-on: ubuntu-latest
timeout-minutes: 70
steps:
Expand Down Expand Up @@ -417,9 +461,9 @@ jobs:
$ErrorActionnPreference = 'Stop'
./Test-Module.ps1 -JCApiKey:($env:PESTER_APIKEY) -JCOrgId:($env:PESTER_ORGID) -JCApiKeyMTP:($env:PESTER_MSP_APIKEY) -JCProviderId:($env:PESTER_PROVIDERID) -ExcludeTagList:("None") -IncludeTagList:("MTP") -testModulePath:("./SDKs/PowerShell/JumpCloud.SDK.V1/test-module.ps1")

Test-SDK-MTP-V2:
needs: ["Build-SDK-V1", "Build-SDK-V2", "Check-PR-Labels"]
if: contains(github.event.pull_request.labels.*.name, 'v2')
Test-SDK-MTP-V2-Only:
needs: ["Build-SDK-V2", "Check-PR-Labels"]
if: contains(github.event.pull_request.labels.*.name, 'v2') && !contains(github.event.pull_request.labels.*.name, 'v1')
runs-on: ubuntu-latest
timeout-minutes: 70
steps:
Expand Down Expand Up @@ -465,6 +509,44 @@ jobs:
Remove-Item -Path $versionedDir.FullName -Force

Write-Host "Module '$moduleName' is now correctly placed at '$moduleDir'."
- name: Test MTP JumpCloud.SDK.V2
shell: pwsh
env:
PESTER_APIKEY: ${{ secrets.PESTER_APIKEY }}
PESTER_ORGID: ${{ secrets.PESTER_ORGID }}
PESTER_MSP_APIKEY: ${{ secrets.PESTER_MSP_APIKEY }}
PESTER_PROVIDERID: ${{ secrets.PESTER_PROVIDERID }}
run: |
$ErrorActionnPreference = 'Stop'
./Test-Module.ps1 -JCApiKey:($env:PESTER_APIKEY) -JCOrgId:($env:PESTER_ORGID) -JCApiKeyMTP:($env:PESTER_MSP_APIKEY) -JCProviderId:($env:PESTER_PROVIDERID) -ExcludeTagList:("None") -IncludeTagList:("MTP") -testModulePath:("./SDKs/PowerShell/JumpCloud.SDK.V2/test-module.ps1")

Test-SDK-MTP-V2-With-V1:
needs: ["Build-SDK-V1", "Build-SDK-V2", "Check-PR-Labels"]
if: contains(github.event.pull_request.labels.*.name, 'v2') && contains(github.event.pull_request.labels.*.name, 'v1')
runs-on: ubuntu-latest
timeout-minutes: 70
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: "/home/runner/.local/share/powershell/Modules/"
key: PS-Dependencies
- uses: actions/download-artifact@v4
with:
name: build-JumpCloud.SDK.V1
path: /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/
- name: Unzip JumpCloud.SDK.V1 module
shell: pwsh
run: |
Expand-Archive -Path /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/JumpCloud.SDK.V1.zip -DestinationPath /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/ -Force
- uses: actions/download-artifact@v4
with:
name: build-JumpCloud.SDK.V2
path: /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/
- name: Unzip JumpCloud.SDK.V2 module
shell: pwsh
run: |
Expand-Archive -Path /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/JumpCloud.SDK.V2.zip -DestinationPath /home/runner/work/jcapi-powershell/jcapi-powershell/SDKs/PowerShell/ -Force
- name: Test MTP JumpCloud.SDK.V2
shell: pwsh
env:
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/jcapi-powershell-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ on:
- closed
branches:
- master

permissions:
contents: write # required for gh release create in Draft-Release-* jobs
pull-requests: read
actions: read

jobs:
Check-PR-Labels:
if: github.event.pull_request.merged == true
Expand Down Expand Up @@ -160,9 +166,9 @@ jobs:
Manual-Approval-Release:
needs: [Draft-Release-V1, Draft-Release-V2, Draft-Release-DI]
if: |
always() &&
(needs.Draft-Release-V1.result == 'success' ||
needs.Draft-Release-V2.result == 'success' ||
always() &&
(needs.Draft-Release-V1.result == 'success' ||
needs.Draft-Release-V2.result == 'success' ||
needs.Draft-Release-DI.result == 'success')
environment: PublishToPSGallery
runs-on: ubuntu-latest
Expand Down
1 change: 1 addition & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ regexTarget = "match"
description = "ignore REPLACE_KEY_VALUE in curl documentation"
regexes = [
'''REPLACE_KEY_VALUE''',
'''SOME_STRING_VALUE'''
]
23 changes: 19 additions & 4 deletions ApiTransform.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,24 @@ $TransformConfig = [Ordered]@{
'workdays_post' = 'Workday_Create';
'workdays_put' = 'Workday_Set';
'workdays_workers' = 'WorkdayWorker_Get';
# 'AccessRequestApi_CreateAccessRequest' = 'UserAccessRequest_Create';
# 'AccessRequestApi_GetAccessRequest' = 'UserAccessRequest_Get';
# 'AccessRequestApi_UpdateAccessRequest' = 'UserAccessRequest_Set';
# 'AccessRequestApi_RevokeAccessRequest' = 'UserAccessRequest_Delete';
'WorkflowAccessRequestApi_UserApprovalRequest' = 'AccessRequestApproval_Set'
'WorkflowAccessRequestApi_GetAllWorkflowAccessRequests' = 'AccessRequest_List'
'WorkflowAccessRequestApi_GetWorkflowAccessRequests' = 'AccessRequest_Get';
# 'WorkflowAccessRequestApi_CreateWorkflowAccessRequest' = 'AccessRequest_Create' # unsure how this endpoint works/ removing from CUT-4022
'WorkflowAccessRequestApi_UpdateWorkflowAccessRequests' = 'AccessRequest_Set'
'WorkflowAccessRequestApi_GetAccessRequestApprovalProgressAdminPortal' = 'AccessRequestProgress_Get'
'AccessWorkflowApi_GetAllAccessWorkFlows' = 'ApprovalFlow_List'
'AccessWorkflowApi_CreateAccessWorkflow' = 'ApprovalFlow_Create'
'AccessWorkflowApi_DeleteAccessWorkflow' = 'ApprovalFlow_Delete'
'AccessWorkflowApi_GetAccessWorkflow' = 'ApprovalFlow_Get'
'AccessWorkflowApi_UpdateAccessWorkflow' = 'ApprovalFlow_Set'
'AccessWorkflowSettingsApi_GetAccessWorkflowSettings' = 'ApprovalFlowSettings_Get'
# 'AccessWorkflowSettingsApi_CreateAccessWorkflowSettings' = 'WorkflowSettings_Create' # this should be created automatically, no need to include the function in the SDK
'AccessWorkflowSettingsApi_UpdateAccessWorkflowSettings' = 'ApprovalFlowSettings_Set'
};
ExcludedList = @(
# Excluded items are listed by Path and do not include opperation type (put, post, get, etc.)
Expand Down Expand Up @@ -507,10 +525,7 @@ $TransformConfig = [Ordered]@{
'/integrations/autotask/{UUID}/mappings',
'/integrations/{integration_type}/{UUID}/errors',
'/providers/{provider_id}/integrations/autotask',
'/softwareapps/{software_app_id}/retry-installation',
'/accessrequests/',
'/accessrequests/{accessId}',
'/accessrequests/{accessId}/revoke'
'/softwareapps/{software_app_id}/retry-installation'
)
}
}
Expand Down
55 changes: 22 additions & 33 deletions Configs/JumpCloud.SDK.V2.yaml
Original file line number Diff line number Diff line change
@@ -1,44 +1,33 @@
customFunctionPrefix: JcSdk
prefix: JcSdkInternal
debug: true
verbose: true
# Values
# azure: false
powershell: true
help-link-prefix: https://github.com/TheJumpCloud/jcapi-powershell/tree/$(branch)/SDKs/PowerShell/
sample-generation: true
clear-output-folder: true
input-file:
- SwaggerSpecs/JumpCloud.SDK.V2.json
directive:
- hide: true
where:
prefix: JcSdk
branch: master
namespace: JumpCloud.SDK.V2
metadata:
authors: JumpCloud
owners: JumpCloud
description: The JumpCloud V2 PowerShell SDK
copyright: (c) JumpCloud. All rights reserved.
companyName: JumpCloud
formatsToProcess: []
tags: JumpCloud, DaaS, Jump, Cloud, Directory
requireLicenseAcceptance: false
licenseUri: https://github.com/TheJumpCloud/jcapi-powershell/tree/$(branch)/LICENSE
projectUri: https://github.com/TheJumpCloud/jcapi-powershell/tree/$(branch)/SDKs/PowerShell/JumpCloud.SDK.V2/
owners: JumpCloud
iconUri: https://console.jumpcloud.com/img/login-viewport-logo.png
tags: JumpCloud, DaaS, Jump, Cloud, Directory
formatsToProcess: []

# Names
prefix: JcSdkInternal
customFunctionPrefix: JcSdk
help-link-prefix: https://github.com/TheJumpCloud/jcapi-powershell/tree/$(branch)/SDKs/PowerShell/

# Folders
clear-output-folder: true
output-folder: SDKs/PowerShell/JumpCloud.SDK.V2
base-folder: '..'

input-file:
- SwaggerSpecs/JumpCloud.SDK.V2.json
# title: JumpCloud.SDK.V2
authors: JumpCloud
projectUri: https://github.com/TheJumpCloud/jcapi-powershell/tree/$(branch)/SDKs/PowerShell/JumpCloud.SDK.V2/
verbose: true
module-name: JumpCloud.SDK.V2
namespace: JumpCloud.SDK.V2
sample-generation: true
module-version: 0.1.2
output-folder: SDKs/PowerShell/JumpCloud.SDK.V2
dll-name: JumpCloud.SDK.V2.private

directive:
- where:
prefix: JcSdk
hide: true
# Prevent response flattening: https://github.com/Azure/autorest.powershell/issues/743
# inlining-threshold: 0
module-version: 0.2.0
powershell: true
base-folder: ..
Loading
Loading