Automated commit 'PLTDP-3876 - Moving RDE API specs from internal to V3 (#1451)

* PLTDP-3876: identity details report request body example changed

* PLTDP-3876: reports/{id}/cancel endpoint added

* PLTDP-3876: added 'reports/result' endpoint

* PLTDP-3876: lint errors fixed

* PLTDP-3876: spacing issue with examples for tequest bodies fixed

* PLTDP-3876: schema and example fixes for response bodies

* PLTDP-3876 PLTDP:3876: 'reporting/reports/{taskResultId}/{fileFormat}' endpoint described

* PLTDP-3876: added 'reporting/reports/{reportName}/genericReport' description, returns example schema updated

* PLTDP-3876: GenericReports schema fixed

* PLTDP-3876: unnecessary quates removed from generic reports path description

* PLTDP-3876: review changes - payloads changed, generic reports endpoint removed

* PLTDP-3876: unused examples removed

* PLTDP-3876: removed 'PDF' from examples as this type is going to be deprecated

* PLTDP-3876: nullable parameters added for nullable payloads

* PLTDP-3876: progress field for TaskResultDetails marked nullable

* PLTDP-3876: moved specs to beta till their endpoints will be callable and maintainable

* PLTDP-3876: moving api specs from internal beta to v3

* PLTDP-3876: changed security description, default value for path var fixed

* PLTDP-3876: schemas updated

* PLTDP-3876: schema for TaskResultDetails fixed

* PLTDP-3876: missing example added

* PLTDP-3876: taskDefName example gated with quotes

* PLTDP-3876: cleared beta files after merge with master

* PLTDP-3876: quotes restored for ReportDetails. It is the same as in master branch with extended description

* PLTDP-3876: review changes applied

* PLTDP-3876: mising example for completed query param added

* PLTDP-3876: changed type schema for 'completed' param

* PLTDP-3876: changed type schema for 'fileFormat' param, enum description should be within type

* PLTDP-3876: all necessary run report payloads to be published as public added.

* PLTDP-3876: report types moved to enum, all necessary arguments described as oneOf in the schema

* PLTDP-3876: description and example for report details added

* PLTDP-3876: description and example for reportType added

* PLTDP-3876: review changes - titles added for arguments, required added to the arguments properties, boolean properties types fixed

* PLTDP-3876: syntax of required fields changed

* PLTDP-3876: property for ACCOUNTS arguments schema cleaned up

* PLTDP-3876: attempt to fix example for arguments

* PLTDP-3876: second attempt to fix example for arguments

* PLTDP-3876: third attempt to fix 'cannot assign to this.SetS3Bucket'

* PLTDP-3876: most of proposed changes done. Need to discuss task result progress

* PLTDP-3876: examples updated according to changes

* PLTDP-3876: report result status updated

* PLTDP-3876: report result reportType fixed

* PLTDP-3876: 'setS3Bucket' property renamed to resolve go SDK collision

* PLTDP-3876: fixing beta api file

* PLTDP-3876: fixing beta api file, removed also next line

* Merged with master

* removed duplicate description key

---------

Co-authored-by: Colin McKibben <colin.mckibben@sailpoint.com>' by github action: 6813717402
This commit is contained in:
GitHub Action Bot
2023-11-09 15:13:05 +00:00
parent 68083dc4ea
commit 03d88f31b9
26 changed files with 448 additions and 209 deletions

View File

@@ -1,25 +0,0 @@
type : object
properties:
name:
type: string
description: >-
Name of the requesting report
example: 'Identities Details Report'
taskDefName:
type: string
description: >-
Name of the task definition which is started to process requesting report
example: 'Identities Details Report'
arguments:
type: object
description: >-
The string-object map(dictionary) with the arguments needed for report processing.
additionalProperties:
type: object
example: { "org": "org name" }
completed:
type: boolean
default: false
description: >-
Current state of the requested report
example: true

View File

