{
  "openapi": "3.1.0",
  "info": {
    "title": "Delta Registry — UAE Corporate Registry Monitor - Dubai Mainland, ADGM & DIFC",
    "description": "Delta-tracks UAE corporate registrations and license-status changes across Dubai's DED mainland trade-license register (Dubai Pulse), ADGM (Abu Dhabi Global Market), and DIFC public registers. Bilingual Arabic/English entity-name normalization. Multi-channel status-change alerting. Pay-per-event.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/BmhA43NYN15DxOLTD/runs": {
      "post": {
        "operationId": "startUaeCorporateRegistryMonitorRun",
        "summary": "Start an async run of: Delta-tracks UAE corporate registrations and license-status changes across Dubai's DED mainland trade-license register (Dubai Pulse), ADGM (Abu Dhabi Global Market), and DIFC public registers. Bilingual Arabic/English entity-name normalization. Multi-channel status-change alerting. Pay-per-event.",
        "x-async-pattern-reason": "Real observed max runtime 41.5s exceeds the 35s safety margin under GPT Actions' 45s cap — using POST /runs + poll GET /actor-runs/{runId}.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "dataSources": {
                    "type": "array",
                    "description": "Which live, independently-verified UAE corporate registries to check this run. ADGM_FREEZONE (Abu Dhabi Global Market) and DIFC_FREEZONE (Dubai International Financial Centre) are both real, live, anonymous, bulk-queryable public registers - no setup required. DUBAI_MAINLAND (Dubai's DED trade-license register via the Dubai Pulse open-data portal) additionally requires your own approved dubaiPulseApiKey below (see README 'Dubai mainland setup') - no bulk, anonymous, general-commerce mainland registry exists for Abu Dhabi, Sharjah, or the other emirates (confirmed by live investigation; see ARCHITECTURE.md section 0), so they are not offered here.",
                    "default": [
                      "ADGM_FREEZONE",
                      "DIFC_FREEZONE"
                    ],
                    "items": {
                      "type": "string",
                      "enum": [
                        "DUBAI_MAINLAND",
                        "ADGM_FREEZONE",
                        "DIFC_FREEZONE"
                      ]
                    }
                  },
                  "dubaiPulseApiKey": {
                    "type": "string",
                    "description": "Your own Dubai Pulse API key, obtained via Dubai Pulse's own 'Request Permission' approval flow (dubaipulse.gov.ae) - this can take up to 14 days and is not something this actor can provision on your behalf. Only needed if dataSources includes DUBAI_MAINLAND. Leave blank otherwise."
                  },
                  "maxItems": {
                    "type": "integer",
                    "description": "Stops the run once this many changed/new entity records have been pushed (and charged, where applicable) across all selected data sources - this actor's own safety valve. Records not yet reached when the limit is hit are simply re-evaluated fresh next run. Defaults to 50 so a default/test run completes in well under Apify's automated-test window.",
                    "default": 50,
                    "minimum": 1
                  },
                  "deltaStateName": {
                    "type": "string",
                    "description": "Names the persistent Key-Value Store this run's delta memory (per-entity fingerprints and per-data-source baseline-completion flags) lives in. Use a distinct name per independent schedule/configuration. Leave as 'default' for a single schedule.",
                    "default": "default"
                  },
                  "resetState": {
                    "type": "boolean",
                    "description": "When true, ignores all previously-remembered entities and baseline-completion flags for this deltaStateName and re-baselines from scratch. Use only to deliberately restart monitoring.",
                    "default": false
                  },
                  "onlyNew": {
                    "type": "boolean",
                    "description": "When true (recommended, and the only free-of-charge default), only NEW_ENTITY, STATUS_CHANGED, and ENTITY_UPDATED events are delivered - never a snapshot of an unchanged entity or a first-run baseline. When false, every matched entity is delivered every run its data source is processed, including BASELINE_SNAPSHOT (first run) and ENTITY_UNCHANGED rows.",
                    "default": true
                  },
                  "webhookUrl": {
                    "type": "string",
                    "description": "Any HTTPS endpoint that accepts a JSON POST - receives the full raw event payload with no channel-specific formatting. Independent of Apify's own platform-level webhook system."
                  },
                  "slackWebhookUrl": {
                    "type": "string",
                    "description": "A Slack Incoming Webhook URL created via a Slack App (Slack's current, supported method - not the older 'legacy custom integrations' path). Receives a formatted, bilingual Slack Block Kit message with a colored accent bar highlighting license status changes."
                  },
                  "teamsWebhookUrl": {
                    "type": "string",
                    "description": "A Microsoft Teams 'Workflows' webhook URL (the current mechanism as of 2026 - NOT the retired classic Incoming Webhook connector; see README). Receives a formatted, bilingual Adaptive Card with a status-change visual accent."
                  }
                },
                "required": []
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Run started. Poll GET /actor-runs/{runId} with the returned run id until status is SUCCEEDED, then fetch its dataset items.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-openai-isConsequential": false
      }
    },
    "/actor-runs/{runId}": {
      "get": {
        "operationId": "getUaeCorporateRegistryMonitorRunStatus",
        "summary": "Poll the status of a previously started run.",
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current run status. When status is SUCCEEDED, fetch the dataset via GET /datasets/{datasetId}/items, passing this response's defaultDatasetId field as {datasetId}.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "defaultDatasetId": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-openai-isConsequential": false
      }
    },
    "/datasets/{datasetId}/items": {
      "get": {
        "operationId": "getUaeCorporateRegistryMonitorDatasetItems",
        "summary": "Fetch the dataset items produced by a completed run.",
        "parameters": [
          {
            "name": "datasetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Array of normalized records from the actor run.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "actorSpecification": 1,
                    "fields": {
                      "$schema": "http://json-schema.org/draft-07/schema#",
                      "type": "object",
                      "required": [
                        "event_type",
                        "record_id",
                        "data_source",
                        "commercial_name_en",
                        "scraped_at"
                      ],
                      "properties": {
                        "@type": {
                          "type": "string",
                          "enum": [
                            "schema:Corporation"
                          ]
                        },
                        "event_id": {
                          "type": "string"
                        },
                        "event_type": {
                          "type": "string",
                          "enum": [
                            "NEW_ENTITY",
                            "STATUS_CHANGED",
                            "ENTITY_UPDATED",
                            "ENTITY_UNCHANGED",
                            "BASELINE_SNAPSHOT"
                          ]
                        },
                        "record_id": {
                          "type": "string"
                        },
                        "data_source": {
                          "type": "string",
                          "enum": [
                            "DUBAI_MAINLAND",
                            "ADGM_FREEZONE",
                            "DIFC_FREEZONE"
                          ]
                        },
                        "free_zone": {
                          "type": "boolean"
                        },
                        "commercial_name_en": {
                          "type": "string"
                        },
                        "commercial_name_ar": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "legal_form": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "registration_status": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "license_status": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "trade_name_status": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "previous_registration_status": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "previous_license_status": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "previous_trade_name_status": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "activities": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "issue_date": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "expiry_date": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "cancel_date": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "registered_address": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "status_fingerprint": {
                          "type": "string"
                        },
                        "content_fingerprint": {
                          "type": "string"
                        },
                        "is_new": {
                          "type": "boolean"
                        },
                        "scraped_at": {
                          "type": "string"
                        }
                      }
                    },
                    "views": {
                      "overview": {
                        "title": "Overview",
                        "transformation": {
                          "fields": [
                            "event_type",
                            "data_source",
                            "commercial_name_en",
                            "commercial_name_ar",
                            "registration_status",
                            "previous_registration_status",
                            "legal_form",
                            "scraped_at"
                          ]
                        },
                        "display": {
                          "component": "table"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-openai-isConsequential": false
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApifyBearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "security": [
    {
      "ApifyBearerAuth": []
    }
  ]
}