# Reference Data

Lookup endpoints for the tenant-specific metadata required to drive review and scanner workflows.

## List brands

> Retrieve brands available to the authenticated tenant. These brand identifiers can be used when creating scanner jobs or filtering report results.

```json
{"openapi":"3.1.0","info":{"title":"Protege External Review API","version":"1.0.1"},"tags":[{"name":"Reference Data","description":"Lookup endpoints for the tenant-specific metadata required to drive review and scanner workflows."}],"servers":[{"url":"https://sandbox.tryprotege.com","description":"Sandbox environment for partner integration and testing."}],"security":[{"bearerApiKey":[]}],"components":{"securitySchemes":{"bearerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Supply the Protege external API key in the `Authorization` header using the format `Bearer <api_key>`.\n"}},"schemas":{"BrandListResponse":{"description":"Paginated collection of brands.","type":"object","required":["brands","page"],"properties":{"brands":{"type":"array","items":{"$ref":"#/components/schemas/Brand"}},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"Brand":{"description":"Brand available to the authenticated tenant for filtering scanners and reports.","type":"object","required":["id","name"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"PageMetadata":{"description":"Standard offset-based pagination metadata.","type":"object","required":["limit","offset","count","total"],"properties":{"limit":{"type":"integer","default":25},"offset":{"type":"integer","default":0},"count":{"type":"integer"},"total":{"type":"integer"}}},"ErrorResponse":{"description":"Standard error envelope returned when a request cannot be fulfilled.","type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable explanation of the failure."}}},"RateLimitError":{"description":"Returned when the client has exceeded the allowed request rate.","type":"object","required":["error","retryAfter"],"properties":{"error":{"type":"string","description":"Human-readable description of the rate-limit violation."},"retryAfter":{"type":"integer","description":"Number of seconds the client should wait before retrying."}}}}},"paths":{"/api/v1/brands":{"get":{"summary":"List brands","description":"Retrieve brands available to the authenticated tenant. These brand identifiers can be used when creating scanner jobs or filtering report results.","operationId":"listBrands","tags":["Reference Data"],"parameters":[{"name":"id","in":"query","description":"Filter by a specific brand identifier.","schema":{"type":"string","format":"uuid"}},{"name":"search","in":"query","description":"Case-insensitive search against brand names.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Maximum number of records to return.","schema":{"type":"integer","minimum":1}},{"name":"offset","in":"query","description":"Number of records to skip before returning results.","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Brands returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandListResponse"}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Number of seconds to wait before retrying."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}}}}}
```

## List policies

> Return policy definitions that may be referenced by review findings or nested under policy groups and document evaluation types.

```json
{"openapi":"3.1.0","info":{"title":"Protege External Review API","version":"1.0.1"},"tags":[{"name":"Reference Data","description":"Lookup endpoints for the tenant-specific metadata required to drive review and scanner workflows."}],"servers":[{"url":"https://sandbox.tryprotege.com","description":"Sandbox environment for partner integration and testing."}],"security":[{"bearerApiKey":[]}],"components":{"securitySchemes":{"bearerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Supply the Protege external API key in the `Authorization` header using the format `Bearer <api_key>`.\n"}},"schemas":{"PolicyListResponse":{"description":"Paginated collection of policies.","type":"object","required":["policies","page"],"properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/Policy"}},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"Policy":{"description":"Full policy record returned by the policies endpoint.","allOf":[{"$ref":"#/components/schemas/NestedPolicy"},{"type":"object","properties":{"policyGroup":{"oneOf":[{"$ref":"#/components/schemas/PolicyGroupRef"},{"type":"null"}]}}}]},"NestedPolicy":{"description":"Policy summary embedded under parent resources such as policy groups.","type":"object","required":["id","name","description","useCase","enabled","riskLevel"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string"},"useCase":{"type":"string","enum":["marketing_review","document_qa"],"description":"Determines what the evaluation type is optimized for. `marketing_review` analyzes documents and web content for compliance against brand policies. `document_qa` extracts structured content from documents and websites for specific queries and document-level grouping.\n"},"enabled":{"type":"boolean","description":"Whether the policy is currently active and evaluated."},"riskLevel":{"type":"string","description":"Severity or risk classification assigned to this policy."}}},"PolicyGroupRef":{"description":"Lightweight reference to a policy group.","type":"object","required":["id","name"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"PageMetadata":{"description":"Standard offset-based pagination metadata.","type":"object","required":["limit","offset","count","total"],"properties":{"limit":{"type":"integer","default":25},"offset":{"type":"integer","default":0},"count":{"type":"integer"},"total":{"type":"integer"}}},"ErrorResponse":{"description":"Standard error envelope returned when a request cannot be fulfilled.","type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable explanation of the failure."}}},"RateLimitError":{"description":"Returned when the client has exceeded the allowed request rate.","type":"object","required":["error","retryAfter"],"properties":{"error":{"type":"string","description":"Human-readable description of the rate-limit violation."},"retryAfter":{"type":"integer","description":"Number of seconds the client should wait before retrying."}}}}},"paths":{"/api/v1/policies":{"get":{"summary":"List policies","description":"Return policy definitions that may be referenced by review findings or nested under policy groups and document evaluation types.","operationId":"listPolicies","tags":["Reference Data"],"parameters":[{"name":"id","in":"query","description":"Filter by a specific policy identifier.","schema":{"type":"string","format":"uuid"}},{"name":"policyGroupId","in":"query","description":"Filter to policies that belong to a specific policy group.","schema":{"type":"string","format":"uuid"}},{"name":"search","in":"query","description":"Case-insensitive search against policy names.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Maximum number of records to return per page.","schema":{"type":"integer","minimum":1,"default":25}},{"name":"offset","in":"query","description":"Number of records to skip before starting the page.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"sortBy","in":"query","description":"Field used to sort the result set.","schema":{"type":"string","enum":["name","createdAt","updatedAt"]}},{"name":"sortOrder","in":"query","description":"Sort direction for the selected sort field.","schema":{"type":"string","enum":["asc","desc"]}}],"responses":{"200":{"description":"Policies returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyListResponse"}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Number of seconds to wait before retrying."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}}}}}
```

## List policy groups

