Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/sift-stack-resourceattributeservice-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Sift Resource Attribute Service API
version: '1.0'
description: Service to manage ABAC resource attributes (entity attributes).
servers:
- url: https://api.siftstack.com
description: Production
- url: https://gov.api.siftstack.com
description: Gov
security:
- BearerAuth: []
tags:
- name: ResourceAttributeService
description: Service to manage ABAC resource attributes (entity attributes).
paths:
/api/v1/entities/batch-resource-attributes:
post:
summary: Batch lists all resource-attributes for multiple entities.
operationId: ResourceAttributeService_BatchListResourceAttributesByEntity
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchListResourceAttributesByEntityResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchListResourceAttributesByEntityRequest'
required: true
tags:
- ResourceAttributeService
/api/v1/entities/{entity.entityId}/resource-attributes:
get:
summary: Lists all resource-attributes for a specific entity.
operationId: ResourceAttributeService_ListResourceAttributesByEntity
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1ListResourceAttributesByEntityResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: entity.entityId
in: path
required: true
schema:
type: string
- name: entity.entityType
in: query
required: true
schema:
type: string
enum:
- RESOURCE_ATTRIBUTE_ENTITY_TYPE_UNSPECIFIED
- RESOURCE_ATTRIBUTE_ENTITY_TYPE_ASSET
- RESOURCE_ATTRIBUTE_ENTITY_TYPE_CHANNEL
- RESOURCE_ATTRIBUTE_ENTITY_TYPE_RUN
default: RESOURCE_ATTRIBUTE_ENTITY_TYPE_UNSPECIFIED
- name: includeArchived
description: Whether to include archived resource-attributes. Defaults to false.
in: query
required: false
schema:
type: boolean
- name: pageSize
description: 'The maximum number of resource-attributes to return. The service may return fewer than this value.
If unspecified, at most 50 resource-attributes will be returned. The maximum value is 100; values above
100 will be coerced to 100.'
in: query
required: false
schema:
type: integer
format: int64
- name: pageToken
description: 'A page token, received from a previous `ListResourceAttributesByEntity` call.
Provide this to retrieve the subsequent page.
When paginating, all other parameters provided to `ListResourceAttributesByEntity` must match
the call that provided the page token.'
in: query
required: false
schema:
type: string
tags:
- ResourceAttributeService
/api/v1/resource-attribute-enum-values:
post:
operationId: ResourceAttributeService_CreateResourceAttributeEnumValue
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1CreateResourceAttributeEnumValueResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1CreateResourceAttributeEnumValueRequest'
required: true
tags:
- ResourceAttributeService
summary: Resource attribute service create resource attribute enum value
x-summary-source: derived
/api/v1/resource-attribute-enum-values/batch-archive:
post:
summary: Archives multiple enum values and migrates all resource-attributes with those…
operationId: ResourceAttributeService_BatchArchiveResourceAttributeEnumValues
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchArchiveResourceAttributeEnumValuesResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchArchiveResourceAttributeEnumValuesRequest'
required: true
tags:
- ResourceAttributeService
/api/v1/resource-attribute-enum-values/batch-unarchive:
post:
summary: Unarchives multiple enum values BUT DOES NOT migrate resource-attributes with a…
operationId: ResourceAttributeService_BatchUnarchiveResourceAttributeEnumValues
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchUnarchiveResourceAttributeEnumValuesResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchUnarchiveResourceAttributeEnumValuesRequest'
required: true
tags:
- ResourceAttributeService
/api/v1/resource-attribute-enum-values/{archivedEnumValueId}/archive:
post:
summary: Archives an enum value and migrates all resource-attributes with that value to…
operationId: ResourceAttributeService_ArchiveResourceAttributeEnumValue
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1ArchiveResourceAttributeEnumValueResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: archivedEnumValueId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
replacementEnumValueId:
type: string
description: 'When the archived_enum_value_id is archived all resource-attributes that reference it will be migrated to the replacement_enum_value_id
if provided. Otherwise, resource-attributes that reference it will be archived as well.'
required: true
tags:
- ResourceAttributeService
/api/v1/resource-attribute-enum-values/{resourceAttributeEnumValueId}:
get:
operationId: ResourceAttributeService_GetResourceAttributeEnumValue
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1GetResourceAttributeEnumValueResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeEnumValueId
in: path
required: true
schema:
type: string
tags:
- ResourceAttributeService
summary: Resource attribute service get resource attribute enum value
x-summary-source: derived
patch:
operationId: ResourceAttributeService_UpdateResourceAttributeEnumValue
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1UpdateResourceAttributeEnumValueResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeEnumValueId
in: path
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/PrincipalAttributeService_UpdatePrincipalAttributeEnumValueBody'
tags:
- ResourceAttributeService
summary: Resource attribute service update resource attribute enum value
x-summary-source: derived
/api/v1/resource-attribute-enum-values/{resourceAttributeEnumValueId}/unarchive:
post:
summary: Unarchives an enum value BUT DOES NOT migrate resource-attributes with a…
operationId: ResourceAttributeService_UnarchiveResourceAttributeEnumValue
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1UnarchiveResourceAttributeEnumValueResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeEnumValueId
in: path
required: true
schema:
type: string
tags:
- ResourceAttributeService
/api/v1/resource-attribute-keys:
get:
operationId: ResourceAttributeService_ListResourceAttributeKeys
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1ListResourceAttributeKeysResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: pageSize
description: 'The maximum number of resource_attribute keys to return. The service may return fewer than this value.
If unspecified, at most 50 resource_attribute keys will be returned. The maximum value is 100; values above
100 will be coerced to 100.'
in: query
required: false
schema:
type: integer
format: int64
- name: pageToken
description: 'A page token, received from a previous `ListResourceAttributeKeys` call.
Provide this to retrieve the subsequent page.
When paginating, all other parameters provided to `ListResourceAttributeKeys` must match
the call that provided the page token.'
in: query
required: false
schema:
type: string
- name: filter
description: 'A [Common Expression Language (CEL)](https://github.com/google/cel-spec) filter string.
Available fields to filter by are `resource_attribute_key_id`, `name`, `description`, `key_type`, and `created_date`.
Archive state is controlled via the `include_archived` field below, not via filter.
For further information about how to use CELs, please refer to [this guide](https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions).'
in: query
required: false
schema:
type: string
- name: orderBy
description: 'How to order the retrieved resource_attribute keys. Formatted as a comma-separated string i.e. "FIELD_NAME[ desc],...".
Available fields to order_by are `created_date`, `modified_date`, and `name`.
If left empty, items are ordered by `created_date` in descending order (newest-first).
For more information about the format of this field, read [this](https://google.aip.dev/132#ordering)
Example: "created_date desc,name"'
in: query
required: false
schema:
type: string
- name: includeArchived
description: Whether to include archived resource_attribute keys. Defaults to false.
in: query
required: false
schema:
type: boolean
tags:
- ResourceAttributeService
summary: Resource attribute service list resource attribute keys
x-summary-source: derived
post:
operationId: ResourceAttributeService_CreateResourceAttributeKey
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1CreateResourceAttributeKeyResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1CreateResourceAttributeKeyRequest'
required: true
tags:
- ResourceAttributeService
summary: Resource attribute service create resource attribute key
x-summary-source: derived
/api/v1/resource-attribute-keys/batch-archive:
post:
summary: Archives multiple resource_attribute keys AND all their associated enum values…
operationId: ResourceAttributeService_BatchArchiveResourceAttributeKeys
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchArchiveResourceAttributeKeysResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchArchiveResourceAttributeKeysRequest'
required: true
tags:
- ResourceAttributeService
/api/v1/resource-attribute-keys/batch-unarchive:
post:
summary: Unarchives multiple resource_attribute keys BUT NOT their associated enum…
operationId: ResourceAttributeService_BatchUnarchiveResourceAttributeKeys
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchUnarchiveResourceAttributeKeysResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchUnarchiveResourceAttributeKeysRequest'
required: true
tags:
- ResourceAttributeService
/api/v1/resource-attribute-keys/{resourceAttributeKeyId}:
get:
operationId: ResourceAttributeService_GetResourceAttributeKey
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1GetResourceAttributeKeyResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeKeyId
in: path
required: true
schema:
type: string
tags:
- ResourceAttributeService
summary: Resource attribute service get resource attribute key
x-summary-source: derived
patch:
operationId: ResourceAttributeService_UpdateResourceAttributeKey
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1UpdateResourceAttributeKeyResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeKeyId
in: path
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/PrincipalAttributeService_UpdatePrincipalAttributeEnumValueBody'
tags:
- ResourceAttributeService
summary: Resource attribute service update resource attribute key
x-summary-source: derived
/api/v1/resource-attribute-keys/{resourceAttributeKeyId}/archive:
post:
summary: Archives a resource_attribute key AND all its associated enum values AND all…
operationId: ResourceAttributeService_ArchiveResourceAttributeKey
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1ArchiveResourceAttributeKeyResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeKeyId
in: path
required: true
schema:
type: string
tags:
- ResourceAttributeService
/api/v1/resource-attribute-keys/{resourceAttributeKeyId}/archive-impact:
get:
operationId: ResourceAttributeService_CheckResourceAttributeKeyArchiveImpact
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1CheckResourceAttributeKeyArchiveImpactResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeKeyId
in: path
required: true
schema:
type: string
tags:
- ResourceAttributeService
summary: Resource attribute service check resource attribute key archive impact
x-summary-source: derived
/api/v1/resource-attribute-keys/{resourceAttributeKeyId}/enum-values:
get:
operationId: ResourceAttributeService_ListResourceAttributeEnumValues
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1ListResourceAttributeEnumValuesResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeKeyId
in: path
required: true
schema:
type: string
- name: pageSize
description: 'The maximum number of enum values to return. The service may return fewer than this value.
If unspecified, at most 50 enum values will be returned. The maximum value is 100; values above
100 will be coerced to 100.'
in: query
required: false
schema:
type: integer
format: int64
- name: pageToken
description: 'A page token, received from a previous `ListResourceAttributeEnumValues` call.
Provide this to retrieve the subsequent page.
When paginating, all other parameters provided to `ListResourceAttributeEnumValues` must match
the call that provided the page token.'
in: query
required: false
schema:
type: string
- name: filter
description: 'A [Common Expression Language (CEL)](https://github.com/google/cel-spec) filter string.
Available fields to filter by are `resource_attribute_enum_value_id`, `name`, `description`,
`created_by_user_id`, `modified_by_user_id`, `created_date`, and `modified_date`.
Archive state is controlled via the `include_archived` field below, not via filter.
For further information about how to use CELs, please refer to [this guide](https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions).'
in: query
required: false
schema:
type: string
- name: orderBy
description: 'How to order the retrieved enum values. Formatted as a comma-separated string i.e. "FIELD_NAME[ desc],...".
Available fields to order_by are `created_date`, `modified_date`, and `name`.
If left empty, items are ordered by `created_date` in descending order (newest-first).
For more information about the format of this field, read [this](https://google.aip.dev/132#ordering)
Example: "name,created_date desc"'
in: query
required: false
schema:
type: string
- name: includeArchived
description: Whether to include archived enum values. Defaults to false.
in: query
required: false
schema:
type: boolean
tags:
- ResourceAttributeService
summary: Resource attribute service list resource attribute enum values
x-summary-source: derived
/api/v1/resource-attribute-keys/{resourceAttributeKeyId}/unarchive:
post:
summary: Unarchives a resource_attribute key BUT NOT its associated enum values OR…
operationId: ResourceAttributeService_UnarchiveResourceAttributeKey
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1UnarchiveResourceAttributeKeyResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeKeyId
in: path
required: true
schema:
type: string
tags:
- ResourceAttributeService
/api/v1/resource-attributes:
get:
operationId: ResourceAttributeService_ListResourceAttributes
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1ListResourceAttributesResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: pageSize
description: 'The maximum number of resource-attributes to return. The service may return fewer than this value.
If unspecified, at most 50 resource-attributes will be returned. The maximum value is 100; values above
100 will be coerced to 100.'
in: query
required: false
schema:
type: integer
format: int64
- name: pageToken
description: 'A page token, received from a previous `ListResourceAttributes` call.
Provide this to retrieve the subsequent page.
When paginating, all other parameters provided to `ListResourceAttributes` must match
the call that provided the page token.'
in: query
required: false
schema:
type: string
- name: filter
description: 'A [Common Expression Language (CEL)](https://github.com/google/cel-spec) filter string.
Available fields to filter by are `resource_attribute_id`, `entity_id`, `entity_type`, `resource_attribute_key_id`,
`resource_attribute_enum_value_id`, `boolean_value`, `number_value`, `created_by_user_id`, and `created_date`.
Archive state is controlled via the `include_archived` field below, not via filter.
For further information about how to use CELs, please refer to [this guide](https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions).'
in: query
required: false
schema:
type: string
- name: orderBy
description: 'How to order the retrieved resource-attributes. Formatted as a comma-separated string i.e. "FIELD_NAME[ desc],...".
Available fields to order_by are `created_date` and `entity.entity_id`.
If left empty, items are ordered by `created_date` in descending order (newest-first).
For more information about the format of this field, read [this](https://google.aip.dev/132#ordering)
Example: "entity.entity_id,created_date desc"'
in: query
required: false
schema:
type: string
- name: includeArchived
description: Whether to include archived resource-attributes. Defaults to false.
in: query
required: false
schema:
type: boolean
tags:
- ResourceAttributeService
summary: Resource attribute service list resource attributes
x-summary-source: derived
/api/v1/resource-attributes/batch:
post:
summary: Creates resource-attributes for multiple entities with the same key-value pair
operationId: ResourceAttributeService_BatchCreateResourceAttributes
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchCreateResourceAttributesResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchCreateResourceAttributesRequest'
required: true
tags:
- ResourceAttributeService
/api/v1/resource-attributes/batch-archive:
post:
summary: Archives multiple resource-attributes
operationId: ResourceAttributeService_BatchArchiveResourceAttributes
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchArchiveResourceAttributesResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchArchiveResourceAttributesRequest'
required: true
tags:
- ResourceAttributeService
/api/v1/resource-attributes/batch-unarchive:
post:
summary: Unarchives multiple resource-attributes
operationId: ResourceAttributeService_BatchUnarchiveResourceAttributes
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchUnarchiveResourceAttributesResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1BatchUnarchiveResourceAttributesRequest'
required: true
tags:
- ResourceAttributeService
/api/v1/resource-attributes/{resourceAttributeId}:
get:
operationId: ResourceAttributeService_GetResourceAttribute
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1GetResourceAttributeResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeId
in: path
required: true
schema:
type: string
tags:
- ResourceAttributeService
summary: Resource attribute service get resource attribute
x-summary-source: derived
/api/v1/resource-attributes/{resourceAttributeId}/archive:
post:
operationId: ResourceAttributeService_ArchiveResourceAttribute
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1ArchiveResourceAttributeResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeId
in: path
required: true
schema:
type: string
tags:
- ResourceAttributeService
summary: Resource attribute service archive resource attribute
x-summary-source: derived
/api/v1/resource-attributes/{resourceAttributeId}/unarchive:
post:
operationId: ResourceAttributeService_UnarchiveResourceAttribute
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1UnarchiveResourceAttributeResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: resourceAttributeId
in: path
required: true
schema:
type: string
tags:
- ResourceAttributeService
summary: Resource attribute service unarchive resource attribute
x-summary-source: derived
components:
schemas:
v1BatchArchiveResourceAttributeEnumValuesResponse:
type: object
properties:
totalResourceAttributesMigrated:
type: integer
format: int32
description: 'Total number of resource-attributes migrated or archived across all enum value operations.
This includes both attributes migrated to replacement values and attributes archived without replacement.'
v1ListResourceAttributeEnumValuesResponse:
type: object
properties:
resourceAttributeEnumValues:
type: array
items:
$ref: '#/components/schemas/v1ResourceAttributeEnumValue'
nextPageToken:
type: string
v1UpdateResourceAttributeEnumValueResponse:
type: object
properties:
resourceAttributeEnumValue:
$ref: '#/components/schemas/v1ResourceAttributeEnumValue'
required:
- resourceAttributeEnumValue
v1BatchCreateResourceAttributesRequest:
type: object
properties:
resourceAttributeKeyId:
type: string
resourceAttributeEnumValueId:
# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sift-stack/refs/heads/main/openapi/sift-stack-resourceattributeservice-api-openapi.yml