openapi: 3.2.0 info: title: Opal Content API license: name: Opal API License url: https://www.workwithopal.com/api-license version: '1.0' description: 'Operations tagged Content across 2 of this provider''s published API definitions: opal-v2-openapi.yml, opal-v3-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://login.ouropal.com tags: - name: Content paths: /content/v2: get: tags: - Content operationId: ReadContentsV2 summary: Get a batch of content security: - oauth2: - offline_access - api_key: - Session-Token parameters: - name: include in: query required: false description: 'A comma separated list of related entities to include.\ NOTE: `brand` and `workspace` are synonyms but this endpoint only accepts the word `brand`.\ NOTE: Only `asset_references` that are directly associated to the post. ' schema: type: array items: type: string enum: - account - approval_phase_group - asset_references - brand - budget - delivery_record - inherited_labels - label_sets - labels - links - moment - placement - post_components - post_type - post_options - post_type_options - rich_text_document - service - stories style: form explode: false - name: expose in: query required: false description: Expose response data that is only provided by request. schema: type: object properties: html_content: type: object description: "For `text_editor` content _only_, exposes the html rendering of the content on each content\nresource under the `html_content` attribute. Note that this does _not_ apply to `document` \ncontent. For all other content types, this attribute will always be `null`. \n\nUse this parameter as: `?expose[html_content]`\n" - name: filter in: query description: 'Filters for limiting the results. All timestamp filters (`created_at`, `updated_at`, and `scheduled_at`), use syntax `filter[field_name][gt]=2020-01-01T00:00:00-07:00` Timestamps use iso8601 formatting, such as `YYYY-MM-DD` or `YYYY-MM-DDThh:mmTZD`. Timestamps of the form `YYYY-MM-DD` will be converted to `YYY-MM-DDT00:00:00` in the `America/Los_Angeles` timezone. If no operator is specified, `eq` will be assumed. For example, `filter[created_at]=2020-01-01` is equivalent to `filter[created_at][gteq]=2020-01-01`. `eq` will convert a date to a 24 hour range. Thus `filter[created_at][eq]=2020-01-01` is equivalent to `filter[created_at][gteq]=2020-01-01T00:00:00-08:00&filter[created_at][lteq]=2020-01-02T00:00:00-08:00`. ' required: false schema: type: object properties: account_id: type: array items: type: integer description: 'Comma separated list of account IDs. If included, will only fetch content associated with these accounts. ' account_ids: type: array items: type: integer deprecated: true description: Deprecated in favor of `account_id`. brand_id: type: array description: 'The IDs of the workspaces to which results should be filtered. "Workspace ID" and "Brand ID" are synonymous. Comma separated list of IDs. If included, will only fetch resources associated with these brands. If not included, will return resources associated with all brands that the user belongs to. For example, `filter[brand_id]=1` will fetch all resources associated with brand 1, while `filter[brand_id]=1,2,3` will fetch any resources associated with brands 1, 2, or 3. ' items: type: integer brand_ids: type: array items: type: integer deprecated: true description: Deprecated in favor of `brand_id`. created_at: allOf: - type: object properties: eq: type: string description: 'Equal to filter. If no other filter is specified, `eq` will be assumed. ' gt: type: string description: Greater than filter gteq: type: string description: Greater than or equal to filter lt: type: string description: Less than filter lteq: type: string description: Less than or equal to filter - format: date-time - description: 'Filter content by created_at time. Uses syntax `filter[created_at][gt]=2020-01-01T00:00:00-07:00` ' has_budget: type: boolean description: 'When true, will only include content that has an associated budget. When false, will exclude content that has an associated budget. Will return all content when not included. ' includes_private_content: type: boolean deprecated: true description: 'Deprecated; this endpoint should be expected to return any content accessible to the user. ' default: true label_id: type: array items: type: integer description: 'Comma separated list of label IDs. If included, will only fetch content associated with these labels. For example, `filter[label_id]=1` will fetch all content associated with label 1, while `filter[label_id]=1,2,3` will fetch any content associated with labels 1, 2, or 3. ' label_ids: type: array items: type: integer deprecated: true description: Deprecated in favor of `label_id`. moment_id: type: array items: type: integer description: 'Comma separated list of moment IDs. If included, will only fetch content associated with these moments. For example, `filter[moment_id]=1` will fetch all content associated with moment 1, while `filter[moment_id]=1,2,3` will fetch any content associated with moments 1, 2, or 3. ' moment_ids: type: array items: type: integer deprecated: true description: Deprecated in favor of `moment_id`. post_statuses: type: array items: type: string description: "Note that the following synonyms are also accepted:\n \"pending\" means \"for_approval\"\n \"denied\" means \"needs_revision\"\n" enum: - draft - for_approval - needs_revision - approved post_type_id: type: array items: type: integer description: 'Comma separated list of post_type IDs. If included, will only fetch content associated with these post types. For example, `filter[post_type_id]=1` will fetch all content associated with post_type 1, while `filter[post_type_id]=1,2,3` will fetch any content associated with post types 1, 2, or 3. ' publishing_mode: type: array items: type: string enum: - automatic - semi_automatic - manual - none description: 'If included, will only fetch content with the specified publishing modes. For example, `filter[publishing_mode]=automatic,semi_automatic` will fetch all content where publishing mode is either "automatic" or "semi_automatic". ' scheduled_at: allOf: - type: object properties: eq: type: string description: 'Equal to filter. If no other filter is specified, `eq` will be assumed. ' gt: type: string description: Greater than filter gteq: type: string description: Greater than or equal to filter lt: type: string description: Less than filter lteq: type: string description: Less than or equal to filter - format: date-time - description: 'Filter by the content scheduled_at time. Uses syntax `filter[scheduled_at][gt]=2020-01-01T00:00:00-07:00`. ' scheduled_start_at: type: string format: date-time deprecated: true description: Deprecated in favor of `filter[scheduled_at][gt]` scheduled_end_at: type: string format: date-time deprecated: true description: Deprecated in favor of `filter[scheduled_at][lt]` search_terms: type: array items: type: string description: 'A term or list of terms to search content for. Will return content matching the terms. For example, `filter[search_terms]=dog` will return content that matches a search for "dog". ' service_id: type: array items: type: integer description: 'Comma separated list of service IDs. If included, will only fetch content associated with these services. For example, `filter[service_id]=1` will fetch all content associated with service 1, while `filter[service_id]=1,2,3` will fetch any content associated with services 1, 2, or 3. ' service_ids: type: array items: type: integer deprecated: true description: Deprecated in favor of `service_id`. story_id: type: array items: type: integer description: 'Comma separated list of story IDs. If included, will only fetch content associated with these stories. For example, `filter[story_id]=1` will fetch all content associated with story 1, while `filter[story_id]=1,2,3` will fetch any content associated with stories 1, 2, or 3. ' story_ids: type: array items: type: integer deprecated: true description: Deprecated in favor of `story_id`. updated_at: allOf: - type: object properties: eq: type: string description: 'Equal to filter. If no other filter is specified, `eq` will be assumed. ' gt: type: string description: Greater than filter gteq: type: string description: Greater than or equal to filter lt: type: string description: Less than filter lteq: type: string description: Less than or equal to filter - format: date-time - description: 'Filter content by updated_at time. Uses syntax `filter[updated_at][gt]=2020-01-01T00:00:00-07:00` ' user_id: type: array items: type: integer description: 'Comma separated list of user IDs. If included, will only fetch content associated with these user IDs. For example, `filter[user_id]=1` will fetch all content associated with user ID 1, while `filter[user_id]=1,2,3` will fetch any content associated with user IDs 1, 2, or 3. ' style: deepObject explode: true - name: omit_count in: query required: false description: Optionally omit the `count` field from metadata in the response. schema: type: boolean - name: sort in: query description: 'Sort by the given property. All of the valid options are enumerated (i.e. "sort=moment,position" is valid but "sort=position" is not). ' required: false schema: type: string enum: - account - created_at - moment - moment,position - service - updated_at - name: page description: Specify an offset and limit for pagination in: query required: false schema: type: object properties: limit: type: integer default: 50 offset: type: integer style: deepObject explode: true responses: '200': description: All content matching the query filters. content: application/json: schema: type: object required: - data properties: data: type: array items: title: content type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - content attributes: type: object required: - position - status - is_published - was_manually_published - is_ghost - is_private - default_snapshot_url - live_url - takedown_scheduled_at - scheduled_at - name - content - show_code_name - publishing_mode - created_at - updated_at additionalProperties: false properties: name: type: string description: The name of the Content. position: type: - integer - 'null' description: 'A relativistic position within the parent Moment. You can sort Content by position to lay them out in the intended order. Note that these positions are not indices (1, 2, 3, 4...). ' status: type: - string - 'null' description: The workflow status of the Content. enum: - draft - for_approval - needs_revision - approved - null content_type: type: - string - 'null' description: The Content Type name of the Content. This attribute is only `null` when the content is private from the currently authenticated user. content: type: - string - 'null' description: 'The unstructured content string of the Content. This is used for Content Types that do not rely on Post Options to store content/assets of Content. ' is_published: type: - boolean - 'null' description: Whether or not the Content has been published. was_manually_published: type: - boolean - 'null' description: Whether or not the Content was manually published. is_ghost: type: boolean description: 'Indicates whether the Content is redacted for the requesting user. ' is_private: type: boolean description: 'Indicates whether the Content is set to private. ' show_code_name: type: boolean description: 'If `is_ghost` is true and `show_code_name` is true then the `name` property is a "code name" for the piece of Content. The user must request access to the Content to see the proper name. ' default_snapshot_url: type: - string - 'null' description: A URL that serves up the default snapshot preview of this Content. live_url: type: - string - 'null' description: The live URL to published Content. scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get published. If the Content has not been explicitly scheduled then this date is based on that of the Moment the Content lives within. ' start_interval: type: - string - 'null' description: 'An ISO8601 interval, relative to the start of the related Moment''s schedule, representing the explicitly chosen start datetime of the Content. Values are normalized to a seconds-denominated interval (e.g. `PT86400S`). Null when no specific time has been chosen for the Content — in that case `scheduled_at` falls back to the start of the Moment''s schedule. ' takedown_scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get taken down. ' post_data: type: - object - 'null' description: 'A hash that can store any metadata associated with the Content. ' additionalProperties: true publishing_mode: type: - string - 'null' description: The way in which the Content will be published. post_state: type: - string - 'null' description: The state of the Content in the workflow process. enum: - published - held - failed - publishing - dispatched - dispatching - approved - pending created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true service_id: type: integer relationships: type: object required: - account - approval_phase_group - asset_references - brand - budget - delivery_record - inherited_labels - label_sets - labels - links - moment - placement - post_components - post_options - post_type - post_type_options - rich_text_document - service - stories - user additionalProperties: false properties: account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account approval_phase_group: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - phase-groups asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference brand: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand budget: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - budget delivery_record: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - delivery_record inherited_labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'Only inherited labels. See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' label_sets: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'All labels (inherited or explicitly set). See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' links: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - link moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moment placement: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - placement post_components: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_component post_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option post_type: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_type post_type_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option rich_text_document: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - rich_text_document service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story user: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user links: type: object additionalProperties: false properties: web_url: type: string included: type: array items: oneOf: - title: account type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - account attributes: type: object required: - name - uuid additionalProperties: false properties: name: type: string uuid: type: string format: uuid relationships: type: object required: - service - brand - dispatch_provider_account - placements additionalProperties: false properties: service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service brand: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand dispatch_provider_account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - dispatch_provider_account placements: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - placement - title: asset_reference type: object required: - id - attributes - type - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - asset_reference attributes: type: object required: - asset_type - asset_uuid - content_type - format - filename - escaped_filename - filesize - full_url - meta_data - original_url - preview_url - public_id - width - height - uuid additionalProperties: false properties: asset_type: type: - string - 'null' description: 'This field is semi-open ended but should be set to `image`, `audio`, or `video` for those respective types of media and `file` for most other types of media. ' asset_source: type: - string - 'null' description: 'Asset Sources are pre-existing records indicating the origin of an asset reference. You can''t set this field to arbitrary values. If you know of an Asset Source and you''d like to indicate a new asset reference originated with that source, this field should contain that source''s name. ' asset_uuid: type: - string - 'null' description: 'The `id` of an `asset` resource this asset reference will surface within the Asset Library. ' content_type: type: - string - 'null' description: 'This field was used by some legacy systems. It is exposed for historical reasons. If set, setting it to the same value as `asset_type` is generally a good idea. It is not a MIME type. ' description: type: - string - 'null' format: type: - string - 'null' description: 'Used differently by some legacy systems but any new asset reference should use the `format` field to store its filetype extension (ex. `png`, `mp4`, `gif`, `mov`, etc.). ' filename: type: - string - 'null' escaped_filename: type: string readOnly: true filesize: type: - integer - 'null' description: Size of file in bytes. full_url: type: - string - 'null' description: 'When associating an asset with an asset reference, this field should be set to the `url` property of the asset. ' meta_data: type: - object - 'null' description: Can contain arbitrary key-value pairs related to the asset. properties: duration: type: string description: Parsed from video assets. page_count: type: string description: Parsed from PDF assets. processed_height: type: string description: Parsed from video assets. processed_width: type: string description: Parsed from video assets. additionalProperties: type: string original_url: type: - string - 'null' preview_url: type: - string - 'null' readOnly: true public_id: type: - string - 'null' width: type: - integer - 'null' description: 'When associating an asset with an asset reference, this field should be set to the `width` of the asset. ' height: type: - integer - 'null' description: 'When associating an asset with an asset reference, this field should be set to the `height` of the asset. ' uuid: type: string readOnly: true description: 'Use this ID when referring to the same asset reference from one of Opal''s v3 APIs. ' relationships: type: object additionalProperties: false properties: brand: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story cover_asset_reference: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference labels: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label asset_reference_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference_option options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - option - title: brand type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - brand meta: type: - object - 'null' description: Metadata around the Brand object properties: user_is_member: type: boolean description: Boolean that represents whether the requesting user is a member of the brand. attributes: type: object required: - slug - name - uuid - start_of_week - timezone additionalProperties: false properties: uuid: type: string format: uuid description: A unique identifier for the workspace. created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time indicating when the user was last updated. readOnly: true slug: type: string description: The slug for the Brand/Workspace. This is a url-safe name for the Workspace. name: type: string description: The name of the Workspace. start_of_week: type: number enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 description: 'The default start weekday index for the week view Calendar and for Plans. Specifies the days in a week, 0 to 6 (Sunday to Saturday). 0 (Sunday) is the default. With regards to the week view Calendar, values greater than 1 will be considered the same as 1.' timezone: type: string description: The IANA time zone identifier for the default time zone used when creating resources in the Brand/Workspace (e.g. America/New_York). relationships: type: object required: - primary_label_set - accounts - logo - dispatch_providers additionalProperties: false properties: primary_label_set: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set accounts: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account logo: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference dispatch_providers: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - dispatch_provider - title: budget type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - budget attributes: type: object required: - value additionalProperties: false properties: value: type: number description: The value to assign to the budget. post_spend: type: - number - 'null' moment_spend: type: - number - 'null' story_allocation: type: - number - 'null' moment_allocation: type: - number - 'null' content_type: type: - string - 'null' relationships: type: object required: - opal - story additionalProperties: false properties: opal: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - opal story: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story moment: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moment post: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - content - title: delivery_record type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - delivery_record attributes: type: object additionalProperties: false properties: delivered_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time the record was delivered. ' delivery_method: type: - string - 'null' description: How the record was sent, email, SMS, etc. failed_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time the record last failed to deliver ' live_url: type: - string - 'null' description: The public 'live' URL of the Content provider: type: - string - 'null' readOnly: true provider_content_id: type: - string - 'null' description: The ID of the content at the external provider provider_content_url: type: - string - 'null' description: The URL of the content at the external provider provider_draft_id: type: - string - 'null' description: The ID of the draft content at the external provider provider_errors: type: - object - 'null' description: The error messages from the provider scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time the content is scheduled. ' relationships: type: object required: - content - delivery_user additionalProperties: false properties: content: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - content delivery_user: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user - title: label type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - label attributes: type: object required: - name - color - is_active - uuid additionalProperties: false properties: name: type: string description: The label's name. This value must be unique within the label's label set. uuid: type: string format: uuid description: A unique identifier for the label. color: type: string description: The label's color. A hex color code without the '#' prefix. The color is settable on any non-shared label set, but today it is only rendered by the Opal platform when the label belongs to the workspace's primary label set. Broader rendering across non-primary label sets is upcoming. is_active: type: boolean description: Enable or disable this label. Note that this is different than deleting and it is probably generally advisable to set is_active to false rather than deleting a label because deactivating can be undone via the API. position: type: integer description: By default, the label position is not used and labels are sorted by creation date from oldest to newest. By request, Opal employees can set the sort order of labels within any label set to be `manual` which causes the labels to be sorted by their `position` instead. relationships: type: object additionalProperties: false properties: label_set: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set - title: label_set type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - label_set attributes: type: object required: - name - label_sort_method - is_active - is_shared - uuid additionalProperties: false properties: name: type: string uuid: type: string format: uuid description: A unique identifier for the label set. is_active: type: boolean description: 'Determines whether the label set will be available to use in the Opal platform. Note that inactive label sets are only even exposed via API when specifically filtered for. ' is_shared: type: boolean description: 'True when the label set is shared across workspaces. ' label_sort_method: type: string default: oldest_first enum: - alphabetical - newest_first - oldest_first - manual relationships: type: object required: - labels - paired_custom_field - parent_label additionalProperties: false properties: labels: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label paired_custom_field: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - custom_field parent_label: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - title: moment type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - moment attributes: type: object required: - uuid - color - content_count - created_at - day_segment - is_ghost - scheduled_at - title - updated_at additionalProperties: false properties: uuid: type: string format: uuid description: A unique identifier for the moment. color: type: - string - 'null' description: Color used to visually identify a moment. content_count: type: integer description: Number of content belonging to the given moment. readOnly: true day_segment: type: - string - 'null' description: The time of day the moment will occur. enum: - morning - afternoon - evening - night - null is_ghost: type: boolean description: Indicates whether the moment is redacted for the requesting user. readOnly: true scheduled_at: type: string format: date-time description: An ISO8601 date-time. scheduled_end_at: type: - string - 'null' format: date-time description: An ISO8601 date-time. set_default_post_takedown: type: boolean description: Indicates whether the duration of newly created content should match the duration of this moment readOnly: false title: type: string description: The name of the moment. created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true is_visible: type: boolean description: Whether or not the given moment has been soft-deleted. readOnly: true relationships: type: object additionalProperties: false properties: asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference brand: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand labels: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label note: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - note owner: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user paired_block: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - block posts: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - content primary_asset_reference: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference primary_story: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story privacy_group: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - privacy_group services: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story workflow: type: object required: - data - links additionalProperties: false properties: data: type: - object - 'null' required: - type - id additionalProperties: false properties: type: type: string enum: - workflow id: type: string pattern: ^[0-9]+$ links: type: object additionalProperties: false properties: related: type: string - title: placement type: object required: - relationships - id - attributes - type additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - placement relationships: type: object additionalProperties: false properties: account: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account posts: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - content attributes: type: object required: - name additionalProperties: false properties: name: type: string position: type: - number - 'null' - title: post_option type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - post_option attributes: type: object required: - created_at - position - updated_at - value additionalProperties: false properties: created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true position: type: integer description: 'The position of the Post Option''s Post Component within the Content. ' updated_at: type: - string - 'null' format: date-time description: An ISO8601 date-time. readOnly: true value: type: string description: The data value stored on the Post Option. relationships: type: object additionalProperties: false required: - asset_references - content - option - option_value - post_component properties: asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference content: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - content option: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - option option_value: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - option_value post_component: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_component - title: rich_text_document type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - rich_text_document attributes: type: object required: - body - client_library - created_at - updated_at additionalProperties: false properties: body: type: - object - 'null' description: "The JSON representation of the rich text document. There is not a strict\nrequirement on the shape of the data structure beyond the requirement \nof it being a JSON object. Note that keys within the JSON object will be\npreserved as-is (i.e., camelCase, PascalCase, under_score, dasher-ized).\n" client_library: type: string description: "The library or framework that generated the content. One could, for\nexample, set this to the NPM package version which generated the \nrich text document for letting the caller know how to parse the response\nor handle upgrade situations.\n" created_at: type: string format: date-time description: An ISO8601 date-time representing the entity's creation date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time representing the entity's most recent updated date-time. readOnly: true relationships: type: object additionalProperties: false required: - created_by_user properties: created_by_user: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user asset_references: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference - description: 'This relationship is only populated in documents returned by /content endpoints. ' - title: service type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - service attributes: type: object required: - color - content_name - icon_name - name - system_name - uuid - web_modules_channel additionalProperties: false properties: color: type: string description: A hex color value with leading hash symbol intact content_name: type: string description: The default name of content for this service created_at: type: string format: date-time description: An ISO8601 date-time indicating when the service was created. readOnly: true has_placements: type: - boolean - 'null' description: Indicates if the service supports placements capability icon_name: type: - string - 'null' icon_path: type: - string - 'null' is_active: type: boolean description: Indicates active status of the service is_visible: type: boolean description: Indicates visibility of the service name: type: string system_name: type: string updated_at: type: string format: date-time description: An ISO8601 date-time indicating when the service was last updated. readOnly: true uuid: type: string format: uuid web_modules_channel: type: - boolean - 'null' description: Indicates if the service is of the category "web modules" relationships: type: object required: - accounts - asset_reference - brand - post_types additionalProperties: false properties: accounts: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account asset_reference: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference brand: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand post_types: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_type - title: story type: object required: - id - type - attributes additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - story attributes: type: object required: - asset_references_count - color - created_at - description - is_shared - is_visible - legacy_is_private - members_count - moments_count - name - scheduled_end_at - scheduled_start_at - strategies_count - updated_at - uuid additionalProperties: false properties: scheduled_start_at: type: string description: An ISO8601 date-time. Formatted as an 'Internet Date/Time' (RFC 3339). scheduled_end_at: type: string description: An ISO8601 date-time. Formatted as an 'Internet Date/Time' (RFC 3339). name: type: string color: type: - string - 'null' description: A hex color value with the '#' prefix. asset_references_count: type: - integer - 'null' created_at: type: string description: An ISO8601 date-time. Formatted as an 'Internet Date/Time' (RFC 3339). format: date-time readOnly: true description: type: - string - 'null' is_shared: type: - boolean - 'null' is_visible: type: - boolean - 'null' legacy_is_private: type: - boolean - 'null' members_count: type: - integer - 'null' moments_count: type: - integer - 'null' description: Number of Moments created on this Story strategies_count: type: - integer - 'null' updated_at: type: string description: An ISO8601 date-time. Formatted as an 'Internet Date/Time' (RFC 3339). format: date-time readOnly: true uuid: type: - string - 'null' relationships: type: object additionalProperties: false properties: opal: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - opal brand: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand user: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user brands: description: An array of Brand Ids stored on key 'shared_on_brand_ids' type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand primary_label: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label labels: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - title: user type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - user meta: type: - object - 'null' description: Metadata around the Brand object properties: workspace_approval_counts: type: object description: Object representing the user's unseen approval counts per Workspace Id. attributes: type: object required: - created_at - email - first_name - full_name - is_active - last_name - title - transliterated_full_name - updated_at - uuid additionalProperties: false properties: created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true email: type: string first_name: type: string full_name: type: string is_active: type: - boolean - 'null' last_name: type: string role_name: type: string title: type: - string - 'null' transliterated_full_name: type: string feature_flags: type: object additionalProperties: type: boolean description: 'A named feature flag and `true` or `false` depending on whether the feature is enabled for the user or not. ' description: 'List of Feature Flags for this user, only available for the currently authenticated User. ' updated_at: type: string format: date-time description: An ISO8601 date-time indicating when the user was last updated. readOnly: true uuid: type: string format: uuid relationships: type: object required: - opal additionalProperties: false properties: avatar_asset_reference: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference brands: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand brand_admin_users: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand_admin_user role: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - role profile: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user_profile opal: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - opal moments_setting: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moments_setting meta: type: object required: - resource_type - total properties: resource_type: type: string total: type: integer example: data: - id: '1' type: content attributes: id: 1 position: 0 service_id: 3 publishing_mode: none scheduled_at: '2019-11-13T00:00:00.000-08:00' is_ghost: false is_private: false show_code_name: false default_snapshot_url: http://domain.ouropal.com/api/v1/snapshots/39/036e576c-4a38-4e42-9685-dd0ebe759fa5/mobile_single@2x.png live_url: null takedown_scheduled_at: null content_type: post content: unstructured text content status: draft name: Post 1 is_published: false was_manually_published: false created_at: '2019-11-13T00:00:00.000-08:00' updated_at: '2019-11-13T00:00:00.000-08:00' relationships: user: data: id: '10' type: user asset_references: data: - id: '30' type: asset_reference stories: data: - id: '3' type: story service: data: id: '3' type: service moment: data: id: '1' type: moment brand: data: id: '1' type: brand approval_phase_group: data: null placement: data: null account: data: id: '1' type: account budget: data: null inherited_labels: data: [] labels: data: - id: '3' type: label label_sets: data: - id: '1' type: label_set links: data: - id: '7' type: link delivery_record: data: id: '1' type: delivery_record post_components: data: - id: '1' type: post_component post_type: data: id: '2' type: post_type post_options: data: - id: '4' type: post_option post_type_options: data: - id: '4' type: post_option rich_text_document: data: null links: web_url: example.ouropal.com/moments/1/post/1 - id: '38' type: content attributes: id: 38 position: 0 service_id: 3 publishing_mode: none scheduled_at: '2019-11-13T00:00:00.000-08:00' is_ghost: false is_private: false show_code_name: false default_snapshot_url: http://domain.ouropal.com/api/v1/snapshots/38/fffb62f4-778a-49b7-8851-f4dc1b84c5cc/mobile_single@2x.png live_url: null takedown_scheduled_at: null content_type: post content: unstructured text content status: draft name: Facebook Post 1 again is_published: false was_manually_published: false created_at: '2019-11-13T00:00:00.000-08:00' updated_at: '2019-11-13T00:00:00.000-08:00' relationships: user: data: id: '10' type: user asset_references: data: - id: '31' type: asset_reference stories: data: - id: '3' type: story service: data: id: '3' type: service moment: data: id: '34' type: moment brand: data: id: '1' type: brand approval_phase_group: data: null placement: data: null account: data: id: '1' type: account budget: data: null inherited_labels: data: [] labels: data: - id: '3' type: label label_sets: data: - id: '1' type: label_set links: data: - id: '7' type: link delivery_record: data: id: '38' type: delivery_record post_components: data: - id: '1' type: post_component post_type: data: id: '2' type: post_type post_options: data: - id: '4' type: post_option post_type_options: data: - id: '4' type: post_option rich_text_document: data: null links: web_url: example.ouropal.com/moments/1/post/2 meta: total: 2 resource_type: content '404': description: Content not found. content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status post: tags: - Content operationId: CreateContentV2 summary: Create a piece of Content security: - oauth2: - offline_access - api_key: - Session-Token requestBody: content: application/json: schema: type: object required: - data properties: data: type: object required: - type - attributes - relationships properties: type: type: string enum: - content attributes: type: object properties: name: type: string description: 'The name of the Content. If not provided, one will be defaulted based off of the related Service (e.g. "Facebook Post 1"). ' content: type: - string - 'null' description: 'The plaintext contents (a.k.a. "body") of the content. This property is not used for all types of content because some content types require more structure than a single body of text. ' position: type: - integer - 'null' description: 'A relativistic position within the parent Moment. You can sort Content by position to lay them out in the intended order. Note that these positions are not indices (1, 2, 3, 4...). If not provided, position will be set to `null` and will not be considered against other content with a set position value. ' relationships: type: object required: - moment - service properties: moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moment post_type: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_type service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service duplicated_from_moment: description: 'When combined with `duplicated_from_post`, creates the new Content as a clone of the referenced Post — the server runs `PostDuplicator` to copy attributes, schedule, assets, labels, and options. Intended for in-app duplication flows (e.g. right-click → Duplicate). Must be a Moment the authenticated user can view. ' type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moment duplicated_from_post: description: 'The Post to clone when duplicating. Must be paired with `duplicated_from_moment`. See `duplicated_from_moment`. ' type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - content responses: '201': description: The Content was sucessfully created content: application/json: schema: type: object required: - data properties: data: title: content type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - content attributes: type: object required: - position - status - is_published - was_manually_published - is_ghost - is_private - default_snapshot_url - live_url - takedown_scheduled_at - scheduled_at - name - content - show_code_name - publishing_mode - created_at - updated_at additionalProperties: false properties: name: type: string description: The name of the Content. position: type: - integer - 'null' description: 'A relativistic position within the parent Moment. You can sort Content by position to lay them out in the intended order. Note that these positions are not indices (1, 2, 3, 4...). ' status: type: - string - 'null' description: The workflow status of the Content. enum: - draft - for_approval - needs_revision - approved - null content_type: type: - string - 'null' description: The Content Type name of the Content. This attribute is only `null` when the content is private from the currently authenticated user. content: type: - string - 'null' description: 'The unstructured content string of the Content. This is used for Content Types that do not rely on Post Options to store content/assets of Content. ' is_published: type: - boolean - 'null' description: Whether or not the Content has been published. was_manually_published: type: - boolean - 'null' description: Whether or not the Content was manually published. is_ghost: type: boolean description: 'Indicates whether the Content is redacted for the requesting user. ' is_private: type: boolean description: 'Indicates whether the Content is set to private. ' show_code_name: type: boolean description: 'If `is_ghost` is true and `show_code_name` is true then the `name` property is a "code name" for the piece of Content. The user must request access to the Content to see the proper name. ' default_snapshot_url: type: - string - 'null' description: A URL that serves up the default snapshot preview of this Content. live_url: type: - string - 'null' description: The live URL to published Content. scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get published. If the Content has not been explicitly scheduled then this date is based on that of the Moment the Content lives within. ' start_interval: type: - string - 'null' description: 'An ISO8601 interval, relative to the start of the related Moment''s schedule, representing the explicitly chosen start datetime of the Content. Values are normalized to a seconds-denominated interval (e.g. `PT86400S`). Null when no specific time has been chosen for the Content — in that case `scheduled_at` falls back to the start of the Moment''s schedule. ' takedown_scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get taken down. ' post_data: type: - object - 'null' description: 'A hash that can store any metadata associated with the Content. ' additionalProperties: true publishing_mode: type: - string - 'null' description: The way in which the Content will be published. post_state: type: - string - 'null' description: The state of the Content in the workflow process. enum: - published - held - failed - publishing - dispatched - dispatching - approved - pending created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true service_id: type: integer relationships: type: object required: - account - approval_phase_group - asset_references - brand - budget - delivery_record - inherited_labels - label_sets - labels - links - moment - placement - post_components - post_options - post_type - post_type_options - rich_text_document - service - stories - user additionalProperties: false properties: account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account approval_phase_group: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - phase-groups asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference brand: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand budget: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - budget delivery_record: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - delivery_record inherited_labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'Only inherited labels. See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' label_sets: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'All labels (inherited or explicitly set). See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' links: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - link moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moment placement: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - placement post_components: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_component post_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option post_type: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_type post_type_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option rich_text_document: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - rich_text_document service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story user: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user links: type: object additionalProperties: false properties: web_url: type: string example: data: id: '1' type: content attributes: id: 1 position: 0 service_id: 3 publishing_mode: none scheduled_at: '2019-11-13T00:00:00.000-08:00' is_ghost: false is_private: false show_code_name: false default_snapshot_url: http://domain.ouropal.com/api/v1/snapshots/1/224d2af8-5304-4fbe-92fc-4e0b863d12f8/mobile_single@2x.png live_url: null takedown_scheduled_at: null content_type: post content: unstructured text content status: draft name: Post 1 is_published: false was_manually_published: false created_at: '2019-11-13T00:00:00.000-08:00' updated_at: '2019-11-13T00:00:00.000-08:00' relationships: user: data: id: '10' type: user asset_references: data: - id: '30' type: asset_reference stories: data: - id: '3' type: story service: data: id: '3' type: service moment: data: id: '1' type: moment brand: data: id: '1' type: brand approval_phase_group: data: null placement: data: null account: data: id: '1' type: account budget: data: null labels: data: - id: '3' type: label inherited_labels: data: [] label_sets: data: - id: '1' type: label_set links: data: - id: '7' type: link delivery_record: data: id: '1' type: delivery_record post_components: data: - id: '1' type: post_component post_type: data: id: '1' type: post_type post_options: data: - id: '4' type: post_option post_type_options: data: - id: '4' type: post_option rich_text_document: data: null links: web_url: example.ouropal.com/moments/1/post/1 included: - id: '1' type: moment attributes: id: 1 color: 6f7d8a day_segment: null is_visible: true scheduled_at: '2019-11-13T00:00:00.000-08:00' created_at: '2019-11-13T18:40:49.924-08:00' updated_at: '2019-11-13T22:58:43.140-08:00' is_ghost: false content_count: 6 title: hello moment relationships: brand: data: id: '1' type: brand privacy_group: data: null primary_story: data: id: '3' type: story labels: data: - id: '3' type: label stories: data: - id: '3' type: story note: data: null asset_references: data: - id: '34' type: asset_reference - id: '35' type: asset_reference - id: '67' type: asset_reference - id: '68' type: asset_reference posts: data: - id: '37' type: content - id: '36' type: content - id: '35' type: content - id: '34' type: content - id: '2' type: content - id: '1' type: content services: data: - id: '3' type: service - id: '4' type: service primary_asset_reference: data: id: '34' type: asset_reference servers: - url: https://login.ouropal.com /content/v2/{content_id}: get: tags: - Content operationId: ReadContentV2 summary: Get a single piece of content security: - oauth2: - offline_access - api_key: - Session-Token parameters: - name: content_id in: path required: true description: The ID of the content. schema: type: string - name: fields in: query description: 'A JSON:API [sparse fieldset](https://jsonapi.org/format/#fetching-sparse-fieldsets) declaration. The resource type can be that of the primary resource (i.e. `content`) or any of the included resources (e.g. `story` or `account`). ' required: false schema: type: object properties: account: type: string asset_reference: type: string brand: type: string budget: type: string content: type: string delivery_record: type: string label: type: string label_set: type: string moment: type: string placement: type: string rich_text_document: type: string service: type: string story: type: string style: deepObject explode: true example: content: name,scheduled_at story: name - name: include in: query required: false description: 'A comma separated list of related entities to include.\ NOTE: `brand` and `workspace` are synonyms but this endpoint only accepts the word `brand`.\ NOTE: Only `asset_references` that are directly associated to the post. ' schema: type: array items: type: string enum: - account - approval_phase_group - asset_references - brand - budget - delivery_record - inherited_labels - label_sets - labels - links - moment - placement - post_components - post_type - post_options - post_type_options - rich_text_document - service - stories style: form explode: false - name: expose in: query required: false description: Expose response data that is only provided by request. schema: type: object properties: html_content: type: object description: "For `text_editor` content _only_, exposes the html rendering of the content on each content\nresource under the `html_content` attribute. Note that this does _not_ apply to `document` \ncontent. For all other content types, this attribute will always be `null`. \n\nUse this parameter as: `?expose[html_content]`\n" responses: '200': description: A single content resource. content: application/json: schema: type: object required: - data properties: data: title: content type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - content attributes: type: object required: - position - status - is_published - was_manually_published - is_ghost - is_private - default_snapshot_url - live_url - takedown_scheduled_at - scheduled_at - name - content - show_code_name - publishing_mode - created_at - updated_at additionalProperties: false properties: name: type: string description: The name of the Content. position: type: - integer - 'null' description: 'A relativistic position within the parent Moment. You can sort Content by position to lay them out in the intended order. Note that these positions are not indices (1, 2, 3, 4...). ' status: type: - string - 'null' description: The workflow status of the Content. enum: - draft - for_approval - needs_revision - approved - null content_type: type: - string - 'null' description: The Content Type name of the Content. This attribute is only `null` when the content is private from the currently authenticated user. content: type: - string - 'null' description: 'The unstructured content string of the Content. This is used for Content Types that do not rely on Post Options to store content/assets of Content. ' is_published: type: - boolean - 'null' description: Whether or not the Content has been published. was_manually_published: type: - boolean - 'null' description: Whether or not the Content was manually published. is_ghost: type: boolean description: 'Indicates whether the Content is redacted for the requesting user. ' is_private: type: boolean description: 'Indicates whether the Content is set to private. ' show_code_name: type: boolean description: 'If `is_ghost` is true and `show_code_name` is true then the `name` property is a "code name" for the piece of Content. The user must request access to the Content to see the proper name. ' default_snapshot_url: type: - string - 'null' description: A URL that serves up the default snapshot preview of this Content. live_url: type: - string - 'null' description: The live URL to published Content. scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get published. If the Content has not been explicitly scheduled then this date is based on that of the Moment the Content lives within. ' start_interval: type: - string - 'null' description: 'An ISO8601 interval, relative to the start of the related Moment''s schedule, representing the explicitly chosen start datetime of the Content. Values are normalized to a seconds-denominated interval (e.g. `PT86400S`). Null when no specific time has been chosen for the Content — in that case `scheduled_at` falls back to the start of the Moment''s schedule. ' takedown_scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get taken down. ' post_data: type: - object - 'null' description: 'A hash that can store any metadata associated with the Content. ' additionalProperties: true publishing_mode: type: - string - 'null' description: The way in which the Content will be published. post_state: type: - string - 'null' description: The state of the Content in the workflow process. enum: - published - held - failed - publishing - dispatched - dispatching - approved - pending created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true service_id: type: integer relationships: type: object required: - account - approval_phase_group - asset_references - brand - budget - delivery_record - inherited_labels - label_sets - labels - links - moment - placement - post_components - post_options - post_type - post_type_options - rich_text_document - service - stories - user additionalProperties: false properties: account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account approval_phase_group: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - phase-groups asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference brand: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand budget: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - budget delivery_record: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - delivery_record inherited_labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'Only inherited labels. See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' label_sets: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'All labels (inherited or explicitly set). See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' links: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - link moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moment placement: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - placement post_components: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_component post_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option post_type: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_type post_type_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option rich_text_document: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - rich_text_document service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story user: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user links: type: object additionalProperties: false properties: web_url: type: string '401': description: Unauthorized content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status '404': description: Not found content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status patch: tags: - Content operationId: UpdateContentV2 summary: Update a piece of Content security: - oauth2: - offline_access - api_key: - Session-Token parameters: - name: content_id in: path required: true description: The ID of the content. schema: type: string requestBody: content: application/json: schema: type: object required: - data properties: data: type: object required: - type - attributes - relationships - id properties: id: type: string type: type: string enum: - content attributes: type: object properties: name: type: string description: The name of the Content. content: type: - string - 'null' description: 'The plaintext contents (a.k.a. "body") of the content. This property is not used for all types of content because some content types require more structure than a single body of text. ' position: type: - integer - 'null' description: 'A relativistic position within the parent Moment. You can sort Content by position to lay them out in the intended order. Note that these positions are not indices (1, 2, 3, 4...). ' is_published: type: boolean description: Whether or not the Content has been published. was_manually_published: type: boolean description: Whether or not the Content was manually published. live_url: type: - string - 'null' description: The live URL to published Content. The act of setting this URL causes the Opal Platform to consider the content "published." You can `null` this field out to mark content as "unpublished" even after having set the `live_url` previously. scheduled_at: type: string format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get published. If the Content has not been explicitly scheduled then this date is based on that of the Moment the Content lives within. ' takedown_scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get taken down. ' relationships: type: object properties: service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moment account: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'A complete set of labels for the content. Setting labels for content implicitly breaks inheritance (see the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview)). If you want to retain inherited labels, request them ahead of time and then explicitly set them along with any new labels. ' responses: '202': description: The Content was successfully updated content: application/json: schema: type: object required: - data properties: data: title: content type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - content attributes: type: object required: - position - status - is_published - was_manually_published - is_ghost - is_private - default_snapshot_url - live_url - takedown_scheduled_at - scheduled_at - name - content - show_code_name - publishing_mode - created_at - updated_at additionalProperties: false properties: name: type: string description: The name of the Content. position: type: - integer - 'null' description: 'A relativistic position within the parent Moment. You can sort Content by position to lay them out in the intended order. Note that these positions are not indices (1, 2, 3, 4...). ' status: type: - string - 'null' description: The workflow status of the Content. enum: - draft - for_approval - needs_revision - approved - null content_type: type: - string - 'null' description: The Content Type name of the Content. This attribute is only `null` when the content is private from the currently authenticated user. content: type: - string - 'null' description: 'The unstructured content string of the Content. This is used for Content Types that do not rely on Post Options to store content/assets of Content. ' is_published: type: - boolean - 'null' description: Whether or not the Content has been published. was_manually_published: type: - boolean - 'null' description: Whether or not the Content was manually published. is_ghost: type: boolean description: 'Indicates whether the Content is redacted for the requesting user. ' is_private: type: boolean description: 'Indicates whether the Content is set to private. ' show_code_name: type: boolean description: 'If `is_ghost` is true and `show_code_name` is true then the `name` property is a "code name" for the piece of Content. The user must request access to the Content to see the proper name. ' default_snapshot_url: type: - string - 'null' description: A URL that serves up the default snapshot preview of this Content. live_url: type: - string - 'null' description: The live URL to published Content. scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get published. If the Content has not been explicitly scheduled then this date is based on that of the Moment the Content lives within. ' start_interval: type: - string - 'null' description: 'An ISO8601 interval, relative to the start of the related Moment''s schedule, representing the explicitly chosen start datetime of the Content. Values are normalized to a seconds-denominated interval (e.g. `PT86400S`). Null when no specific time has been chosen for the Content — in that case `scheduled_at` falls back to the start of the Moment''s schedule. ' takedown_scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get taken down. ' post_data: type: - object - 'null' description: 'A hash that can store any metadata associated with the Content. ' additionalProperties: true publishing_mode: type: - string - 'null' description: The way in which the Content will be published. post_state: type: - string - 'null' description: The state of the Content in the workflow process. enum: - published - held - failed - publishing - dispatched - dispatching - approved - pending created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true service_id: type: integer relationships: type: object required: - account - approval_phase_group - asset_references - brand - budget - delivery_record - inherited_labels - label_sets - labels - links - moment - placement - post_components - post_options - post_type - post_type_options - rich_text_document - service - stories - user additionalProperties: false properties: account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account approval_phase_group: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - phase-groups asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference brand: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand budget: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - budget delivery_record: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - delivery_record inherited_labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'Only inherited labels. See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' label_sets: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'All labels (inherited or explicitly set). See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' links: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - link moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moment placement: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - placement post_components: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_component post_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option post_type: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_type post_type_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option rich_text_document: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - rich_text_document service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story user: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user links: type: object additionalProperties: false properties: web_url: type: string example: data: id: '1' type: content attributes: id: 1 position: 0 service_id: 3 publishing_mode: none scheduled_at: '2019-11-13T00:00:00.000-08:00' is_ghost: false is_private: false show_code_name: false default_snapshot_url: http://domain.ouropal.com/api/v1/snapshots/1/224d2af8-5304-4fbe-92fc-4e0b863d12f8/mobile_single@2x.png live_url: null takedown_scheduled_at: null content_type: post content: unstructured text content status: draft name: Post 1 is_published: false was_manually_published: false created_at: '2019-11-13T00:00:00.000-08:00' updated_at: '2019-11-13T00:00:00.000-08:00' relationships: user: data: id: '10' type: user asset_references: data: - id: '30' type: asset_reference stories: data: - id: '3' type: story service: data: id: '3' type: service moment: data: id: '1' type: moment brand: data: id: '1' type: brand approval_phase_group: data: null placement: data: null account: data: id: '1' type: account budget: data: null inherited_labels: data: [] labels: data: - id: '3' type: label label_sets: data: - id: '1' type: label_set links: data: - id: '7' type: link delivery_record: data: id: '1' type: delivery_record post_components: data: - id: '1' type: post_component post_type: data: id: '1' type: post_type post_options: data: - id: '4' type: post_option post_type_options: data: - id: '4' type: post_option rich_text_document: data: null links: web_url: example.ouropal.com/moments/1/post/1 included: - id: '1' type: moment attributes: id: 1 color: 6f7d8a day_segment: null is_visible: true scheduled_at: '2019-11-13T00:00:00.000-08:00' created_at: '2019-11-13T18:40:49.924-08:00' updated_at: '2019-11-13T22:58:43.140-08:00' is_ghost: false content_count: 6 title: hello moment relationships: brand: data: id: '1' type: brand privacy_group: data: null primary_story: data: id: '3' type: story labels: data: - id: '3' type: label stories: data: - id: '3' type: story note: data: null asset_references: data: - id: '34' type: asset_reference - id: '35' type: asset_reference - id: '67' type: asset_reference - id: '68' type: asset_reference posts: data: - id: '37' type: content - id: '36' type: content - id: '35' type: content - id: '34' type: content - id: '2' type: content - id: '1' type: content services: data: - id: '3' type: service - id: '4' type: service primary_asset_reference: data: id: '34' type: asset_reference '404': description: Content not found. content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status delete: tags: - Content operationId: DeleteContentV2 summary: Delete the specified Content security: - oauth2: - offline_access - api_key: - Session-Token parameters: - name: content_id in: path required: true description: The ID of the content. schema: type: string responses: '202': description: The Content was deleted '400': description: Bad request content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status '401': description: Unauthorized content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status '403': description: Forbidden content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status '404': description: Not found content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status servers: - url: https://login.ouropal.com /content/v2/{content_id}/placements/{placement_id}: post: tags: - Content operationId: CreatePostPlacementV2 summary: Join content to a placement security: - oauth2: - offline_access - api_key: - Session-Token parameters: - name: content_id in: path required: true description: The ID of the content being attached to placement schema: type: string - name: placement_id in: path required: true description: The ID of the placement attach content to schema: type: string responses: '200': description: Content successfully attached to placement content: application/json: schema: type: object required: - data properties: data: title: placement type: object required: - relationships - id - attributes - type additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - placement relationships: type: object additionalProperties: false properties: account: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account posts: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - content attributes: type: object required: - name additionalProperties: false properties: name: type: string position: type: - number - 'null' included: type: array items: oneOf: - title: content type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - content attributes: type: object required: - position - status - is_published - was_manually_published - is_ghost - is_private - default_snapshot_url - live_url - takedown_scheduled_at - scheduled_at - name - content - show_code_name - publishing_mode - created_at - updated_at additionalProperties: false properties: name: type: string description: The name of the Content. position: type: - integer - 'null' description: 'A relativistic position within the parent Moment. You can sort Content by position to lay them out in the intended order. Note that these positions are not indices (1, 2, 3, 4...). ' status: type: - string - 'null' description: The workflow status of the Content. enum: - draft - for_approval - needs_revision - approved - null content_type: type: - string - 'null' description: The Content Type name of the Content. This attribute is only `null` when the content is private from the currently authenticated user. content: type: - string - 'null' description: 'The unstructured content string of the Content. This is used for Content Types that do not rely on Post Options to store content/assets of Content. ' is_published: type: - boolean - 'null' description: Whether or not the Content has been published. was_manually_published: type: - boolean - 'null' description: Whether or not the Content was manually published. is_ghost: type: boolean description: 'Indicates whether the Content is redacted for the requesting user. ' is_private: type: boolean description: 'Indicates whether the Content is set to private. ' show_code_name: type: boolean description: 'If `is_ghost` is true and `show_code_name` is true then the `name` property is a "code name" for the piece of Content. The user must request access to the Content to see the proper name. ' default_snapshot_url: type: - string - 'null' description: A URL that serves up the default snapshot preview of this Content. live_url: type: - string - 'null' description: The live URL to published Content. scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get published. If the Content has not been explicitly scheduled then this date is based on that of the Moment the Content lives within. ' start_interval: type: - string - 'null' description: 'An ISO8601 interval, relative to the start of the related Moment''s schedule, representing the explicitly chosen start datetime of the Content. Values are normalized to a seconds-denominated interval (e.g. `PT86400S`). Null when no specific time has been chosen for the Content — in that case `scheduled_at` falls back to the start of the Moment''s schedule. ' takedown_scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get taken down. ' post_data: type: - object - 'null' description: 'A hash that can store any metadata associated with the Content. ' additionalProperties: true publishing_mode: type: - string - 'null' description: The way in which the Content will be published. post_state: type: - string - 'null' description: The state of the Content in the workflow process. enum: - published - held - failed - publishing - dispatched - dispatching - approved - pending created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true service_id: type: integer relationships: type: object required: - account - approval_phase_group - asset_references - brand - budget - delivery_record - inherited_labels - label_sets - labels - links - moment - placement - post_components - post_options - post_type - post_type_options - rich_text_document - service - stories - user additionalProperties: false properties: account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account approval_phase_group: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - phase-groups asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference brand: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand budget: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - budget delivery_record: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - delivery_record inherited_labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'Only inherited labels. See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' label_sets: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'All labels (inherited or explicitly set). See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' links: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - link moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moment placement: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - placement post_components: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_component post_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option post_type: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_type post_type_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option rich_text_document: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - rich_text_document service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story user: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user links: type: object additionalProperties: false properties: web_url: type: string - title: account type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - account attributes: type: object required: - name - uuid additionalProperties: false properties: name: type: string uuid: type: string format: uuid relationships: type: object required: - service - brand - dispatch_provider_account - placements additionalProperties: false properties: service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service brand: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand dispatch_provider_account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - dispatch_provider_account placements: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - placement '404': description: Object not found. Either content_id or placement_id is invalid, or user does not have correct permission content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status put: tags: - Content operationId: PutPostPlacementV2 summary: Attach content to a different placement security: - oauth2: - offline_access - api_key: - Session-Token parameters: - name: content_id in: path required: true description: The ID of the content being attached to placement schema: type: string - name: placement_id in: path required: true description: The ID of the placement attach content to schema: type: string responses: '200': description: Successfully updated content placement content: application/json: schema: type: object required: - data properties: data: title: placement type: object required: - relationships - id - attributes - type additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - placement relationships: type: object additionalProperties: false properties: account: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account posts: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - content attributes: type: object required: - name additionalProperties: false properties: name: type: string position: type: - number - 'null' included: type: array items: oneOf: - title: content type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - content attributes: type: object required: - position - status - is_published - was_manually_published - is_ghost - is_private - default_snapshot_url - live_url - takedown_scheduled_at - scheduled_at - name - content - show_code_name - publishing_mode - created_at - updated_at additionalProperties: false properties: name: type: string description: The name of the Content. position: type: - integer - 'null' description: 'A relativistic position within the parent Moment. You can sort Content by position to lay them out in the intended order. Note that these positions are not indices (1, 2, 3, 4...). ' status: type: - string - 'null' description: The workflow status of the Content. enum: - draft - for_approval - needs_revision - approved - null content_type: type: - string - 'null' description: The Content Type name of the Content. This attribute is only `null` when the content is private from the currently authenticated user. content: type: - string - 'null' description: 'The unstructured content string of the Content. This is used for Content Types that do not rely on Post Options to store content/assets of Content. ' is_published: type: - boolean - 'null' description: Whether or not the Content has been published. was_manually_published: type: - boolean - 'null' description: Whether or not the Content was manually published. is_ghost: type: boolean description: 'Indicates whether the Content is redacted for the requesting user. ' is_private: type: boolean description: 'Indicates whether the Content is set to private. ' show_code_name: type: boolean description: 'If `is_ghost` is true and `show_code_name` is true then the `name` property is a "code name" for the piece of Content. The user must request access to the Content to see the proper name. ' default_snapshot_url: type: - string - 'null' description: A URL that serves up the default snapshot preview of this Content. live_url: type: - string - 'null' description: The live URL to published Content. scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get published. If the Content has not been explicitly scheduled then this date is based on that of the Moment the Content lives within. ' start_interval: type: - string - 'null' description: 'An ISO8601 interval, relative to the start of the related Moment''s schedule, representing the explicitly chosen start datetime of the Content. Values are normalized to a seconds-denominated interval (e.g. `PT86400S`). Null when no specific time has been chosen for the Content — in that case `scheduled_at` falls back to the start of the Moment''s schedule. ' takedown_scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the Content is scheduled to get taken down. ' post_data: type: - object - 'null' description: 'A hash that can store any metadata associated with the Content. ' additionalProperties: true publishing_mode: type: - string - 'null' description: The way in which the Content will be published. post_state: type: - string - 'null' description: The state of the Content in the workflow process. enum: - published - held - failed - publishing - dispatched - dispatching - approved - pending created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true service_id: type: integer relationships: type: object required: - account - approval_phase_group - asset_references - brand - budget - delivery_record - inherited_labels - label_sets - labels - links - moment - placement - post_components - post_options - post_type - post_type_options - rich_text_document - service - stories - user additionalProperties: false properties: account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account approval_phase_group: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - phase-groups asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference brand: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand budget: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - budget delivery_record: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - delivery_record inherited_labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'Only inherited labels. See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' label_sets: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set labels: allOf: - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - description: 'All labels (inherited or explicitly set). See the [Labels Overview](/api/documentation/v2#tag/Labels/Labels-Overview) for information on inheritance. ' links: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - link moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - moment placement: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - placement post_components: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_component post_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option post_type: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_type post_type_options: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - post_option rich_text_document: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - rich_text_document service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story user: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - user links: type: object additionalProperties: false properties: web_url: type: string - title: account type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string pattern: ^[0-9]+$ type: type: string enum: - account attributes: type: object required: - name - uuid additionalProperties: false properties: name: type: string uuid: type: string format: uuid relationships: type: object required: - service - brand - dispatch_provider_account - placements additionalProperties: false properties: service: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - service brand: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - brand dispatch_provider_account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - dispatch_provider_account placements: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - placement '404': description: Object not found. Either content_id or placement_id is invalid, or user does not have correct permission content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status servers: - url: https://login.ouropal.com /content/v2/{content_id}/placements: delete: tags: - Content operationId: DeletePostPlacementV2 summary: Remove a piece of content from a placement. security: - oauth2: - offline_access - api_key: - Session-Token parameters: - name: content_id in: path required: true description: The ID of the content being attached to placement schema: type: string responses: '204': description: Content successfully removed from placement '404': description: Content or Placement not found content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string required: - status servers: - url: https://login.ouropal.com /content/v3: get: tags: - Content operationId: ReadContentsV3 summary: '[UNSTABLE] Return all content available to the authenticated user.' security: - oauth2: - offline_access - api_key: [] parameters: - name: filter in: query description: 'Filters for limiting the results. ' required: false schema: type: object properties: workspace_id: type: array description: 'The IDs of the workspaces to which results should be filtered. Comma separated list of IDs. If included, will only fetch resources associated with these workspaces. If not included, will return resources associated with all workspaces that the user belongs to. For example, `filter[workspace_id]=798ac6d9-b3fc-4155-88ee-237f43f3404b` will fetch all resources associated with workspace `798ac6d9-b3fc-4155-88ee-237f43f3404b`, while `filter[workspace_id]=798ac6d9-b3fc-4155-88ee-237f43f3404b,d79e513e-9246-454e-80bf-8268bc39cd6e,f2b19a4a-ba0c-49be-8aa7-a1bf68a4a4ed` will fetch any resources associated with workspaces `798ac6d9-b3fc-4155-88ee-237f43f3404b`, `d79e513e-9246-454e-80bf-8268bc39cd6e`, or `f2b19a4a-ba0c-49be-8aa7-a1bf68a4a4ed`. ' items: type: string format: uuid account_id: type: array description: 'Filter content by account UUID(s). Comma-separated for multiple values. ' items: type: string format: uuid channel_id: type: array description: 'Filter content by channel UUID(s). Comma-separated for multiple values. ' items: type: string format: uuid label_id: type: array description: 'Filter content by label UUID(s). Comma-separated for multiple values. Matches content with labels from any source: directly assigned labels, or labels inherited from parent moment, story, or account. ' items: type: string format: uuid label_set_id: type: array description: 'Filter content by label set UUID(s). Comma-separated for multiple values. ' items: type: string format: uuid moment_id: type: array description: 'Filter content by moment UUID(s). Comma-separated for multiple values. ' items: type: string format: uuid story_id: type: array description: 'Filter content by story UUID(s). Comma-separated for multiple values. ' items: type: string format: uuid calendar_filter: type: string description: "A serialized JSON object representing filter criteria for alternative filtering requirements, focused on source (channels/accounts), status, and label filtering. This allows using inclusive (OR) logic within filter types and exclusive (AND) logic across filter types.\nFor date/schedule filtering, use the separate `scheduled_at` and `include_overlapping_schedules` filter parameters (not part of calendar_filter).\nEach item in the filter object is optional.\n```json\n{\n \"channel_ids\": [\"uuid\"],\n \"account_ids\": [\"uuid\"],\n \"post_statuses\": [\"draft|for_approval|needs_revision|approved|idea\"],\n \"label_ids\": [\"uuid\"]\n}\n```\nFilter Logic:\n- Channel IDs and account IDs use OR logic since they are the same filter type (sources).\n When both are provided, all UUIDs from both arrays are combined with OR logic.\n\n- Post statuses use OR logic within the array\n- Label IDs use OR logic across all provided labels, regardless of which label set they belong to\n- All different filter types (sources, statuses, labels) are combined with AND logic\n" post_statuses: type: array description: 'Filter content by status value(s). Comma-separated for multiple values. ' items: type: string enum: - draft - for_approval - needs_revision - approved scheduled_at: allOf: - type: object properties: eq: type: string description: 'Equal to filter. If no other filter is specified, `eq` will be assumed. ' gt: type: string description: Greater than filter gteq: type: string description: Greater than or equal to filter lt: type: string description: Less than filter lteq: type: string description: Less than or equal to filter - description: 'Filter content by effective start date using comparison operators (ISO 8601 date-time format). Accepts `YYYY-MM-DD` (date) or `YYYY-MM-DDThh:mm:ssTZD` (datetime) formats. Date-only values are converted to day boundaries in the America/Los_Angeles timezone: beginning-of-day (00:00:00) for `gteq`/`gt`, end-of-day (23:59:59) for `lteq`/`lt`. Matches content''s effective schedule (explicitly set or inherited from parent moment). By default, filters by start date only. To find content live during a date range (considering both start and takedown dates), use include_overlapping_schedules=true. ' include_overlapping_schedules: type: boolean description: 'When true and used with scheduled_at, finds content that is live (published) during the specified date range by considering both start and takedown dates. When false or omitted, filters by start date only. Example: filter[scheduled_at][gteq]=2025-10-01&filter[scheduled_at][lteq]=2025-10-31&filter[include_overlapping_schedules]=true ' style: deepObject explode: true - name: include in: query required: false description: A comma separated value of related objects to include. schema: type: array items: type: string enum: - account - asset_references - channel - label_sets - labels - moment - note - stories - user - workspace style: form explode: false - name: expose in: query required: false description: "Optionally calculated content metadata which are not part of responses by default.\n\nYou request that metadata be included in responses with the `expose` query\nparameter like: `?expose[content][meta]` or more granularly \n`?expose[content][meta]=effective_privacy`.\n" style: deepObject explode: true schema: type: object additionalProperties: false properties: content: type: object properties: meta: type: - string - 'null' description: 'Exposing the metadata on each content resource populates the `meta` key with calculated attributes. If metadata is not exposed, the `meta` key will be an empty object. Detailed documentation on each metadata attribute is available in the response schema documentation. Note that if you expose the effective_privacy content metadata then all content in the response must belong to the same workspace. In this case, you are required to use the `filter[workspace_id]` query parameter with a single workspace ID. ' - name: page description: Specify an offset and limit for pagination in: query required: false schema: type: object properties: limit: type: integer default: 50 offset: type: integer style: deepObject explode: true responses: '200': description: A collection of content. content: application/json: schema: type: object required: - data properties: data: type: array items: title: content type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - content meta: type: - object - 'null' description: 'Optionally calculated content metadata which are not part of responses by default. ' additionalProperties: false properties: effective_privacy: type: string enum: - whole_workspace - some_but_not_all description: 'The effective privacy of a resource is calculated based on all direct and inherited access. If a resource or any of its parents that it inherits access from are accessible to the entire workspace, the effective privacy is `whole_workspace`. Otherwise, the effective privacy is `some_but_not_all`. ' attributes: type: object required: - legacy_id - name - content - status - default_snapshot_url - takedown_scheduled_at - scheduled_at - created_at - updated_at additionalProperties: false properties: legacy_id: type: string description: An ID that can be used with `v2` APIs. name: type: string description: The name of the content. content: type: - string - 'null' description: 'The unstructured content string of the content. This is used for content types that do not rely on post options to store content/assets of content. ' status: type: - string - 'null' description: The workflow status of the content. enum: - draft - for_approval - needs_revision - approved - null default_snapshot_url: type: - string - 'null' description: A URL that serves up the default snapshot preview of this content. scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the content is scheduled to get published. If the content has not been explicitly scheduled then this date is based on that of the moment the content lives within. ' takedown_scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the content is scheduled to get taken down. If the content has not been explicitly scheduled for takedown and the moment is configured to cascade its end date to content, this value will reflect the moment''s end date. ' created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true relationships: type: object additionalProperties: false required: - moment - user - workspace properties: moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - moment asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account channel: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - channel labels: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label inherited_labels: allOf: - description: Labels inherited from the moment or story. - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label inherited_label_sets: allOf: - description: Label sets derived from inherited labels. - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set label_sets: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set note: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - note stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - story user: title: User type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - user workspace: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workspace links: type: object additionalProperties: false required: - v2_request - web_application properties: v2_request: type: string format: uri web_application: type: string format: uri description: The URL to view this content in the Opal web application. included: type: array items: oneOf: - title: account type: object required: - id - type - attributes additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - account attributes: type: object required: - name - legacy_id additionalProperties: false properties: name: type: - string - 'null' description: The descriptive name of the account. legacy_id: type: string description: A legacy ID that can be used with `v2` API endpoints. readOnly: true - title: asset_reference type: object required: - id - type - attributes additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - asset_reference attributes: type: object required: - asset_type - content_type - created_at - description - escaped_filename - filename - filesize - format - full_url - height - legacy_id - meta_data - original_url - preview_url - public_id - updated_at - width additionalProperties: false properties: asset_type: type: - string - 'null' content_type: type: - string - 'null' created_at: type: string description: An ISO8601 date-time. Formatted as an 'Internet Date/Time' (RFC 3339). format: date-time readOnly: true description: type: - string - 'null' escaped_filename: type: string filename: type: - string - 'null' filesize: type: - integer - 'null' description: Size of file in bytes. format: type: - string - 'null' full_url: type: - string - 'null' height: type: - integer - 'null' legacy_id: type: string description: A legacy ID that can be used with `v2` API endpoints. meta_data: type: - object - 'null' original_url: type: - string - 'null' preview_url: type: - string - 'null' public_id: type: - string - 'null' x-not-relationship: true updated_at: type: string description: An ISO8601 date-time. Formatted as an 'Internet Date/Time' (RFC 3339). format: date-time readOnly: true width: type: - integer - 'null' relationships: type: object additionalProperties: false properties: asset: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - asset cover_asset_reference: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference - title: channel type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - channel attributes: type: object required: - color - content_name - created_at - has_placements - icon_name - icon_path - is_active - is_visible - legacy_id - name - system_name - updated_at - web_modules_channel additionalProperties: false properties: color: type: string description: A hex color value with leading hash symbol intact content_name: type: string description: The default name of content for this channel created_at: type: string format: date-time description: An ISO8601 date-time indicating when the channel was created. readOnly: true has_placements: type: - boolean - 'null' description: Indicates if the channel supports placements capability icon_name: type: - string - 'null' icon_path: type: - string - 'null' is_active: type: boolean description: Indicates active status of the channel is_visible: type: boolean description: Indicates visibility of the channel legacy_id: type: string description: The ID of the resource in the `v2` APIs. name: type: string description: The name of the channel system_name: type: string description: The unique system name of the channel updated_at: type: string format: date-time description: An ISO8601 date-time indicating when the channel was last updated. readOnly: true web_modules_channel: type: - boolean - 'null' description: Indicates if the channel is of the category "web modules" relationships: type: object required: - asset_reference - content_types - workspace additionalProperties: false properties: asset_reference: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference content_types: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - content_type workspace: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workspace - title: label_set type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - label_set attributes: type: object required: - name - label_sort_method - is_active - uuid - legacy_id additionalProperties: false properties: name: type: string uuid: type: string format: uuid description: A unique identifier for the label set. legacy_id: type: string description: A legacy ID that can be used with `v2` API endpoints. readOnly: true is_active: type: boolean description: 'Determines whether the label set will be available to use in the Opal platform. Note that inactive label sets are only even exposed via API when specifically filtered for. ' label_sort_method: type: string default: oldest_first enum: - alphabetical - newest_first - oldest_first - manual relationships: type: object required: - labels - paired_custom_field - parent_label additionalProperties: false properties: labels: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label paired_custom_field: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - custom_field parent_label: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label - title: label type: object required: - id - type - attributes - relationships additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - label attributes: type: object required: - name - color - is_active - uuid - legacy_id additionalProperties: false properties: name: type: string description: The label's name. This value must be unique within the label's label set. uuid: type: string format: uuid description: A unique identifier for the label. legacy_id: type: string description: A legacy ID that can be used with `v2` API endpoints. readOnly: true color: type: string description: The label's color. A hex color code without the '#' prefix. This color is only used by the Opal platform if the label is in its workspace's primary label set. is_active: type: boolean description: Enable or disable this label. Note that this is different than deleting and it is probably generally advisable to set is_active to false rather than deleting a label because deactivating can be undone via the API. position: type: integer description: By default, the label position is not used and labels are sorted by creation date from oldest to newest. By request, Opal employees can set the sort order of labels within any label set to be `manual` which causes the labels to be sorted by their `position` instead. relationships: type: object additionalProperties: false properties: label_set: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - label_set - title: moment type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string description: The moment's UUID. See the `legacy_id` attribute for a `v2`-api compatible ID. type: type: string enum: - moment meta: type: - object - 'null' description: 'Optionally calculated moment metadata which are not part of responses by default. ' additionalProperties: false properties: is_stamp_template: type: boolean description: 'Indicates whether a `moment` can be used as a stamp. Stamps serve as templates for new `moment`s, inheriting notes, content, and labels from the stamped moment template. For additional notes on creating, managing, retrieving, and using stamps, see the [Stamps Overview](v2#tag/Stamps/Stamps-Overview). ' access: type: object deprecated: true description: 'This metadata has moved to the document meta (where it is found on API responses for other resources as well) ' effective_privacy: type: string enum: - whole_workspace - some_but_not_all description: 'The effective privacy of a resource is calculated based on all direct and inherited access. If a resource or any of its parents that it inherits access from are accessible to the entire workspace, the effective privacy is `whole_workspace`. Otherwise, the effective privacy is `some_but_not_all`. ' attributes: type: object required: - legacy_id - color - content_count - created_at - is_ghost - title - updated_at additionalProperties: false properties: legacy_id: type: string description: A legacy ID that can be used with `v2` API endpoints. color: type: - string - 'null' description: Color used to visually identify a moment. content_count: type: integer description: Number of content belonging to the given moment. readOnly: true is_ghost: type: boolean description: Indicates whether the moment is redacted for the requesting user. readOnly: true title: type: string description: The name of the moment. created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true relationships: type: object additionalProperties: false required: - owner - workspace properties: asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference owner: title: User type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - user workspace: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workspace board_objects: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - board_object labels: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label note: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - note contents: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - content primary_asset_reference: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference primary_story: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - story privacy_group: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - privacy_group channels: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - channel stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - story schedules: description: One or more schedules (currently only 1 schedule per moment is supported). type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - moment_schedule workflow: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workflow planning_status: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - planning_status moment_assignees: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - moment_assignee assignees: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - user moment_custom_fields: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - moment_custom_field paired_block: allOf: - description: 'Writing this relationship is only allowed for internal Opal clients. External clients should pair a moment and a newly created block using the block''s `POST` endpoint. Only blocks of a type that supports moment pairing are allowed to be paired with moments. Furthermore, this relationship is only writable when patching a moment. ' - type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - block links: type: object additionalProperties: false required: - v2_request properties: v2_request: type: string format: uri - title: note type: object required: - id - type - attributes additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - note attributes: type: object required: - comment - created_at - updated_at - legacy_id additionalProperties: false properties: comment: type: - string - 'null' description: A text comment on the note. created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true legacy_id: type: string description: A legacy ID that can be used with `v2` API endpoints. updated_at: type: - string - 'null' format: date-time description: An ISO8601 date-time. readOnly: true - title: story type: object required: - id - type - attributes additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - story meta: type: - object - 'null' description: 'Calculated story metadata included unconditionally in responses. ' additionalProperties: false properties: effective_privacy: type: string enum: - whole_workspace - some_but_not_all description: 'The effective privacy of a resource is calculated based on all direct and inherited access. If a resource or any of its parents that it inherits access from are accessible to the entire workspace, the effective privacy is `whole_workspace`. Otherwise, the effective privacy is `some_but_not_all`. ' attributes: type: object required: - color - created_at - description - is_shared - legacy_id - name - scheduled_end_at - scheduled_start_at - updated_at additionalProperties: false properties: color: type: - string - 'null' description: A hex color value with the '#' prefix. created_at: type: string description: An ISO8601 date-time. Formatted as an 'Internet Date/Time' (RFC 3339). format: date-time readOnly: true description: type: - string - 'null' is_shared: type: - boolean - 'null' legacy_id: type: string description: A legacy ID that can be used with `v2` API endpoints. name: type: string scheduled_start_at: type: string description: An ISO8601 date-time. Formatted as an 'Internet Date/Time' (RFC 3339). format: date-time scheduled_end_at: type: string description: An ISO8601 date-time. Formatted as an 'Internet Date/Time' (RFC 3339). format: date-time updated_at: type: string description: An ISO8601 date-time. Formatted as an 'Internet Date/Time' (RFC 3339). format: date-time readOnly: true relationships: type: object additionalProperties: false properties: workspace: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workspace shared_workspaces: description: Additional workspaces that the story has been shared to. type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workspace links: type: object additionalProperties: false properties: v2_request: type: string description: A link to the equivalent v2 API request for this story. - title: user type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - user meta: type: - object - 'null' description: Metadata around the User object properties: workspace_approval_counts: type: object description: Object representing the user's unseen approval counts per Workspace Id. attributes: type: object required: - created_at - email - first_name - full_name - is_active - last_name - title - transliterated_full_name - updated_at - legacy_id additionalProperties: false properties: created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true email: type: string first_name: type: string full_name: type: string is_active: type: - boolean - 'null' last_name: type: string role_name: type: string title: type: - string - 'null' transliterated_full_name: type: string feature_flags: type: object additionalProperties: type: boolean description: 'A named feature flag and `true` or `false` depending on whether the feature is enabled for the user or not. ' description: 'List of Feature Flags for this user, only available for the currently authenticated User. ' updated_at: type: string format: date-time description: An ISO8601 date-time indicating when the user was last updated. readOnly: true legacy_id: type: string description: An ID that can be used with `v2` APIs. relationships: type: object required: - profile - workspaces additionalProperties: false properties: profile: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - user_profile workspaces: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workspace links: type: object additionalProperties: false required: - v2_request properties: v2_request: type: string format: uri - title: workspace type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workspace meta: type: - object - 'null' description: Metadata around the Workspace object properties: user_is_member: type: boolean description: Boolean that represents whether the requesting user is a member of the workspace. attributes: type: object required: - created_at - name - slug - updated_at - start_of_week - timezone - legacy_id additionalProperties: false properties: created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true legacy_id: type: string description: A legacy ID that can be used with `v2` API endpoints. name: type: string description: The name of the workspace. slug: type: - string - 'null' description: The slug for the Workspace. This is a url-safe name for the Workspace. start_of_week: type: number enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 description: 'The default start weekday index for the week view Calendar and for Plans. Specifies the days in a week, 0 to 6 (Sunday to Saturday). 0 (Sunday) is the default. With regards to the week view Calendar, values greater than 1 will be considered the same as 1.' timezone: type: string description: The IANA time zone identifier for the default time zone used when creating resources in the workspace (e.g. America/New_York). updated_at: type: - string - 'null' format: date-time description: An ISO8601 date-time. readOnly: true relationships: type: object required: - logo - workspace_defaults additionalProperties: false properties: logo: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference workspace_defaults: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workspace_defaults links: type: object additionalProperties: false required: - v2_request properties: v2_request: type: string format: uri meta: type: object required: - total - page - resource_type properties: resource_type: type: string total: type: integer page: type: object required: - limit - offset properties: limit: type: integer offset: type: integer '400': description: Bad request content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string description: The http status code of the error response. title: type: string description: A short, human-readable summary of the error. detail: type: string description: A human-readable explanation of the error. code: type: string description: 'An system-readable error code to provide additional specificity for the error. ' required: - status '401': description: Unauthorized content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string description: The http status code of the error response. title: type: string description: A short, human-readable summary of the error. detail: type: string description: A human-readable explanation of the error. code: type: string description: 'An system-readable error code to provide additional specificity for the error. ' required: - status servers: - url: https://login.ouropal.com /content/v3/{content_id}: get: tags: - Content operationId: ReadContentV3 summary: '[UNSTABLE] Get a content resource available to the authenticated user.' security: - oauth2: - offline_access - api_key: [] parameters: - name: content_id in: path required: true description: The UUID of the Content. schema: type: string - name: expose in: query required: false description: 'Optionally calculated content metadata which are not part of responses by default. You request that metadata be included in responses with the `expose` query parameter like: `?expose[content][meta]` or `?expose[meta][access]`. ' style: deepObject explode: true schema: type: object additionalProperties: false properties: meta: type: object properties: access: type: - string - 'null' description: 'Information about who has access to the given resource. This metadata is only available for single (non-batch) `GET` / `PATCH` / `POST` requests, and is not returned by default. Add `expose[meta][access]` to your query parameters to request it in the response body. ' content: type: object properties: meta: type: - string - 'null' description: 'Exposing the metadata on each content resource populates the `meta` key with calculated attributes. If metadata is not exposed, the `meta` key will be an empty object. Detailed documentation on each metadata attribute is available in the response schema documentation. Note that if you expose the effective_privacy content metadata then all content in the response must belong to the same workspace. In this case, you are required to use the `filter[workspace_id]` query parameter with a single workspace ID. ' responses: '200': description: A single content resource. content: application/json: schema: type: object required: - data properties: data: title: content type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - content meta: type: - object - 'null' description: 'Optionally calculated content metadata which are not part of responses by default. ' additionalProperties: false properties: effective_privacy: type: string enum: - whole_workspace - some_but_not_all description: 'The effective privacy of a resource is calculated based on all direct and inherited access. If a resource or any of its parents that it inherits access from are accessible to the entire workspace, the effective privacy is `whole_workspace`. Otherwise, the effective privacy is `some_but_not_all`. ' attributes: type: object required: - legacy_id - name - content - status - default_snapshot_url - takedown_scheduled_at - scheduled_at - created_at - updated_at additionalProperties: false properties: legacy_id: type: string description: An ID that can be used with `v2` APIs. name: type: string description: The name of the content. content: type: - string - 'null' description: 'The unstructured content string of the content. This is used for content types that do not rely on post options to store content/assets of content. ' status: type: - string - 'null' description: The workflow status of the content. enum: - draft - for_approval - needs_revision - approved - null default_snapshot_url: type: - string - 'null' description: A URL that serves up the default snapshot preview of this content. scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the content is scheduled to get published. If the content has not been explicitly scheduled then this date is based on that of the moment the content lives within. ' takedown_scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the content is scheduled to get taken down. If the content has not been explicitly scheduled for takedown and the moment is configured to cascade its end date to content, this value will reflect the moment''s end date. ' created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true relationships: type: object additionalProperties: false required: - moment - user - workspace properties: moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - moment asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account channel: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - channel labels: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label inherited_labels: allOf: - description: Labels inherited from the moment or story. - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label inherited_label_sets: allOf: - description: Label sets derived from inherited labels. - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set label_sets: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set note: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - note stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - story user: title: User type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - user workspace: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workspace links: type: object additionalProperties: false required: - v2_request - web_application properties: v2_request: type: string format: uri web_application: type: string format: uri description: The URL to view this content in the Opal web application. meta: type: object properties: access: type: object description: 'Information about who has access to the given resource. This metadata is only available for single (non-batch) `GET` / `PATCH` / `POST` requests, and is not returned by default. Add `expose[meta][access]` to your query parameters to request it in the response body. ' additionalProperties: false required: - users - groups - resources properties: users: type: array description: 'A list of users that have access to this resource. These users have been given direct access; the list does not include all users who have access via a User Group or inherited resource. Each item in the list is a JSON:API Resource Identifier Object. All entries are `user`s. ' items: type: object additionalProperties: false required: - id - type properties: id: type: string format: uuid type: type: string enum: - user groups: type: array description: 'A list of groups that have access to this resource. These are all User Groups that have been created by an admin of the Opal ahead of time. Each item in the list is a JSON:API Resource Identifier Object. All entries are `user_group`s. Each user group''s name is surfaced as `meta.title` for convenience and each user group''s membership count (including all inherited membership) is surfaced as `meta.count`. ' items: type: object additionalProperties: false required: - id - type - meta properties: id: type: string format: uuid type: type: string enum: - user_group meta: type: object readOnly: true additionalProperties: false required: - title - count properties: title: type: string readOnly: true count: type: integer minimum: 0 readOnly: true resources: type: array description: 'A list of resources from which this resource _might_ inherit membership. The list always contains an entry for every other resource allowed to provide membership to the given resource. Look at the `meta.inherits_membership` property to determine if a given resource''s membership actually is being inherited. Each item in the list is a JSON:API Resource Identifier Object. Entries may have varying `types` but all resources can be retrieved separately from Opal API endpoints to get more information about them. Each resource''s name or title is surfaced as `meta.title` for convenience and each resource''s membership count (including all inherited membership) is surfaced as `meta.count`. ' items: type: object additionalProperties: false required: - id - type - meta properties: id: type: string format: uuid type: type: string meta: type: object additionalProperties: false required: - inherits_membership - title - count properties: inherits_membership: type: boolean title: type: string readOnly: true count: type: integer minimum: 0 readOnly: true '400': description: Bad request content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string description: The http status code of the error response. title: type: string description: A short, human-readable summary of the error. detail: type: string description: A human-readable explanation of the error. code: type: string description: 'An system-readable error code to provide additional specificity for the error. ' required: - status '401': description: Unauthorized content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string description: The http status code of the error response. title: type: string description: A short, human-readable summary of the error. detail: type: string description: A human-readable explanation of the error. code: type: string description: 'An system-readable error code to provide additional specificity for the error. ' required: - status '422': description: Unprocessable entity content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string description: The http status code of the error response. title: type: string description: A short, human-readable summary of the error. detail: type: string description: A human-readable explanation of the error. code: type: string description: 'An system-readable error code to provide additional specificity for the error. ' required: - status patch: tags: - Content operationId: UpdateContentV3 summary: '[UNSTABLE] Update a content resource.' security: - oauth2: - offline_access - api_key: [] parameters: - name: content_id in: path required: true description: The UUID of the Content. schema: type: string - name: expose in: query required: false description: 'Optionally calculated content metadata which are not part of responses by default. You request that metadata be included in responses with the `expose` query parameter like: `?expose[content][meta]` or `?expose[meta][access]`. ' style: deepObject explode: true schema: type: object additionalProperties: false properties: meta: type: object properties: access: type: - string - 'null' description: 'Information about who has access to the given resource. This metadata is only available for single (non-batch) `GET` / `PATCH` / `POST` requests, and is not returned by default. Add `expose[meta][access]` to your query parameters to request it in the response body. ' content: type: object properties: meta: type: - string - 'null' description: 'Exposing the metadata on each content resource populates the `meta` key with calculated attributes. If metadata is not exposed, the `meta` key will be an empty object. Detailed documentation on each metadata attribute is available in the response schema documentation. Note that if you expose the effective_privacy content metadata then all content in the response must belong to the same workspace. In this case, you are required to use the `filter[workspace_id]` query parameter with a single workspace ID. ' requestBody: content: application/json: schema: type: object required: - data properties: data: type: object required: - id - type properties: id: type: string format: uuid type: type: string enum: - content meta: type: object additionalProperties: false properties: access: type: object deprecated: true description: 'Access metadata should be written at the document level, not the resource level. ' meta: type: object properties: access: type: object description: 'Information about who has access to the given resource. This metadata is only available for single (non-batch) `GET` / `PATCH` / `POST` requests, and is not returned by default. Add `expose[meta][access]` to your query parameters to request it in the response body. ' additionalProperties: false properties: users: type: array description: 'A list of users that have access to this resource. These users have been given direct access; the list does not include all users who have access via a User Group or inherited resource. Each item in the list is a JSON:API Resource Identifier Object. All entries are `user`s. ' items: type: object additionalProperties: false required: - id - type properties: id: type: string format: uuid type: type: string enum: - user groups: type: array description: 'A list of groups that have access to this resource. These are all User Groups that have been created by an admin of the Opal ahead of time. Each item in the list is a JSON:API Resource Identifier Object. All entries are `user_group`s. ' items: type: object additionalProperties: false required: - id - type properties: id: type: string format: uuid type: type: string enum: - user_group resources: type: array description: 'A list of resources from which this resource _might_ inherit membership. The list always contains an entry for every other resource allowed to provide membership to the given resource. Set the `meta.inherits_membership` property to determine if a given resource''s membership actually is being inherited. Each item in the list is a JSON:API Resource Identifier Object. Entries may have varying `types`. ' items: type: object additionalProperties: false required: - id - type - meta properties: id: type: string format: uuid type: type: string meta: type: object additionalProperties: false required: - inherits_membership properties: inherits_membership: type: boolean responses: '201': description: An updated content resource. content: application/json: schema: type: object required: - data properties: data: title: content type: object required: - id - type - attributes - relationships - links additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - content meta: type: - object - 'null' description: 'Optionally calculated content metadata which are not part of responses by default. ' additionalProperties: false properties: effective_privacy: type: string enum: - whole_workspace - some_but_not_all description: 'The effective privacy of a resource is calculated based on all direct and inherited access. If a resource or any of its parents that it inherits access from are accessible to the entire workspace, the effective privacy is `whole_workspace`. Otherwise, the effective privacy is `some_but_not_all`. ' attributes: type: object required: - legacy_id - name - content - status - default_snapshot_url - takedown_scheduled_at - scheduled_at - created_at - updated_at additionalProperties: false properties: legacy_id: type: string description: An ID that can be used with `v2` APIs. name: type: string description: The name of the content. content: type: - string - 'null' description: 'The unstructured content string of the content. This is used for content types that do not rely on post options to store content/assets of content. ' status: type: - string - 'null' description: The workflow status of the content. enum: - draft - for_approval - needs_revision - approved - null default_snapshot_url: type: - string - 'null' description: A URL that serves up the default snapshot preview of this content. scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the content is scheduled to get published. If the content has not been explicitly scheduled then this date is based on that of the moment the content lives within. ' takedown_scheduled_at: type: - string - 'null' format: date-time description: 'An ISO8601 date-time. The date and time when the content is scheduled to get taken down. If the content has not been explicitly scheduled for takedown and the moment is configured to cascade its end date to content, this value will reflect the moment''s end date. ' created_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true updated_at: type: string format: date-time description: An ISO8601 date-time. readOnly: true relationships: type: object additionalProperties: false required: - moment - user - workspace properties: moment: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - moment asset_references: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - asset_reference account: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - account channel: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - channel labels: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label inherited_labels: allOf: - description: Labels inherited from the moment or story. - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label inherited_label_sets: allOf: - description: Label sets derived from inherited labels. - type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set label_sets: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string type: type: string enum: - label_set note: type: object required: - data additionalProperties: false properties: data: type: - object - 'null' required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - note stories: type: object required: - data additionalProperties: false properties: data: type: array items: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - story user: title: User type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - user workspace: type: object required: - data additionalProperties: false properties: data: type: object required: - id - type additionalProperties: false properties: id: type: string format: uuid type: type: string enum: - workspace links: type: object additionalProperties: false required: - v2_request - web_application properties: v2_request: type: string format: uri web_application: type: string format: uri description: The URL to view this content in the Opal web application. meta: type: object properties: access: type: object description: 'Information about who has access to the given resource. This metadata is only available for single (non-batch) `GET` / `PATCH` / `POST` requests, and is not returned by default. Add `expose[meta][access]` to your query parameters to request it in the response body. ' additionalProperties: false required: - users - groups - resources properties: users: type: array description: 'A list of users that have access to this resource. These users have been given direct access; the list does not include all users who have access via a User Group or inherited resource. Each item in the list is a JSON:API Resource Identifier Object. All entries are `user`s. ' items: type: object additionalProperties: false required: - id - type properties: id: type: string format: uuid type: type: string enum: - user groups: type: array description: 'A list of groups that have access to this resource. These are all User Groups that have been created by an admin of the Opal ahead of time. Each item in the list is a JSON:API Resource Identifier Object. All entries are `user_group`s. Each user group''s name is surfaced as `meta.title` for convenience and each user group''s membership count (including all inherited membership) is surfaced as `meta.count`. ' items: type: object additionalProperties: false required: - id - type - meta properties: id: type: string format: uuid type: type: string enum: - user_group meta: type: object readOnly: true additionalProperties: false required: - title - count properties: title: type: string readOnly: true count: type: integer minimum: 0 readOnly: true resources: type: array description: 'A list of resources from which this resource _might_ inherit membership. The list always contains an entry for every other resource allowed to provide membership to the given resource. Look at the `meta.inherits_membership` property to determine if a given resource''s membership actually is being inherited. Each item in the list is a JSON:API Resource Identifier Object. Entries may have varying `types` but all resources can be retrieved separately from Opal API endpoints to get more information about them. Each resource''s name or title is surfaced as `meta.title` for convenience and each resource''s membership count (including all inherited membership) is surfaced as `meta.count`. ' items: type: object additionalProperties: false required: - id - type - meta properties: id: type: string format: uuid type: type: string meta: type: object additionalProperties: false required: - inherits_membership - title - count properties: inherits_membership: type: boolean title: type: string readOnly: true count: type: integer minimum: 0 readOnly: true '400': description: Bad request content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string description: The http status code of the error response. title: type: string description: A short, human-readable summary of the error. detail: type: string description: A human-readable explanation of the error. code: type: string description: 'An system-readable error code to provide additional specificity for the error. ' required: - status '401': description: Unauthorized content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string description: The http status code of the error response. title: type: string description: A short, human-readable summary of the error. detail: type: string description: A human-readable explanation of the error. code: type: string description: 'An system-readable error code to provide additional specificity for the error. ' required: - status '404': description: Not found content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string description: The http status code of the error response. title: type: string description: A short, human-readable summary of the error. detail: type: string description: A human-readable explanation of the error. code: type: string description: 'An system-readable error code to provide additional specificity for the error. ' required: - status '409': description: Conflict content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string description: The http status code of the error response. title: type: string description: A short, human-readable summary of the error. detail: type: string description: A human-readable explanation of the error. code: type: string description: 'An system-readable error code to provide additional specificity for the error. ' required: - status '422': description: Unprocessable entity content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: status: type: string description: The http status code of the error response. title: type: string description: A short, human-readable summary of the error. detail: type: string description: A human-readable explanation of the error. code: type: string description: 'An system-readable error code to provide additional specificity for the error. ' required: - status servers: - url: https://login.ouropal.com components: securitySchemes: oauth2: type: oauth2 description: This API uses OAuth 2.0 with the authorization code grant flow. You can find more detailed authentication instructions in the [Authentication Strategies](/api/documentation#section/Authentication-Strategies/OAuth-2.0) section. flows: authorizationCode: authorizationUrl: /oauth2/auth tokenUrl: /oauth2/token scopes: offline_access: Include this scope if you wish to receive a refresh token api_key: type: apiKey description: (Deprecated) This API also supports authentication via an API or session token set in the request headers. in: header name: Session-Token anonymous_oauth: type: oauth2 description: 'The OAuth 2.0 client credentials flow is used for secure server-server requests when Opal does not need to associate a request with a particular Opal user. These anonymous requests are instead authorized based on the OAuth scope. ' flows: clientCredentials: tokenUrl: /oauth/token scopes: write:onboarding: Include this scope if you wish to make API requests to onboard new Opals. presentation_share_cookie: type: apiKey description: 'A cookie set and read by the Monolith service that authorizes a non-opal user to view a presentation and the resources within it. Other services can rely on this cookie by asking Monolith to authenticate it. ' in: cookie name: share_token x-refined-from: - opal-v2-openapi.yml - opal-v3-openapi.yml x-tagGroups: - name: ⚠️ Unstable tags: - Plans - Blocks - Custom Fields - name: ℹ️ Proposed tags: - Moments - Smart Blocks - In Market - name: 🔮 Experimental tags: - Experimental