This guide explains how to register dismantled aircraft, engines and parts in the AFRA-CAAC Dismantled Registries through the Block Aero External API: how to get an API key, find the records your requests refer to, create and update registry items, search them, and take them through publishing.
A ready-to-run Postman collection accompanies this guide (see Postman collection).
Contents
- Overview
- Getting started
- Before you create items
- Aircraft registry items
- Engine registry items
- Part registry items
- Updating registry items
- Searching registry items
- Publishing and lifecycle
- Errors
- Postman collection
- Reference
Overview
The AFRA-CAAC Dismantled Registries record assets recovered from aircraft disassembly. There are three registries, one per asset type, and items form a hierarchy:
AFRA-CAAC Dismantled Aircraft Registry (MSN assets)
├── AFRA-CAAC Dismantled Engine Registry (ESN assets) — optional parent: an aircraft item
│ └── AFRA-CAAC Dismantled Part Registry (PART assets) — parent: an aircraft or engine item
└── AFRA-CAAC Dismantled Part Registry (PART assets)
Each registry has its own set of endpoints.
| Registry | Create | Update details | Search |
|---|---|---|---|
| Aircraft | POST /api/v2/registry-item/afra-caac/aircraft | PUT /api/v2/registry-item/afra-caac/aircraft | POST /api/v2/registry-item/afra-caac/aircraft/search |
| Engine | POST /api/v2/registry-item/afra-caac/engine | PUT /api/v2/registry-item/afra-caac/engine | POST /api/v2/registry-item/afra-caac/engine/search |
| Part | POST /api/v2/registry-item/afra-caac/part | PUT /api/v2/registry-item/afra-caac/part | POST /api/v2/registry-item/afra-caac/part/search |
You only send what you know; Block Aero attempts to fill in the rest. A create request refers to your asset (and, for aircraft and engines, your certificate), plus the details you would type into the Block Aero app. The platform copies everything else from the referenced records:
- asset details (series, model, serial and part numbers, OEM, country of origin, TSN/CSN, …),
- the certified facility of your certificate,
- the owner's contact email and business address,
- for parts, the removal details of the asset's latest Removal Tag and the most recent operator of the parent item.
Every rule the registries define (required fields, date order, allowed values, …) is checked before anything is saved, and all problems in a request are reported together.
Getting started
Base URL and version
There are 2 primary environments you will interact with. The first is the sandbox environment. This is the first place you should interact with, and where you will do all of your testing. The second is the production environment. This is the environment that your customers and auditors will use to view your records and interact with your registry items.
Sandbox Base URL: https://sandbox.portal.block.aero
Production Base URL: https://portal.block.aero or https://afra.block.aero
All endpoints in this guide are part of External API v2.
Block Aero provides the host name for your environment. Interactive API documentation (Swagger) for your environment is available at https://<your Block Aero environment>/swagger. Select BlockAero API External v2 from the "Select a definition" dropdown at the top right.
Create an API key
API keys are issued per organization and grant only the operations you select.
- Sign in to Block Aero with a user that can manage API keys.
- Go to Settings → Organization → API Keys (
/app/admin/settings/organization/api-keys) and create a key. - Give it a name and an expiration date, and enable the permissions below.
- Copy the key when it is shown — it is displayed only once and cannot be retrieved later. If you lose it, rotate or create a new key.
Permissions this guide uses:
| Module | Permission | Needed for |
|---|---|---|
| Registry Items (Private) | Create / Update / Search AFRA-CAAC Dismantled Aircraft Registry Items | Aircraft endpoints |
| Registry Items (Private) | Create / Update / Search AFRA-CAAC Dismantled Engine Registry Items | Engine endpoints |
| Registry Items (Private) | Create / Update / Search AFRA-CAAC Dismantled Part Registry Items | Part endpoints |
| Registry Items (Private) | Update Registry Items Status | Publishing, requesting review, revoking |
| Registry Items (Private) | Delete Registry Items | Deleting unpublished items |
| Registry Items (Private) | Search Registry Items (Private) | Generic search across registries (optional) |
| Organizations | Get My Organization | Finding your organization ID |
| Assets | Search Assets | Finding your asset IDs |
| Certificates | Search Certificates | Finding your certificate IDs |
| Documents | Upload Document to Asset | Attaching the documents publishing requires |
| Registries | Search Registries | Checking the registries are visible to you (optional) |
Keys expire on their expiration date; users who manage API keys are emailed 14 days beforehand. A revoked or expired key stops working immediately.
Authenticate requests
Send the key in the X-Api-Key header on every request:
POST /api/v2/registry-item/afra-caac/aircraft/search?index=0&count=10 HTTP/1.1
Host: <your Block Aero environment>
X-Api-Key: <your API key>
Content-Type: application/json
{}| Response | Meaning |
|---|---|
401 Unauthorized — "Missing or invalid API key." | No key, or the key is unknown, expired or revoked. |
403 Forbidden — "This API key is not permitted to access this resource." | The key is valid but the operation isn't enabled for it. |
Response format
Every response is wrapped in the same envelope. The data you asked for is in result:
{
"result": ["RGI-4f1c2a9e-6b7d-4e8f-9a0b-1c2d3e4f5a6b"],
"success": true,
"error": null,
"unAuthorizedRequest": false,
"__abp": true
}On failure success is false and error describes the problem (see Errors).
Conventions
- IDs are 40 characters with a type prefix:
ORG-organization,BAA-asset,CRT-certificate,RGI-registry item,REG-registry. - Dates use ISO 8601, e.g.
2026-09-01T00:00:00Z. - Dismantling status is sent and stored as a code:
"1"Not Started,"2"In-Progress,"3"Complete (see Dismantling status). Responses also include the readabledismantlingStatusLabel. - Batches: create and update accept an array of 1–100 items. A batch is validated as a whole: if any item is invalid, nothing is saved.
Before you create items
A create request refers to records that must already exist in Block Aero.
1. Your organization ID
GET /api/v2/organization/mineresult.orgId is your organization ID (ORG-…). It is used to filter your assets and certificates below.
2. Your assets
Registry items are created for assets your organization holds a role on. The aircraft registry accepts MSN assets, the engine registry ESN assets and the part registry PART assets.
POST /api/v2/asset/search?index=0&count=20
Content-Type: application/json
{
"and": [
{ "key": "assetType", "operator": "eq", "value": "MSN" },
{ "key": "roleHolders", "operator": "array_overlap", "values": ["<your orgId>"] },
{ "key": "serialNumber", "operator": "eq", "value": "3456" }
]
}Use the asset's id as assetId. Because asset details are copied into the registry item, make sure the asset record is complete first — for example an aircraft needs its most recent operator, TSN and CSN, unless you provide them in the request.
As in the Block Aero app, an asset can have more than one item in the same registry: creating again for an asset that already has an item makes a second one. To avoid duplicates, search the registry for the asset before creating (see Searching registry items), and if a create times out, check whether it went through before retrying:
{ "key": "assetId", "operator": "eq", "value": "<assetId>" }3. Your certificate (aircraft and engine)
Aircraft and engine items need the CAAC- or AFRA-issued certificate that authorizes the dismantling project. It must be issued to your organization.
POST /api/v2/certificate/search?index=0&count=20
Content-Type: application/json
{
"and": [
{ "key": "issuerOrgName", "operator": "in", "values": ["CAAC", "AFRA"] },
{ "key": "recipientOrgId", "operator": "eq", "value": "<your orgId>" }
]
}Use the certificate's id as certificateId. The certificate's facility name and address are copied into the item.
4. The parent item (engine and part)
- An engine may be registered under an aircraft item.
- A part must be registered under an aircraft or engine item.
The parent must have dismantling status "2" (In-Progress) and must not be revoked or expired. Find candidates with the aircraft or engine search:
POST /api/v2/registry-item/afra-caac/aircraft/search?index=0&count=20
Content-Type: application/json
{
"and": [
{ "key": "metadata.dismantlingStatus", "operator": "eq", "value": "2" },
{ "key": "metadata.asset.serialNumber", "operator": "eq", "value": "3456" }
]
}5. Documents (needed to publish)
When an item is created, the asset's existing documents of the types the registry supports are attached to it automatically. Publishing requires certain documents to be present (see Required documents), so upload them to the asset before creating the item:
POST /api/v2/attach-document
Content-Type: multipart/form-data
file=<the file>
assetIds=BAA-7c8d9e0f-1a2b-4c3d-8e9f-0a1b2c3d4e5f
documentType=coaAircraft registry items
POST /api/v2/registry-item/afra-caac/aircraft
[
{
"assetId": "BAA-7c8d9e0f-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"certificateId": "CRT-e5f6a7b8-c9d0-1234-defa-123456789012",
"dismantlingStatus": "2",
"projectName": "A320 MSN 3456 Teardown",
"projectStartDate": "2026-09-01T00:00:00Z",
"isRemoteProject": false,
"transferMethodToDismantlingFacility": "ferryFlight",
"parkingDurationSinceDeregistrationInMonths": 14,
"parkingDurationAtDismantlingFacilityInMonths": 3,
"preservationStatusAfterLastFlightRemarks": "Engines inhibited and covered; landing gear pinned.",
"certificateofAirworthinessNo": "COA-2014-0231",
"certificateOfDeregistrationNo": "CDR-2026-0117",
"assetEndOfLifeCertificateNo": "EOLC-2026-0042"
}
]Returns the IDs of the created items, in request order:
{ "result": ["RGI-4f1c2a9e-6b7d-4e8f-9a0b-1c2d3e4f5a6b"], "success": true, "error": null }| Field | Required | Description |
|---|---|---|
assetId | Yes | Your MSN asset. |
certificateId | Yes | Your CAAC/AFRA-issued certificate. |
dismantlingStatus | Yes | Code: "1" = Not Started, "2" = In-Progress, "3" = Complete. See Dismantling status. |
projectName | Yes | Name of the dismantling project. |
projectStartDate | When status is "2" or "3" | Cannot be after projectEndDate. |
projectEndDate | When status is "3" | Cannot be before projectStartDate. |
isRemoteProject | Yes | Whether the project runs away from the certified facility. |
remoteFacilityName, remoteFacilityAddress | When isRemoteProject is true | The remote site. |
transferMethodToDismantlingFacility | Yes | ferryFlight (Ferry Flight), roadTransport (Road Transport), seaFreight (Sea Freight) or airCargo (Air Cargo). |
parkingDurationSinceDeregistrationInMonths | Yes | Greater than 0. |
parkingDurationAtDismantlingFacilityInMonths | Yes | Greater than 0. |
preservationStatusAfterLastFlightRemarks | Yes | Free text. |
certificateofAirworthinessNo | Yes | Certificate of Airworthiness number (note the lower-case "of"). |
certificateOfDeregistrationNo | Yes | Certificate of Deregistration number. |
assetEndOfLifeCertificateNo | No | Asset End of Life Certificate number. |
mostRecentOperatorOrgId | No* | Defaults to the asset's most recent operator. |
ownerOrgId | No* | Defaults to the asset's owner. |
tsn, csn | No* | Whole numbers ≥ 0. Default to the asset's TSN/CSN. |
* Required in the resulting item: if the asset doesn't have a value, you must provide one.
Engine registry items
POST /api/v2/registry-item/afra-caac/engine
[
{
"assetId": "BAA-5d6e7f80-9a1b-4c2d-8e3f-4a5b6c7d8e9f",
"certificateId": "CRT-e5f6a7b8-c9d0-1234-defa-123456789012",
"parentRegistryItemId": "RGI-4f1c2a9e-6b7d-4e8f-9a0b-1c2d3e4f5a6b",
"mostRecentOperatorOrgId": "ORG-8ab37c5a-d54a-4ece-9177-382843222cfc",
"dismantlingStatus": "2",
"projectName": "CFM56 ESN 577123 Teardown",
"projectStartDate": "2026-09-01T00:00:00Z",
"removalDate": "2026-09-10T00:00:00Z",
"authorizedReleaseCertificateNo": "ARC-2026-00981"
}
]| Field | Required | Description |
|---|---|---|
assetId | Yes | Your ESN asset. |
certificateId | Yes | Your CAAC/AFRA-issued certificate. |
parentRegistryItemId | No | An aircraft item that is In-Progress and not revoked or expired. |
mostRecentOperatorOrgId | Yes | Organization ID of the most recent operator (not taken from the asset). |
dismantlingStatus | Yes | Code: "1" = Not Started, "2" = In-Progress, "3" = Complete. See Dismantling status. |
projectName | Yes | Name of the dismantling project. |
projectStartDate | When status is "2" or "3" | Cannot be after projectEndDate. |
projectEndDate | When status is "3" | Cannot be before projectStartDate. |
removalDate | Yes | Date the engine was removed. |
authorizedReleaseCertificateNo | Yes | Authorized Release Certificate number. |
assetEndOfLifeCertificateNo | No | Asset End of Life Certificate number. |
hasDataPlate | No* | Defaults to the asset's value. |
ownerOrgId | No* | Defaults to the asset's owner. |
tsn, csn | No* | Whole numbers ≥ 0. Default to the asset's TSN/CSN. |
* Required in the resulting item: if the asset doesn't have a value, you must provide one.
Part registry items
POST /api/v2/registry-item/afra-caac/part
[
{
"assetId": "BAA-99999999-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"parentRegistryItemId": "RGI-2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091",
"salesContactEmail": "[email protected]"
}
]The removal details (removal date, removal reference, removal tag issuer, certifying staff number and issue date) default to the asset's latest Removal Tag, and the most recent operator is copied from the parent item. Provide any of them to override.
| Field | Required | Description |
|---|---|---|
assetId | Yes | Your PART asset. |
parentRegistryItemId | Yes | An aircraft or engine item that is In-Progress and not revoked or expired. |
salesContactEmail | No | Must be a valid email address. |
isLlp | No* | Life Limited Part. Defaults to the asset's value. When true, TSN and CSN are required. |
hasDataPlate | No* | Defaults to the asset's value. |
manufacturer | No* | Manufacturer CAGE code, exactly 5 characters. Defaults to the asset's. |
removalDate | No* | Defaults to the latest Removal Tag. |
removedById | No* | Removal reference (e.g. work order). Defaults to the latest Removal Tag. |
removalTagIssuer | No* | Organization ID of the Removal Tag issuer. Defaults to the latest Removal Tag's issuer. |
certifyingStaffNumber | No* | Defaults to the latest Removal Tag's signatory. |
issueDate | No* | Removal Tag issue date. Defaults to the latest Removal Tag. |
ownerOrgId | No* | Defaults to the asset's owner. |
tsn, csn | When isLlp is true | Whole numbers ≥ 0. Default to the asset's TSN/CSN. |
* Required in the resulting item: if neither the asset nor its latest Removal Tag has a value, you must provide one.
Updating registry items
PUT /api/v2/registry-item/afra-caac/{aircraft|engine|part}
Send the item's id and only the fields you want to change. Omitted fields keep their current value; null clears an optional field. The fields that can be updated are the same user-entered fields as on create (asset, certificate and parent can't be changed).
[
{
"id": "RGI-4f1c2a9e-6b7d-4e8f-9a0b-1c2d3e4f5a6b",
"dismantlingStatus": "3",
"projectEndDate": "2026-12-15T00:00:00Z"
}
]Rules:
- The item must belong to the endpoint's registry.
- Your changes are validated together with the rest of the item. You get an error when a field you send is invalid, such as a cleared required field, or when a change makes another field required: setting
dismantlingStatusto"3"requiresprojectEndDate, and settingisRemoteProjecttotruerequires the remote facility fields. A problem already stored on a field you don't send doesn't block the update, so a published item with a missing field can still move through its dismantling statuses. - Dismantling status can only stay the same or move forward:
"1"Not Started →"2"In-Progress →"3"Complete. - Changing
ownerOrgIdalso refreshes the owner's contact email and address. - Setting
isRemoteProjecttofalsekeeps any storedremoteFacilityNameandremoteFacilityAddress, as the Block Aero app does, so switching back totruerestores them. To remove them, send them asnullin the same request. - After an item is published, only these fields can change:
| Registry | Editable after publishing |
|---|---|
| Aircraft | dismantlingStatus, projectStartDate, projectEndDate |
| Engine | dismantlingStatus, projectStartDate, projectEndDate |
| Part | none |
Searching registry items
POST /api/v2/registry-item/afra-caac/{aircraft|engine|part}/search?index=0&count=100
Returns your organization's items in that registry, with typed metadata. The request body is a search expression; send {} to list everything.
| Query parameter | Default | Description |
|---|---|---|
index | 0 | Index of the first record to return. |
count | 100 | Number of records to return (1–1,000). |
{
"sort": [{ "column": "updatedBy.timestamp", "direction": "desc" }],
"and": [
{ "key": "metadata.dismantlingStatus", "operator": "in", "values": ["1", "2"] },
{ "key": "metadata.asset.serialNumber", "operator": "like", "value": "%3456%" }
]
}A search expression is either a single condition (key + operator + value/values) or a group (and / or of expressions), and groups can be nested. sort is only allowed at the top level.
| Operators | Meaning |
|---|---|
eq, ne | Equals / not equals |
gt, gte, lt, lte | Comparisons |
like, nlike | Contains / doesn't contain (% is the wildcard) |
in, nin | In / not in a list (values) |
null, notnull, notempty, nullorempty, notnullandempty | Presence checks |
For non-text values add "type": numeric, bool, datetime or uuid, e.g. { "key": "metadata.isLlp", "operator": "eq", "value": "true", "type": "bool" }.
Filter on metadata.dismantlingStatus with the code ("1", "2", "3"), not the label.
Keys use dot notation on the response shape: status, isPublished, assetId, parentRegistryItemId, metadata.<field>, metadata.asset.<field>, createdBy.timestamp, updatedBy.timestamp, and so on.
Response:
{
"result": {
"count": 1,
"items": [
{
"id": "RGI-4f1c2a9e-6b7d-4e8f-9a0b-1c2d3e4f5a6b",
"registryId": "REG-d5ba6480-6c56-4a91-82ad-fd50ff51dda0",
"assetId": "BAA-7c8d9e0f-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"parentRegistryItemId": null,
"childRegistryItemIds": [],
"status": "Draft - Ready",
"isPublished": false,
"validityEndDate": null,
"metadata": {
"asset": {
"series": "A320",
"modelNumber": "A320-214",
"serialNumber": "3456",
"aircraftRegNumber": { "value": "EI-DLV" },
"owner": { "orgId": "ORG-2ae25673-d81b-4de0-817f-9ef5c431e180", "email": "[email protected]" }
},
"mostRecentOperatorOrgId": "ORG-8ab37c5a-d54a-4ece-9177-382843222cfc",
"tsn": 48210,
"csn": 31877,
"dismantlingStatus": "2",
"dismantlingStatusLabel": "In-Progress",
"projectName": "A320 MSN 3456 Teardown",
"projectStartDate": "2026-09-01T00:00:00Z",
"facilityName": "Skytech DFW",
"amoCertificateNo": "AMO-145-0098"
},
"documents": [{ "documentType": "coa" }, { "documentType": "codr" }, { "documentType": "equipmentphoto" }]
}
]
},
"success": true
}(Abbreviated — the full schema is in Swagger.)
Publishing and lifecycle
Statuses
| Status | Meaning |
|---|---|
Draft - Not Ready | Created, but required documents are missing. |
Draft - Ready | All required documents are attached; the item can be published. |
Pending Review | Review has been requested. |
Valid | Published and within its validity period. |
Flagged | Flagged for attention; see flaggedReason. |
Revoked | Revoked; it can't be edited or used as a parent. |
Expired | Past its validity end date. |
Published items are valid for 730 days and can be renewed.
Required documents
These must be attached to the asset before the item is created (see Documents). documentType values are shown in brackets.
| Registry | Required | Optional |
|---|---|---|
| Aircraft | C of Airworthiness (coa), Certificate of Deregistration (codr), at least one Photo (equipmentphoto) | Asset End of Life Certificate (eolc), Preservation Record (preservationrecord) |
| Engine | ARC (arc), Engine Removal Record (removal), at least one Photo (equipmentphoto) | Asset End of Life Certificate (eolc), Preservation Record (preservationrecord) |
| Part | Removal Tag (removaltag), at least one Photo (equipmentphoto) | — |
Publish, request review, revoke
Status changes use the generic Registry Items endpoint for all three registries:
PUT /api/v2/registry-item-status?action=publish
Content-Type: application/json
["RGI-4f1c2a9e-6b7d-4e8f-9a0b-1c2d3e4f5a6b"]action is one of publish, requestReview, revoke, flag, unflag, reflag or revertFlag; which actions you may use depends on your organization's role in the registry. The response lists the IDs whose status changed — an item that can't take the action (for example because it isn't Draft - Ready) is left out rather than causing an error, so compare the result with what you sent.
Parts and engines can only be registered under a parent that is In-Progress; revoking a parent also revokes its children.
Delete
Unpublished items can be deleted:
DELETE /api/v2/registry-item
Content-Type: application/json
["RGI-7d249e91-ff0e-4f5f-a0dc-cd9b37cc21e9"]- Delete children before parents (part → engine → aircraft), one request per level; an item that still has children can't be deleted.
- Published items are not deleted (they are skipped); revoke them instead.
Errors
| HTTP status | When |
|---|---|
400 Bad Request | The request is invalid (see below). |
401 Unauthorized | Missing, invalid, expired or revoked API key. |
403 Forbidden | The API key doesn't have the permission for this operation. |
404 Not Found | The registry isn't visible to your organization. |
A 400 describes every problem found, prefixed with the index of the item in your array:
{
"success": false,
"error": {
"code": 400,
"message": "The request is invalid: [0] projectStartDate is required when dismantlingStatus is \"2\" (In-Progress) or \"3\" (Complete). [1] assetId BAA-… was not found among your organization's assets.",
"details": "[0] projectStartDate is required when dismantlingStatus is \"2\" (In-Progress) or \"3\" (Complete).\n[1] assetId BAA-… was not found among your organization's assets."
}
}Malformed input (a missing required field, an ID in the wrong format, an empty array) is reported as "Your request is not valid!" with a validationErrors list.
Common messages:
| Message | What to do |
|---|---|
assetId … was not found among your organization's assets. | Check the ID and that your organization holds a role on the asset. |
assetId … is a PART asset, but the AFRA-CAAC Dismantled Aircraft Registry only accepts MSN assets. | Use the endpoint matching the asset type. |
certificateId … is issued by EASA; only CAAC or AFRA issued certificates can authorize the project. | Use a CAAC- or AFRA-issued certificate. |
parentRegistryItemId … must have dismantlingStatus "2" (In-Progress). | Move the parent to In-Progress first. |
parentRegistryItemId … belongs to a registry that cannot be a parent of the AFRA-CAAC Dismantled Part Registry. | Parts go under aircraft or engine items; engines under aircraft items. |
<field> is required. / <field> is required when … | Provide the field (or complete the asset record it is copied from). |
manufacturer must be a CAGE code of exactly 5 characters. | Correct the CAGE code. |
dismantlingStatus cannot change from "2" (In-Progress) to "1" (Not Started); … | Dismantling status can't go backwards. |
<field> cannot be changed after the registry item is published. | Only the fields listed in Updating are editable after publishing. |
id … is not an item of the AFRA-CAAC Dismantled Aircraft Registry. | Use the endpoint of the item's registry. |
At least one field to update is required. | Include a field to change. |
Postman collection
AFRA-CAAC Registry Items.postman_collection.json walks through the whole flow with tests on every response.
- Import it into Postman.
- Set the collection variables
baseUrl(e.g.https://<your Block Aero environment>) andapiKey. - Run the folders in order:
| Folder | What it does |
|---|---|
| Finds your organization, confirms the three registries are visible, and picks one MSN, ESN and PART asset and a CAAC/AFRA certificate. |
| Creates, searches and updates an item in each registry (engine under the aircraft, part under the engine). |
| Requests that must be rejected, with the expected messages. |
| Publishes the aircraft and checks the after-publishing rules. Needs an MSN asset with the required documents — set msnAssetId to such an asset. |
| Deletes the created items (children first) and revokes the aircraft if it was published. |
The collection creates real items for your organization; run it against a test environment, or use the cleanup folder afterwards.
Reference
Registries
| Registry | Registry ID | Asset type |
|---|---|---|
| AFRA-CAAC Dismantled Aircraft Registry | REG-d5ba6480-6c56-4a91-82ad-fd50ff51dda0 | MSN |
| AFRA-CAAC Dismantled Engine Registry | REG-014c22cc-86c6-4e90-9418-0f778afa7332 | ESN |
| AFRA-CAAC Dismantled Part Registry | REG-c6264f72-49b1-413d-af94-fc5309b05182 | PART |
You never need to send these IDs to the endpoints in this guide; they appear as registryId in responses and are useful when filtering the generic registry-item/search.
Dismantling status
Aircraft and engine items track the dismantling project with dismantlingStatus. Send and filter by the code; responses add the matching dismantlingStatusLabel.
Code (dismantlingStatus) | Label (dismantlingStatusLabel) | Notes |
|---|---|---|
"1" | Not Started | |
"2" | In-Progress | Requires projectStartDate. Only In-Progress items can be the parent of engine or part items. |
"3" | Complete | Requires projectStartDate and projectEndDate. |
The status can only move forward ("1" → "2" → "3") and stays editable after the item is published. Part items have no dismantling status.
Metadata filled in by Block Aero
| Registry | Copied from the asset | From the certificate | Other |
|---|---|---|---|
| Aircraft | OEM, series, model no., serial no., A/C reg. no., state of registry, country of origin, owner, most recent operator, TSN, CSN | certificate, facility name and address, certificate no. | owner email and address (owner organization) |
| Engine | OEM, series, model no., serial no., part no., country of origin, ex-MSN model, ex-MSN, data plate, owner, TSN, CSN | certificate, facility name and address, certificate no. | owner email and address |
| Part | part no., serial no., description, manufacturer CAGE code, country of origin, batch/lot no., ex-MSN/ESN model and number, LLP, data plate, availability (sale/lease/exchange), owner, TSN, CSN | — | removal details (latest Removal Tag), most recent operator (parent item), owner email and address |
Public part lookup
Anyone can check whether a part is registered — no API key needed — with the public lookup used by the QR codes on Removal Tags:
POST /api/v1/caac/search
Content-Type: application/json
{ "PartNumber": "1795M91P01", "SerialNumber": "SN-2019-00437" }It returns the latest published item from the AFRA-CAAC Dismantled Part Registry. Removal date, removal reference, sales contact, availability and country of origin are left out of the public result.