app.opportunities
TableRow level security on
Opportunities published to external parties (Section 4.4.3): staffing calls, RFQs and RFPs, talent bookings, contractor scopes and sponsorship packages. The number of positions is the count of its positions. No posted compensation shows Rate on Request, never zero.
Primary key: id
| Column | Type | Nullable | Description |
|---|---|---|---|
| id | uuid | No | Primary key, UUID v7. |
| org_id | uuid | No | Owning org, derived from app.projects on insert; never accepted from the caller and never changed.References app.organizations.id |
| project_id | uuid | No | Project the work is for.References app.projects.id |
| scope_node_id | uuid | Yes | Scope node of the project the work is for.References app.scope_nodes.id |
| role_type | app.external_role_type | No | External role type sought. |
| role_code | text | Yes | Canon role code sought, when the opportunity is for a role.References xpms.role.role_code |
| cat_urid | text | Yes | Canon URID category sought, when the opportunity is for goods or services.References xpms.dim_category.cat_urid |
| title | text | No | Title, Title Case. |
| description | text | Yes | Description of the work. |
| venue_id | uuid | Yes | Venue of the work.References app.venues.id |
| jurisdiction_id | text | Yes | Jurisdiction of the work when it differs from the venue's and the project's; pay transparency reads the first known of the three.References xpms.jurisdiction.jurisdiction_id |
| starts_on | date | Yes | First day of the work. |
| ends_on | date | Yes | Last day of the work. |
| visibility | app.opportunity_visibility | No | Invited, Pool, Network or Public. |
| rate_type | app.rate_type | Yes | Hourly, Day, Flat, Milestone or Bid; NULL is Rate on Request. |
| pay_min_minor | bigint | Yes | Lower end of the posted pay range in minor units; NULL when not posted. |
| pay_max_minor | bigint | Yes | Upper end of the posted pay range in minor units; NULL when not posted. |
| currency_code | character(3) | Yes | ISO 4217 currency of the posted pay.References private.currencies.currency_code |
| deadline_at | timestamp with time zone | Yes | Deadline for applications and bids. Bids stay sealed until it passes. |
| minimum_age | smallint | Yes | Minimum age for the work, 16 or older (Section 14.9). |
| opportunity_state | app.opportunity_state | No | Opportunity state. Changes only through app.transition_opportunity. |
| deleted_at | timestamp with time zone | Yes | Soft delete time. A row with deleted_at set is ignored by every access helper. |
| created_at | timestamp with time zone | No | When the row was inserted. Set by the database. |
| created_by | uuid | Yes | Person who inserted the row, or null for a platform process. Set by the database.References app.people.id |
| updated_at | timestamp with time zone | No | When the row last changed. Set by the database. |
| updated_by | uuid | Yes | Person who last changed the row, or null for a platform process. Set by the database.References app.people.id |
| requisition_id | uuid | Yes | Approved requisition the opportunity is published from (Section 4.4.3, spend authority before publishing). Required to publish Contractor, Crew and Staff opportunities; fixed once published.References app.requisitions.id |
| is_remote | boolean | No | True when the work can be done remotely; remote postings follow the pay transparency rules that cover remote roles. |