{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":46636,"path":"servicenow-platform/cmdb-ci-class-models/cmdb-ci-class-models-api.md","title":"API extension classes","bundle":null,"doc_type":null,"release":"australia","body":"\n# API extension classes\n\nThe CMDB CI Class Models ServiceNow Store app adds or updates classes for APIs \\(application programming interface\\).\n\nCMDB CI Class Models is a ServiceNow Store app that adds class models that extend the CMDB class hierarchy. The new or updated classes include class descriptions, identification rules, identifier entries, and, if applicable, dependent relationships. You can use the added classes just like any other CMDB class. Applications such as Discovery and Service Mapping Patterns can use the class extensions to populate CIs and discover technologies and software.\n\nSee the release notes for all CMDB CI class models.\n\n## Request apps on the Store\n\nVisit the [ServiceNow Store](https://store.servicenow.com/sn_appstore_store.do#!/store/home) to view all the available apps, and for information about submitting requests to the store. For cumulative release notes information for all released apps, see the [ServiceNow Store version history release notes](https://www.servicenow.com/docs/r/store-release-notes/sn-store-release-notes.html).\n\n## APIs\n\nAPIs are a set of definitions and protocols that enable computer programs to communicate with each other, which enables you to build or integrate application software. APIs typically use web-based technology to communicate with other APIs. APIs are generally used to programmatically perform jobs or tasks, or to view, import, export, delete, or modify data.\n\nThe classes added in this release extend the CMDB data model and provide a foundation for the representation of API CI classes. You can use this foundation to do the following:\n\n-   Gain greater visibility into your APIs.\n-   Identify security issues and vulnerabilities associated with an API endpoint.\n\n## Classes\n\nThis section lists the classes that the CMDB CI Class Models app adds or updates. For additional detail, see the [Community article titled \"New Data Model in CMDB for APIs\"](https://www.servicenow.com/community/cmdb-articles/new-data-model-in-cmdb-for-apis/ta-p/2688843).\n\nCMDB CI Class Models: The following classes for API are available. For the list of classes in the base system, including classes that this app might extend, see [CMDB tables descriptions](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/servicenow-platform/configuration-management-database-cmdb/cmdb-tables-details.md).\n\n<table id=\"table_h2r_d5z_ryb\"><thead><tr><th>\n\nClass\n\n</th><th>\n\nExtends\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAPI\\[cmdb\\_ci\\_api\\]\n\n</td><td>\n\nConfiguration item\\[cmdb\\_ci\\]\n\n</td><td>\n\nAPIs that enable two computer programs to communicate with each other, typically using web-based technologies. Example: ChatAPI \\(https://\\[apiID\\].execute-api.use-east-2.amazonaws.com\\).\n\n</td></tr><tr><td>\n\nAPI Component\\[cmdb\\_ci\\_api\\_component\\]\n\n</td><td>\n\nConfiguration item\\[cmdb\\_ci\\]\n\n</td><td>\n\nReusable objects related to your API definition that facilitate functionality or exchange of data. API Headers related list. Example: GET https://\\[instance\\].service-now.com/api/now/table/\\{tablename\\}.\n\n</td></tr><tr><td>\n\nAPI Frontend\\[cmdb\\_ci\\_api\\_frontend\\]\n\n</td><td>\n\nAPI Component\\[cmdb\\_ci\\_api\\_component\\]\n\n</td><td>\n\nThe part of an API from which a client or user interacts or makes requests. Example: GET https://\\[apiID\\].execute-api.us-east-2.amazonaws.com/\\{proxy+\\}.\n\n</td></tr><tr><td>\n\nAPI Backend\\[cmdb\\_ci\\_api\\_backend\\]\n\n</td><td>\n\nAPI Component\\[cmdb\\_ci\\_api\\_component\\]\n\n</td><td>\n\nThe part of an API that fulfills requests by interacting with backend services, such as servers. Example: Lambda:Chat-API-Proxy.\n\n</td></tr><tr><td>\n\nAPI Gateway\\[cmdb\\_ci\\_api\\_gateway\\]\n\n</td><td>\n\nApplication\\[cmdb\\_ci\\_appl\\]\n\n</td><td>\n\nAPI infrastructure that centralizes client API requests and manages backend processes and services. Example: Kong Gateway.\n\n</td></tr><tr><td>\n\nManaged API\\[cmdb\\_ci\\_managed\\_api\\]\n\n</td><td>\n\nConfiguration item\\[cmdb\\_ci\\_api\\]\n\n</td><td>\n\nAPI discovered from a gateway or management service. You can enforce a dependency on a gateway for APIs in this class.\n\n</td></tr></tbody>\n</table>## Class attributes\n\nCMDB CI Class Models: Release 1.49.0 adds the following attributes to the respective classes.\n\n<table id=\"table_ch3_b1l_tlb\"><thead><tr><th>\n\nAttribute\n\n</th><th>\n\nData type\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nBase URL\n\n</td><td>\n\nString \\(1024\\)\n\n</td><td>\n\nBase address from which all API components extend.\n\n</td></tr><tr><td>\n\nID\n\n</td><td>\n\nString \\(1024\\)\n\n</td><td>\n\nUnique identifier from the source system.\n\n</td></tr><tr><td>\n\nType\n\n</td><td>\n\nList\n\n</td><td>\n\nType of API. You can specify:-   REST\n-   SOAP\n-   HTTP\n-   gRPC\n-   GraphQL\n-   Websocket\n\n</td></tr><tr><td>\n\nVersion\n\n</td><td>\n\nNumeric\n\n</td><td>\n\nVersion of the API.\n\n</td></tr><tr><td>\n\nSpec Location\n\n</td><td>\n\nURL\n\n</td><td>\n\nURL to the location of the API specification. Example: OpenAPI spec definition.\n\n</td></tr><tr><td>\n\nTechnical Specification Location\n\n</td><td>\n\nString\n\n</td><td>\n\nLocation of the technical specification repository for an API. Example: GitHub repository containing the deployed API code.\n\n</td></tr><tr><td>\n\nDesign Specification Location\n\n</td><td>\n\nString\n\n</td><td>\n\nURL to the location of the API design or documentation. Example: SwaggerHub API Design Specification URL.\n\n</td></tr></tbody>\n</table>The API \\[cmdb\\_ci\\_api\\] class supports mapping of tags and labels to the Key Value \\[cmdb\\_key\\_value\\] table to enable key-value storage for API metadata.\n\n<table id=\"table_jlv_fmg_syb\"><thead><tr><th>\n\nAttribute\n\n</th><th>\n\nData type\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nMethod\n\n</td><td>\n\nString\n\n</td><td>\n\nREST API methods. Examples:-   GET\n-   POST\n-   DELETE\n\n</td></tr><tr><td>\n\nProtocol\n\n</td><td>\n\nString\n\n</td><td>\n\nCommunication protocol. Example: HTTP, HTTPS.\n\n</td></tr><tr><td>\n\nHost\n\n</td><td>\n\nString \\(100\\)\n\n</td><td>\n\nSystem that hosts the API.\n\n</td></tr><tr><td>\n\nPath\n\n</td><td>\n\nString \\(1024\\)\n\n</td><td>\n\nSpecific route the API follows.\n\n</td></tr><tr><td>\n\nPort\n\n</td><td>\n\nString\n\n</td><td>\n\nCommunication port. Example: 80, 443, and so on.\n\n</td></tr><tr><td>\n\nURL\n\n</td><td>\n\nString \\(1024\\)\n\n</td><td>\n\nURL of the resource being called.\n\n</td></tr><tr><td>\n\nID\n\n</td><td>\n\nString \\(1024\\)\n\n</td><td>\n\nUnique identifier from the source system.\n\n</td></tr><tr><td>\n\nInternet Facing\n\n</td><td>\n\nBoolean\n\n</td><td>\n\nBoolean that denotes whether the component is reachable from the public internet. Specify 1 or \"true\" if the component is reachable.\n\n</td></tr><tr><td>\n\nAuthorization\n\n</td><td>\n\nString\n\n</td><td>\n\nType of authorization or authentication method. Example:-   Basic\n-   Key\n-   OAuth\n-   None\n\n</td></tr><tr><td>\n\nRequest data types\n\n</td><td>\n\nString \\(255\\)\n\n</td><td>\n\nList of data types in the request. Examples:-   CC\n-   Email\n-   Address\n\n</td></tr><tr><td>\n\nResponse data types\n\n</td><td>\n\nString \\(255\\)\n\n</td><td>\n\nList of data types in the response. Examples:-   CC\n-   Email\n-   Address\n\n</td></tr></tbody>\n</table>The API Component \\[cmdb\\_ci\\_api\\_component\\] class supports mapping of tags and labels to the Key Value \\[cmdb\\_key\\_value\\] table to enable key-value storage for API component metadata.\n\n|Attribute|Data type|Description|\n|---------|---------|-----------|\n|Parent ID|Reference to \\[cmdb\\_ci\\_api\\_frontend\\]|Reference to a parent API component.|\n\n<table id=\"table_tqx_q3g_syb\"><thead><tr><th>\n\nAttribute\n\n</th><th>\n\nData type\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nType\n\n</td><td>\n\nString\n\n</td><td>\n\nBackend protocol types of the API. Examples:-   Lambda\n-   HTTP\n-   Logic App\n\n</td></tr></tbody>\n</table>|Attribute|Data type|Description|\n|---------|---------|-----------|\n|ID|String \\(255\\)|Unique identifier from the source system.|\n\nThe API Gateway \\[cmdb\\_ci\\_api\\_gateway\\] class supports mapping of tags and labels to the Key Value \\[cmdb\\_key\\_value\\] table. The mapping enables key-value storage for API gateway metadata.\n\nThe following marker classes are available for API gateways. These classes inherit all attributes from the API Gateway \\[cmdb\\_ci\\_api\\_gateway\\] parent class.\n\n-   Anypoint API Gateway \\[cmdb\\_ci\\_api\\_gateway\\_anypoint\\] \\(provided by MuleSoft\\)\n-   Tyk API Gateway \\[cmdb\\_ci\\_api\\_gateway\\_tyk\\] \\(provided by Tyk\\)\n-   Boomi API Gateway \\[cmdb\\_ci\\_api\\_gateway\\_boomi\\] \\(provided by Boomi\\)\n\nThe marker classes follow the existing class structure and do not require changes to Identification and Reconciliation engine \\(IRE\\) rules.\n\n**Note:** The Managed API \\[cmdb\\_ci\\_managed\\_api\\] class is specific to APIs discovered from gateways and other managed services, and does not introduce new attributes.\n\nIn API gateways and developer portals, an API product bundle is a collection of one or more APIs for consumption by developers and applications. Some platforms use the term for an API product alone.\n\n|Attribute|Data type|Description|\n|---------|---------|-----------|\n|ID|String \\(255\\)|Unique identifier of the API product bundle.|\n|Discovered Approval Type|String|Type of request approval as discovered from the source system.|\n|Discovered Access Type|String|Access configuration as discovered from the source system. For example, public or internal.|\n|Creation Date|Date/Time|Date and time when the API product bundle was initially discovered or recorded.|\n|Last Modified Date|Date/Time|Date and time of the most recent update to the API product bundle.|\n|Discovered State|String|Current state of the product bundle as reported by the source. For example, published or deprecated.|\n\nTo access one or more API product bundles, a developer can register for an API consumer subscription on a developer portal. The subscription registers with one or more bundles and provides a key for access to the APIs in the bundles.\n\n|Attribute|Data type|Description|\n|---------|---------|-----------|\n|Discovered Scope|String|Scope of access as discovered from the source system. For example, all APIs or specific APIs.|\n|API Consumer|Reference|Reference to the API consumer record. For example, cmdb\\_ci\\_api\\_consumer.|\n|ID|String \\(255\\)|Unique identifier of the API consumer subscription.|\n|Discovered State|String|Subscription status as discovered from the source system. For example, active or inactive.|\n|Creation Date|Date/Time|Date and time when the API consumer subscription was created in the source system.|\n|Last Modified Date|Date/Time|Date and time of the most recent update to the API consumer subscription.|\n\nThe WebACL class \\[cmdb\\_ci\\_web\\_acl\\] represents ACLs for CloudFront, API gateway REST APIs, application load balancers, AppSync GraphQL APIs, Cognito user pools, App Runner services, AWS Verified Access, and the Azure Front Door application gateway.\n\n## Key relationship structures\n\nThere are a number of key relationships that must be defined for API and Kong classes.\n\n<table id=\"table_b1s_t32_5yb\"><thead><tr><th>\n\nParent class\n\n</th><th>\n\nRelationship\n\n</th><th>\n\nChild class\n\n</th><th>\n\nRelationship type\n\n</th></tr></thead><tbody><tr><td>\n\nAPI \\[cmdb\\_ci\\_api\\]\n\n</td><td>\n\nUses::Used by\n\n</td><td>\n\nAPI Component\\[cmdb\\_ci\\_api\\_component\\]\n\n</td><td>\n\nSuggested\n\n</td></tr><tr><td>\n\nAPI Gateway \\[cmdb\\_ci\\_api\\_gateway\\]\n\n</td><td>\n\nProvides::Provided By\n\n</td><td>\n\nManaged API\\[cmdb\\_ci\\_managed\\_api\\]\n\n</td><td>\n\nDependent\n\n</td></tr><tr><td>\n\nAPI Frontend \\[cmdb\\_ci\\_api\\_frontend\\]\n\n</td><td>\n\nUse End Point To::Use End Point From\n\n</td><td>\n\nAPI Backend\\[cmdb\\_ci\\_api\\_backend\\]\n\n</td><td>\n\nSuggested\n\n</td></tr><tr><td>\n\nAPI Backend\\[cmdb\\_ci\\_api\\_backend\\]\n\n</td><td>\n\nUses::Used By\n\n</td><td>\n\nKong Load Balancer\\[cmdb\\_ci\\_kong\\_lb\\]\n\n</td><td>\n\nSuggested\n\n</td></tr><tr><td>\n\nAPI Gateway \\[cmdb\\_ci\\_api\\_gateway\\]\n\n</td><td>\n\nProvides::Provided By\n\n</td><td>\n\nAPI Product Bundle\\[cmdb\\_ci\\_api\\_product\\_bundle\\]\n\n</td><td>\n\nDependent\n\n</td></tr><tr><td>\n\nAPI Gateway \\[cmdb\\_ci\\_api\\_gateway\\]\n\n</td><td>\n\nProvides::Provided By\n\n</td><td>\n\nAPI Consumer Subscription\\[cmdb\\_ci\\_api\\_consumer\\_subscription\\]\n\n</td><td>\n\nDependent\n\n</td></tr><tr><td>\n\nAPI Product Bundle\n\n</td><td>\n\nContains::Contained by\n\n</td><td>\n\nAPI\\[cmdb\\_ci\\_api\\]\n\n</td><td>\n\nSuggested\n\n</td></tr><tr><td>\n\nAPI Product Bundle\n\n</td><td>\n\nUsed by::Uses\n\n</td><td>\n\nAPI Consumer Subscription\\[cmdb\\_ci\\_api\\_consumer\\_subscription\\]\n\n</td><td>\n\nSuggested\n\n</td></tr></tbody>\n</table>## Related non-CMDB tables\n\nCMDB CI Class Models v 1.49.0 introduces the following non-CMDB tables as related lists for the following API extension classes:\n\n-   **API related list**\n\n    |Attribute|Data type|Description|\n    |---------|---------|-----------|\n    |Name|String \\(100\\)|Name of the API deployment.|\n    |API|Reference|Reference to the deployed API \\(cmdb\\_ci\\_api\\).|\n    |Unmatched API Endpoint|Reference|Reference to the unmatched API endpoint, if the API doesn't match an existing API \\(cmdb\\_ci\\_unmatched\\_api\\_endpoint\\).|\n    |Configuration item|Reference|Reference to the Configuration item. This is typically manually specified as a reference, if you know what CI the API is deployed to.|\n\n    **Note:** The API Deployment non-CMDB table relates to both the API \\[cmdb\\_ci\\_api\\] and Unmatched API Endpoint \\[cmdb\\_ci\\_unmatched\\_api\\_endpoint\\] classes.\n\n-   **API Component related list**\n\n    |Attribute|Data type|Description|\n    |---------|---------|-----------|\n    |Name|String \\(100\\)|Name of the API header.|\n    |API Component|Reference|Reference to the component where the API header is defined \\(cmdb\\_ci\\_api\\_component\\).|\n    |Unmatched API Endpoint|Reference|Reference to the unmatched API when the endpoint can't be matched to an existing API or component \\(cmdb\\_ci\\_unmatched\\_endpoint\\).|\n\n-   **API Gateway related lists**\n\n<table id=\"table_swj_lch_syb\"><thead><tr><th>\n\nAttribute\n\n</th><th>\n\nData type\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nUsername\n\n</td><td>\n\nString \\(100\\)\n\n</td><td>\n\nName of the API consumer.\n\n **Note:** The **Consumer** field in the api\\_policy table is a reference field. To display the username in the **Username** field on the API Policies list, you must set the **display** attribute of **Username** to `true`. If the attribute is not set to `true`, then the list displays the Sys ID instead.\n\n</td></tr><tr><td>\n\nID\n\n</td><td>\n\nString \\(255\\)\n\n</td><td>\n\nUnique identifier from the source system.\n\n</td></tr><tr><td>\n\nCustom ID\n\n</td><td>\n\nString \\(100\\)\n\n</td><td>\n\nAlternate display name of the user.\n\n</td></tr><tr><td>\n\nAPI Gateway\n\n</td><td>\n\nReference\n\n</td><td>\n\nReference to the gateway where the consumer is defined \\(cmdb\\_ci\\_api\\_gateway\\).\n\n</td></tr><tr><td>\n\nAPI Consumer Type\n\n</td><td>\n\nList\n\n</td><td>\n\nAPI user type \\(user\\_type\\). You can specify: -   Internal\n-   External\n-   Unknown\n\n\n</td></tr><tr><td>\n\nDiscovered State\n\n</td><td>\n\nString\n\n</td><td>\n\nRepresents the current status of the API consumer's account.\n\n</td></tr><tr><td>\n\nProvider\n\n</td><td>\n\nString\n\n</td><td>\n\nName of the identity management provider responsible for authenticating the API consumer.\n\n</td></tr><tr><td>\n\nEmail\n\n</td><td>\n\nString\n\n</td><td>\n\nEmail address of the API consumer.\n\n</td></tr><tr><td>\n\nRegistration Date\n\n</td><td>\n\nDate/Time\n\n</td><td>\n\nDate the consumer registered with the providing platform.\n\n</td></tr></tbody>\n</table>    |Attribute|Data type|Description|\n    |---------|---------|-----------|\n    |API Consumer|Reference|Reference to the API consumer record. For example, cmdb\\_ci\\_api\\_consumer.|\n    |API|Reference|Reference to the API \\[cmdb\\_ci\\_api\\] to which the consumer is requesting access.|\n    |Auth Method|String|Authentication method used by the API consumer to access the API. For example, API key or OAuth.|\n    |State|Choice|Indicates whether the access is currently active or inactive.|\n    |Last used|Date/Time|Last date and time the API consumer accessed the API.|\n    |Valid to|Date/Time|Expiration date of the consumer’s access to the API.|\n\n<table id=\"table_l41_wch_syb\"><thead><tr><th>\n\nAttribute\n\n</th><th>\n\nData type\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nName\n\n</td><td>\n\nString \\(100\\)\n\n</td><td>\n\nName of the API policy.\n\n</td></tr><tr><td>\n\nID\n\n</td><td>\n\nString \\(255\\)\n\n</td><td>\n\nUnique identifier from the source system.\n\n</td></tr><tr><td>\n\nFrontend\n\n</td><td>\n\nReference\n\n</td><td>\n\nReference to the API Front end \\(cmdb\\_ci\\_api\\_frontend\\).\n\n</td></tr><tr><td>\n\nManaged API\n\n</td><td>\n\nReference\n\n</td><td>\n\nReference to the Managed API \\(cmdb\\_ci\\_managed\\_api\\).\n\n</td></tr><tr><td>\n\nConsumer\n\n</td><td>\n\nReference\n\n</td><td>\n\nReference to the API Consumer \\(api\\_consumer\\) non-CMDB table. **Note:** **Consumer** is a reference field. To display the api\\_consumer \\(Username\\) in the API Policies list, you must set the **display** attribute to `true` for **Username** field on the api\\_consumer table. If the attribute is not set to `true`, then the list displays the Sys ID instead.\n\n</td></tr><tr><td>\n\nProtocols\n\n</td><td>\n\nString\n\n</td><td>\n\nArray of protocols that this API policy can apply to.\n\n</td></tr><tr><td>\n\nActive\n\n</td><td>\n\nBoolean\n\n</td><td>\n\nDetermines if this non-CMDB table is considered active or inactive.\n\n</td></tr><tr><td>\n\nAPI Gateway\n\n</td><td>\n\nReference\n\n</td><td>\n\nReference to the gateway where the consumer is defined \\(cmdb\\_ci\\_api\\_gateway\\).\n\n</td></tr></tbody>\n</table>\n"}}