> This page is for Developers.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://zuora.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://zuora.ferndocs.com/_mcp/server.

# List schemas of a resource

GET https://rest.test.zuora.com/scim/v2/Schemas/{id}

Gets a specific resource schema by ID.

Examples:
  ```
  /scim/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group
  /scim/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:User

  /scim/v2/Schemas/urn:zuora:scim:schemas:1.0:UserExtension
  /scim/v2/Schemas/urn:zuora:scim:schemas:1.0:GroupExtension
  ```


Reference: https://zuora.ferndocs.com/developers/api-reference/zuora-api/oneid/scim/get-the-schema-of-specific-scim

## Authentication

- `Authorization` header (bearer token, required) — Use `Bearer {{token}}` in the `Authorization` header for authentication.

## Servers

- `https://rest.test.zuora.com` (US Developer & Central Sandbox (incl. Test Drive), default)
- `https://rest.sandbox.na.zuora.com` (US API Sandbox Cloud 1)
- `https://rest.apisandbox.zuora.com` (US API Sandbox Cloud 2)
- `https://rest.na.zuora.com` (US Production Cloud 1)
- `https://rest.zuora.com` (US Production Cloud 2)
- `https://rest.test.eu.zuora.com` (EU Developer & Central Sandbox)
- `https://rest.sandbox.eu.zuora.com` (EU API Sandbox)
- `https://rest.eu.zuora.com` (EU Production)
- `https://rest.test.ap.zuora.com` (APAC Developer & Central Sandbox)
- `https://rest.ap.zuora.com` (APAC Production)

## Request

### Path parameters

- `id` (string, required)

### Headers

- `Idempotency-Key` (string, optional) — Specify a unique idempotency key if you want to perform an idempotent POST or PATCH request. Do not use this header in other request types. With this header specified, the Zuora server can identify subsequent retries of the same request using this value, which prevents the same operation from being performed multiple times by accident.
- `Accept-Encoding` (string, optional) — Include the `Accept-Encoding: gzip` header to compress responses as a gzipped file. It can significantly reduce the bandwidth required for a response. If specified, Zuora automatically compresses responses that contain over 1000 bytes of data, and the response contains a `Content-Encoding` header with the compression algorithm so that your client can decompress it.
- `Content-Encoding` (string, optional) — Include the `Content-Encoding: gzip` header to compress a request. With this header specified, you should upload a gzipped file for the request payload instead of sending the JSON payload.
- `Zuora-Track-Id` (string, optional) — A custom identifier for tracing the API call. If you set a value for this header, Zuora returns the same value in the response headers. This header enables you to associate your system process identifiers with Zuora API calls, to assist with troubleshooting in the event of an issue. The value of this field must use the US-ASCII character set and must not include any of the following characters: colon (`:`), semicolon (`;`), double quote (`"`), and quote (`'`).
- `Zuora-Entity-Ids` (string, optional) — An entity ID. If you have [Zuora Multi-entity](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Multi-entity) enabled and the OAuth token is valid for more than one entity, you must use this header to specify which entity to perform the operation in. If the OAuth token is only valid for a single entity, or you do not have Zuora Multi-entity enabled, you should not set this header.

## Response

### 200

OK

- `schemas` (list of string, optional) — List of schema URNs defining the structure of the response.
- `id` (string, optional) — Unique identifier of the schema.
- `name` (string, optional) — Name of the schema.
- `description` (string, optional) — Description of the schema.
- `attributes` (list of ScimV2SchemasIdGetResponsesContentApplicationJsonSchemaAttributesItems, optional) — List of attributes defined by the schema.
- `meta` (ScimV2SchemasIdGetResponsesContentApplicationJsonSchemaMeta, optional) — Metadata about the schema.

## Errors

### 401 Unauthorized Error

Unauthorized

- `success` (boolean, optional) — Indicates whether the request was successful (false for unauthorized errors).
- `reasons` (list of ScimV2SchemasIdGetResponsesContentApplicationJsonSchemaReasonsItems, optional) — List of reasons explaining why the request was unauthorized.

### 403 Forbidden Error

Forbidden

- `timestamp` (datetime, optional) — The timestamp when the error occurred.
- `status` (integer, optional) — HTTP status code indicating that the request is forbidden.
- `error` (string, optional) — Error type describing the forbidden access.
- `message` (string, optional) — A message detailing why the access was forbidden.
- `path` (string, optional) — The request path that caused the forbidden error.

### 404 Not Found Error

Not Found

- `schemas` (list of string, optional) — List of schema URNs describing the structure of the error response.
- `status` (string, optional) — HTTP status code indicating that the resource was not found.
- `detail` (string, optional) — Detailed message explaining that the resource was not found.

## Types

### ScimV2SchemasIdGetResponsesContentApplicationJsonSchemaAttributesItems

- `name` (string, optional) — Name of the attribute.
- `type` (string, optional) — Data type of the attribute (e.g., string, boolean).
- `multiValued` (boolean, optional) — Indicates if the attribute can hold multiple values.
- `description` (string, optional) — Description of the attribute.
- `required` (boolean, optional) — Indicates if the attribute is required.
- `caseExact` (boolean, optional) — Indicates if the attribute value is case-sensitive.
- `mutability` (string, optional) — Specifies the mutability of the attribute (e.g., readOnly, readWrite).
- `returned` (string, optional) — Specifies when the attribute is returned in responses (e.g., always, never).
- `uniqueness` (string, optional) — Specifies the uniqueness of the attribute values (e.g., none, server).

### ScimV2SchemasIdGetResponsesContentApplicationJsonSchemaMeta

Metadata about the schema.

- `resourceType` (string, optional) — Type of the resource (e.g., Schema).
- `location` (string, optional) — URL where the schema can be accessed.

### ScimV2SchemasIdGetResponsesContentApplicationJsonSchemaReasonsItems

- `message` (string, optional) — A message providing details about the unauthorized error.
- `code` (string, optional) — A code representing the specific unauthorized error.

## Examples

**Response**

```json
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Schema"
  ],
  "id": "urn:ietf:params:scim:schemas:core:2.0:User",
  "name": "User",
  "description": "User resource schema",
  "attributes": [
    {
      "name": "userName",
      "type": "string",
      "multiValued": false,
      "description": "User's username",
      "required": true,
      "caseExact": false,
      "mutability": "readWrite",
      "returned": "always",
      "uniqueness": "server"
    },
    {
      "name": "displayName",
      "type": "string",
      "multiValued": false,
      "description": "User's display name",
      "required": false,
      "caseExact": false,
      "mutability": "readWrite",
      "returned": "default",
      "uniqueness": "none"
    }
  ],
  "meta": {
    "resourceType": "Schema",
    "location": "http://localhost:9900/scim/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:User"
  }
}
```

**SDK Code**

```python
import requests

url = "https://rest.test.zuora.com/scim/v2/Schemas/id"

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

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

print(response.json())
```

```javascript
const url = 'https://rest.test.zuora.com/scim/v2/Schemas/id';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://rest.test.zuora.com/scim/v2/Schemas/id"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://rest.test.zuora.com/scim/v2/Schemas/id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://rest.test.zuora.com/scim/v2/Schemas/id")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://rest.test.zuora.com/scim/v2/Schemas/id', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://rest.test.zuora.com/scim/v2/Schemas/id");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://rest.test.zuora.com/scim/v2/Schemas/id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```