@@ -1,48 +0,0 @@
type : object
description: >-
Details about report result or current state.
properties:
reportName:
type: string
description: >-
Name of the requesting report
example: 'Identities Details Report'
taskDefName:
type: string
description: >-
Name of the task definition which is started to process requesting report. Usually the same as report name
example: 'Identities Details Report'
id:
type: string
description: >-
Unique task definition identifier.
example: 'a248c16fe22222b2bd49615481311111'
date:
type: integer
format: int64
description: >-
Report processing start date in legacy long (int64) representation.
example: 1682589075909
status:
type: string
description: >-
Report current state or result status.
example: 'Success'
duration:
type: integer
format: int64
description: >-
Report processing time.
example: 342
rows:
type: integer
format: int64
description: >-
Report size in rows.
example: 37
availableFormats:
type: string
nullable: true
description: >-
Report request possible formats.
example: 'CSV'

View File

@@ -1,10 +0,0 @@
summary: Identities Details Report
value:
name: 'Identities Details Report'
taskDefName: 'Identities Details Report'
arguments:
reportDefName: 'Identities Details Report'
s3bucket: 'abc-org-data-useast1'
pod: 'def-pod'
org: 'an-org'
completed: false

View File

@@ -1,10 +0,0 @@
summary: Identities Details Report result.
value:
reportName: 'Identities Details Report'
taskDefName: 'Identities Details Report'
id: '1e01d272b8084c4fa12fcf8fa898102d'
date: 1688643627107
status: 'Success'
duration: 3681
rows: 193
availableFormats: 'CSV'

View File

@@ -1,17 +0,0 @@
summary: Identities Details Report task result.
value:
name: 'Identities Details Report'
taskDefName: 'Identities Details Report'
type: 'QUARTZ'
id: 'a248c16fe22222b2bd49615481311111'
created: 1682589075909
description: 'A detailed view of the identities in the system.'
parentName: 'Audit Report'
launcher: '9832285'
launched: 1682589076909
completed: 1682589078909
messages: []
returns: []
attributes:
org: 'an-org'
progress: 'Initializing...'

View File

@@ -1,21 +0,0 @@
summary: Search Export report
value:
name: 'Search Export'
taskDefName: 'Search Export'
arguments:
reportDefName: 'Search Export'
s3bucket: 'abc-org-data-useast1'
indices: 'identities'
columns: 'displayName,firstName,lastName,email,created,attributes.cloudLifecycleState,tags,access.spread,apps.spread,accounts.spread'
query: '704171'
sort: 'displayName'
queryParams:
columns: 'displayName,firstName,lastName,email,created,attributes.cloudLifecycleState,tags,access.spread,apps.pread,accounts.spread'
indices: 'identities'
ownerId: '95ecba5c54fa439c949aec638ce2a74d'
query: '704171'
sort: 'displayName'
queryHash: '5e12cf79c67d92e23d4d8cb3e974f87d164e86d4a4dd8d32ecf89645cacfd3f2'
pod: 'def-pod'
org: 'an-org'
completed: false

View File

@@ -1,24 +0,0 @@
summary: Identities Details Report task result.
value:
name: 'Search Export - 1a82d67377a845f495a1300a2346196b'
taskDefName: 'Identities Details Report'
type: 'QUARTZ'
id: 'a248c16fe22222b2bd49615481311111'
created: 1682589075909
description: 'Extract query data from ElasticSearch to CSV'
parentName: null
launcher: 'T05293'
launched: null
completed: null
messages: []
returns: []
attributes:
queryHash: '5e12cf79c67d92e23d4d8cb3e974f87d164e86d4a48d32ecf89645cacfd3f2'
org: 'an-org'
queryParams:
columns: 'displayName,firstName,lastName,email,created,attributes.cloudLifecycleState,tags,access.spread,apps.pread,accounts.spread'
indices: 'identities'
ownerId: '95ecba5c5444439c999aec638ce2a777'
query: '700007'
sort: 'displayName'
progress: 'Initializing...'

View File

@@ -2,7 +2,6 @@ type: object
properties:
id:
type: string
description: The id for this SOD exception
nullable: true
example: "0f11f2a4-7c94-4bf3-a2bd-742580fe3bde"
description: Unique identifier of the SOD exception object

View File

@@ -550,6 +550,9 @@ tags:
For example, a non-administrator deciding whether to approve another identity's request for access to the Workday application, whose access may be restricted to members of the HR department, would want to know whether the identity is a member of the HR department.
If an administrator has used [Update Public Identity Config](https://developer.sailpoint.com/idn/api/v3/update-public-identity-config) to make the "department" attribute public, the approver can see the department and make a decision without requesting any more information.
- name: Reports Data Extraction
description: |
Use this API to implement reports lifecycle managing and monitoring.
- name: Requestable Objects
description: |
Use this API to implement requestable object functionality.
@@ -1071,6 +1074,14 @@ paths:
$ref: './v3/paths/password-dictionary.yaml'
/password-org-config:
$ref: './v3/paths/password-org-config.yaml'
/reports/{taskResultId}/result:
$ref: './v3/paths/reports-result.yaml'
/reports/run:
$ref: './v3/paths/reports-run.yaml'
/reports/{id}/cancel:
$ref: './v3/paths/reports-cancel.yaml'
/reports/{taskResultId}:
$ref: './v3/paths/reports-get-file.yaml'
/sod-policies:
$ref: './v3/paths/sod-policies.yaml'
/sod-policies/{id}:

View File

@@ -15,13 +15,16 @@ get:
required: true
description: Unique identifier of the task result which handled report
example: ef38f94347e94562b5bb8424a56397d8
- in: path
- in: query
name: fileFormat
schema:
type: string
enum:
- csv
- pdf
required: true
description: Output format of the requested report file
example: 'CSV'
example: csv
- in: query
name: name
required: false
@@ -29,6 +32,17 @@ get:
type: string
example: 'Identities Details Report'
description: preferred Report file name, by default will be used report name from task result.
- in: query
name: auditable
required: false
schema:
type: boolean
default: false
example: true
description: >-
Enables auditing for current report download.
Will create an audit event and sent it to the REPORT cloud-audit kafka topic.
Event will be created if there is any result present by requested taskResultId.
responses:
'200':
description: Details about running report task.

View File

@@ -1,22 +1,29 @@
post:
get:
tags:
- Reports Data Extraction
description: >-
Get the report results for a report that was run or is running.
Returns empty report result in case there are no active task definitions with used in payload task definition name.
operationId: showReportResult
operationId: getReportResult
summary: "Get Report Result"
security:
- UserContextAuth: [sp:report-result:read]
requestBody:
content:
application/json:
schema:
$ref: '../schemas/reports/ReportDetails.yaml'
examples:
identityDetailsReport:
$ref: '../schemas/reports/examples/identities-details-report-details.yaml'
required: true
parameters:
- in: path
name: taskResultId
schema:
type: string
required: true
description: Unique identifier of the task result which handled report
example: ef38f94347e94562b5bb8424a56397d8
- in: query
name: completed
schema:
type: boolean
default: false
required: false
description: state of task result to apply ordering when results are fetching from the DB
example: true
responses:
'200':
description: Details about report that was run or is running.

View File

@@ -14,10 +14,8 @@ post:
schema:
$ref: '../schemas/reports/ReportDetails.yaml'
examples:
identityDetailsReport:
Identities Details Report:
$ref: '../schemas/reports/examples/identities-details-report-details.yaml'
searchExportReport:
$ref: '../schemas/reports/examples/search-export-report-details.yaml'
required: true
responses:
'200':

View File

@@ -0,0 +1,32 @@
type: object
description: >-
Details about report to be processed.
properties:
reportType:
type: string
enum:
- ACCOUNTS
- IDENTITIES_DETAILS
- IDENTITIES
- IDENTITY_PROFILE_IDENTITY_ERROR
- ORPHAN_IDENTITIES
- SEARCH_EXPORT
- UNCORRELATED_ACCOUNTS
description: >-
Use this property to define what report should be processed in the RDE service.
example: IDENTITIES_DETAILS
arguments:
oneOf:
- $ref: '../reports/arguments/accounts-export-report-arguments.yaml'
- $ref: '../reports/arguments/identities-details-report-arguments.yaml'
- $ref: '../reports/arguments/identities-report-arguments.yaml'
- $ref: '../reports/arguments/identity-profile-identity-error-report-arguments.yaml'
- $ref: '../reports/arguments/orphan-uncorrelated-report-arguments.yaml'
- $ref: '../reports/arguments/search-export-report-arguments.yaml'
example: {
"application": "2c9180897e7742b2017e781782f705b9",
"sourceName": "DataScienceWorkday",
"defaultS3Bucket": true
}
description: >-
The string-object map(dictionary) with the arguments needed for report processing.

View File

@@ -0,0 +1,67 @@
type : object
description: >-
Details about report result or current state.
properties:
reportType:
type: string
enum:
- ACCOUNTS
- IDENTITIES_DETAILS
- IDENTITIES
- IDENTITY_PROFILE_IDENTITY_ERROR
- ORPHAN_IDENTITIES
- SEARCH_EXPORT
- UNCORRELATED_ACCOUNTS
description: >-
Use this property to define what report should be processed in the RDE service.
example: IDENTITIES_DETAILS
taskDefName:
type: string
description: >-
Name of the task definition which is started to process requesting report. Usually the same as report name
example: Identities Details Report
id:
type: string
description: >-
Unique task definition identifier.
example: a248c16fe22222b2bd49615481311111
created:
type: string
description: >-
Report processing start date
format: date-time
example: '2020-09-07T42:14:00.364Z'
status:
type: string
enum:
- SUCCESS
- FAILURE
- WARNING
- TERMINATED
description: >-
Report current state or result status.
example: SUCCESS
duration:
type: integer
format: int64
description: >-
Report processing time in ms.
example: 342
rows:
type: integer
format: int64
description: >-
Report size in rows.
example: 37
availableFormats:
type: array
items:
type: string
enum:
- CSV
- PDF
description: >-
Output report file formats. This are formats for calling get endpoint as a query parameter 'fileFormat'.
In case report won't have this argument there will be ['CSV', 'PDF'] as default.
example:
- CSV

View File

@@ -12,65 +12,72 @@ properties:
description: >-
Type of the job or task underlying in the report processing. It could be a quartz task, QPOC or MENTOS jobs or a
refresh/sync task.
example: 'MENTOS'
example: MENTOS
id:
type: string
description: >-
Unique task definition identifier.
example: 'a248c16fe22222b2bd49615481311111'
name:
type: string
example: a248c16fe22222b2bd49615481311111
reportType:
enum:
- ACCOUNTS
- IDENTITIES_DETAILS
- IDENTITIES
- IDENTITY_PROFILE_IDENTITY_ERROR
- ORPHAN_IDENTITIES
- SEARCH_EXPORT
- UNCORRELATED_ACCOUNTS
description: >-
Name of the requesting report.
example: 'Identities Details Report'
Use this property to define what report should be processed in the RDE service.
example: IDENTITIES_DETAILS
description:
type: string
description: >-
Description of the report purpose and/or contents.
example: 'A detailed view of the identities in the system.'
example: A detailed view of the identities in the system.
parentName:
type: string
nullable: true
description: >-
Name of the parent task/report if exists.
example: 'Audit Report'
example: Audit Report
launcher:
type: string
description: >-
Name of the report processing initiator.
example: 'cloudadmin'
example: cloudadmin
created:
type: integer
format: int64
type: string
description: >-
Report creation date in legacy long (int64) representation.
example: 1688633986104
Report creation date
format: date-time
example: '2020-09-07T42:14:00.364Z'
launched:
type: integer
type: string
nullable: true
format: int64
format: date-time
description: >-
Report start date in legacy long (int64) representation.
example: 1688633988104
Report start date
example: '2020-09-07T42:14:00.521Z'
completed:
type: integer
type: string
nullable: true
format: int64
format: date-time
description: >-
Report completion date in legacy long (int64) representation.
example: 1688633989504
Report completion date
example: '2020-09-07T42:14:01.137Z'
completionStatus:
type: string
nullable: true
enum:
- Success
- Warning
- Error
- Terminated
- TempError
- SUCCESS
- WARNING
- ERROR
- TERMINATED
- TEMP_ERROR
description: >-
Report completion status.
example: 'Success'
example: Success
messages:
type: array
description: >-
@@ -85,10 +92,10 @@ properties:
description: >-
Type of the message.
enum:
- Info
- Warn
- Error
example: 'Warn'
- INFO
- WARN
- ERROR
example: WARN
error:
type: boolean
default: false
@@ -105,12 +112,12 @@ properties:
type: string
description: >-
Message string identifier.
example: 'The following account(s) failed to correlate: A,B,C'
example: "The following account(s) failed to correlate: A,B,C"
localizedText:
type: string
description: >-
Message context with the locale based language.
example: 'The following account(s) failed to correlate: A,B,C'
example: "The following account(s) failed to correlate: A,B,C"
returns:
type: array
description: >-
@@ -133,14 +140,12 @@ properties:
type: object
description: >-
Extra attributes map(dictionary) needed for the report.
example:
org: 'an-org'
pod: 'the-pod'
additionalProperties:
type: object
example: {"org": "an-org"}
progress:
type: string
nullable: true
description: >-
Current report state.
example: 'Initializing...'
example: Initializing...

View File

@@ -0,0 +1,31 @@
title: ACCOUNTS
type: object
description: >-
Arguments for Account Export (ACCOUNTS)
required:
- application
- sourceName
- defaultS3Bucket
properties:
application:
type: string
description: >-
Id of the authoritative source to export related accounts e.g. identities
example: 2c9180897eSourceIde781782f705b9
sourceName:
type: string
description: >-
Name of the authoritative source for accounts export
example: DataScienceSourceName
defaultS3Bucket:
type: boolean
description: >-
Use it to set default s3 bucket where generated report will be saved.
In case this argument is false and 's3Bucket' argument is null or absent there will be default
s3Bucket assigned to the report.
example: true
s3Bucket:
type: string
description: >-
If you want to be specific you could use this argument with defaultS3Bucket = false.
example: the-dev-bucket

View File

@@ -0,0 +1,26 @@
title: IDENTITIES_DETAILS
type: object
description: >-
Arguments for Identities details report (IDENTITIES_DETAILS)
required:
- defaultS3Bucket
- correlatedOnly
properties:
correlatedOnly:
type: boolean
description: >-
Boolean FLAG to specify if only correlated identities should be used in report processing
default: false
example: true
defaultS3Bucket:
type: boolean
description: >-
Use it to set default s3 bucket where generated report will be saved.
In case this argument is false and 's3Bucket' argument is null or absent there will be default
s3Bucket assigned to the report.
example: true
s3Bucket:
type: string
description: >-
If you want to be specific you could use this argument with defaultS3Bucket = false.
example: the-dev-bucket

View File

@@ -0,0 +1,25 @@
title: IDENTITIES
type: object
description: >-
Arguments for Identities report (IDENTITIES)
required:
- defaultS3Bucket
properties:
correlatedOnly:
type: boolean
description: >-
Boolean FLAG to specify if only correlated identities should be used in report processing
default: false
example: true
defaultS3Bucket:
type: boolean
description: >-
Use it to set default s3 bucket where generated report will be saved.
In case this argument is false and 's3Bucket' argument is null or absent there will be default
s3Bucket assigned to the report.
example: true
s3Bucket:
type: string
description: >-
If you want to be specific you could use this argument with defaultS3Bucket = false.
example: the-dev-bucket

View File

@@ -0,0 +1,25 @@
title: IDENTITY_PROFILE_IDENTITY_ERROR
type: object
description: >-
Arguments for Identity Profile Identity Error report (IDENTITY_PROFILE_IDENTITY_ERROR)
required:
- authoritativeSource
- defaultS3Bucket
properties:
authoritativeSource:
type: string
description: >-
Source Id to be checked on errors of identity profiles aggregation
example: 1234sourceId5678902
defaultS3Bucket:
type: boolean
description: >-
Use it to set default s3 bucket where generated report will be saved.
In case this argument is false and 's3Bucket' argument is null or absent there will be default
s3Bucket assigned to the report.
example: true
s3Bucket:
type: string
description: >-
If you want to be specific you could use this argument with defaultS3Bucket = false.
example: the-dev-bucket

View File

@@ -0,0 +1,31 @@
title: ORPHAN_IDENTITIES & UNCORRELATED_ACCOUNTS
type: object
description: >-
Arguments for Orphan Identities report (ORPHAN_IDENTITIES) and Uncorrelated Accounts report (UNCORRELATED_ACCOUNTS)
required:
- defaultS3Bucket
properties:
selectedFormats:
type: array
items:
type: string
enum:
- CSV
- PDF
description: >-
Output report file formats. This are formats for calling get endpoint as a query parameter 'fileFormat'.
In case report won't have this argument there will be ['CSV', 'PDF'] as default.
example:
- CSV
defaultS3Bucket:
type: boolean
description: >-
Use it to set default s3 bucket where generated report will be saved.
In case this argument is false and 's3Bucket' argument is null or absent there will be default
s3Bucket assigned to the report.
example: true
s3Bucket:
type: string
description: >-
If you want to be specific you could use this argument with defaultS3Bucket = false.
example: the-dev-bucket

View File

@@ -0,0 +1,65 @@
title: SEARCH_EXPORT
type: object
description: >-
Arguments for Search Export report (SEARCH_EXPORT)
required:
- query
- defaultS3Bucket
properties:
indices:
description: >-
The names of the Elasticsearch indices in which to search. If none are provided, then all indices will be searched.
externalDocs:
description: Learn more about search indices here.
url: https://documentation.sailpoint.com/saas/help/search/searchable-fields.html
type: array
items:
$ref: '../../search/Index.yaml'
example:
- entitlements
filters:
description: >-
The filters to be applied for each filtered field name.
type: object
additionalProperties:
$ref: '../../filter/Filter.yaml'
example:
source.id:
type: 'TERMS'
terms:
- '2c9180897termsId780bd2920576'
source.name.exact:
type: 'TERMS'
terms:
- 'IdentityNow'
exclude: true
query:
$ref: '../../search/Query.yaml'
includeNested:
description: >-
Indicates whether nested objects from returned search results should be included.
type: boolean
default: true
example: true
sort:
description: >-
The fields to be used to sort the search results.
Use + or - to specify the sort direction.
type: array
items:
type: string
example:
- 'displayName'
- '+id'
defaultS3Bucket:
type: boolean
description: >-
Use it to set default s3 bucket where generated report will be saved.
In case this argument is false and 's3Bucket' argument is null or absent there will be default
s3Bucket assigned to the report.
example: true
s3Bucket:
type: string
description: >-
If you want to be specific you could use this argument with defaultS3Bucket = false.
example: the-dev-bucket

View File

@@ -0,0 +1,6 @@
summary: Identities Details report
value:
reportType: IDENTITIES_DETAILS
arguments:
defaultS3Bucket: true
correlatedOnly: true

View File

@@ -0,0 +1,11 @@
summary: Identities Details Report result.
value:
reportType: IDENTITIES_DETAILS
taskDefName: Identities Details Report
id: 1e01d272b8084c4fa12fcf8fa898102d
created: '2023-09-07T42:14:05.122Z'
status: SUCCESS
duration: 3681
rows: 193
availableFormats:
- CSV

View File

@@ -0,0 +1,17 @@
summary: Identities Details Report task result.
value:
reportType: IDENTITIES_DETAILS
taskDefName: Identities Details Report
type: QUARTZ
id: a248c16fe22222b2bd49615481311111
created: '2023-09-07T42:14:00.364Z'
description: A detailed view of the identities in the system.
parentName: Audit Report
launcher: '9832285'
launched: '2023-09-07T42:14:00.521Z'
completed: '2023-09-07T42:14:01.137Z'
messages: []
returns: []
attributes:
org: an-org
progress: 'Initializing...'

View File

@@ -0,0 +1,24 @@
summary: Identities Details Report task result.
value:
reportType: SEARCH_EXPORT
taskDefName: Search Export
type: QUARTZ
id: a248c16fe22222b2bd49615481311111
created: '2023-09-07T42:14:11.137Z'
description: Extract query data from ElasticSearch to CSV
parentName: null
launcher: T05293
launched: '2020-09-07T42:14:11.137Z'
completed: '2020-09-07T42:14:13.451Z'
messages: []
returns: []
attributes:
queryHash: 5e12cf79c67d92e23d4d8cb3e974f87d164e86d4a48d32ecf89645cacfd3f2
org: an-org
queryParams:
columns: displayName,firstName,lastName,email,created,attributes.cloudLifecycleState,tags,access.spread,apps.pread,accounts.spread
indices: identities
ownerId: 95ecba5c5444439c999aec638ce2a777
query: 700007
sort: displayName
progress: Initializing...