Wegalvanize Custom attributes API

Custom attributes are the customizable fields that are associated with supported objects. Custom attributes are defined on the project type and used by the project and its children (i.e. objectives). > **Note —** No more than 5 custom attributes of one customizable_type can be created (no more than 8 if the customizable type is 'CustomRiskFactor'). Learn more about custom attributes.

Operations 5

GET /orgs/{org_id}/project_types/{project_type_id}/custom_attributes Get custom attributes #
POST /orgs/{org_id}/project_types/{project_type_id}/custom_attributes Create a custom attribute #
GET /orgs/{org_id}/custom_attributes/{id} Get a custom attribute #
PATCH /orgs/{org_id}/custom_attributes/{id} Update a custom attribute #
DELETE /orgs/{org_id}/custom_attributes/{id} Delete a custom attribute #

Work with this as data

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/wegalvanize-custom-attributes-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 Specification

wegalvanize-custom-attributes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: HighBond API Reference Custom attributes API
  version: 1.1.0
  description: Welcome to the API documentation for HighBond.
  x-logo:
    url: ./assets/logo.png
    altText: HighBond Logo
servers:
- url: '{protocol}://{server}/v1'
  variables:
    protocol:
      default: https
    server:
      default: apis-us.highbond.com
      enum:
      - apis-us.highbond.com
      - apis-ca.highbond.com
      - apis-eu.highbond.com
      - apis-ap.highbond.com
      - apis-au.highbond.com
      - apis-af.highbond.com
      - apis-sa.highbond.com
      - apis-jp.highbond.com
security:
- bearerToken: []
tags:
- name: Custom Attributes
  description: 'Custom attributes are the customizable fields that are associated with supported objects.

    Custom attributes are defined on the project type and used by the project and its children (i.e. objectives).


    > **Note —**

    No more than 5 custom attributes of one customizable_type can be created (no more than 8 if the customizable type is ''CustomRiskFactor'').


    Learn more about custom attributes.'
paths:
  /orgs/{org_id}/project_types/{project_type_id}/custom_attributes:
    get:
      tags:
      - Custom Attributes
      operationId: getCustomAttributes
      summary: Get custom attributes
      description: Get a list of all custom attributes associated with a project type.
      parameters:
      - $ref: '#/components/parameters/orgIdParam'
      - $ref: '#/components/parameters/projectTypeIdParam'
      - $ref: '#/components/parameters/customAttributeSparseFieldsetParams'
      - $ref: '#/components/parameters/pageSizeParam'
      - $ref: '#/components/parameters/pageNumberEncodedParam'
      responses:
        '200':
          description: OK.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/GetCustomAttributesResponse'
        '400':
          $ref: '#/components/responses/MissingResourceId'
        '401':
          $ref: '#/components/responses/BadCredentials'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/NotJsonapiMediaType'
    post:
      tags:
      - Custom Attributes
      operationId: createCustomAttribute
      summary: Create a custom attribute
      description: Create a new custom attribute in an existing project type.
      parameters:
      - $ref: '#/components/parameters/orgIdParam'
      - $ref: '#/components/parameters/projectTypeIdParam'
      - $ref: '#/components/parameters/customAttributeSparseFieldsetParams'
      requestBody:
        description: The data required to create a custom attribute.
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/CreateCustomAttributeRequest'
      responses:
        '201':
          description: Created.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/GetCustomAttributeResponse'
        '400':
          $ref: '#/components/responses/ResourceTypeMismatch'
        '401':
          $ref: '#/components/responses/BadCredentials'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/NotJsonapiMediaType'
        '422':
          description: 'Unprocessable entity.

            '
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                - status: 422
                  source:
                    pointer: /data/attributes/customizable_type
                  code: invalid_resource
                  detail: Must include customizable_type.
  /orgs/{org_id}/custom_attributes/{id}:
    get:
      tags:
      - Custom Attributes
      operationId: getCustomAttribute
      summary: Get a custom attribute
      description: Get information about a custom attribute.
      parameters:
      - $ref: '#/components/parameters/orgIdParam'
      - $ref: '#/components/parameters/resourceIdParam'
      - $ref: '#/components/parameters/customAttributeSparseFieldsetParams'
      responses:
        '200':
          description: OK.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/GetCustomAttributeResponse'
        '400':
          $ref: '#/components/responses/MissingResourceId'
        '401':
          $ref: '#/components/responses/BadCredentials'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/NotJsonapiMediaType'
    patch:
      tags:
      - Custom Attributes
      operationId: updateCustomAttribute
      summary: Update a custom attribute
      description: Make changes to a custom attribute in a project type, like modifying the term or field_type.
      parameters:
      - $ref: '#/components/parameters/orgIdParam'
      - $ref: '#/components/parameters/resourceIdParam'
      - $ref: '#/components/parameters/customAttributeSparseFieldsetParams'
      requestBody:
        description: The data required to update a custom attribute.
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/UpdateCustomAttributeRequest'
      responses:
        '200':
          description: OK.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/GetCustomAttributeResponse'
        '400':
          $ref: '#/components/responses/MissingResourceId'
        '401':
          $ref: '#/components/responses/BadCredentials'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/NotJsonapiMediaType'
        '422':
          description: 'Unprocessable entity.

            '
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                - status: 422
                  source:
                    pointer: /data/attributes/customizable_type
                  code: invalid_resource
                  detail: Must include customizable_type.
    delete:
      tags:
      - Custom Attributes
      operationId: deleteCustomAttribute
      summary: Delete a custom attribute
      description: 'Permanently delete a custom attribute from a project type.

        > **Caution —**

        Deleting a custom attribute permanently removes the field and all associated data from all relevant projects and frameworks.'
      parameters:
      - $ref: '#/components/parameters/orgIdParam'
      - $ref: '#/components/parameters/resourceIdParam'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/MissingOrgId'
        '401':
          $ref: '#/components/responses/BadCredentials'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/NotJsonapiMediaType'
components:
  schemas:
    UpdateCustomAttributeRequest:
      type: object
      description: The data associated with the resource.
      required:
      - data
      properties:
        data:
          type: object
          description: The data associated with the resource.
          required:
          - id
          - type
          - attributes
          properties:
            id:
              type: string
              description: The ID of the requested resource.
              example: '1'
            type:
              type: string
              description: The type of the custom attribute (`"custom_attributes"`).
              example: custom_attributes
            attributes:
              type: object
              description: The attributes associated with the resource.
              required:
              - term
              properties:
                term:
                  type: string
                  description: The displayed name of the custom attribute.
                  example: Custom Risk Factor Attribute
                options:
                  type:
                  - array
                  - 'null'
                  description: 'The value or values (for multiselect) for this custom attribute.


                    >**Note**: This is a required field if the custom attribute is of field_type select or multiselect.

                    '
                  example:
                  - Option1
                  - Option2
                  - Option3
                  items:
                    type: string
                weight:
                  type: integer
                  description: 'The weight value, only for custom attributes of type CustomRiskFactor. The weight value must be an integer between 1 and 1000.


                    >**Note**: This is a required field if the custom attribute is of type CustomRiskFactor.

                    '
                  format: int64
                  example: 100
                required:
                  type: boolean
                  description: A boolean value indicating whether the custom attribute is required.
                  example: true
                default_values:
                  type:
                  - array
                  - 'null'
                  description: 'The default value or values for this custom attribute.

                    '
                  example:
                  - Option1
                  - Option2
                  - Option3
                  items:
                    type: string
    CreateCustomAttributeRequest:
      type: object
      description: The data associated with the resource.
      required:
      - data
      properties:
        data:
          type: object
          description: The data associated with the resource.
          required:
          - type
          - attributes
          properties:
            type:
              type: string
              description: The type of the custom attribute (`"custom_attributes"`).
              example: custom_attributes
            attributes:
              type: object
              description: The attributes associated with the resource.
              required:
              - customizable_type
              - term
              - field_type
              properties:
                customizable_type:
                  type: string
                  description: 'The type of the custom attribute. Valid types are:

                    - CustomControlAttribute

                    - CustomControlTestAttribute

                    - CustomControlTestPlanAttribute

                    - CustomFindingActionAttribute

                    - CustomFindingAttribute

                    - CustomObjectiveAttribute

                    - CustomPlanningAttribute

                    - CustomProjectPlanningAttribute

                    - CustomResultsAttribute

                    - CustomRiskAttribute

                    - CustomRiskFactor

                    - CustomWalkthroughAttribute


                    >**Note**: There can be up to 5 of each custom attribute per project type, except for CustomRiskFactor, which can have up to 8 per project type. If the customizable_type is CustomRiskFactor, the weight field becomes a required field, and the field type can only be `select`.

                    '
                  example: CustomRiskFactor
                term:
                  type: string
                  description: The displayed name of the custom attribute.
                  example: Custom Risk Factor Attribute
                field_type:
                  type: string
                  description: 'The field type of the custom attribute. Valid field types are:

                    - select

                    - multiselect

                    - date

                    - text

                    - paragraph


                    >**Note**: If field_type is select or multiselect, the options field becomes a required field.

                    '
                  example: select
                options:
                  type:
                  - array
                  - 'null'
                  description: 'The value or values (for multiselect) for this custom attribute.


                    >**Note**: This is a required field if the custom attribute is of field_type select or multiselect.

                    '
                  example:
                  - Option1
                  - Option2
                  - Option3
                  items:
                    type: string
                weight:
                  type: integer
                  description: 'The weight value, only for custom attributes of type CustomRiskFactor. The weight value must be an integer between 1 and 1000.


                    >**Note**: This is a required field if the custom attribute is of type CustomRiskFactor.

                    '
                  format: int64
                  example: 100
                required:
                  type: boolean
                  description: A boolean value indicating whether the custom attribute is required.
                  example: true
                default_values:
                  type:
                  - array
                  - 'null'
                  description: 'The default value or values for this custom attribute.

                    '
                  example:
                  - Option1
                  - Option2
                  - Option3
                  items:
                    type: string
    GetCustomAttributeResponse:
      type: object
      required:
      - data
      properties:
        data:
          type: object
          description: The data associated with the resource.
          required:
          - id
          - type
          - attributes
          - relationships
          properties:
            id:
              type: string
              description: The ID of the requested resource.
              example: '1'
            type:
              type: string
              description: The type of the custom attribute (`"custom_attributes"`).
              example: custom_attributes
            attributes:
              type: object
              description: The attributes associated with the resource.
              required:
              - customizable_type
              - term
              - field_type
              properties:
                customizable_type:
                  type: string
                  description: 'The type of the custom attribute. Valid types are:

                    - CustomControlAttribute

                    - CustomControlTestAttribute

                    - CustomControlTestPlanAttribute

                    - CustomFindingActionAttribute

                    - CustomFindingAttribute

                    - CustomObjectiveAttribute

                    - CustomPlanningAttribute

                    - CustomProjectPlanningAttribute

                    - CustomResultsAttribute

                    - CustomRiskAttribute

                    - CustomRiskFactor

                    - CustomWalkthroughAttribute


                    >**Note**: There can be up to 5 of each custom attribute per project type, except for CustomRiskFactor, which can have up to 8 per project type. If the customizable_type is CustomRiskFactor, the weight field becomes a required field, and the field type can only be `select`.

                    '
                  example: CustomRiskFactor
                term:
                  type: string
                  description: The displayed name of the custom attribute.
                  example: Custom Risk Factor Attribute
                field_type:
                  type: string
                  description: 'The field type of the custom attribute. Valid field types are:

                    - select

                    - multiselect

                    - date

                    - text

                    - paragraph


                    >**Note**: If field_type is select or multiselect, the options field becomes a required field.

                    '
                  example: select
                options:
                  type:
                  - array
                  - 'null'
                  description: 'The value or values (for multiselect) for this custom attribute.


                    >**Note**: This is a required field if the custom attribute is of field_type select or multiselect.

                    '
                  example:
                  - Option1
                  - Option2
                  - Option3
                  items:
                    type: string
                weight:
                  type: integer
                  description: 'The weight value, only for custom attributes of type CustomRiskFactor. The weight value must be an integer between 1 and 1000.


                    >**Note**: This is a required field if the custom attribute is of type CustomRiskFactor.

                    '
                  format: int64
                  example: 100
                created_at:
                  type: string
                  description: The timestamp identifying when the narrative was created.
                  example: '2019-02-09T13:17:26Z'
                  format: date-time
                updated_at:
                  type: string
                  description: The timestamp identifying when the narrative was last updated.
                  example: '2019-02-09T13:17:26Z'
                  format: date-time
                required:
                  type: boolean
                  description: A boolean value indicating whether the custom attribute is required.
                  example: true
                default_values:
                  type:
                  - array
                  - 'null'
                  description: 'The default value or values for this custom attribute.

                    '
                  example:
                  - Option1
                  - Option2
                  - Option3
                  items:
                    type: string
            relationships:
              type: object
              description: The relationships associated with the resource.
              required:
              - project_type
              properties:
                project_type:
                  type: object
                  description: 'Each custom attribute has an associated project type. Project types define the structure of a project or framework,

                    including the terminology used in the project or framework.

                    '
                  required:
                  - data
                  properties:
                    data:
                      type: object
                      description: The data associated with the resource.
                      required:
                      - id
                      - type
                      properties:
                        id:
                          type: string
                          description: The ID of the project type that this custom attribute belongs to.
                          example: '1'
                        type:
                          type: string
                          description: The classification of the object (`"project_types"`).
                          example: project_types
    GetCustomAttributesResponse:
      type: object
      required:
      - data
      - links
      properties:
        data:
          type: array
          items:
            type: object
            description: The data associated with the resource.
            required:
            - id
            - type
            - attributes
            - relationships
            properties:
              id:
                type: string
                description: The ID of the requested resource.
                example: '1'
              type:
                type: string
                description: The type of the custom attribute (`"custom_attributes"`).
                example: custom_attributes
              attributes:
                type: object
                description: The attributes associated with the resource.
                required:
                - customizable_type
                - term
                - field_type
                properties:
                  customizable_type:
                    type: string
                    description: 'The type of the custom attribute. Valid types are:

                      - CustomControlAttribute

                      - CustomControlTestAttribute

                      - CustomControlTestPlanAttribute

                      - CustomFindingActionAttribute

                      - CustomFindingAttribute

                      - CustomObjectiveAttribute

                      - CustomPlanningAttribute

                      - CustomProjectPlanningAttribute

                      - CustomResultsAttribute

                      - CustomRiskAttribute

                      - CustomRiskFactor

                      - CustomWalkthroughAttribute


                      >**Note**: There can be up to 5 of each custom attribute per project type, except for CustomRiskFactor, which can have up to 8 per project type. If the customizable_type is CustomRiskFactor, the weight field becomes a required field, and the field type can only be `select`.

                      '
                    example: CustomRiskFactor
                  term:
                    type: string
                    description: The displayed name of the custom attribute.
                    example: Custom Risk Factor Attribute
                  field_type:
                    type: string
                    description: 'The field type of the custom attribute. Valid field types are:

                      - select

                      - multiselect

                      - date

                      - text

                      - paragraph


                      >**Note**: If field_type is select or multiselect, the options field becomes a required field.

                      '
                    example: select
                  options:
                    type:
                    - array
                    - 'null'
                    description: 'The value or values (for multiselect) for this custom attribute.


                      >**Note**: This is a required field if the custom attribute is of field_type select or multiselect.

                      '
                    example:
                    - Option1
                    - Option2
                    - Option3
                    items:
                      type: string
                  weight:
                    type: integer
                    description: 'The weight value, only for custom attributes of type CustomRiskFactor. The weight value must be an integer between 1 and 1000.


                      >**Note**: This is a required field if the custom attribute is of type CustomRiskFactor.

                      '
                    format: int64
                    example: 100
                  created_at:
                    type: string
                    description: The timestamp identifying when the narrative was created.
                    example: '2019-02-09T13:17:26Z'
                    format: date-time
                  updated_at:
                    type: string
                    description: The timestamp identifying when the narrative was last updated.
                    example: '2019-02-09T13:17:26Z'
                    format: date-time
                  required:
                    type: boolean
                    description: A boolean value indicating whether the custom attribute is required.
                    example: true
                  default_values:
                    type:
                    - array
                    - 'null'
                    description: 'The default value or values for this custom attribute.

                      '
                    example:
                    - Option1
                    - Option2
                    - Option3
                    items:
                      type: string
              relationships:
                type: object
                description: The relationships associated with the resource.
                required:
                - project_type
                properties:
                  project_type:
                    type: object
                    description: 'Each custom attribute has an associated project type. Project types define the structure of a project or framework,

                      including the terminology used in the project or framework.

                      '
                    required:
                    - data
                    properties:
                      data:
                        type: object
                        description: The data associated with the resource.
                        required:
                        - id
                        - type
                        properties:
                          id:
                            type: string
                            description: The ID of the project type that this custom attribute belongs to.
                            example: '1'
                          type:
                            type: string
                            description: The classification of the object (`"project_types"`).
                            example: project_types
        links:
          type: object
          required:
          - next
          - prev
          properties:
            next:
              type:
              - string
              - 'null'
              description: Next page url
              example: /api/resource?page[number]=Mg==
            prev:
              type:
              - string
              - 'null'
              description: Previous page url
              example: null
    Error:
      type: object
      required:
      - status
      properties:
        status:
          type: string
          description: The HTTP status code.
        source:
          type: object
          description: Indicates which part of the request document caused the error.
          required:
          - pointer
          properties:
            pointer:
              type: string
              description: 'A JSON Pointer <a href="https://tools.ietf.org/html/rfc6901" target="_blank">(RFC6901)</a> to the associated entity

                in the request document.

                '
        code:
          type: string
          description: Application-specific error code, expressed as a string value.
        title:
          type: string
          description: A short, human-readable summary of the problem.
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of the problem.
    Errors:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
  parameters:
    orgIdParam:
      in: path
      name: org_id
      description: The ID of the HighBond instance.
      required: true
      schema:
        type: string
        example: 1
    customAttributeSparseFieldsetParams:
      in: query
      name: fields[custom_attributes]
      description: Requesting the API to return only the specified fields. For more information, see <a href="#section/Making-requests">Making requests</a>
      required: false
      schema:
        type: string
        example: term,options,customizable_type,field_type,weight,required,default_values
    pageSizeParam:
      in: query
      name: page[size]
      description: The number of items returned per page. Default is 50. Maximum is 100.
      required: false
      schema:
        type: string
        example: 25
    projectTypeIdParam:
      in: path
      name: project_type_id
      description: The ID of the project type.
      required: true
      schema:
        type: integer
        example: 1
    resourceIdParam:
      in: path
      name: id
      description: The ID of the requested resource.
      required: true
      schema:
        type: string
        example: 9999
    pageNumberEncodedParam:
      in: query
      name: page[number]
      description: The Base64-encoded page number of records to return.
      required: false
      schema:
        type: string
        example: Mg==
  responses:
    MissingOrgId:
      description: Bad request.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
            - status: 400
              code: parameter_missing
              title: Parameter missing
              detail: The required parameter, org_id, is missing.
    BadCredentials:
      description: Bad credentials.
    Forbidden:
      description: Forbidden.
    NotFound:
      description: Not found.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
            - status: '404'
              title: Not Found
              detail: The requested resource does not exist.
    NotJsonapiMediaType:
      description: Unsupported media type.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
            - status: 415
              code: unsupported_media_type
              title: Unsupported media type
              detail: 'The endpoint supports only the application/vnd.api+json Content-Type. This request specified application/json.

                '
    MissingResourceId:
      description: Bad request.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
            - status: 400
              code: parameter_missing
              title: Parameter missing
              detail: The required parameter, id, is missing.
    NoContent:
      description: No content.
    ResourceTypeMismatch:
      description: Bad request.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
            - status: 400
              code: resource_type_mismatch
              title: Resource type mismatch
              detail: 'The requested data type, a-bad-type, is incompatible with the endpoint.

                '
  securitySchemes:
    bearerToken:
      description: 'HighBond offers the industry-standard OAuth 2.0 flow for connecting to the HighBond platform. OAuth 2.0 provides a

        safe and secure way to access data, while protecting your account credentials.

        '
      type: http
      scheme: bearer
      bearerFormat: oauth2
x-tagGroups:
- name: Core resources
  tags:
  - Robots Agents
  - Robots
  - Robot Tasks
  - Robot Jobs
  - Robot Apps
  - Robot Script Versions
  - Robot Activations
  - Robot Files
  - Robot Working Files
  - Robot Collaborators
  - Robots Folders Collaborators
  - Robot Users
  - Robots Folders
  - Storyboards
  - Collections
  - Questionnaires
  - Analyses
  - Surveys
  - Event Reports
  - Tables
  - Table columns
  - Records
  - Record columns
  - Record statuses
  - Interpretations
  - Metrics
  - Workflow Groups
  - Results Users
  - Results Triggers
  - Project types
  - Custom attributes
  - Request item statuses
  - Projects
  - Projects Admin
  - Planning files
  - Results files
  - Objectives
  - Narratives
  - Risks
  - Controls
  - Control performance schedules
  - Mitigations
  - Control test plans
  - Control tests
  - Attachments
  - Walkthroughs
  - Issues
  - Actions
  - Collaborators
  - Request Items
  - To-dos
  - Sign-offs
  - Entities
  - Scheduler Filters


# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wegalvanize/refs/heads/main/openapi/wegalvanize-custom-attributes-api-openapi.yml