diff --git a/static/api-specs/idn/sailpoint-api.v2024.yaml b/static/api-specs/idn/sailpoint-api.v2024.yaml index 1f6d2784c..9b9be6af0 100644 --- a/static/api-specs/idn/sailpoint-api.v2024.yaml +++ b/static/api-specs/idn/sailpoint-api.v2024.yaml @@ -1179,6 +1179,10 @@ tags: - name: Task Management - name: Tenant description: API for reading tenant details. + - name: Tenant Context + description: | + The purpose of this API is to manage key-value pairs specific to a tenant's context, enabling dynamic configuration and personalized settings per tenant. + Context key-value pairs will consist of common terms and acronyms used within your organization. - name: Transforms description: | The purpose of this API is to expose functionality for the manipulation of Transform objects. @@ -2111,6 +2115,8 @@ paths: $ref: ./v2024/paths/task-status-pending.yaml /tenant: $ref: ./v2024/paths/tenant.yaml + /tenant-context: + $ref: ./v2024/paths/tenant-context.yaml /triggers: $ref: ./v2024/paths/triggers.yaml /trigger-subscriptions: diff --git a/static/api-specs/idn/v2024/paths/tenant-context.yaml b/static/api-specs/idn/v2024/paths/tenant-context.yaml new file mode 100644 index 000000000..7249e664a --- /dev/null +++ b/static/api-specs/idn/v2024/paths/tenant-context.yaml @@ -0,0 +1,189 @@ +get: + summary: Retrieve tenant context + tags: + - Tenant Context + description: > + Returns a list of key-value pairs representing the current state of the tenant's context. + parameters: + - name: X-SailPoint-Experimental + in: header + description: Use this header to enable this experimental API. + example: true + schema: + type: string + default: true + required: true + security: + - userAuth: [idn:tenant-context:read] + x-sailpoint-userLevels: + - ORG_ADMIN + - SOURCE_ADMIN + - SOURCE_SUBADMIN + operationId: getTenantContext + responses: + '200': + description: Successfully retrieved tenant context. + content: + application/json: + schema: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + example: + - key: "IAS" + value: "International Accounting Standards" + '400': + $ref: ../../v2024/responses/400.yaml + '401': + $ref: ../../v2024/responses/401.yaml + '403': + $ref: ../../v2024/responses/403.yaml + '429': + $ref: ../../v2024/responses/429.yaml + '500': + $ref: ../../v2024/responses/500.yaml +patch: + summary: Update tenant context + tags: + - Tenant Context + description: > + Allows the user to make incremental updates to tenant context records using [JSON Patch](https://tools.ietf.org/html/rfc6902) + syntax. + + + This endpoint is specifically designed to modify the `/Key/*` field, supporting operations such as `add`, `remove`, or `replace` to manage key-value pairs. + + + Note that each tenant is limited to a maximum of 100 key-value pairs. + parameters: + - name: X-SailPoint-Experimental + in: header + description: Use this header to enable this experimental API. + example: true + schema: + type: string + default: true + required: true + security: + - userAuth: [idn:tenant-context:write] + x-sailpoint-userLevels: + - ORG_ADMIN + - SOURCE_ADMIN + - SOURCE_SUBADMIN + operationId: patchTenantContext + requestBody: + content: + application/json-patch+json: + schema: + $ref: '../schemas/JsonPatchOperation.yaml' + examples: + Multiple operations in one call: + description: This example shows how multiple context keys may be updated with a single patch call. + value: + [ + { + "op": "add", + "path": "/Key/IAS", + "value": "Integrated Automation System" + }, + { + "op": "replace", + "path": "/Key/IAS", + "value": "International Accounting Standards" + }, + { + "op": "remove", + "path": "/Key/NDR" + } + ] + Add a single context: + description: This example shows how a single context may be created with a single patch call. + value: + [ + { + "op": "add", + "path": "/Key/IAS", + "value": "Integrated Automation System" + } + ] + Update a single context: + description: This example shows how a single context may be updated with a single patch call. + value: + [ + { + "op": "replace", + "path": "/Key/IAS", + "value": "International Accounting Standards" + } + ] + Remove a single context: + description: This example shows how a single context may be removed with a single patch call. + value: + [ + { + "op": "remove", + "path": "/Key/IAS" + } + ] + required: true + responses: + '200': + description: Tenant context updated successfully. + '400': + description: Bad request due to invalid input parameters. + content: + application/json: + schema: + $ref: "../../v2024/schemas/ErrorResponseDto.yaml" + examples: + incorrectPath: + summary: Invalid Path Example + value: + detailCode: "Bad Request" + trackingId: "e9eaaeac516643ffa087cc476e7577c5" + messages: + - locale: "en-US" + localeOrigin: "DEFAULT" + text: "invalid patch request: field not patchable or does not contain key (/InvalidPath/IAS)" + invalidOperation: + summary: Invalid Operation Example + value: + detailCode: "Bad Request" + trackingId: "39cfb6a29d5a4522954d72124545d3c5" + messages: + - locale: "en-US" + localeOrigin: "DEFAULT" + text: "invalid patch request: operation not allowed (move)" + noKeyInPath: + summary: No Key in Path Example + value: + detailCode: "Bad Request" + trackingId: "6d3bdd67ac8a4382884875ed4abf1f13" + messages: + - locale: "en-US" + localeOrigin: "DEFAULT" + text: "invalid patch request: field not patchable or does not contain key (/Key/)" + capacityExceeded: + summary: Capacity Exceeded Example + value: + detailCode: "Bad Request" + trackingId: "bd51a5e2f4ee4d5aa65ac2f7cd3c2445" + messages: + - locale: "en-US" + localeOrigin: "DEFAULT" + text: "unable to fulfill patch request: max tenant context capacity exceeded by 5 key/value pair(s)" + '401': + $ref: ../../v2024/responses/401.yaml + '403': + $ref: ../../v2024/responses/403.yaml + '404': + $ref: ../../v2024/responses/404.yaml + '429': + $ref: ../../v2024/responses/429.yaml + '500': + $ref: ../../v2024/responses/500.yaml