From f5ebbbd3f89eb759a1aed6fbe65f299eae455277 Mon Sep 17 00:00:00 2001 From: GitHub Action Bot Date: Fri, 30 Aug 2024 21:51:15 +0000 Subject: [PATCH] Automated commit by github action: 10639582288 --- ...ource-app-access-profiles-bulk-remove.yaml | 50 ++++ .../ears-source-app-access-profiles.yaml | 62 +++++ .../paths/ears-source-app-bulk-update.yaml | 35 +++ .../idn/beta/paths/ears-source-app.yaml | 223 ++++++++++++++++++ .../idn/beta/paths/ears-source-apps-all.yaml | 82 +++++++ .../beta/paths/ears-source-apps-assigned.yaml | 73 ++++++ .../idn/beta/paths/ears-source-apps.yaml | 113 +++++++++ .../ears-user-app-available-accounts.yaml | 38 +++ .../idn/beta/paths/ears-user-app.yaml | 56 +++++ .../idn/beta/paths/ears-user-apps-all.yaml | 64 +++++ .../idn/beta/paths/ears-user-apps.yaml | 59 +++++ .../schemas/app/AccessProfileDetails.yaml | 128 ++++++++++ .../beta/schemas/app/AppAccountDetails.yaml | 34 +++ .../idn/beta/schemas/app/SourceApp.yaml | 94 ++++++++ .../app/SourceAppBulkUpdateRequest.yaml | 35 +++ .../beta/schemas/app/SourceAppCreateDto.yaml | 39 +++ .../beta/schemas/app/SourceAppPatchDto.yaml | 104 ++++++++ .../idn/beta/schemas/app/UserApp.yaml | 100 ++++++++ .../idn/beta/schemas/app/matchTerm.yaml | 40 ++++ .../idn/beta/schemas/app/selector.yaml | 40 ++++ static/api-specs/idn/sailpoint-api.beta.yaml | 22 ++ 21 files changed, 1491 insertions(+) create mode 100644 static/api-specs/idn/beta/paths/ears-source-app-access-profiles-bulk-remove.yaml create mode 100644 static/api-specs/idn/beta/paths/ears-source-app-access-profiles.yaml create mode 100644 static/api-specs/idn/beta/paths/ears-source-app-bulk-update.yaml create mode 100644 static/api-specs/idn/beta/paths/ears-source-app.yaml create mode 100644 static/api-specs/idn/beta/paths/ears-source-apps-all.yaml create mode 100644 static/api-specs/idn/beta/paths/ears-source-apps-assigned.yaml create mode 100644 static/api-specs/idn/beta/paths/ears-source-apps.yaml create mode 100644 static/api-specs/idn/beta/paths/ears-user-app-available-accounts.yaml create mode 100644 static/api-specs/idn/beta/paths/ears-user-app.yaml create mode 100644 static/api-specs/idn/beta/paths/ears-user-apps-all.yaml create mode 100644 static/api-specs/idn/beta/paths/ears-user-apps.yaml create mode 100644 static/api-specs/idn/beta/schemas/app/AccessProfileDetails.yaml create mode 100644 static/api-specs/idn/beta/schemas/app/AppAccountDetails.yaml create mode 100644 static/api-specs/idn/beta/schemas/app/SourceApp.yaml create mode 100644 static/api-specs/idn/beta/schemas/app/SourceAppBulkUpdateRequest.yaml create mode 100644 static/api-specs/idn/beta/schemas/app/SourceAppCreateDto.yaml create mode 100644 static/api-specs/idn/beta/schemas/app/SourceAppPatchDto.yaml create mode 100644 static/api-specs/idn/beta/schemas/app/UserApp.yaml create mode 100644 static/api-specs/idn/beta/schemas/app/matchTerm.yaml create mode 100644 static/api-specs/idn/beta/schemas/app/selector.yaml diff --git a/static/api-specs/idn/beta/paths/ears-source-app-access-profiles-bulk-remove.yaml b/static/api-specs/idn/beta/paths/ears-source-app-access-profiles-bulk-remove.yaml new file mode 100644 index 00000000000..19cd3fb2b99 --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-source-app-access-profiles-bulk-remove.yaml @@ -0,0 +1,50 @@ +post: + operationId: deleteAccessProfilesFromSourceAppByBulk + tags: + - Apps + summary: Bulk remove access profiles from the specified source app + security: + - UserContextAuth: [idn:app-roles:manage] + description: >- + This API returns the final list of access profiles for the specified source app after removing + parameters: + - name: id + in: path + description: ID of the source app + required: true + schema: + type: string + example: 2c91808a7813090a017814121e121518 + - $ref: '../../v3/parameters/limit.yaml' + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + type: string + description: List of access profile IDs for removal + example: [ + "c9575abb5e3a4e3db82b2f989a738aa2", + "c9dc28e148a24d65b3ccb5fb8ca5ddd9" + ] + responses: + '200': + description: The final list of access profiles for the specified source app + content: + application/json: + schema: + type: array + items: + $ref: '../schemas/app/AccessProfileDetails.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/ears-source-app-access-profiles.yaml b/static/api-specs/idn/beta/paths/ears-source-app-access-profiles.yaml new file mode 100644 index 00000000000..bb7a5b427db --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-source-app-access-profiles.yaml @@ -0,0 +1,62 @@ +get: + operationId: listAccessProfilesForSourceApp + tags: + - Apps + summary: List access profiles for the specified source app + security: + - UserContextAuth: [idn:app-roles:manage] + description: >- + This API returns the list of access profiles for the specified source app + parameters: + - name: id + in: path + description: ID of the source app + required: true + schema: + type: string + example: 2c91808a7813090a017814121e121518 + - $ref: '../../v3/parameters/limit.yaml' + - in: query + name: filters + schema: + type: string + description: >- + Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) + + + Filtering is supported for the following fields and operators: + + + **id**: *eq, in* + + + **name**: *eq, in* + + + **created**: *gt, lt, ge, le* + + + **modified**: *gt, lt, ge, le* + example: name eq "developer access profile" + required: false + style: form + explode: true + responses: + '200': + description: List of access profiles for the specified source app + content: + application/json: + schema: + type: array + items: + $ref: '../schemas/app/AccessProfileDetails.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' diff --git a/static/api-specs/idn/beta/paths/ears-source-app-bulk-update.yaml b/static/api-specs/idn/beta/paths/ears-source-app-bulk-update.yaml new file mode 100644 index 00000000000..e58e10ac4b1 --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-source-app-bulk-update.yaml @@ -0,0 +1,35 @@ +post: + operationId: updateSourceAppsInBulk + tags: + - Apps + summary: Bulk update source apps + description: >- + This API updates source apps using [JSON Patch](https://tools.ietf.org/html/rfc6902) syntax. It can update up to 50 source apps in a batch. + + The following fields can be updated: + **name**, **description**, **enabled**, **owner**, **provisionRequestEnabled**, **appCenterEnabled**, **accountSource**, + **matchAllAccounts**, and **accessProfiles**. + + Name, description and owner can't be empty or null. + security: + - UserContextAuth: [ idn:app-roles:manage ] + requestBody: + content: + application/json: + schema: + $ref: '../schemas/app/SourceAppBulkUpdateRequest.yaml' + responses: + '204': + $ref: "../../v3/responses/204.yaml" + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' diff --git a/static/api-specs/idn/beta/paths/ears-source-app.yaml b/static/api-specs/idn/beta/paths/ears-source-app.yaml new file mode 100644 index 00000000000..098d990a476 --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-source-app.yaml @@ -0,0 +1,223 @@ +get: + operationId: getSourceApp + tags: + - Apps + summary: Get source app by ID + description: >- + This API returns a source app by its ID. + security: + - UserContextAuth: [idn:app-roles:read] + parameters: + - name: id + in: path + description: ID of the source app + required: true + schema: + type: string + example: 2c91808a7813090a017814121e121518 + responses: + '200': + description: Responds with the source app. + content: + application/json: + schema: + $ref: '../schemas/app/SourceApp.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' +patch: + operationId: patchSourceApp + tags: + - Apps + summary: Patch source app by ID + description: >- + This API updates an existing source app using [JSON Patch](https://tools.ietf.org/html/rfc6902) syntax. + + The following fields are patchable: + **name**, **description**, **enabled**, **owner**, **provisionRequestEnabled**, **appCenterEnabled**, **accountSource**, + **matchAllAccounts** and **accessProfiles**. + + Name, description and owner can't be empty or null. + security: + - UserContextAuth: [idn:app-roles:manage] + parameters: + - name: id + in: path + description: ID of the source app to patch + required: true + schema: + type: string + example: 2c91808a7813090a017814121e121518 + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: '../schemas/JsonPatchOperation.yaml' + example: [ + { + "op": "replace", + "path": "/enabled", + "value": true + } + ] + examples: + Make an app enabled and matchAllAccounts in one call: + description: This example shows how multiple fields may be updated with a single patch call. + value: + [ + { + "op": "replace", + "path": "/enabled", + "value": true + }, + { + "op": "replace", + "path": "/matchAllAccounts", + "value": true + } + ] + Replace an owner for an source app: + description: >- + This example shows how to use patch to replace the source app's owner by replacing the + owner's info. + value: + [ + { + "op": "replace", + "path": "/owner", + "value": { + "id": "2c9180858315595501831958427e5424" + } + } + ] + Update the description for the source app: + description: >- + This example shows how to use patch to update a description for the source app. + value: + [ + { + "op": "replace", + "path": "/description", + "value": "new description for the source app" + } + ] + Update the name for the source app: + description: >- + This example shows how to use patch to update the source app's name. + value: + [ + { + "op": "replace", + "path": "/name", + "value": "source app new name" + } + ] + Add access profiles: + description: Add one or more access profiles to the end of the list + value: + [ + { + "op": "add", + "path": "/accessProfiles", + "value": [ + "2c9180857725c14301772a93bb77242d", + "c9575abb5e3a4e3db82b2f989a738aa2" + ] + } + ] + Insert access profile: + description: Add an access profile at the beginning of the access profile list + value: + [ + { + "op": "add", + "path": "/accessProfiles/0", + "value": "2c9180857725c14301772a93bb77242d" + } + ] + Replace access profiles: + description: Replace all access profiles with a new list of access profiles + value: + [ + { + "op": "replace", + "path": "/accessProfiles", + "value": [ + "2c9180857725c14301772a93bb77242d", + "c9575abb5e3a4e3db82b2f989a738aa2" + ] + } + ] + Remove access profile: + description: Remove the first access profile in the list + value: + [ + { + "op": "remove", + "path": "/accessProfiles/0" + } + ] + responses: + '200': + description: Responds with the source app as updated. + content: + application/json: + schema: + $ref: '../schemas/app/SourceAppPatchDto.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' +delete: + operationId: deleteSourceApp + security: + - UserContextAuth: [idn:app-roles:manage, idn:app-roles:delete] + tags: + - Apps + summary: Delete source app by ID + description: >- + Use this API to delete a specific source app + parameters: + - in: path + name: id + schema: + type: string + required: true + description: source app ID. + example: 2c9180835d191a86015d28455b4a2329 + responses: + '200': + description: Responds with the source app as deleted. + content: + application/json: + schema: + $ref: '../schemas/app/SourceApp.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' diff --git a/static/api-specs/idn/beta/paths/ears-source-apps-all.yaml b/static/api-specs/idn/beta/paths/ears-source-apps-all.yaml new file mode 100644 index 00000000000..bc27d50dfd3 --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-source-apps-all.yaml @@ -0,0 +1,82 @@ +get: + operationId: listAllSourceApp + tags: + - Apps + summary: List all source apps + security: + - UserContextAuth: [idn:app-roles:manage] + description: >- + This API returns the list of all source apps for the org. + + + A token with ORG_ADMIN authority is required to call this API. + parameters: + - $ref: '../../v3/parameters/limit.yaml' + - $ref: '../../v3/parameters/count.yaml' + - in: query + name: sorters + schema: + type: string + format: comma-separated + description: >- + Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) + + + Sorting is supported for the following fields: **id, name, created, modified, owner.id, accountSource.id** + example: name,-modified + required: false + style: form + explode: true + - in: query + name: filters + schema: + type: string + description: >- + Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) + + + Filtering is supported for the following fields and operators: + + + **id**: *eq, in* + + + **name**: *eq, in, co, sw* + + + **created**: *gt, lt, ge, le* + + + **modified**: *gt, lt, ge, le* + + + **owner.id**: *eq, in* + + + **accountSource.id**: *eq, in* + + + **enabled**: *eq* + example: enabled eq true + required: false + style: form + explode: true + responses: + '200': + description: List of source apps + content: + application/json: + schema: + type: array + items: + $ref: '../schemas/app/SourceApp.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/ears-source-apps-assigned.yaml b/static/api-specs/idn/beta/paths/ears-source-apps-assigned.yaml new file mode 100644 index 00000000000..dfa0c844ddf --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-source-apps-assigned.yaml @@ -0,0 +1,73 @@ +get: + operationId: listAssignedSourceApp + tags: + - Apps + summary: List assigned source apps + security: + - UserContextAuth: [idn:app-roles:read] + description: >- + This API returns the list of source apps assigned for logged in user. + parameters: + - $ref: '../../v3/parameters/limit.yaml' + - $ref: '../../v3/parameters/count.yaml' + - in: query + name: sorters + schema: + type: string + format: comma-separated + description: >- + Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) + + + Sorting is supported for the following fields: **id, name, created, modified, accountSource.id** + example: name,-modified + required: false + style: form + explode: true + - in: query + name: filters + schema: + type: string + description: >- + Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) + + + Filtering is supported for the following fields and operators: + + + **id**: *eq, in* + + + **name**: *eq, in, co, sw* + + + **created**: *gt, lt, ge, le* + + + **modified**: *gt, lt, ge, le* + + + **accountSource.id**: *eq, in* + example: name eq "source app name" + required: false + style: form + explode: true + responses: + '200': + description: List of source apps + content: + application/json: + schema: + type: array + items: + $ref: '../schemas/app/SourceApp.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' diff --git a/static/api-specs/idn/beta/paths/ears-source-apps.yaml b/static/api-specs/idn/beta/paths/ears-source-apps.yaml new file mode 100644 index 00000000000..b4262cf9264 --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-source-apps.yaml @@ -0,0 +1,113 @@ +get: + operationId: listAvailableSourceApps + tags: + - Apps + summary: List available source apps + security: + - UserContextAuth: [idn:app-roles:read] + description: >- + This API returns the list of source apps available for access request. + parameters: + - $ref: '../../v3/parameters/limit.yaml' + - $ref: '../../v3/parameters/count.yaml' + - in: query + name: sorters + schema: + type: string + format: comma-separated + description: >- + Sort results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results) + + + Sorting is supported for the following fields: **id, name, created, modified, owner.id, accountSource.id** + example: name,-modified + required: false + style: form + explode: true + - in: query + name: filters + schema: + type: string + description: >- + Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) + + + Filtering is supported for the following fields and operators: + + + **id**: *eq, in* + + + **name**: *eq, in, co, sw* + + + **created**: *gt, lt, ge, le* + + + **modified**: *gt, lt, ge, le* + + + **accountSource.id**: *eq, in* + example: name eq "source app name" + required: false + style: form + explode: true + responses: + '200': + description: List of source apps + content: + application/json: + schema: + type: array + items: + $ref: '../schemas/app/SourceApp.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' +post: + operationId: createSourceApp + tags: + - Apps + summary: Create source app + description: >- + This endpoint creates a source app using the given source app payload + security: + - UserContextAuth: [idn:app-roles:manage] + requestBody: + required: true + content: + application/json: + schema: + $ref: '../schemas/app/SourceAppCreateDto.yaml' + example: { + "name": "new app name", + "description": "app description", + "matchAllAccounts": true, + "accountSource": { + "id": "edcb0951812949d085b60cd8bf35bc78" + } + } + responses: + '200': + description: Responds with the source app as created. + content: + application/json: + schema: + $ref: '../schemas/app/SourceApp.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' diff --git a/static/api-specs/idn/beta/paths/ears-user-app-available-accounts.yaml b/static/api-specs/idn/beta/paths/ears-user-app-available-accounts.yaml new file mode 100644 index 00000000000..77c037d3b16 --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-user-app-available-accounts.yaml @@ -0,0 +1,38 @@ +get: + operationId: listAvailableAccountsForUserApp + tags: + - Apps + summary: List available accounts for user app + security: + - UserContextAuth: [idn:app-roles:read] + description: >- + This API returns the list of available accounts for the specified user app. The user app needs to belong lo logged in user. + parameters: + - name: id + in: path + description: ID of the user app + required: true + schema: + type: string + example: 2c91808a7813090a017814121e121518 + - $ref: '../../v3/parameters/limit.yaml' + - $ref: '../../v3/parameters/count.yaml' + responses: + '200': + description: List of available accounts for the specified user app + content: + application/json: + schema: + type: array + items: + $ref: '../schemas/app/AppAccountDetails.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/ears-user-app.yaml b/static/api-specs/idn/beta/paths/ears-user-app.yaml new file mode 100644 index 00000000000..87e37d8e9da --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-user-app.yaml @@ -0,0 +1,56 @@ +patch: + operationId: patchUserApp + tags: + - Apps + summary: Patch user app by ID + description: >- + This API updates an existing user app using [JSON Patch](https://tools.ietf.org/html/rfc6902) syntax. + + The following fields are patchable: + **account** + security: + - UserContextAuth: [idn:app-roles:read] + parameters: + - name: id + in: path + description: ID of the user app to patch + required: true + schema: + type: string + example: 2c91808a7813090a017814121e121518 + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: '../schemas/JsonPatchOperation.yaml' + example: [ + { + "op": "replace", + "path": "/account", + "value": { + "id": "0891808a7813090a017814121e121518", + "type": "ACCOUNT" + } + } + ] + responses: + '200': + description: Responds with the user app as updated. + content: + application/json: + schema: + $ref: '../schemas/app/UserApp.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '404': + $ref: '../../v3/responses/404.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' diff --git a/static/api-specs/idn/beta/paths/ears-user-apps-all.yaml b/static/api-specs/idn/beta/paths/ears-user-apps-all.yaml new file mode 100644 index 00000000000..0f7b7ea6403 --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-user-apps-all.yaml @@ -0,0 +1,64 @@ +get: + operationId: listAllUserApps + tags: + - Apps + summary: List all user apps + security: + - UserContextAuth: [idn:app-roles:manage] + description: >- + This API returns the list of all user apps with specified filters. + + This API must be used with **filters** query parameter. + parameters: + - $ref: '../../v3/parameters/limit.yaml' + - $ref: '../../v3/parameters/count.yaml' + - in: query + name: filters + schema: + type: string + description: >- + Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) + + + Filtering is supported for the following fields and operators: + + + **id**: *eq* + + + **ownerId**: *eq* + + + **ownerName**: *eq, sw* + + + **ownerAlias**: *eq, sw* + + + **accountId**: *eq* + + + **sourceAppId**: *eq* + example: name eq "user app name" + required: true + style: form + explode: true + responses: + '200': + description: List of user apps + content: + application/json: + schema: + type: array + items: + $ref: '../schemas/app/UserApp.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/paths/ears-user-apps.yaml b/static/api-specs/idn/beta/paths/ears-user-apps.yaml new file mode 100644 index 00000000000..76d0918f8f6 --- /dev/null +++ b/static/api-specs/idn/beta/paths/ears-user-apps.yaml @@ -0,0 +1,59 @@ +get: + operationId: listOwnedUserApps + tags: + - Apps + summary: List owned user apps + security: + - UserContextAuth: [idn:app-roles:read] + description: >- + This API returns the list of user apps assigned to logged in user + parameters: + - $ref: '../../v3/parameters/limit.yaml' + - $ref: '../../v3/parameters/count.yaml' + - in: query + name: filters + schema: + type: string + description: >- + Filter results using the standard syntax described in [V3 API Standard Collection Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#filtering-results) + + + Filtering is supported for the following fields and operators: + + + **id**: *eq* + + + **ownerName**: *eq, sw* + + + **ownerAlias**: *eq, sw* + + + **accountId**: *eq* + + + **sourceAppId**: *eq* + example: name eq "user app name" + required: false + style: form + explode: true + responses: + '200': + description: List of user apps + content: + application/json: + schema: + type: array + items: + $ref: '../schemas/app/UserApp.yaml' + '400': + $ref: '../../v3/responses/400.yaml' + '401': + $ref: '../../v3/responses/401.yaml' + '403': + $ref: '../../v3/responses/403.yaml' + '429': + $ref: '../../v3/responses/429.yaml' + '500': + $ref: '../../v3/responses/500.yaml' \ No newline at end of file diff --git a/static/api-specs/idn/beta/schemas/app/AccessProfileDetails.yaml b/static/api-specs/idn/beta/schemas/app/AccessProfileDetails.yaml new file mode 100644 index 00000000000..083e395ca13 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/app/AccessProfileDetails.yaml @@ -0,0 +1,128 @@ +type: object +properties: + id: + type: string + description: The ID of the Access Profile + example: 2c91808a7190d06e01719938fcd20792 + name: + type: string + description: Name of the Access Profile + example: Employee-database-read-write + description: + type: string + nullable: true + description: Information about the Access Profile + example: Collection of entitlements to read/write the employee database + created: + type: string + description: Date the Access Profile was created + format: 'date-time' + example: '2021-03-01T22:32:58.104Z' + modified: + type: string + description: Date the Access Profile was last modified. + format: 'date-time' + example: '2021-03-02T20:22:28.104Z' + disabled: + type: boolean + default: true + description: Whether the Access Profile is enabled. + example: true + requestable: + type: boolean + default: false + description: Whether the Access Profile is requestable via access request. + example: true + protected: + type: boolean + default: false + description: Whether the Access Profile is protected. + example: false + ownerId: + type: string + description: The owner ID of the Access Profile + example: 9870808a7190d06e01719938fcd20792 + sourceId: + type: integer + format: int64 + nullable: true + description: The source ID of the Access Profile + example: 10360661 + sourceName: + type: string + description: The source name of the Access Profile + example: AD Source + appId: + type: integer + format: int64 + nullable: true + description: The source app ID of the Access Profile + example: 10360661 + appName: + type: string + nullable: true + description: The source app name of the Access Profile + example: mail app + applicationId: + type: string + description: The id of the application + example: edcb0951812949d085b60cd8bf35bc78 + type: + type: string + description: The type of the access profile + example: source + entitlements: + type: array + items: + type: string + description: List of IDs of entitlements + example: [ + "2c9180857725c14301772a93bb77242d", + "c9dc28e148a24d65b3ccb5fb8ca5ddd9" + ] + entitlementCount: + type: integer + format: int32 + example: 12 + description: The number of entitlements in the access profile + segments: + type: array + items: + type: string + description: List of IDs of segments, if any, to which this Access Profile is assigned. + example: [ + "f7b1b8a3-5fed-4fd4-ad29-82014e137e19", + "29cb6c06-1da8-43ea-8be4-b3125f248f2a" + ] + approvalSchemes: + type: string + description: >- + Comma-separated list of approval schemes. Each approval scheme is one of - + manager - appOwner - sourceOwner - accessProfileOwner - workgroup: + example: accessProfileOwner + revokeRequestApprovalSchemes: + type: string + description: >- + Comma-separated list of revoke request approval schemes. Each approval + scheme is one of - manager - sourceOwner - accessProfileOwner - workgroup: + example: accessProfileOwner + requestCommentsRequired: + type: boolean + default: false + description: Whether the access profile require request comment for access request. + example: true + deniedCommentsRequired: + type: boolean + default: false + description: Whether denied comment is required when access request is denied. + example: true + accountSelector: + type: object + description: How to select account when there are multiple accounts for the user + properties: + selectors: + type: array + nullable: true + items: + $ref: './selector.yaml' + diff --git a/static/api-specs/idn/beta/schemas/app/AppAccountDetails.yaml b/static/api-specs/idn/beta/schemas/app/AppAccountDetails.yaml new file mode 100644 index 00000000000..8321eccfa49 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/app/AppAccountDetails.yaml @@ -0,0 +1,34 @@ +type: object +properties: + appId: + type: string + description: The source app ID + example: fbf4f72280304f1a8bc808fc2a3bcf7b + appDisplayName: + type: string + description: The source app display name + example: AD source app + sourceAccount: + type: object + properties: + id: + type: string + description: The account ID + example: fbf4f72280304f1a8bc808fc2a3bcf7b + nativeIdentity: + type: string + description: The native identity of account + example: CN=Abby Smith,OU=Austin,OU=Americas,OU=Demo,DC=seri,DC=acme,DC=com + displayName: + type: string + description: The display name of account + example: Abby Smith + sourceId: + type: string + description: The source ID of account + example: 10efa58ea3954883b52bf74f489ce8f9 + sourceDisplayName: + type: string + description: The source name of account + example: ODS-AD-SOURCE + diff --git a/static/api-specs/idn/beta/schemas/app/SourceApp.yaml b/static/api-specs/idn/beta/schemas/app/SourceApp.yaml new file mode 100644 index 00000000000..fbbce986035 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/app/SourceApp.yaml @@ -0,0 +1,94 @@ +type: object +properties: + id: + type: string + description: The source app id + example: "2c91808874ff91550175097daaec161c" + cloudAppId: + type: string + description: The deprecated source app id + example: "9854520" + name: + type: string + description: The source app name + example: "my app" + created: + type: string + description: Time when the source app was created + format: 'date-time' + example: "2020-10-08T18:33:52.029Z" + modified: + type: string + description: Time when the source app was last modified + format: 'date-time' + example: "2020-10-08T18:33:52.029Z" + enabled: + type: boolean + default: false + description: True if the source app is enabled + example: true + provisionRequestEnabled: + type: boolean + default: false + description: True if the source app is provision request enabled + example: true + description: + type: string + nullable: false + description: The description of the source app + example: "the source app for engineers" + matchAllAccounts: + type: boolean + default: false + description: True if the source app match all accounts + example: true + appCenterEnabled: + type: boolean + default: true + description: True if the source app is shown in the app center + example: true + accountSource: + type: object + nullable: true + properties: + id: + type: string + description: The source ID + example: 2c9180827ca885d7017ca8ce28a000eb + type: + type: string + description: The source type, will always be "SOURCE" + example: SOURCE + name: + type: string + description: The source name + example: ODS-AD-Source + useForPasswordManagement: + type: boolean + default: false + description: If the source is used for password management + example: ture + passwordPolicies: + type: array + nullable: true + description: The password policies for the source + items: + $ref: '../../../v3/schemas/BaseReferenceDto.yaml' + example: + [ + { + "type": "PASSWORD_POLICY", + "id": "006a072ecc6647f68bba9f4a4ad34649", + "name": "Password Policy 1" + } + ] + owner: + type: object + nullable: true + allOf: + - $ref: '../../../v3/schemas/BaseReferenceDto.yaml' + description: The owner of source app + example: + id: 85d173e7d57e496569df763231d6deb6a + type: IDENTITY + name: John Doe diff --git a/static/api-specs/idn/beta/schemas/app/SourceAppBulkUpdateRequest.yaml b/static/api-specs/idn/beta/schemas/app/SourceAppBulkUpdateRequest.yaml new file mode 100644 index 00000000000..2a36227af84 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/app/SourceAppBulkUpdateRequest.yaml @@ -0,0 +1,35 @@ +type: object +properties: + appIds: + type: array + description: List of source app ids to update + maxItems: 50 + items: + type: string + example: + [ + "2c91808a7624751a01762f19d665220d", + "2c91808a7624751a01762f19d67c220e", + "2c91808a7624751a01762f19d692220f" + ] + jsonPatch: + type: array + items: + $ref: '../../../v3/schemas/JsonPatchOperation.yaml' + description: The JSONPatch payload used to update the source app. + example: + [ + { + "op": "replace", + "path": "/enabled", + "value": false + }, + { + "op": "replace", + "path": "/matchAllAccounts", + "value": false + } + ] +required: + - appIds + - jsonPatch diff --git a/static/api-specs/idn/beta/schemas/app/SourceAppCreateDto.yaml b/static/api-specs/idn/beta/schemas/app/SourceAppCreateDto.yaml new file mode 100644 index 00000000000..5ab2190f009 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/app/SourceAppCreateDto.yaml @@ -0,0 +1,39 @@ +type: object +required: + - name + - description + - accountSource +properties: + name: + type: string + description: The source app name + example: "my app" + description: + type: string + nullable: false + description: The description of the source app + example: "the source app for engineers" + matchAllAccounts: + type: boolean + default: false + description: True if the source app match all accounts + example: true + accountSource: + type: object + required: + - id + properties: + id: + type: string + nullable: false + description: The source ID + example: 2c9180827ca885d7017ca8ce28a000eb + type: + type: string + description: The source type, will always be "SOURCE" + example: SOURCE + name: + type: string + description: The source name + example: ODS-AD-Source + diff --git a/static/api-specs/idn/beta/schemas/app/SourceAppPatchDto.yaml b/static/api-specs/idn/beta/schemas/app/SourceAppPatchDto.yaml new file mode 100644 index 00000000000..098ed825ebf --- /dev/null +++ b/static/api-specs/idn/beta/schemas/app/SourceAppPatchDto.yaml @@ -0,0 +1,104 @@ +type: object +properties: + id: + type: string + description: The source app id + example: "2c91808874ff91550175097daaec161c" + cloudAppId: + type: string + description: The deprecated source app id + example: "9854520" + name: + type: string + description: The source app name + example: "my app" + created: + type: string + description: Time when the source app was created + format: 'date-time' + example: "2020-10-08T18:33:52.029Z" + modified: + type: string + description: Time when the source app was last modified + format: 'date-time' + example: "2020-10-08T18:33:52.029Z" + enabled: + type: boolean + default: false + description: True if the source app is enabled + example: true + provisionRequestEnabled: + type: boolean + default: false + description: True if the source app is provision request enabled + example: true + description: + type: string + nullable: false + description: The description of the source app + example: "the source app for engineers" + matchAllAccounts: + type: boolean + default: false + description: True if the source app match all accounts + example: true + appCenterEnabled: + type: boolean + default: true + description: True if the source app is shown in the app center + example: true + accessProfiles: + type: array + items: + type: string + nullable: true + description: List of IDs of access profiles + example: [ + "2c9180857725c14301772a93bb77242d", + "c9dc28e148a24d65b3ccb5fb8ca5ddd9" + ] + accountSource: + type: object + nullable: true + properties: + id: + type: string + description: The source ID + example: 2c9180827ca885d7017ca8ce28a000eb + type: + type: string + description: The source type, will always be "SOURCE" + example: SOURCE + name: + type: string + description: The source name + example: ODS-AD-Source + useForPasswordManagement: + type: boolean + default: false + description: If the source is used for password management + example: ture + passwordPolicies: + type: array + nullable: true + description: The password policies for the source + items: + $ref: '../../../v3/schemas/BaseReferenceDto.yaml' + example: + [ + { + "type": "PASSWORD_POLICY", + "id": "006a072ecc6647f68bba9f4a4ad34649", + "name": "Password Policy 1" + } + ] + owner: + type: object + nullable: true + allOf: + - $ref: '../../../v3/schemas/BaseReferenceDto.yaml' + description: The owner of source app + example: + id: 85d173e7d57e496569df763231d6deb6a + type: IDENTITY + name: John Doe diff --git a/static/api-specs/idn/beta/schemas/app/UserApp.yaml b/static/api-specs/idn/beta/schemas/app/UserApp.yaml new file mode 100644 index 00000000000..308311269ea --- /dev/null +++ b/static/api-specs/idn/beta/schemas/app/UserApp.yaml @@ -0,0 +1,100 @@ +type: object +properties: + id: + type: string + description: The user app id + example: "2c91808874ff91550175097daaec161c" + created: + type: string + description: Time when the user app was created + format: 'date-time' + example: "2020-10-08T18:33:52.029Z" + modified: + type: string + description: Time when the user app was last modified + format: 'date-time' + example: "2020-10-08T18:33:52.029Z" + hasMultipleAccounts: + type: boolean + default: false + description: True if the owner has multiple accounts for the source + example: false + useForPasswordManagement: + type: boolean + default: false + description: True if the source has password feature + example: true + provisionRequestEnabled: + type: boolean + default: false + description: True if the source app related to the user app is provision request enabled + example: true + appCenterEnabled: + type: boolean + default: true + description: True if the source app related to the user app is shown in the app center + example: true + sourceApp: + type: object + properties: + id: + type: string + description: the source app ID + example: "edcb0951812949d085b60cd8bf35bc78" + type: + type: string + description: It will always be "APPLICATION" + example: APPLICATION + name: + type: string + description: the source app name + example: test-app + source: + type: object + properties: + id: + type: string + description: the source ID + example: "9870808a7190d06e01719938fcd20792" + type: + type: string + description: It will always be "SOURCE" + example: SOURCE + name: + type: string + description: the source name + example: test-source + account: + type: object + properties: + id: + type: string + description: the account ID + example: "85d173e7d57e496569df763231d6deb6a" + type: + type: string + description: It will always be "ACCOUNT" + example: ACCOUNT + name: + type: string + description: the account name + example: test account + owner: + type: object + properties: + id: + type: string + description: The identity ID + example: 2c9180827ca885d7017ca8ce28a000eb + type: + type: string + description: It will always be "IDENTITY" + example: IDENTITY + name: + type: string + description: The identity name + example: John + alias: + type: string + description: The identity alias + example: John.Doe diff --git a/static/api-specs/idn/beta/schemas/app/matchTerm.yaml b/static/api-specs/idn/beta/schemas/app/matchTerm.yaml new file mode 100644 index 00000000000..523c8a96ff8 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/app/matchTerm.yaml @@ -0,0 +1,40 @@ +type: object +properties: + name: + type: string + description: The attribute name + example: mail + value: + type: string + description: The attribute value + example: 1234 Albany Dr + op: + type: string + description: The operator between name and value + example: eq + container: + type: boolean + default: false + description: If it is a container or a real match term + example: true + and: + type: boolean + description: If it is AND logical operator for the children match terms + default: false + example: false + children: + type: array + nullable: true + items: + $ref: './matchTerm.yaml' + description: The children under this match term + example: [ + { + "name": "businessCategory", + "value": "Service", + "op": "eq", + "container": false, + "and": false, + "children": null + } + ] diff --git a/static/api-specs/idn/beta/schemas/app/selector.yaml b/static/api-specs/idn/beta/schemas/app/selector.yaml new file mode 100644 index 00000000000..497f9328e65 --- /dev/null +++ b/static/api-specs/idn/beta/schemas/app/selector.yaml @@ -0,0 +1,40 @@ +type: object +properties: + applicationId: + type: string + description: The application id + example: 2c91808874ff91550175097daaec161c" + accountMatchConfig: + type: object + properties: + matchExpression: + type: object + properties: + matchTerms: + type: array + items: + $ref: './matchTerm.yaml' + example: [ + { + "name": "", + "value": "", + "op": null, + "container": true, + "and": false, + "children": [ + { + "name": "businessCategory", + "value": "Service", + "op": "eq", + "container": false, + "and": false, + "children": null + } + ] + } + ] + and: + type: boolean + description: If it is AND operators for match terms + default: true + example: true \ No newline at end of file diff --git a/static/api-specs/idn/sailpoint-api.beta.yaml b/static/api-specs/idn/sailpoint-api.beta.yaml index a289c0b0052..dbc52301a31 100644 --- a/static/api-specs/idn/sailpoint-api.beta.yaml +++ b/static/api-specs/idn/sailpoint-api.beta.yaml @@ -1656,6 +1656,20 @@ paths: $ref: './beta/paths/load-uncorrelated-accounts.yaml' /sources/{id}/correlation-config: $ref: './beta/paths/correlation-config.yaml' + /source-apps/{id}: + $ref: './beta/paths/ears-source-app.yaml' + /source-apps/bulk-update: + $ref: './beta/paths/ears-source-app-bulk-update.yaml' + /source-apps/assigned: + $ref: './beta/paths/ears-source-apps-assigned.yaml' + /source-apps: + $ref: './beta/paths/ears-source-apps.yaml' + /source-apps/all: + $ref: './beta/paths/ears-source-apps-all.yaml' + /source-apps/{id}/access-profiles: + $ref: './beta/paths/ears-source-app-access-profiles.yaml' + /source-apps/{id}/access-profiles/bulk-remove: + $ref: './beta/paths/ears-source-app-access-profiles-bulk-remove.yaml' /task-status/{id}: $ref: "./beta/paths/task-status.yaml" /task-status: @@ -1696,6 +1710,14 @@ paths: $ref: './beta/paths/trigger-invocations-test.yaml' /ui-metadata/tenant: $ref: './beta/paths/ui-metadata/tenant-ui-metadata.yaml' + /user-apps/{id}: + $ref: './beta/paths/ears-user-app.yaml' + /user-apps/{id}/available-accounts: + $ref: './beta/paths/ears-user-app-available-accounts.yaml' + /user-apps: + $ref: './beta/paths/ears-user-apps.yaml' + /user-apps/all: + $ref: './beta/paths/ears-user-apps-all.yaml' /verified-from-addresses: $ref: './beta/paths/verified-from-addresses.yaml' /verified-from-addresses/{id}: