Procore Asset Type Controller API

The asset-type-controller API from Procore — 2 operation(s) for asset-type-controller.

Operations 2

GET /rest/v2.0/companies/{company_id}/assets/asset_types List Asset Types #
GET /rest/v2.0/companies/{company_id}/projects/{project_id}/assets/asset_types List Asset Types #

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/procore:procore-asset-type-controller-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

procore-asset-type-controller-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Procore REST Asset Type Controller API
  version: v1.0/v2.0
  description: Merged from the per-resource OpenAPI documents Procore publishes through its developer portal (https://developers.procore.com/api/v1/resource_groups). Originals are kept verbatim in openapi/_original/resources/.
  x-source: https://developers.procore.com/api/v1/resource_groups
servers:
- url: https://api.procore.com
  description: Production
security:
- bearerAuth: []
tags:
- name: asset-type-controller
paths:
  /rest/v2.0/companies/{company_id}/assets/asset_types:
    parameters:
    - name: Procore-Company-Id
      in: header
      description: Unique company identifier associated with the Procore User Account.
      required: true
      schema:
        type: integer
    x-compliance-level: partial
    get:
      tags:
      - asset-type-controller
      summary: List Asset Types
      description: Returns a list of Assets Types for a given Company
      operationId: getCompanyAssetTypes
      parameters:
      - name: company_id
        in: path
        description: Unique identifier for the company.
        required: true
        schema:
          type: string
        example: '1234'
      - name: asset_type_ids
        in: query
        description: Comma-separated list of Asset Type IDs to filter by
        required: false
        schema:
          type: string
      - name: include_asset_counts
        in: query
        description: 'When true, each item includes assetCount: assets assigned directly to this type. Defaults to false when omitted.'
        required: false
        schema:
          type: boolean
      - name: is_asset
        in: query
        description: Filter by is_asset flag (true/false)
        required: false
        schema:
          type: boolean
      - name: eligible_sub_asset_of
        in: query
        description: Parent asset ID. When supplied, returns only the asset types eligible to receive sub-assets of that parent (a flat, eligibility-scoped list for the Link Sub-Assets dialog).
        required: false
        schema:
          type: string
      - name: sort
        in: query
        description: 'Sorting criteria in minus-based order format. Default sort order is ascending. Multiple sort criteria can be provided in CSV format, for example: sort=name,-created_at. Default sorting is by display_order in descending order.'
        required: false
        schema:
          type: string
          enum:
          - id
          - code
          - name
          - description
          - modified_at
          - created_at
          - display_order
      - name: Accept-Language
        in: header
        description: 'Locale for localized response messages (for example: en, fr-FR, pseudo)'
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        code:
                          type: string
                        description:
                          type: string
                        parent_type_id:
                          type: string
                          deprecated: true
                          description: 'Deprecated: use ''parents''. Single parent type ID kept for backward compatibility; set to the lowest-display-order parent.'
                        parents:
                          type: array
                          items:
                            type: object
                            properties:
                              parent_type_id:
                                type: string
                                description: ID of the parent asset type for this link. Null denotes a root (top-level) membership.
                              display_order:
                                type: integer
                                format: int32
                                description: Order of this child within the parent's sibling group.
                              default_quantity:
                                type: integer
                                format: int32
                                description: Assembly Default Quantity for this parent→child edge; omitted when none is configured.
                        active:
                          type: boolean
                        modified_at:
                          type: string
                          format: date-time
                        created_at:
                          type: string
                          format: date-time
                        modified_by:
                          description: Contact Information
                          properties:
                            id:
                              type: string
                              description: User ID
                              example: '12345'
                            name:
                              type: string
                              description: User's full name
                              example: John Doe
                            email:
                              type: string
                              description: User's email address
                              example: user@example.com
                        created_by:
                          description: Contact Information
                          properties:
                            id:
                              type: string
                              description: User ID
                              example: '12345'
                            name:
                              type: string
                              description: User's full name
                              example: John Doe
                            email:
                              type: string
                              description: User's email address
                              example: user@example.com
                        asset_status_group:
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            metadata:
                              type: object
                              additionalProperties:
                                type: object
                        fieldset_dto:
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            metadata:
                              type: object
                              additionalProperties:
                                type: object
                        company_id:
                          type: string
                        project_id:
                          type: string
                        is_leaf:
                          type: boolean
                        is_asset:
                          type: boolean
                        has_assets:
                          type: boolean
                        display_order:
                          type: integer
                          format: int32
                        overridden:
                          type: boolean
                          description: True when the Asset Type ID is overridden for this project. Project-scoped reads only.
                        asset_count:
                          type: integer
                          format: int64
        '400':
          description: The server could not understand the request due to invalid syntax or parameters that fail to meet validation requirements.
        '401':
          description: Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.
        '403':
          description: The client does not have access rights to the content; that is, it is authenticated, but the server is refusing to give the requested resource. Unlike 401, the client's identity is known to the server.
        '404':
          description: The server can not find the requested resource. This can mean either the URL is not recognized, or the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client.
      x-doc:
        visibility: public
        stage: ga
        exposure: public
      x-code-samples:
      - id: node_request
        title: Node.js
        content: "const request = require('request');\n\nconst options = {\n  method: 'GET',\n  url: 'http://localhost:8080/rest/v2.0/companies/1234/assets/asset_types',\n  qs: {\n    asset_type_ids: 'SOME_STRING_VALUE',\n    include_asset_counts: 'SOME_BOOLEAN_VALUE',\n    is_asset: 'SOME_BOOLEAN_VALUE',\n    eligible_sub_asset_of: 'SOME_STRING_VALUE',\n    sort: 'SOME_STRING_VALUE'\n  },\n  headers: {\n    'Procore-Company-Id': 'SOME_INTEGER_VALUE',\n    'Accept-Language': 'SOME_STRING_VALUE'\n  }\n};\n\nrequest(options, function (error, response, body) {\n  if (error) throw new Error(error);\n\n  console.log(body);\n});\n"
      - id: python_python3
        title: Python3
        content: "import http.client\n\nconn = http.client.HTTPConnection(\"localhost:8080\")\n\nheaders = {\n    'Procore-Company-Id': \"SOME_INTEGER_VALUE\",\n    'Accept-Language': \"SOME_STRING_VALUE\"\n    }\n\nconn.request(\"GET\", \"/rest/v2.0/companies/1234/assets/asset_types?asset_type_ids=SOME_STRING_VALUE&include_asset_counts=SOME_BOOLEAN_VALUE&is_asset=SOME_BOOLEAN_VALUE&eligible_sub_asset_of=SOME_STRING_VALUE&sort=SOME_STRING_VALUE\", headers=headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
      - id: shell_curl
        title: Curl
        content: "curl --request GET \\\n  --url 'http://localhost:8080/rest/v2.0/companies/1234/assets/asset_types?asset_type_ids=SOME_STRING_VALUE&include_asset_counts=SOME_BOOLEAN_VALUE&is_asset=SOME_BOOLEAN_VALUE&eligible_sub_asset_of=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \\\n  --header 'Accept-Language: SOME_STRING_VALUE' \\\n  --header 'Procore-Company-Id: SOME_INTEGER_VALUE'"
      - id: csharp_httpclient
        title: C#
        content: "var client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n    Method = HttpMethod.Get,\n    RequestUri = new Uri(\"http://localhost:8080/rest/v2.0/companies/1234/assets/asset_types?asset_type_ids=SOME_STRING_VALUE&include_asset_counts=SOME_BOOLEAN_VALUE&is_asset=SOME_BOOLEAN_VALUE&eligible_sub_asset_of=SOME_STRING_VALUE&sort=SOME_STRING_VALUE\"),\n    Headers =\n    {\n        { \"Procore-Company-Id\", \"SOME_INTEGER_VALUE\" },\n        { \"Accept-Language\", \"SOME_STRING_VALUE\" },\n    },\n};\nusing (var response = await client.SendAsync(request))\n{\n    response.EnsureSuccessStatusCode();\n    var body = await response.Content.ReadAsStringAsync();\n    Console.WriteLine(body);\n}"
      x-rate-limit-enabled: true
      x-procore-kong-tags:
      - rate-limit:enabled
  /rest/v2.0/companies/{company_id}/projects/{project_id}/assets/asset_types:
    parameters:
    - name: Procore-Company-Id
      in: header
      description: Unique company identifier associated with the Procore User Account.
      required: true
      schema:
        type: integer
    x-compliance-level: partial
    get:
      tags:
      - asset-type-controller
      summary: List Asset Types
      description: Returns a list of asset types for a given project.
      operationId: getAssetTypes
      parameters:
      - name: company_id
        in: path
        description: Unique identifier for the company.
        required: true
        schema:
          type: string
        example: '1234'
      - name: project_id
        in: path
        description: Unique identifier for the project.
        required: true
        schema:
          type: string
        example: '1234'
      - name: asset_type_ids
        in: query
        description: Comma-separated list of Asset Type IDs to filter by
        required: false
        schema:
          type: string
      - name: include_asset_counts
        in: query
        description: When true, each item includes assetCount for this type only, scoped to the project. Defaults to false when omitted.
        required: false
        schema:
          type: boolean
      - name: is_asset
        in: query
        description: Filter by is_asset flag (true/false)
        required: false
        schema:
          type: boolean
      - name: eligible_sub_asset_of
        in: query
        description: Parent asset ID. When supplied, returns only the asset types eligible to receive sub-assets of that parent (a flat, eligibility-scoped list for the Link Sub-Assets dialog).
        required: false
        schema:
          type: string
      - name: sort
        in: query
        description: 'Sorting criteria in minus-based order format. Default sort order is ascending. Multiple sort criteria can be provided in CSV format, for example: sort=name,-created_at. Default sorting is by display_order in descending order.'
        required: false
        schema:
          type: string
          enum:
          - id
          - code
          - name
          - description
          - modified_at
          - created_at
          - display_order
      - name: Accept-Language
        in: header
        description: 'Locale for localized response messages (for example: en, fr-FR, pseudo)'
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        code:
                          type: string
                        description:
                          type: string
                        parent_type_id:
                          type: string
                          deprecated: true
                          description: 'Deprecated: use ''parents''. Single parent type ID kept for backward compatibility; set to the lowest-display-order parent.'
                        parents:
                          type: array
                          items:
                            type: object
                            properties:
                              parent_type_id:
                                type: string
                                description: ID of the parent asset type for this link. Null denotes a root (top-level) membership.
                              display_order:
                                type: integer
                                format: int32
                                description: Order of this child within the parent's sibling group.
                              default_quantity:
                                type: integer
                                format: int32
                                description: Assembly Default Quantity for this parent→child edge; omitted when none is configured.
                        active:
                          type: boolean
                        modified_at:
                          type: string
                          format: date-time
                        created_at:
                          type: string
                          format: date-time
                        modified_by:
                          description: Contact Information
                          properties:
                            id:
                              type: string
                              description: User ID
                              example: '12345'
                            name:
                              type: string
                              description: User's full name
                              example: John Doe
                            email:
                              type: string
                              description: User's email address
                              example: user@example.com
                        created_by:
                          description: Contact Information
                          properties:
                            id:
                              type: string
                              description: User ID
                              example: '12345'
                            name:
                              type: string
                              description: User's full name
                              example: John Doe
                            email:
                              type: string
                              description: User's email address
                              example: user@example.com
                        asset_status_group:
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            metadata:
                              type: object
                              additionalProperties:
                                type: object
                        fieldset_dto:
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            metadata:
                              type: object
                              additionalProperties:
                                type: object
                        company_id:
                          type: string
                        project_id:
                          type: string
                        is_leaf:
                          type: boolean
                        is_asset:
                          type: boolean
                        has_assets:
                          type: boolean
                        display_order:
                          type: integer
                          format: int32
                        overridden:
                          type: boolean
                          description: True when the Asset Type ID is overridden for this project. Project-scoped reads only.
                        asset_count:
                          type: integer
                          format: int64
        '400':
          description: The server could not understand the request due to invalid syntax or parameters that fail to meet validation requirements.
        '401':
          description: Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.
        '403':
          description: The client does not have access rights to the content; that is, it is authenticated, but the server is refusing to give the requested resource. Unlike 401, the client's identity is known to the server.
        '404':
          description: The server can not find the requested resource. This can mean either the URL is not recognized, or the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client.
      x-doc:
        visibility: public
        stage: ga
        exposure: public
      x-code-samples:
      - id: node_request
        title: Node.js
        content: "const request = require('request');\n\nconst options = {\n  method: 'GET',\n  url: 'http://localhost:8080/rest/v2.0/companies/1234/projects/1234/assets/asset_types',\n  qs: {\n    asset_type_ids: 'SOME_STRING_VALUE',\n    include_asset_counts: 'SOME_BOOLEAN_VALUE',\n    is_asset: 'SOME_BOOLEAN_VALUE',\n    eligible_sub_asset_of: 'SOME_STRING_VALUE',\n    sort: 'SOME_STRING_VALUE'\n  },\n  headers: {\n    'Procore-Company-Id': 'SOME_INTEGER_VALUE',\n    'Accept-Language': 'SOME_STRING_VALUE'\n  }\n};\n\nrequest(options, function (error, response, body) {\n  if (error) throw new Error(error);\n\n  console.log(body);\n});\n"
      - id: python_python3
        title: Python3
        content: "import http.client\n\nconn = http.client.HTTPConnection(\"localhost:8080\")\n\nheaders = {\n    'Procore-Company-Id': \"SOME_INTEGER_VALUE\",\n    'Accept-Language': \"SOME_STRING_VALUE\"\n    }\n\nconn.request(\"GET\", \"/rest/v2.0/companies/1234/projects/1234/assets/asset_types?asset_type_ids=SOME_STRING_VALUE&include_asset_counts=SOME_BOOLEAN_VALUE&is_asset=SOME_BOOLEAN_VALUE&eligible_sub_asset_of=SOME_STRING_VALUE&sort=SOME_STRING_VALUE\", headers=headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
      - id: shell_curl
        title: Curl
        content: "curl --request GET \\\n  --url 'http://localhost:8080/rest/v2.0/companies/1234/projects/1234/assets/asset_types?asset_type_ids=SOME_STRING_VALUE&include_asset_counts=SOME_BOOLEAN_VALUE&is_asset=SOME_BOOLEAN_VALUE&eligible_sub_asset_of=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \\\n  --header 'Accept-Language: SOME_STRING_VALUE' \\\n  --header 'Procore-Company-Id: SOME_INTEGER_VALUE'"
      - id: csharp_httpclient
        title: C#
        content: "var client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n    Method = HttpMethod.Get,\n    RequestUri = new Uri(\"http://localhost:8080/rest/v2.0/companies/1234/projects/1234/assets/asset_types?asset_type_ids=SOME_STRING_VALUE&include_asset_counts=SOME_BOOLEAN_VALUE&is_asset=SOME_BOOLEAN_VALUE&eligible_sub_asset_of=SOME_STRING_VALUE&sort=SOME_STRING_VALUE\"),\n    Headers =\n    {\n        { \"Procore-Company-Id\", \"SOME_INTEGER_VALUE\" },\n        { \"Accept-Language\", \"SOME_STRING_VALUE\" },\n    },\n};\nusing (var response = await client.SendAsync(request))\n{\n    response.EnsureSuccessStatusCode();\n    var body = await response.Content.ReadAsStringAsync();\n    Console.WriteLine(body);\n}"
      x-rate-limit-enabled: true
      x-procore-kong-tags:
      - rate-limit:enabled
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer