> For the complete documentation index, see [llms.txt](https://docs.cspr.cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cspr.cloud/1.3.x/rest-api/contract-package.md).

# Contract package

The `ContractPackage` entity provides a normalized representation of the Casper Network [Contract Package](https://docs.casper.network/developers/json-rpc/types_chain/#contractpackge). It includes the contract package's metadata based on Contract's type and named keys values and the latest version of the contract type within the package.

## Properties

The `ContractPackage` entity has the following properties:

| Property                          | Type                      | Description                                                                                               |
| --------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------------------- |
| `contract_package_hash`           | `string(64)`              | Contract package hash represented as a hexadecimal string. Unique contract package identifier             |
| `owner_public_key`                | `string(68)`              | Public key of the owner of the contract package. Represented as a hexadecimal string                      |
| `name`                            | `string`                  | Name of the contract package.                                                                             |
| `description`                     | `string`                  | Description of the contract package.                                                                      |
| `metadata`                        | `ContractPackageMetadata` | Metadata associated with the contract package. Details described in the next table.                       |
| `latest_version_contract_type_id` | `uint8`                   | [Contract type](/1.3.x/rest-api/contract/get-contract-types.md) identifier of the latest contract version |
| `timestamp`                       | `datetime`                | Timestamp indicating when the contract package was created.                                               |
| `icon_url`                        | `string`                  | URL pointing to an icon representing the contract package.                                                |

Metadata Property:

| Metadata Property           | Type         | Description                                                                                                                                                                                    |
| --------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`                      | `string`     | Name associated with the contract package.                                                                                                                                                     |
| `symbol`                    | `string`     | Contract package name pulled from the last version named keys. Contract package symbol pulled from the last version named keys. Applicable only for token contracts.                           |
| `decimals`                  | `uint8`      | Contract package token decimals pulled from the last version named keys. Applicable only for token contracts.                                                                                  |
| `balances_uref`             | `string(72)` | Contract package balances dictionary URef pulled from the last version named keys. Applicable only for token contracts.                                                                        |
| `total_supply_uref`         | `string(72)` | Contract package total supply URef pulled from the last version named keys. Applicable only for token contracts.                                                                               |
| `ownership_mode`            | `uint8`      | CEP-78 contract [ownership mode](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#ownership). Applicable only for CEP-78 contracts.                         |
| `nft_kind`                  | `uint8`      | CEP-78 contract [NFT kind](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#nftkind). Applicable only for CEP-78 contracts.                                 |
| `nft_metadata_kind`         | `uint8`      | CEP-78 contract [NFT metadata kind](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#nftmetadatakind). Applicable only for CEP-78 contracts.                |
| `whitelist_mode`            | `uint8`      | CEP-78 contract [whitelist mode](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#whitelistmode). Applicable only for CEP-78 contracts.                     |
| `holder_mode`               | `uint8`      | CEP-78 contract [holder mode](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#nftholdermode). Applicable only for CEP-78 contracts.                        |
| `minting_mode`              | `uint8`      | CEP-78 contract [minting mode](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#minting). Applicable only for CEP-78 contracts.                             |
| `burn_mode`                 | `uint8`      | CEP-78 contract [burn mode](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#burnmode). Applicable only for CEP-78 contracts.                               |
| `identifier_mode`           | `uint8`      | CEP-78 contract [identifier mode](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#nftidentifiermode). Applicable only for CEP-78 contracts.                |
| `metadata_mutability`       | `uint8`      | CEP-78 contract [metadata mutability mode](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#metadata-mutability). Applicable only for CEP-78 contracts.     |
| `owner_reverse_lookup_mode` | `uint8`      | CEP-78 contract [owner reverse lookup mode](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#ownerreverselookupmode). Applicable only for CEP-78 contracts. |
| `events_mode`               | `uint8`      | CEP-78 contract [events mode](https://github.com/casper-ecosystem/cep-78-enhanced-nft/blob/dev/docs/modalities.md#eventsmode). Applicable only for CEP-78 contracts.                           |

## Optional properties

Depending on the endpoint, the following optional property may be included in the `ContractPackage` entity:

| Property         | Type  | Description                                                                                                                                                                                            |
| ---------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `deploys_number` | `int` | Number of deploys in the specified number of the past days. It's a [function includer](/1.3.x/documentation/overview/optional-properties.md#functions) that accepts the number of days as an argument. |

## Relations

The `ContractPackage` entity has the following relations with other entities:

| Entity                                    | Mapping property        | Description                                                                                  |
| ----------------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------- |
| [`Deploy`](/1.3.x/rest-api/deploy.md)     | `contract_package_hash` | Contracts packages are deployed to the network with a deploy call.                           |
| [`Contract`](/1.3.x/rest-api/contract.md) | `contract_package_hash` | Contracts are different versions of the same smart contract included in the contract package |

## Endpoints

The `ContractPackage` entity has the following endpoints:

* [Get contract package](/1.3.x/rest-api/contract-package/get-contract-package.md)
* [Get contract packages](/1.3.x/rest-api/contract-package/get-contract-packages.md)

## Relation endpoints

The `ContractPackage` entity has the following relation endpoints:

* [Get contract package contracts](/1.3.x/rest-api/contract/get-contracts-by-contract-package.md)
* [Get contract package NFT tokens](/1.3.x/rest-api/non-fungible-token/get-contract-package-tokens.md) (applicable only to NFT contract packages)
* [Get contract package NFT token actions](/1.3.x/rest-api/non-fungible-token-action/get-contract-package-token-actions.md) (applicable only to NFT contract package)
* [Get contract package NFT token ownership](/1.3.x/rest-api/non-fungible-token-ownership/get-contract-package-token-ownership.md) (applicable only to NFT contract package)
* [Get contract package fungible token ownership](/1.3.x/rest-api/fungible-token-ownership/get-contract-package-fungible-token-ownership.md) (applicable only to fungible token contract package)
* [Get contract package fungible tokens](/1.3.x/rest-api/fungible-token-action/get-account-token-actions.md) (applicable only to fungible token contract package)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.cspr.cloud/1.3.x/rest-api/contract-package.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

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