Files
Investidor-V2/docs/investmoz/existing-business/openapi.json
T
nala 1106509116
tests / ci (push) Canceled after 0s
vrsao 2
2026-10-08 14:02:01 +02:00

2421 lines
131 KiB
JSON

{
"openapi": "3.1.0",
"info": {
"title": "InvestMoz — private existing-business intake",
"version": "1.2.0",
"description": "Internal preparation and review only. No publication, certification, legal transfer, NDA, payment or external CRM operation."
},
"servers": [
{
"url": "/api/v1/existing-business"
}
],
"paths": {
"/listings": {
"get": {
"summary": "List own active records, 20 per page",
"parameters": [
{
"name": "page",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
}
}
],
"security": [
{
"session": []
}
],
"responses": {
"200": {
"description": "Private response; Cache-Control private, no-store",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"records",
"management",
"modalities"
],
"properties": {
"records": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Business"
}
},
"total": {
"type": "integer"
}
}
},
"management": {
"type": "boolean"
},
"modalities": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
},
"401": {
"description": "Authentication required"
},
"403": {
"description": "Account, ownership or current reviewer/MFA policy rejected"
},
"404": {
"description": "Module disabled or resource unavailable"
},
"409": {
"description": "Stale version or invalid transition"
},
"422": {
"description": "Validation error"
},
"429": {
"description": "Rate limited"
}
}
},
"post": {
"summary": "Create private draft",
"parameters": [],
"security": [
{
"session": []
}
],
"responses": {
"201": {
"description": "Private response; Cache-Control private, no-store",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Business"
}
}
}
},
"401": {
"description": "Authentication required"
},
"403": {
"description": "Account, ownership or current reviewer/MFA policy rejected"
},
"404": {
"description": "Module disabled or resource unavailable"
},
"409": {
"description": "Stale version or invalid transition"
},
"422": {
"description": "Validation error"
},
"429": {
"description": "Rate limited"
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"modality",
"classification",
"reason",
"payload"
],
"properties": {
"modality": {
"type": "string"
},
"classification": {
"enum": [
"internal",
"confidential",
"restricted"
]
},
"reason": {
"type": "string",
"minLength": 10,
"maxLength": 1000
},
"payload": {
"type": "object",
"additionalProperties": false,
"required": ["title"],
"properties": {
"title": {
"type": "string",
"maxLength": 200,
"description": "Proposed title"
},
"description": {
"type": ["string", "null"],
"maxLength": 10000,
"description": "Summary: what is available, sought and key conditions"
},
"declared_reason": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Reason and objective"
},
"source_reference": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Source reference"
},
"valid_until": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Interest deadline (optional)"
},
"proponent_type": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"organization",
"sole_trader",
"person",
"public_entity",
null
],
"description": "Who is presenting the opportunity?"
},
"proponent_name": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Name"
},
"country": {
"type": ["string", "null"],
"maxLength": 2,
"description": "Country of origin or incorporation (two-letter ISO code)"
},
"tax_identifier": {
"type": ["string", "null"],
"maxLength": 50,
"description": "NUIT or identifier (internal, when applicable)"
},
"contact_name": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Contact person name"
},
"contact_email": {
"type": ["string", "null"],
"maxLength": 254,
"description": "Email (provide email or phone)"
},
"contact_phone": {
"type": ["string", "null"],
"maxLength": 40,
"description": "Phone (provide phone or email)"
},
"contact_preference": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"through_portal",
"approved_business_contact",
null
],
"description": "Contact preference"
},
"acting_capacity": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"holder",
"representative",
null
],
"description": "Acting capacity"
},
"declared_holder": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Entity or person represented"
},
"mandate_reference": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Authorization document reference"
},
"mandate_document_reference": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Internal authorization document reference (do not upload here)"
},
"mandate_valid_until": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Mandate expiry"
},
"disclosure_scope": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Limits of disclosure authorization"
},
"legitimacy_declaration": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", "no", null],
"description": "I declare authority to submit"
},
"opportunity_type": {
"type": ["string", "null"],
"maxLength": 40,
"enum": [
"investment_project",
"company_sale",
"asset_sale",
"business_partnership",
"financing_request",
"concession_opportunity",
"supply_opportunity",
null
],
"description": "Opportunity type"
},
"subsector_activity": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Subsector and activity (by name)"
},
"project_stage": {
"type": ["string", "null"],
"maxLength": 40,
"enum": [
"idea",
"study",
"preparation",
"implementation",
"operating",
"suspended",
"other",
null
],
"description": "Project or business status"
},
"project_stage_other": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Specify the status"
},
"availability": {
"type": ["string", "null"],
"maxLength": 40,
"enum": [
"available",
"from_date",
"negotiating",
null
],
"description": "Availability"
},
"available_from": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Available from"
},
"asking_value": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Value"
},
"value_status": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"defined",
"indicative",
"consultation",
"unknown",
null
],
"description": "Is the value defined?"
},
"value_meaning": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"asking_price",
"investment_estimate",
"financing_sought",
null
],
"description": "Meaning of the value"
},
"value_nature": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"asking",
"indicative",
"appraised",
null
],
"description": "Value basis"
},
"currency": {
"type": ["string", "null"],
"maxLength": 3,
"description": "Currency (three-letter code)"
},
"amount_secured": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Secured amount (projects)"
},
"investment_total": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Estimated total investment (projects)"
},
"amount_sought": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Financing sought"
},
"equity_percentage": {
"type": ["string", "null"],
"maxLength": 8,
"description": "Available equity (%)"
},
"funds_use": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Use of funds"
},
"asset_deal_kind": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"whole_business",
"participation",
"assets",
null
],
"description": "Type of sale"
},
"partnership_contribution": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"capital",
"technology",
"management",
"equipment",
"distribution",
"other",
null
],
"description": "Contribution sought"
},
"asset_modality": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"sale",
"lease",
"other",
null
],
"description": "Asset arrangement"
},
"concession_entity": {
"type": ["string", "null"],
"maxLength": 300,
"description": "Concession authority"
},
"concession_reference": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Official reference, procedure and deadline"
},
"supply_description": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Good or service, quantity/capacity, destination and timing"
},
"conditions": {
"type": ["string", "null"],
"maxLength": 4000,
"description": "Additional conditions"
},
"geography_scope": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"specific",
"multiple",
"national",
"digital",
null
],
"description": "Geographic scope"
},
"province_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "Province or Maputo City"
},
"district_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "District"
},
"admin_post_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "Administrative post"
},
"locality_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "Locality"
},
"location_notes": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Address or reference (internal)"
},
"location_unknown": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", "no", null],
"description": "I do not know the exact location"
},
"disclosure_precision": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"exact",
"approximate",
"administrative",
null
],
"description": "Disclosure precision"
},
"asset_notes": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Declared assets and rights summary"
},
"source_provider": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Who supplied the information?"
},
"source_date": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Source/information date"
},
"official_source_entity": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Official source authority (if any)"
},
"official_source_document": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Related official document"
},
"official_source_url": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Official source link"
},
"official_source_period": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Official source period"
},
"document_reference": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Document references (not validated files)"
},
"confirm_information": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", null],
"description": "I confirm the information reflects what I know and identify estimates or pending items."
},
"confirm_disclosure_authority": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", null],
"description": "I confirm I am authorized to submit the opportunity and disclose selected content."
},
"confirm_no_publication_guarantee": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", null],
"description": "I understand submission is not publication, official approval or an investment guarantee."
},
"wizard_version": {
"type": ["string", "null"],
"enum": ["1", null]
},
"wizard_step": {
"type": ["string", "null"],
"pattern": "^[1-8]$"
}
}
},
"sector_id": {
"type": ["integer", "null"],
"description": "Existing active public.sectors identifier; required on wizard submission."
}
}
}
}
}
},
"description": "Session authentication and Laravel CSRF/origin protection apply. Use X-XSRF-TOKEN for browser clients."
}
},
"/reviews": {
"get": {
"summary": "List submitted records for designated reviewers with MFA; excludes own records",
"parameters": [],
"security": [
{
"session": []
}
],
"responses": {
"200": {
"description": "Private response; Cache-Control private, no-store",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"records": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Business"
}
}
}
},
"management": {
"type": "boolean"
}
}
}
}
}
},
"401": {
"description": "Authentication required"
},
"403": {
"description": "Account, ownership or current reviewer/MFA policy rejected"
},
"404": {
"description": "Module disabled or resource unavailable"
},
"409": {
"description": "Stale version or invalid transition"
},
"422": {
"description": "Validation error"
},
"429": {
"description": "Rate limited"
}
}
}
},
"/listings/{id}": {
"get": {
"summary": "Read own record or currently reviewable submission",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"security": [
{
"session": []
}
],
"responses": {
"200": {
"description": "Private response; Cache-Control private, no-store",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"record": {
"$ref": "#/components/schemas/Business"
},
"canEdit": {
"type": "boolean"
},
"owner": {
"type": "boolean"
},
"canReview": {
"type": "boolean"
},
"history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"version_no": {
"type": "integer"
},
"action": {
"type": "string"
},
"created_at": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
},
"verifications": {
"type": "array",
"items": {
"type": "object",
"required": [
"version_no",
"check",
"outcome",
"evidence_reference",
"note"
],
"properties": {
"version_no": {
"type": "integer",
"minimum": 1
},
"object_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"check": {
"enum": [
"identity",
"representation",
"declared_ownership",
"documentary_ownership",
"document_received",
"document_validated",
"independent_valuation",
"land_right_documented",
"license_confirmed",
"validity",
"legal_transfer",
"prior_authorization"
]
},
"outcome": {
"enum": [
"confirmed",
"rejected",
"inconclusive",
"revoked"
]
},
"evidence_reference": {
"type": "string",
"minLength": 10,
"maxLength": 2000
},
"note": {
"type": "string",
"minLength": 10,
"maxLength": 2000
},
"valid_until": {
"type": [
"string",
"null"
],
"format": "date",
"description": "Required for confirmed findings; must be today or later."
},
"effective_outcome": {
"enum": [
"confirmed",
"rejected",
"inconclusive",
"revoked",
"stale",
"expired"
]
},
"content_version": {
"type": "integer"
},
"created_at": {
"type": "string"
}
}
}
}
}
}
}
}
},
"401": {
"description": "Authentication required"
},
"403": {
"description": "Account, ownership or current reviewer/MFA policy rejected"
},
"404": {
"description": "Module disabled or resource unavailable"
},
"409": {
"description": "Stale version or invalid transition"
},
"422": {
"description": "Validation error"
},
"429": {
"description": "Rate limited"
}
}
},
"put": {
"summary": "Update owned draft or request for information; optimistic version required",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"security": [
{
"session": []
}
],
"responses": {
"200": {
"description": "Private response; Cache-Control private, no-store",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Business"
}
}
}
},
"401": {
"description": "Authentication required"
},
"403": {
"description": "Account, ownership or current reviewer/MFA policy rejected"
},
"404": {
"description": "Module disabled or resource unavailable"
},
"409": {
"description": "Stale version or invalid transition"
},
"422": {
"description": "Validation error"
},
"429": {
"description": "Rate limited"
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"modality",
"classification",
"reason",
"payload",
"version_no"
],
"properties": {
"modality": {
"type": "string"
},
"classification": {
"enum": [
"internal",
"confidential",
"restricted"
]
},
"reason": {
"type": "string",
"minLength": 10,
"maxLength": 1000
},
"payload": {
"type": "object",
"additionalProperties": false,
"required": ["title"],
"properties": {
"title": {
"type": "string",
"maxLength": 200,
"description": "Proposed title"
},
"description": {
"type": ["string", "null"],
"maxLength": 10000,
"description": "Summary: what is available, sought and key conditions"
},
"declared_reason": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Reason and objective"
},
"source_reference": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Source reference"
},
"valid_until": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Interest deadline (optional)"
},
"proponent_type": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"organization",
"sole_trader",
"person",
"public_entity",
null
],
"description": "Who is presenting the opportunity?"
},
"proponent_name": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Name"
},
"country": {
"type": ["string", "null"],
"maxLength": 2,
"description": "Country of origin or incorporation (two-letter ISO code)"
},
"tax_identifier": {
"type": ["string", "null"],
"maxLength": 50,
"description": "NUIT or identifier (internal, when applicable)"
},
"contact_name": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Contact person name"
},
"contact_email": {
"type": ["string", "null"],
"maxLength": 254,
"description": "Email (provide email or phone)"
},
"contact_phone": {
"type": ["string", "null"],
"maxLength": 40,
"description": "Phone (provide phone or email)"
},
"contact_preference": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"through_portal",
"approved_business_contact",
null
],
"description": "Contact preference"
},
"acting_capacity": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"holder",
"representative",
null
],
"description": "Acting capacity"
},
"declared_holder": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Entity or person represented"
},
"mandate_reference": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Authorization document reference"
},
"mandate_document_reference": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Internal authorization document reference (do not upload here)"
},
"mandate_valid_until": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Mandate expiry"
},
"disclosure_scope": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Limits of disclosure authorization"
},
"legitimacy_declaration": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", "no", null],
"description": "I declare authority to submit"
},
"opportunity_type": {
"type": ["string", "null"],
"maxLength": 40,
"enum": [
"investment_project",
"company_sale",
"asset_sale",
"business_partnership",
"financing_request",
"concession_opportunity",
"supply_opportunity",
null
],
"description": "Opportunity type"
},
"subsector_activity": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Subsector and activity (by name)"
},
"project_stage": {
"type": ["string", "null"],
"maxLength": 40,
"enum": [
"idea",
"study",
"preparation",
"implementation",
"operating",
"suspended",
"other",
null
],
"description": "Project or business status"
},
"project_stage_other": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Specify the status"
},
"availability": {
"type": ["string", "null"],
"maxLength": 40,
"enum": [
"available",
"from_date",
"negotiating",
null
],
"description": "Availability"
},
"available_from": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Available from"
},
"asking_value": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Value"
},
"value_status": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"defined",
"indicative",
"consultation",
"unknown",
null
],
"description": "Is the value defined?"
},
"value_meaning": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"asking_price",
"investment_estimate",
"financing_sought",
null
],
"description": "Meaning of the value"
},
"value_nature": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"asking",
"indicative",
"appraised",
null
],
"description": "Value basis"
},
"currency": {
"type": ["string", "null"],
"maxLength": 3,
"description": "Currency (three-letter code)"
},
"amount_secured": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Secured amount (projects)"
},
"investment_total": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Estimated total investment (projects)"
},
"amount_sought": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Financing sought"
},
"equity_percentage": {
"type": ["string", "null"],
"maxLength": 8,
"description": "Available equity (%)"
},
"funds_use": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Use of funds"
},
"asset_deal_kind": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"whole_business",
"participation",
"assets",
null
],
"description": "Type of sale"
},
"partnership_contribution": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"capital",
"technology",
"management",
"equipment",
"distribution",
"other",
null
],
"description": "Contribution sought"
},
"asset_modality": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"sale",
"lease",
"other",
null
],
"description": "Asset arrangement"
},
"concession_entity": {
"type": ["string", "null"],
"maxLength": 300,
"description": "Concession authority"
},
"concession_reference": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Official reference, procedure and deadline"
},
"supply_description": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Good or service, quantity/capacity, destination and timing"
},
"conditions": {
"type": ["string", "null"],
"maxLength": 4000,
"description": "Additional conditions"
},
"geography_scope": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"specific",
"multiple",
"national",
"digital",
null
],
"description": "Geographic scope"
},
"province_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "Province or Maputo City"
},
"district_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "District"
},
"admin_post_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "Administrative post"
},
"locality_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "Locality"
},
"location_notes": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Address or reference (internal)"
},
"location_unknown": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", "no", null],
"description": "I do not know the exact location"
},
"disclosure_precision": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"exact",
"approximate",
"administrative",
null
],
"description": "Disclosure precision"
},
"asset_notes": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Declared assets and rights summary"
},
"source_provider": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Who supplied the information?"
},
"source_date": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Source/information date"
},
"official_source_entity": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Official source authority (if any)"
},
"official_source_document": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Related official document"
},
"official_source_url": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Official source link"
},
"official_source_period": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Official source period"
},
"document_reference": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Document references (not validated files)"
},
"confirm_information": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", null],
"description": "I confirm the information reflects what I know and identify estimates or pending items."
},
"confirm_disclosure_authority": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", null],
"description": "I confirm I am authorized to submit the opportunity and disclose selected content."
},
"confirm_no_publication_guarantee": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", null],
"description": "I understand submission is not publication, official approval or an investment guarantee."
},
"wizard_version": {
"type": ["string", "null"],
"enum": ["1", null]
},
"wizard_step": {
"type": ["string", "null"],
"pattern": "^[1-8]$"
}
}
},
"version_no": {
"type": "integer",
"minimum": 1
},
"sector_id": {
"type": ["integer", "null"],
"description": "Existing active public.sectors identifier; required on wizard submission."
}
}
}
}
}
},
"description": "Session authentication and Laravel CSRF/origin protection apply. Use X-XSRF-TOKEN for browser clients."
}
},
"/listings/{id}/transitions": {
"post": {
"summary": "Submit, begin review, request information or withdraw",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"security": [
{
"session": []
}
],
"responses": {
"200": {
"description": "Private response; Cache-Control private, no-store",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Business"
}
}
}
},
"401": {
"description": "Authentication required"
},
"403": {
"description": "Account, ownership or current reviewer/MFA policy rejected"
},
"404": {
"description": "Module disabled or resource unavailable"
},
"409": {
"description": "Stale version or invalid transition"
},
"422": {
"description": "Validation error"
},
"429": {
"description": "Rate limited"
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["version_no", "action", "note"],
"properties": {
"version_no": {
"type": "integer",
"minimum": 1
},
"action": {
"enum": [
"submitted",
"in_review",
"needs_information",
"withdrawn"
]
},
"note": {
"type": "string",
"minLength": 10,
"maxLength": 2000
},
"review_consent": {
"type": "boolean",
"description": "Must be true for submission. Stored in encrypted review evidence. Does not authorize publication."
},
"confirmation_code": {
"type": ["string", "null"],
"description": "Exact business code required for wizard_version=1 submission, in addition to internal review consent."
}
}
}
}
}
},
"description": "Session authentication and Laravel CSRF/origin protection apply. Use X-XSRF-TOKEN for browser clients."
}
},
"/listings/{id}/objects": {
"post": {
"summary": "Declare a separate restricted object; increments aggregate version without granting verification",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"security": [
{
"session": []
}
],
"responses": {
"201": {
"description": "Private response; Cache-Control private, no-store",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"version_no": {
"type": "integer"
},
"verification_status": {
"const": "pending"
}
}
}
}
}
},
"401": {
"description": "Authentication required"
},
"403": {
"description": "Account, ownership or current reviewer/MFA policy rejected"
},
"404": {
"description": "Module disabled or resource unavailable"
},
"409": {
"description": "Stale version or invalid transition"
},
"422": {
"description": "Validation error"
},
"429": {
"description": "Rate limited"
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"kind",
"version_no",
"reason",
"payload"
],
"properties": {
"kind": {
"enum": [
"company",
"participation",
"asset",
"property",
"unit",
"improvement",
"agricultural_investment",
"land_right",
"contract",
"license",
"authorization",
"encumbrance",
"valuation",
"capital_request"
]
},
"version_no": {
"type": "integer",
"minimum": 1
},
"reason": {
"type": "string",
"minLength": 10,
"maxLength": 1000
},
"payload": {
"type": "object",
"additionalProperties": false,
"required": [
"label",
"source_reference"
],
"properties": {
"label": {
"type": ["string", "null"]
},
"declared_holder": {
"type": ["string", "null"]
},
"document_reference": {
"type": ["string", "null"]
},
"source_reference": {
"type": ["string", "null"]
},
"competent_entity": {
"type": ["string", "null"]
},
"purpose": {
"type": ["string", "null"]
},
"location_description": {
"type": ["string", "null"]
},
"boundaries_description": {
"type": ["string", "null"]
},
"occupancy": {
"type": ["string", "null"]
},
"condition": {
"type": ["string", "null"]
},
"encumbrances": {
"type": ["string", "null"]
},
"restrictions": {
"type": ["string", "null"]
},
"required_authorizations": {
"type": ["string", "null"]
},
"transfer_condition": {
"type": ["string", "null"]
},
"contract_type": {
"type": ["string", "null"]
},
"valid_from": {
"type": ["string", "null"]
},
"valid_until": {
"type": ["string", "null"]
},
"area": {
"type": ["string", "null"]
},
"area_unit": {
"type": ["string", "null"]
},
"amount": {
"type": ["string", "null"]
},
"currency": {
"type": ["string", "null"]
},
"value_kind": {
"type": ["string", "null"]
},
"participation_percent": {
"type": ["string", "null"]
}
}
}
}
}
}
}
},
"description": "Session authentication and Laravel CSRF/origin protection apply. Use X-XSRF-TOKEN for browser clients."
}
},
"/listings/{id}/objects/{object}": {
"put": {
"summary": "Update scoped object with immutable kind; amount requires currency and value kind; area requires unit",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "object",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"security": [
{
"session": []
}
],
"responses": {
"200": {
"description": "Private response; Cache-Control private, no-store",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"version_no": {
"type": "integer"
},
"verification_status": {
"const": "pending"
}
}
}
}
}
},
"401": {
"description": "Authentication required"
},
"403": {
"description": "Account, ownership or current reviewer/MFA policy rejected"
},
"404": {
"description": "Module disabled or resource unavailable"
},
"409": {
"description": "Stale version or invalid transition"
},
"422": {
"description": "Validation error"
},
"429": {
"description": "Rate limited"
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"kind",
"version_no",
"reason",
"payload"
],
"properties": {
"kind": {
"enum": [
"company",
"participation",
"asset",
"property",
"unit",
"improvement",
"agricultural_investment",
"land_right",
"contract",
"license",
"authorization",
"encumbrance",
"valuation",
"capital_request"
]
},
"version_no": {
"type": "integer",
"minimum": 1
},
"reason": {
"type": "string",
"minLength": 10,
"maxLength": 1000
},
"payload": {
"type": "object",
"additionalProperties": false,
"required": [
"label",
"source_reference"
],
"properties": {
"label": {
"type": ["string", "null"]
},
"declared_holder": {
"type": ["string", "null"]
},
"document_reference": {
"type": ["string", "null"]
},
"source_reference": {
"type": ["string", "null"]
},
"competent_entity": {
"type": ["string", "null"]
},
"purpose": {
"type": ["string", "null"]
},
"location_description": {
"type": ["string", "null"]
},
"boundaries_description": {
"type": ["string", "null"]
},
"occupancy": {
"type": ["string", "null"]
},
"condition": {
"type": ["string", "null"]
},
"encumbrances": {
"type": ["string", "null"]
},
"restrictions": {
"type": ["string", "null"]
},
"required_authorizations": {
"type": ["string", "null"]
},
"transfer_condition": {
"type": ["string", "null"]
},
"contract_type": {
"type": ["string", "null"]
},
"valid_from": {
"type": ["string", "null"]
},
"valid_until": {
"type": ["string", "null"]
},
"area": {
"type": ["string", "null"]
},
"area_unit": {
"type": ["string", "null"]
},
"amount": {
"type": ["string", "null"]
},
"currency": {
"type": ["string", "null"]
},
"value_kind": {
"type": ["string", "null"]
},
"participation_percent": {
"type": ["string", "null"]
}
}
}
}
}
}
}
},
"description": "Session authentication and Laravel CSRF/origin protection apply. Use X-XSRF-TOKEN for browser clients."
}
},
"/listings/{id}/verifications": {
"post": {
"summary": "Record independent finding while in_review; immutable encrypted evidence, optimistic version and scoped object. Does not publish or certify the business.",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"security": [
{
"session": []
}
],
"responses": {
"200": {
"description": "Private response; Cache-Control private, no-store",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Business"
}
}
}
},
"401": {
"description": "Authentication required"
},
"403": {
"description": "Account, ownership or current reviewer/MFA policy rejected"
},
"404": {
"description": "Module disabled or resource unavailable"
},
"409": {
"description": "Stale version or invalid transition"
},
"422": {
"description": "Validation error"
},
"429": {
"description": "Rate limited"
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"version_no",
"check",
"outcome",
"evidence_reference",
"note"
],
"properties": {
"version_no": {
"type": "integer",
"minimum": 1
},
"object_id": {
"type": ["string", "null"],
"format": "uuid"
},
"check": {
"enum": [
"identity",
"representation",
"declared_ownership",
"documentary_ownership",
"document_received",
"document_validated",
"independent_valuation",
"land_right_documented",
"license_confirmed",
"validity",
"legal_transfer",
"prior_authorization"
]
},
"outcome": {
"enum": [
"confirmed",
"rejected",
"inconclusive",
"revoked"
]
},
"evidence_reference": {
"type": "string",
"minLength": 10,
"maxLength": 2000
},
"note": {
"type": "string",
"minLength": 10,
"maxLength": 2000
},
"valid_until": {
"type": ["string", "null"],
"format": "date",
"description": "Required for confirmed findings; must be today or later."
}
}
}
}
}
},
"description": "Session authentication and Laravel CSRF/origin protection apply. Use X-XSRF-TOKEN for browser clients."
}
}
},
"components": {
"securitySchemes": {
"session": {
"type": "apiKey",
"in": "cookie",
"name": "session_cookie",
"description": "Actual Laravel cookie name comes from deployment configuration; no bearer token support."
}
},
"schemas": {
"Business": {
"type": "object",
"required": [
"id",
"code",
"modality",
"status",
"classification",
"version_no",
"payload"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"code": {
"type": "string"
},
"modality": {
"type": "string"
},
"status": {
"enum": [
"draft",
"submitted",
"in_review",
"needs_information",
"withdrawn"
]
},
"classification": {
"enum": ["internal", "confidential", "restricted"]
},
"version_no": {
"type": "integer",
"minimum": 1
},
"payload": {
"type": "object",
"additionalProperties": false,
"required": ["title"],
"properties": {
"title": {
"type": "string",
"maxLength": 200,
"description": "Proposed title"
},
"description": {
"type": ["string", "null"],
"maxLength": 10000,
"description": "Summary: what is available, sought and key conditions"
},
"declared_reason": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Reason and objective"
},
"source_reference": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Source reference"
},
"valid_until": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Interest deadline (optional)"
},
"proponent_type": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"organization",
"sole_trader",
"person",
"public_entity",
null
],
"description": "Who is presenting the opportunity?"
},
"proponent_name": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Name"
},
"country": {
"type": ["string", "null"],
"maxLength": 2,
"description": "Country of origin or incorporation (two-letter ISO code)"
},
"tax_identifier": {
"type": ["string", "null"],
"maxLength": 50,
"description": "NUIT or identifier (internal, when applicable)"
},
"contact_name": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Contact person name"
},
"contact_email": {
"type": ["string", "null"],
"maxLength": 254,
"description": "Email (provide email or phone)"
},
"contact_phone": {
"type": ["string", "null"],
"maxLength": 40,
"description": "Phone (provide phone or email)"
},
"contact_preference": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"through_portal",
"approved_business_contact",
null
],
"description": "Contact preference"
},
"acting_capacity": {
"type": ["string", "null"],
"maxLength": 30,
"enum": ["holder", "representative", null],
"description": "Acting capacity"
},
"declared_holder": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Entity or person represented"
},
"mandate_reference": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Authorization document reference"
},
"mandate_document_reference": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Internal authorization document reference (do not upload here)"
},
"mandate_valid_until": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Mandate expiry"
},
"disclosure_scope": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Limits of disclosure authorization"
},
"legitimacy_declaration": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", "no", null],
"description": "I declare authority to submit"
},
"opportunity_type": {
"type": ["string", "null"],
"maxLength": 40,
"enum": [
"investment_project",
"company_sale",
"asset_sale",
"business_partnership",
"financing_request",
"concession_opportunity",
"supply_opportunity",
null
],
"description": "Opportunity type"
},
"subsector_activity": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Subsector and activity (by name)"
},
"project_stage": {
"type": ["string", "null"],
"maxLength": 40,
"enum": [
"idea",
"study",
"preparation",
"implementation",
"operating",
"suspended",
"other",
null
],
"description": "Project or business status"
},
"project_stage_other": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Specify the status"
},
"availability": {
"type": ["string", "null"],
"maxLength": 40,
"enum": [
"available",
"from_date",
"negotiating",
null
],
"description": "Availability"
},
"available_from": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Available from"
},
"asking_value": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Value"
},
"value_status": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"defined",
"indicative",
"consultation",
"unknown",
null
],
"description": "Is the value defined?"
},
"value_meaning": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"asking_price",
"investment_estimate",
"financing_sought",
null
],
"description": "Meaning of the value"
},
"value_nature": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"asking",
"indicative",
"appraised",
null
],
"description": "Value basis"
},
"currency": {
"type": ["string", "null"],
"maxLength": 3,
"description": "Currency (three-letter code)"
},
"amount_secured": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Secured amount (projects)"
},
"investment_total": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Estimated total investment (projects)"
},
"amount_sought": {
"type": ["string", "null"],
"maxLength": 24,
"description": "Financing sought"
},
"equity_percentage": {
"type": ["string", "null"],
"maxLength": 8,
"description": "Available equity (%)"
},
"funds_use": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Use of funds"
},
"asset_deal_kind": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"whole_business",
"participation",
"assets",
null
],
"description": "Type of sale"
},
"partnership_contribution": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"capital",
"technology",
"management",
"equipment",
"distribution",
"other",
null
],
"description": "Contribution sought"
},
"asset_modality": {
"type": ["string", "null"],
"maxLength": 30,
"enum": ["sale", "lease", "other", null],
"description": "Asset arrangement"
},
"concession_entity": {
"type": ["string", "null"],
"maxLength": 300,
"description": "Concession authority"
},
"concession_reference": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Official reference, procedure and deadline"
},
"supply_description": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Good or service, quantity/capacity, destination and timing"
},
"conditions": {
"type": ["string", "null"],
"maxLength": 4000,
"description": "Additional conditions"
},
"geography_scope": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"specific",
"multiple",
"national",
"digital",
null
],
"description": "Geographic scope"
},
"province_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "Province or Maputo City"
},
"district_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "District"
},
"admin_post_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "Administrative post"
},
"locality_id": {
"type": ["string", "null"],
"maxLength": 36,
"description": "Locality"
},
"location_notes": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Address or reference (internal)"
},
"location_unknown": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", "no", null],
"description": "I do not know the exact location"
},
"disclosure_precision": {
"type": ["string", "null"],
"maxLength": 30,
"enum": [
"exact",
"approximate",
"administrative",
null
],
"description": "Disclosure precision"
},
"asset_notes": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Declared assets and rights summary"
},
"source_provider": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Who supplied the information?"
},
"source_date": {
"type": ["string", "null"],
"maxLength": 10,
"format": "date",
"description": "Source/information date"
},
"official_source_entity": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Official source authority (if any)"
},
"official_source_document": {
"type": ["string", "null"],
"maxLength": 500,
"description": "Related official document"
},
"official_source_url": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Official source link"
},
"official_source_period": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Official source period"
},
"document_reference": {
"type": ["string", "null"],
"maxLength": 2000,
"description": "Document references (not validated files)"
},
"confirm_information": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", null],
"description": "I confirm the information reflects what I know and identify estimates or pending items."
},
"confirm_disclosure_authority": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", null],
"description": "I confirm I am authorized to submit the opportunity and disclose selected content."
},
"confirm_no_publication_guarantee": {
"type": ["string", "null"],
"maxLength": 3,
"enum": ["yes", null],
"description": "I understand submission is not publication, official approval or an investment guarantee."
},
"wizard_version": {
"type": ["string", "null"],
"enum": ["1", null]
},
"wizard_step": {
"type": ["string", "null"],
"pattern": "^[1-8]$"
}
}
},
"sector_id": {
"type": ["integer", "null"],
"description": "Existing active public.sectors identifier; required on wizard submission."
}
}
}
}
}
}