Create source app
POSThttps://sailpoint.api.identitynow.com/v2025/source-apps
This API is currently in an experimental state. The API is subject to change based on feedback and further testing. You must include the X-SailPoint-Experimental header and set it to true
to use this endpoint.
This endpoint creates a source app using the given source app payload
Request
Header Parameters
Use this header to enable this experimental API.
true
- application/json
Bodyrequired
The source app name
my app
The description of the source app
the source app for engineers
True if the source app match all accounts
false
true
accountSource objectrequired
Responses
- 200
- 400
- 401
- 403
- 429
- 500
Responds with the source app as created.
- application/json
- Schema
- Example (auto)
Schema
The source app id
2c91808874ff91550175097daaec161c
The deprecated source app id
9854520
The source app name
my app
Time when the source app was created
2020-10-08T18:33:52.029Z
Time when the source app was last modified
2020-10-08T18:33:52.029Z
True if the source app is enabled
false
true
True if the source app is provision request enabled
false
true
The description of the source app
the source app for engineers
True if the source app match all accounts
false
true
True if the source app is shown in the app center
true
true
accountSource objectnullable
owner objectnullable
{
"id": "2c91808874ff91550175097daaec161c",
"cloudAppId": "9854520",
"name": "my app",
"created": "2020-10-08T18:33:52.029Z",
"modified": "2020-10-08T18:33:52.029Z",
"enabled": true,
"provisionRequestEnabled": true,
"description": "the source app for engineers",
"matchAllAccounts": true,
"appCenterEnabled": true,
"accountSource": {
"id": "2c9180827ca885d7017ca8ce28a000eb",
"type": "SOURCE",
"name": "ODS-AD-Source",
"useForPasswordManagement": "ture",
"passwordPolicies": [
{
"type": "PASSWORD_POLICY",
"id": "006a072ecc6647f68bba9f4a4ad34649",
"name": "Password Policy 1"
}
]
},
"owner": {
"id": "85d173e7d57e496569df763231d6deb6a",
"type": "IDENTITY",
"name": "John Doe"
}
}
Client Error - Returned if the request body is invalid.
- application/json
- Schema
- Example (auto)
Schema
Fine-grained error code providing more detail of the error.
400.1 Bad Request Content
Unique tracking id for the error.
e7eab60924f64aa284175b9fa3309599
messages object[]
causes object[]
{
"detailCode": "400.1 Bad Request Content",
"trackingId": "e7eab60924f64aa284175b9fa3309599",
"messages": [
{
"locale": "en-US",
"localeOrigin": "DEFAULT",
"text": "The request was syntactically correct but its content is semantically invalid."
}
],
"causes": [
{
"locale": "en-US",
"localeOrigin": "DEFAULT",
"text": "The request was syntactically correct but its content is semantically invalid."
}
]
}
Unauthorized - Returned if there is no authorization header, or if the JWT token is expired.
- application/json
- Schema
- Example (auto)
Schema
A message describing the error
JWT validation failed: JWT is expired
{
"error": "JWT validation failed: JWT is expired"
}
Forbidden - Returned if the user you are running as, doesn't have access to this end-point.
- application/json
- Schema
- Example (auto)
- 403
Schema
Fine-grained error code providing more detail of the error.
400.1 Bad Request Content
Unique tracking id for the error.
e7eab60924f64aa284175b9fa3309599
messages object[]
causes object[]
{
"detailCode": "400.1 Bad Request Content",
"trackingId": "e7eab60924f64aa284175b9fa3309599",
"messages": [
{
"locale": "en-US",
"localeOrigin": "DEFAULT",
"text": "The request was syntactically correct but its content is semantically invalid."
}
],
"causes": [
{
"locale": "en-US",
"localeOrigin": "DEFAULT",
"text": "The request was syntactically correct but its content is semantically invalid."
}
]
}
An example of a 403 response object
{
"detailCode": "403 Forbidden",
"trackingId": "b21b1f7ce4da4d639f2c62a57171b427",
"messages": [
{
"locale": "en-US",
"localeOrigin": "DEFAULT",
"text": "The server understood the request but refuses to authorize it."
}
]
}
Too Many Requests - Returned in response to too many requests in a given period of time - rate limited. The Retry-After header in the response includes how long to wait before trying again.
- application/json
- Schema
- Example (auto)
Schema
A message describing the error
Rate Limit Exceeded
{
"message": " Rate Limit Exceeded "
}
Internal Server Error - Returned if there is an unexpected error.
- application/json
- Schema
- Example (auto)
- 500
Schema
Fine-grained error code providing more detail of the error.
400.1 Bad Request Content
Unique tracking id for the error.
e7eab60924f64aa284175b9fa3309599
messages object[]
causes object[]
{
"detailCode": "400.1 Bad Request Content",
"trackingId": "e7eab60924f64aa284175b9fa3309599",
"messages": [
{
"locale": "en-US",
"localeOrigin": "DEFAULT",
"text": "The request was syntactically correct but its content is semantically invalid."
}
],
"causes": [
{
"locale": "en-US",
"localeOrigin": "DEFAULT",
"text": "The request was syntactically correct but its content is semantically invalid."
}
]
}
An example of a 500 response object
{
"detailCode": "500.0 Internal Fault",
"trackingId": "b21b1f7ce4da4d639f2c62a57171b427",
"messages": [
{
"locale": "en-US",
"localeOrigin": "DEFAULT",
"text": "An internal fault occurred."
}
]
}
Authorization: oauth2
type: Personal Access Tokenscopes: idn:app-roles:manage
- go
- powershellSailPoint SDK
- pythonSailPoint SDK
- csharp
- curl
- dart
- http
- java
- javascript
- kotlin
- c
- nodejs
- objective-c
- ocaml
- php
- r
- ruby
- rust
- shell
- swift
- NATIVE
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sailpoint.api.identitynow.com/v2025/source-apps"
method := "POST"
payload := strings.NewReader(`{
"name": "my app",
"description": "the source app for engineers",
"matchAllAccounts": true,
"accountSource": {
"id": "2c9180827ca885d7017ca8ce28a000eb",
"type": "SOURCE",
"name": "ODS-AD-Source"
}
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("Authorization", "Bearer <TOKEN>")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}