---
title: "List the application catalog"
description: "A curated list of common SaaS applications with their SAML and OIDC settings and SCIM mappings, embedded in the service and checked against each vendor's documentation (cited in sources). The console prefills a new application from it. Not recorded in Trails."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.ezghcloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

Path: EZGH SSO API

`GET /v1/organizations/{orgId}/sso/catalog/applications`

A curated list of common SaaS applications with their SAML and OIDC settings and SCIM mappings, embedded in the service and checked against each vendor's documentation (cited in sources). The console prefills a new application from it. Not recorded in Trails.

## Authentication

Requires one of the following:

- `apiKey`, http, header `Authorization`
- `oauth`, http, header `Authorization`
- `sessionCookie`, apiKey, in cookie

## Path parameters

- `ListCatalogApplications.path.orgId` (string, required)
  - format `uuid`

## Code samples

### cURL

```curl
curl --request GET \
  --url https://sso.ezghcloud.com/v1/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/sso/catalog/applications \
  --header 'Authorization: Bearer <token>'
```

### TypeScript

```typescript
const url = 'https://sso.ezghcloud.com/v1/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/sso/catalog/applications';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://sso.ezghcloud.com/v1/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/sso/catalog/applications"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
```

## Responses

### 200

The catalog.

#### Example

```json
{
  "applications": [
    {
      "description": "string",
      "id": "string",
      "name": "string",
      "oidc": {},
      "parameters": [
        {
          "description": "string",
          "example": "string",
          "label": "string",
          "name": "string",
          "pattern": "string"
        }
      ],
      "saml": {},
      "scim": {},
      "vendor": "string",
      "website": "http://example.com"
    }
  ],
  "catalogVersion": 0
}
```

- `ListCatalogApplications.response.200.applications` (array<object>, required)
  - `ListCatalogApplications.response.200.applications.description` (string, required)
  - `ListCatalogApplications.response.200.applications.id` (string, required)
  - `ListCatalogApplications.response.200.applications.name` (string, required)
  - `ListCatalogApplications.response.200.applications.oidc` (object | null, required) — OIDC client settings (applicationType, tokenEndpointAuthMethod, redirectUris, initiateLoginUri, scopes), notes and sources.
  - `ListCatalogApplications.response.200.applications.parameters` (array<object>, required) — Values the administrator fills in: {{name}} in the entry's URLs.
    - `ListCatalogApplications.response.200.applications.parameters.description` (string, required)
    - `ListCatalogApplications.response.200.applications.parameters.example` (string, required)
    - `ListCatalogApplications.response.200.applications.parameters.label` (string, required)
    - `ListCatalogApplications.response.200.applications.parameters.name` (string, required)
    - `ListCatalogApplications.response.200.applications.parameters.pattern` (string, required)
  - `ListCatalogApplications.response.200.applications.saml` (object | null, required) — SAML settings in the management API's terms (entityId, acsUrls, sloUrl, nameIdFormat, attributes, signResponse, signAssertion), plus startUrl (the defaultRelayState), notes and sources (the vendor documentation checked).
  - `ListCatalogApplications.response.200.applications.scim` (object | null, required) — SCIM 2.0 provisioning settings: baseUrl, attributeMappings (the list PUT …/provisioning takes), groups, notes and sources.
  - `ListCatalogApplications.response.200.applications.vendor` (string, required)
  - `ListCatalogApplications.response.200.applications.website` (string, required)
    - format `uri`
- `ListCatalogApplications.response.200.catalogVersion` (integer, required)

### 400

invalid_request (with issues), invalid_cursor, or the endpoint's own 400 codes.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `ListCatalogApplications.response.400.error` (object, required)
  - `ListCatalogApplications.response.400.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `ListCatalogApplications.response.400.error.message` (string, required)
    - maxLength 1024
  - `ListCatalogApplications.response.400.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `ListCatalogApplications.response.400.error.issues.message` (string, required)
    - `ListCatalogApplications.response.400.error.issues.path` (string, required)
  - `ListCatalogApplications.response.400.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `ListCatalogApplications.response.400.error.quota.id` (string, required)
    - `ListCatalogApplications.response.400.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `ListCatalogApplications.response.400.error.quota.limit` (integer, required)
      - min 0
    - `ListCatalogApplications.response.400.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `ListCatalogApplications.response.400.error.quota.inFlight` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.400.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.400.error.quota.region` (string, optional)
    - `ListCatalogApplications.response.400.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.400.error.quota.scopeResourceName` (string, optional)
    - `ListCatalogApplications.response.400.error.quota.used` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.400.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 401

unauthenticated: no credential, or one that doesn't check out.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `ListCatalogApplications.response.401.error` (object, required)
  - `ListCatalogApplications.response.401.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `ListCatalogApplications.response.401.error.message` (string, required)
    - maxLength 1024
  - `ListCatalogApplications.response.401.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `ListCatalogApplications.response.401.error.issues.message` (string, required)
    - `ListCatalogApplications.response.401.error.issues.path` (string, required)
  - `ListCatalogApplications.response.401.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `ListCatalogApplications.response.401.error.quota.id` (string, required)
    - `ListCatalogApplications.response.401.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `ListCatalogApplications.response.401.error.quota.limit` (integer, required)
      - min 0
    - `ListCatalogApplications.response.401.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `ListCatalogApplications.response.401.error.quota.inFlight` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.401.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.401.error.quota.region` (string, optional)
    - `ListCatalogApplications.response.401.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.401.error.quota.scopeResourceName` (string, optional)
    - `ListCatalogApplications.response.401.error.quota.used` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.401.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 403