> Return policy groups available to the tenant. Use the \`expand=policies\` option when clients need the nested policy records in the same response.

```json
{"openapi":"3.1.0","info":{"title":"Protege External Review API","version":"1.0.1"},"tags":[{"name":"Reference Data","description":"Lookup endpoints for the tenant-specific metadata required to drive review and scanner workflows."}],"servers":[{"url":"https://sandbox.tryprotege.com","description":"Sandbox environment for partner integration and testing."}],"security":[{"bearerApiKey":[]}],"components":{"securitySchemes":{"bearerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Supply the Protege external API key in the `Authorization` header using the format `Bearer <api_key>`.\n"}},"schemas":{"PolicyGroupListResponse":{"description":"Paginated collection of policy groups.","type":"object","required":["policyGroups","page"],"properties":{"policyGroups":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/PolicyGroup"},{"$ref":"#/components/schemas/ExpandedPolicyGroup"}]}},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"PolicyGroup":{"description":"Grouping of related review policies used to organize evaluation coverage.","type":"object","required":["id","name","description","useCase"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string"},"useCase":{"type":"string","enum":["marketing_review","document_qa"],"description":"Determines what the evaluation type is optimized for. `marketing_review` analyzes documents and web content for compliance against brand policies. `document_qa` extracts structured content from documents and websites for specific queries and document-level grouping.\n"},"prePolicy":{"oneOf":[{"$ref":"#/components/schemas/PolicyPrePolicyRef"},{"type":"null"}]}}},"PolicyPrePolicyRef":{"description":"Reference to a prerequisite or pre-check policy associated with a policy group.","type":"object","required":["id","name"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"ExpandedPolicyGroup":{"allOf":[{"$ref":"#/components/schemas/PolicyGroup"},{"type":"object","required":["policies"],"properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/NestedPolicy"}}}}]},"NestedPolicy":{"description":"Policy summary embedded under parent resources such as policy groups.","type":"object","required":["id","name","description","useCase","enabled","riskLevel"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string"},"useCase":{"type":"string","enum":["marketing_review","document_qa"],"description":"Determines what the evaluation type is optimized for. `marketing_review` analyzes documents and web content for compliance against brand policies. `document_qa` extracts structured content from documents and websites for specific queries and document-level grouping.\n"},"enabled":{"type":"boolean","description":"Whether the policy is currently active and evaluated."},"riskLevel":{"type":"string","description":"Severity or risk classification assigned to this policy."}}},"PageMetadata":{"description":"Standard offset-based pagination metadata.","type":"object","required":["limit","offset","count","total"],"properties":{"limit":{"type":"integer","default":25},"offset":{"type":"integer","default":0},"count":{"type":"integer"},"total":{"type":"integer"}}},"ErrorResponse":{"description":"Standard error envelope returned when a request cannot be fulfilled.","type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable explanation of the failure."}}},"RateLimitError":{"description":"Returned when the client has exceeded the allowed request rate.","type":"object","required":["error","retryAfter"],"properties":{"error":{"type":"string","description":"Human-readable description of the rate-limit violation."},"retryAfter":{"type":"integer","description":"Number of seconds the client should wait before retrying."}}}}},"paths":{"/api/v1/policy-groups":{"get":{"summary":"List policy groups","description":"Return policy groups available to the tenant. Use the `expand=policies` option when clients need the nested policy records in the same response.","operationId":"listPolicyGroups","tags":["Reference Data"],"parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"search","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Maximum number of records to return per page.","schema":{"type":"integer","minimum":1,"default":25}},{"name":"offset","in":"query","description":"Number of records to skip before starting the page.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"sortBy","in":"query","description":"Field used to sort the result set.","schema":{"type":"string","enum":["name","createdAt"]}},{"name":"sortOrder","in":"query","description":"Sort direction for the selected sort field.","schema":{"type":"string","enum":["asc","desc"]}},{"name":"expand","in":"query","description":"Expand related resources inline.","schema":{"type":"string","enum":["policies"]}}],"responses":{"200":{"description":"Policy groups returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyGroupListResponse"}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Number of seconds to wait before retrying."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}}}}}
```

## List document evaluation types

> Return review configurations available to the tenant. These identifiers are required when creating document reviews or scanner jobs.

```json
{"openapi":"3.1.0","info":{"title":"Protege External Review API","version":"1.0.1"},"tags":[{"name":"Reference Data","description":"Lookup endpoints for the tenant-specific metadata required to drive review and scanner workflows."}],"servers":[{"url":"https://sandbox.tryprotege.com","description":"Sandbox environment for partner integration and testing."}],"security":[{"bearerApiKey":[]}],"components":{"securitySchemes":{"bearerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Supply the Protege external API key in the `Authorization` header using the format `Bearer <api_key>`.\n"}},"schemas":{"DocumentEvaluationTypeListResponse":{"description":"Paginated list of document evaluation types available to the API key's tenant.","type":"object","required":["documentEvaluationTypes","page"],"properties":{"documentEvaluationTypes":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DocumentEvaluationType"},{"$ref":"#/components/schemas/ExpandedDocumentEvaluationType"}]}},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"DocumentEvaluationType":{"description":"Review configuration that determines which checks, policies, and workflows are applied to a document.","type":"object","required":["id","name","description","useCase"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string"},"useCase":{"type":"string","enum":["marketing_review","document_qa"],"description":"Determines what the evaluation type is optimized for. `marketing_review` analyzes documents and web content for compliance against brand policies. `document_qa` extracts structured content from documents and websites for specific queries and document-level grouping.\n"}}},"ExpandedDocumentEvaluationType":{"description":"Expanded document evaluation type including its policy groups and nested policies.","allOf":[{"$ref":"#/components/schemas/DocumentEvaluationType"},{"type":"object","required":["policyGroups"],"properties":{"policyGroups":{"type":"array","items":{"$ref":"#/components/schemas/ExpandedPolicyGroup"}}}}]},"ExpandedPolicyGroup":{"allOf":[{"$ref":"#/components/schemas/PolicyGroup"},{"type":"object","required":["policies"],"properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/NestedPolicy"}}}}]},"PolicyGroup":{"description":"Grouping of related review policies used to organize evaluation coverage.","type":"object","required":["id","name","description","useCase"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string"},"useCase":{"type":"string","enum":["marketing_review","document_qa"],"description":"Determines what the evaluation type is optimized for. `marketing_review` analyzes documents and web content for compliance against brand policies. `document_qa` extracts structured content from documents and websites for specific queries and document-level grouping.\n"},"prePolicy":{"oneOf":[{"$ref":"#/components/schemas/PolicyPrePolicyRef"},{"type":"null"}]}}},"PolicyPrePolicyRef":{"description":"Reference to a prerequisite or pre-check policy associated with a policy group.","type":"object","required":["id","name"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"NestedPolicy":{"description":"Policy summary embedded under parent resources such as policy groups.","type":"object","required":["id","name","description","useCase","enabled","riskLevel"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string"},"useCase":{"type":"string","enum":["marketing_review","document_qa"],"description":"Determines what the evaluation type is optimized for. `marketing_review` analyzes documents and web content for compliance against brand policies. `document_qa` extracts structured content from documents and websites for specific queries and document-level grouping.\n"},"enabled":{"type":"boolean","description":"Whether the policy is currently active and evaluated."},"riskLevel":{"type":"string","description":"Severity or risk classification assigned to this policy."}}},"PageMetadata":{"description":"Standard offset-based pagination metadata.","type":"object","required":["limit","offset","count","total"],"properties":{"limit":{"type":"integer","default":25},"offset":{"type":"integer","default":0},"count":{"type":"integer"},"total":{"type":"integer"}}},"ErrorResponse":{"description":"Standard error envelope returned when a request cannot be fulfilled.","type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable explanation of the failure."}}},"RateLimitError":{"description":"Returned when the client has exceeded the allowed request rate.","type":"object","required":["error","retryAfter"],"properties":{"error":{"type":"string","description":"Human-readable description of the rate-limit violation."},"retryAfter":{"type":"integer","description":"Number of seconds the client should wait before retrying."}}}}},"paths":{"/api/v1/document-evaluation-types":{"get":{"summary":"List document evaluation types","description":"Return review configurations available to the tenant. These identifiers are required when creating document reviews or scanner jobs.","operationId":"listDocumentEvaluationTypes","tags":["Reference Data"],"parameters":[{"name":"id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"search","in":"query","schema":{"type":"string"}},{"name":"useCase","in":"query","description":"Filter evaluation types by business use case.","schema":{"type":"string","enum":["marketing_review","document_qa"]}},{"name":"limit","in":"query","description":"Maximum number of records to return per page.","schema":{"type":"integer","minimum":1,"default":25}},{"name":"offset","in":"query","description":"Number of records to skip before starting the page.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"sortBy","in":"query","description":"Field used to sort the result set.","schema":{"type":"string","enum":["name","createdAt"]}},{"name":"sortOrder","in":"query","description":"Sort direction for the selected sort field.","schema":{"type":"string","enum":["asc","desc"]}},{"name":"expand","in":"query","description":"Expand related policy groups inline.","schema":{"type":"string","enum":["policyGroups"]}}],"responses":{"200":{"description":"Document evaluation types returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentEvaluationTypeListResponse"}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Number of seconds to wait before retrying."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gitbook.tryprotege.com/review/getting-started/api-reference/reference-data.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
