## Overview
Content represents files and documents stored in the Finale system. This collection manages uploaded files, attachments, and other binary content with associated metadata. Content items can be images, documents, PDFs, or any other file type that needs to be stored and referenced within the system.

Each content record tracks the physical file location, storage service, file size, and MIME type. The system stores files in cloud storage services and maintains metadata about each file for efficient retrieval and management. Content items are typically referenced by other entities - for example, products can have an image attachment through the imageTooltip field which returns a Content object containing the product's image file and metadata.

The content collection supports querying by contentUrl for direct lookup of specific files, as well as browsing all content with standard pagination. Files are stored externally with the fileUrl providing the actual download location, while the contentUrl serves as the unique identifier within Finale.

Content metadata includes descriptive information like description and timestamps (createdDate, lastUpdatedDate) that help track when files were uploaded or modified. Content types and document types (contentTypeId, documentTypeId) provide categorization for different kinds of files, enabling filtering and organization of stored content.

The serviceName field indicates which cloud storage service hosts the file, supporting scenarios where content may be distributed across multiple storage backends. The metaData field stores additional arbitrary information about the content as needed for specific use cases.

* * *

### GraphQL API
The `content` collection provides access to content data via the GraphQL API. All queries use the Relay connection specification with cursor-based pagination.

**Query Name:**`contentViewConnection`

**Available Features:**
- Cursor-based pagination (first/last/after/before)
- 2 filter options
- 3 sortable fields

## Query Examples
### Basic Query
The `content` collection is accessed via the `contentViewConnection` query, which returns a Relay-style connection with pagination support.

```graphql
query {
  contentViewConnection(first: 10) {
    edges {
      node {
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
```

### Pagination
Use cursor-based pagination to retrieve large datasets:

```graphql
# First page
query {
  contentViewConnection(first: 50) {
    edges {
      node { contentTypeId }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

# Subsequent pages
query {
  contentViewConnection(first: 50, after: "cursor-from-previous-page") {
    edges {
      node { contentTypeId }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
```

### Filtering
Apply filters to narrow results:

```graphql
query {
  contentViewConnection(
    first: 10
    contentUrl: "/finaleengineer/api/content/100000"
  ) {
    edges {
      node { contentTypeId }
    }
  }
}
```

### Sorting
Sort results by one or more fields:

```graphql
query {
  contentViewConnection(
    first: 10
    sort: [{ field: "contentUrl", mode: "desc" }]
  ) {
    edges {
      node {
        contentTypeId
        contentUrl
      }
    }
  }
}
```

## Fields
This collection has 11 fields:
- 11 simple fields
- 0 enum fields (with predefined values)
- 0 parameterized fields (accept query options)

### Simple Fields
#### `contentUrl`
The unique identifier for this content item within Finale. This URL is automatically generated by the server and serves as the primary reference key when linking to content from other entities like products or jobs. Use this value in queries to retrieve a specific content item directly.

**IMPORTANT:** Treat URL values as opaque strings supplied by the server.

**Label:** Content URL
**GraphQL Type:**`String`
**Sortable:** Yes

#### `fileUrl`
The URL where the file is stored and can be downloaded. This URL is automatically generated by the server and points to the physical file location in cloud storage. Use this URL to retrieve the file contents for display or download.

**Label:** File URL
**GraphQL Type:**`String`
**Sortable:** No

#### `serviceName`
The name of the cloud storage service hosting this file. Finale can store content across multiple storage backends, and this field indicates which service is currently storing this particular file.

**Label:** Service Name
**GraphQL Type:**`String`
**Sortable:** No

#### `metaData`
Additional metadata about the content stored as a string. This field can contain arbitrary information specific to the content type or use case.

**Label:** Metadata
**GraphQL Type:**`String`
**Sortable:** No

#### `mimeType`
The MIME type of the file, such as "image/jpeg", "application/pdf", or "text/csv".

**Label:** MIME Type
**GraphQL Type:**`String`
**Sortable:** No

#### `size`
The file size in bytes. This value helps with storage management and displaying file size information to users.

**Label:** Size
**GraphQL Type:**`Int`
**Sortable:** No

#### `description`
A human-readable description of the content.

**Label:** Description
**GraphQL Type:**`String`
**Sortable:** No

#### `contentTypeId`
An identifier indicating the category or type of content.

**Label:** Content Type
**GraphQL Type:**`String`
**Sortable:** No

#### `documentTypeId`
An identifier for the document type classification.

**Label:** Document Type
**GraphQL Type:**`String`
**Sortable:** No

#### `createdDate`
The date and time when this content item was initially created or uploaded to the system.

**Label:** Created Date
**GraphQL Type:**`String`
**Sortable:** Yes

#### `lastUpdatedDate`
The date and time when this content item was last modified or updated.

**Label:** Last Updated
**GraphQL Type:**`String`
**Sortable:** Yes

## Relations
No relations available.

## Filters
### contentUrl
- **Label:** Content URL
- **Type:** String
- **Enabled:** Yes

**Filter Type:** Text value

**Usage Example:**

```graphql
query {
  contentViewConnection(
    first: 10
    contentUrl: "/finaleengineer/api/content/100000"
  ) {
    edges {
      node {
        name
        contentUrl
      }
    }
  }
}
```

### sort
- **Label:** Sort
- **Type:** List|sort
- **Enabled:** Yes

**Filter Type:** Text value

**Usage Example:**

```graphql
query {
  contentViewConnection(
    first: 10
    sort: "name"
  ) {
    edges {
      node {
        name
        sort
      }
    }
  }
}
```