access_denied: the caller's policies don't allow the action; forbidden_origin: a cookie-authenticated write from an origin that isn't allowed; spend_limit_reached.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `ListCatalogApplications.response.403.error` (object, required)
  - `ListCatalogApplications.response.403.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `ListCatalogApplications.response.403.error.message` (string, required)
    - maxLength 1024
  - `ListCatalogApplications.response.403.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `ListCatalogApplications.response.403.error.issues.message` (string, required)
    - `ListCatalogApplications.response.403.error.issues.path` (string, required)
  - `ListCatalogApplications.response.403.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `ListCatalogApplications.response.403.error.quota.id` (string, required)
    - `ListCatalogApplications.response.403.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `ListCatalogApplications.response.403.error.quota.limit` (integer, required)
      - min 0
    - `ListCatalogApplications.response.403.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `ListCatalogApplications.response.403.error.quota.inFlight` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.403.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.403.error.quota.region` (string, optional)
    - `ListCatalogApplications.response.403.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.403.error.quota.scopeResourceName` (string, optional)
    - `ListCatalogApplications.response.403.error.quota.used` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.403.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 404

not_found: unknown, malformed, or in an organization the caller isn't in.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `ListCatalogApplications.response.404.error` (object, required)
  - `ListCatalogApplications.response.404.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `ListCatalogApplications.response.404.error.message` (string, required)
    - maxLength 1024
  - `ListCatalogApplications.response.404.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `ListCatalogApplications.response.404.error.issues.message` (string, required)
    - `ListCatalogApplications.response.404.error.issues.path` (string, required)
  - `ListCatalogApplications.response.404.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `ListCatalogApplications.response.404.error.quota.id` (string, required)
    - `ListCatalogApplications.response.404.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `ListCatalogApplications.response.404.error.quota.limit` (integer, required)
      - min 0
    - `ListCatalogApplications.response.404.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `ListCatalogApplications.response.404.error.quota.inFlight` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.404.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.404.error.quota.region` (string, optional)
    - `ListCatalogApplications.response.404.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.404.error.quota.scopeResourceName` (string, optional)
    - `ListCatalogApplications.response.404.error.quota.used` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.404.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 429

too_many_requests, with Retry-After; or quota_exceeded (a rate, usage or concurrency quota, with quota), never with Retry-After.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `ListCatalogApplications.response.429.error` (object, required)
  - `ListCatalogApplications.response.429.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `ListCatalogApplications.response.429.error.message` (string, required)
    - maxLength 1024
  - `ListCatalogApplications.response.429.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `ListCatalogApplications.response.429.error.issues.message` (string, required)
    - `ListCatalogApplications.response.429.error.issues.path` (string, required)
  - `ListCatalogApplications.response.429.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `ListCatalogApplications.response.429.error.quota.id` (string, required)
    - `ListCatalogApplications.response.429.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `ListCatalogApplications.response.429.error.quota.limit` (integer, required)
      - min 0
    - `ListCatalogApplications.response.429.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `ListCatalogApplications.response.429.error.quota.inFlight` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.429.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.429.error.quota.region` (string, optional)
    - `ListCatalogApplications.response.429.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.429.error.quota.scopeResourceName` (string, optional)
    - `ListCatalogApplications.response.429.error.quota.used` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.429.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 500

internal_error: a bug; the details are in the logs, under the request ID.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `ListCatalogApplications.response.500.error` (object, required)
  - `ListCatalogApplications.response.500.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `ListCatalogApplications.response.500.error.message` (string, required)
    - maxLength 1024
  - `ListCatalogApplications.response.500.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `ListCatalogApplications.response.500.error.issues.message` (string, required)
    - `ListCatalogApplications.response.500.error.issues.path` (string, required)
  - `ListCatalogApplications.response.500.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `ListCatalogApplications.response.500.error.quota.id` (string, required)
    - `ListCatalogApplications.response.500.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `ListCatalogApplications.response.500.error.quota.limit` (integer, required)
      - min 0
    - `ListCatalogApplications.response.500.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `ListCatalogApplications.response.500.error.quota.inFlight` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.500.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.500.error.quota.region` (string, optional)
    - `ListCatalogApplications.response.500.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.500.error.quota.scopeResourceName` (string, optional)
    - `ListCatalogApplications.response.500.error.quota.used` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.500.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 503

unavailable: a dependency the request needs is down. Retry after Retry-After.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `ListCatalogApplications.response.503.error` (object, required)
  - `ListCatalogApplications.response.503.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `ListCatalogApplications.response.503.error.message` (string, required)
    - maxLength 1024
  - `ListCatalogApplications.response.503.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `ListCatalogApplications.response.503.error.issues.message` (string, required)
    - `ListCatalogApplications.response.503.error.issues.path` (string, required)
  - `ListCatalogApplications.response.503.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `ListCatalogApplications.response.503.error.quota.id` (string, required)
    - `ListCatalogApplications.response.503.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `ListCatalogApplications.response.503.error.quota.limit` (integer, required)
      - min 0
    - `ListCatalogApplications.response.503.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `ListCatalogApplications.response.503.error.quota.inFlight` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.503.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.503.error.quota.region` (string, optional)
    - `ListCatalogApplications.response.503.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `ListCatalogApplications.response.503.error.quota.scopeResourceName` (string, optional)
    - `ListCatalogApplications.response.503.error.quota.used` (integer, optional)
      - min 0
    - `ListCatalogApplications.response.503.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.


Source: https://docs.ezghcloud.com/sso-api/ListCatalogApplications/index.md
