SponsorUnited Contact API

Contact

Operations 21

GET /api/contacts/bad-email-report List bad email reports for the authenticated user #
POST /api/contacts/bad-email-report Report a bad email for a contact #
GET /api/contacts/{contactableEntity}/{contactableId}/owner/{ownerId} List contacts for an entity #
GET /api/contacts/{contactableEntity}/{contactableId}/export Export sale contacts #
POST /api/contacts/{contactableEntity}/{contactableId} Create a new contact #
POST /api/contacts/{contactableEntity}/{contactableId}/sale-contact Create sale contacts from existing profiles #
DELETE /api/contacts/{contactableEntity}/{contactableId}/sale-contact Bulk-remove sale contacts from a sale list #
GET /api/contacts/{contactableEntity}/{contactableId}/{personProfileId} Get a specific contact #
PUT /api/contacts/{contactableEntity}/{contactableId}/{personProfileId} Update a contact #
DELETE /api/contacts/{contactableEntity}/{contactableId}/{personProfileId} Delete a contact #
POST /api/contacts/by-email Search contacts by email #
POST /api/contacts/by-school Search contacts by school #
PUT /api/contacts/{contactableEntity}/{contactableId}/{personProfileId}/email-status Update contact email status #
GET /api/contacts/email/status/file List email status files #
POST /api/contacts/email/status/file Upload email status file #
GET /api/contacts/email/status/file/metadata Get email status file metadata #
GET /api/contacts/email/status/file/{filename} Get email status file download URL #
POST /api/contacts/linkedin/scraping Scrape LinkedIn profiles #
POST /api/contacts/{entityType}/{entityId}/employees/linkedin Search LinkedIn employees by entity #
POST /api/contacts/{entityType}/{entityId}/employees/linkedin/on-demand Request a user-triggered LinkedIn employee scrape #
GET /api/contacts/primary-email/check Check if a primary email is linked to any contacts #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sponsorunited-contact-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sponsorunited-contact-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SponsorUnited Contact API
  version: v1
  description: Contact
tags:
- name: Contact
  description: Contact
paths:
  /api/contacts/bad-email-report:
    get:
      tags:
      - Contact
      summary: List bad email reports for the authenticated user
      description: Returns paginated bad email reports submitted by the current user
      operationId: 041a0c64cd5f3b1493ccfa9e73e6fab8
      parameters:
      - name: status
        in: query
        description: Filter by report status
        required: false
        schema:
          type: string
          enum:
          - pending
          - new_email_found
          - new_company
          - confirmed_valid
          - scraping_failed
          - deleted
      responses:
        '200':
          description: Paginated list of reports
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/BadEmailReportResource'
                  links:
                    properties:
                      first:
                        type:
                        - string
                        - 'null'
                      last:
                        type:
                        - string
                        - 'null'
                      prev:
                        type:
                        - string
                        - 'null'
                      next:
                        type:
                        - string
                        - 'null'
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type:
                        - integer
                        - 'null'
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type:
                        - integer
                        - 'null'
                      total:
                        type: integer
                    type: object
                type: object
        '422':
          description: Validation error
      security:
      - bearerAuth: []
    post:
      tags:
      - Contact
      summary: Report a bad email for a contact
      description: Creates a bad email report and queues the contact for priority scraping
      operationId: 2192a4af73ceff3ad02cb76ac09de32e
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportBadEmailRequest'
      responses:
        '201':
          description: Report created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadEmailReportResource'
        '422':
          description: Validation error
      security:
      - bearerAuth: []
  /api/contacts/{contactableEntity}/{contactableId}/owner/{ownerId}:
    get:
      tags:
      - Contact
      summary: List contacts for an entity
      description: Returns all contacts associated with a specific entity (agency, property, brand, or sale) for a given owner. Optionally includes brand relationships and LinkedIn data
      operationId: 0306c0e4317485d19459722d711cffaa
      parameters:
      - name: contactableEntity
        in: path
        description: Type of an entity (agency, property, brand, sale)
        required: true
        schema:
          type: string
      - name: contactableId
        in: path
        description: Id of an entity
        required: true
        schema:
          type: integer
      - name: ownerId
        in: path
        description: Id of an owner for which to fetch contacts.
        required: true
        schema:
          type: integer
      - name: ContactsIndexRequest
        in: query
        schema:
          $ref: '#/components/schemas/ContactIndexRequest'
      responses:
        '200':
          description: All the person profiles associated with the given entity type and id.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/AgencyContactIndexResource'
                - $ref: '#/components/schemas/PropertyContactIndexResource'
                - $ref: '#/components/schemas/BrandContactIndexResource'
                - $ref: '#/components/schemas/SaleContactIndexResource'
      security:
      - bearerAuth: []
  /api/contacts/{contactableEntity}/{contactableId}/export:
    get:
      tags:
      - Contact
      summary: Export sale contacts
      description: Exports sale contacts for a specific entity as a downloadable file. Returns contact information in CSV format
      operationId: e8ec2765a7baa4d98a6676151b50ba45
      parameters:
      - name: contactableEntity
        in: path
        description: Type of an entity (agency, property, brand, sale)
        required: true
        schema:
          type: string
      - name: contactableId
        in: path
        description: Id of an entity
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Export profile contact.
      security:
      - bearerAuth: []
  /api/contacts/{contactableEntity}/{contactableId}:
    post:
      tags:
      - Contact
      summary: Create a new contact
      description: Creates a new person profile and links it to the specified entity (agency, property, brand, or sale). Handles profile picture upload and optional sale list assignment. Agency/property/brand contacts also accept service X-API-Key authentication
      operationId: 6490ccfff8d5d83d765e6e718cd8ffb8
      parameters:
      - name: contactableEntity
        in: path
        description: Type of an entity (agency, property, brand, sale)
        required: true
        schema:
          type: string
      - name: contactableId
        in: path
        description: Id of an entity
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreContactRequest'
      responses:
        '201':
          description: A new person profile linked to the given entity.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/AgencyContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/PropertyContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/BrandContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/SaleContactShowStoreUpdateResource'
      security:
      - bearerAuth: []
      - apiKeyAuth: []
  /api/contacts/{contactableEntity}/{contactableId}/sale-contact:
    post:
      tags:
      - Contact
      summary: Create sale contacts from existing profiles
      description: Creates sale contacts by linking existing person profiles to a brand entity. Automatically creates or retrieves a deal tracker entry and assigns contacts to a sale list
      operationId: 609cb760d7d7c591e132910cb7b72f09
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactCreateSaleRequest'
      responses:
        '201':
          description: A new person profile linked to the given entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SaleContactShowStoreUpdateResource'
      security:
      - bearerAuth: []
    delete:
      tags:
      - Contact
      summary: Bulk-remove sale contacts from a sale list
      description: Removes multiple person profiles from a single sale list in one request. Accepts explicit IDs, an exclude list, or empty body (remove all on the list).
      operationId: 3ee16edfaab3704bb1556faaa2777a1c
      parameters:
      - name: contactableEntity
        in: path
        description: Type of an entity (agency, property, brand)
        required: true
        schema:
          type: string
      - name: contactableId
        in: path
        description: Id of an entity
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactDeleteSaleRequest'
      responses:
        '204':
          description: All contacts removed.
        '207':
          description: Partial success; some contacts were skipped.
          content:
            application/json:
              schema:
                properties:
                  removed:
                    type: array
                    items:
                      type: integer
                  skipped:
                    type: array
                    items:
                      properties:
                        person_profile_id:
                          type: integer
                        reason:
                          type: string
                          enum:
                          - not_found
                          - forbidden
                          - error
                      type: object
                type: object
        '403':
          description: Forbidden
        '404':
          description: No sale found for the authenticated user on this list.
        '422':
          description: Validation error
      security:
      - bearerAuth: []
  /api/contacts/{contactableEntity}/{contactableId}/{personProfileId}:
    get:
      tags:
      - Contact
      summary: Get a specific contact
      description: Retrieves detailed information about a specific contact associated with an entity, including tasks and sale information if applicable
      operationId: 14f7dc7de933883fdbdf260c9c663bdf
      parameters:
      - name: contactableEntity
        in: path
        description: Type of an entity (agency, property, brand, sale)
        required: true
        schema:
          type: string
      - name: contactableId
        in: path
        description: Id of an entity
        required: true
        schema:
          type: integer
      - name: personProfileId
        in: path
        description: Id of a person profile
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: The person profile associated with the given entity id.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/AgencyContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/PropertyContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/BrandContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/SaleContactShowStoreUpdateResource'
      security:
      - bearerAuth: []
    put:
      tags:
      - Contact
      summary: Update a contact
      description: Updates an existing contact's information including profile details, contact information, and entity associations. Validates email and LinkedIn URL uniqueness within the context. Agency/property/brand contacts also accept service X-API-Key authentication
      operationId: 237249d98b1cd86f6ea34bfe6bd05d5d
      parameters:
      - name: contactableEntity
        in: path
        description: Type of an entity (agency, property, brand, sale)
        required: true
        schema:
          type: string
      - name: contactableId
        in: path
        description: Id of an entity
        required: true
        schema:
          type: integer
      - name: personProfileId
        in: path
        description: Id of a person profile
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateContactRequest'
      responses:
        '201':
          description: The updated Person Profile associated to the given agency.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/AgencyContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/PropertyContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/BrandContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/SaleContactShowStoreUpdateResource'
      security:
      - bearerAuth: []
      - apiKeyAuth: []
    delete:
      tags:
      - Contact
      summary: Delete a contact
      description: Removes a contact's association with an entity. For brand contacts with multiple entity links, only removes the specific brand association. Handles cleanup of related data including search indexes
      operationId: fa53415c5f3eabb912756e673472f632
      parameters:
      - name: contactableEntity
        in: path
        description: Type of an entity (agency, property, brand, sale)
        required: true
        schema:
          type: string
      - name: contactableId
        in: path
        description: Id of an entity
        required: true
        schema:
          type: integer
      - name: personProfileId
        in: path
        description: Id of a person profile
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: Empty response when person profile has been deleted successfully.
          content:
            application/json:
              schema: {}
              example: '[]'
      security:
      - bearerAuth: []
  /api/contacts/by-email:
    post:
      tags:
      - Contact
      summary: Search contacts by email
      description: Searches for contacts matching the provided email address. Can optionally skip sale contacts in the results
      operationId: 49a5258635a63a87c1b3d8c12685c60d
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactSearchByEmailRequest'
      responses:
        '201':
          description: An array with contacts with the given email.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactSearchByEmailResource'
      security:
      - bearerAuth: []
  /api/contacts/by-school:
    post:
      tags:
      - Contact
      summary: Search contacts by school
      description: Initiates an asynchronous search for university contacts by school name and contact type. Results are sent via email to the requesting user
      operationId: 331f5a4226c46cf1e8711d8311e5bcc3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactSearchBySchoolRequest'
      responses:
        '200':
          description: Status code 200
      security:
      - bearerAuth: []
  /api/contacts/{contactableEntity}/{contactableId}/{personProfileId}/email-status:
    put:
      tags:
      - Contact
      summary: Update contact email status
      description: Updates the email validation status for a contact. Used to mark emails as valid, invalid, or pending verification based on validation results
      operationId: 8f017d74ad937910f805f67b00a74108
      parameters:
      - name: contactableEntity
        in: path
        description: Type of an entity (agency, property, brand, sale)
        required: true
        schema:
          type: string
      - name: contactableId
        in: path
        description: Id of an entity
        required: true
        schema:
          type: integer
      - name: personProfileId
        in: path
        description: Id of a person profile
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateContactEmailStatusRequest'
      responses:
        '201':
          description: The updated Person Profile associated to the given entity.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/AgencyContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/PropertyContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/BrandContactShowStoreUpdateResource'
                - $ref: '#/components/schemas/SaleContactShowStoreUpdateResource'
      security:
      - bearerAuth: []
  /api/contacts/email/status/file:
    get:
      tags:
      - Contact
      summary: List email status files
      description: Returns a paginated list of all imported files used for contact email status updates, with filtering and sorting options
      operationId: 9fef12997efe24fad8637880403e5945
      parameters:
      - $ref: '#/components/parameters/ContactEmailStatusFileIndexRequest-user-id'
      - $ref: '#/components/parameters/ContactEmailStatusFileIndexRequest-order-by'
      - $ref: '#/components/parameters/ContactEmailStatusFileIndexRequest-order-direction'
      - $ref: '#/components/parameters/ContactEmailStatusFileIndexRequest-page'
      - $ref: '#/components/parameters/ContactEmailStatusFileIndexRequest-per-page'
      responses:
        '200':
          description: All imported files for contact email status updates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactEmailStatusFileIndexResource'
      security:
      - bearerAuth: []
    post:
      tags:
      - Contact
      summary: Upload email status file
      description: Uploads a CSV file containing email addresses and their validation statuses. The file is stored in S3 and processed asynchronously to update contact email statuses
      operationId: eae7aea8cf5fdbceb8e9b0fc8cb7e245
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ContactEmailStatusFileRequest'
      responses:
        '200':
          description: All imported contact emails and their statuses.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactEmailStatusFileResource'
      security:
      - bearerAuth: []
  /api/contacts/email/status/file/metadata:
    get:
      tags:
      - Contact
      summary: Get email status file metadata
      description: Returns aggregated metadata for all imported email status files, including user information and file statistics
      operationId: eed8babdac423ea49c65826c4e05c145
      responses:
        '200':
          description: Metadata for all imported files for contact email status updates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactEmailStatusFileMetadataResource'
      security:
      - bearerAuth: []
  /api/contacts/email/status/file/{filename}:
    get:
      tags:
      - Contact
      summary: Get email status file download URL
      description: Generates a temporary AWS S3 presigned URL for downloading the specified email status file
      operationId: 6a96bffd311623076b41ffba48a488d3
      parameters:
      - name: filename
        in: path
        schema:
          type: string
      responses:
        '200':
          description: The temporary AWS S3 download url.
      security:
      - bearerAuth: []
  /api/contacts/linkedin/scraping:
    post:
      tags:
      - Contact
      summary: Scrape LinkedIn profiles
      description: Scrape Linkedin profiles by given urls
      operationId: ffeb5fd41ee874b74560bb189e824ad7
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactLinkedinScrapeShowRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactLinkedinScrapedDataResource'
      security:
      - bearerAuth: []
  /api/contacts/{entityType}/{entityId}/employees/linkedin:
    post:
      tags:
      - Contact
      summary: Search LinkedIn employees by entity
      description: Search for LinkedIn employees by company (agency/brand/property) and job title
      operationId: ee9e74b1d0463ba8d8caee61c130b715
      parameters:
      - name: entityType
        in: path
        description: Type of entity (agency, brand, or property)
        required: true
        schema:
          type: string
          enum:
          - agency
          - brand
          - property
      - name: entityId
        in: path
        description: ID of the entity
        required: true
        schema:
          type: integer
      - name: title
        in: query
        description: Job title to search for (optional; when omitted, all employees are returned without a title filter)
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkedinEmployeeSearchResource'
        '202':
          description: AI filtering is being processed asynchronously
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncEmployeeFilteringResource'
        '404':
          description: Entity not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
        '422':
          description: Validation error or missing LinkedIn URLs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
        '502':
          description: Social platforms API error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
      security:
      - bearerAuth: []
  /api/contacts/{entityType}/{entityId}/employees/linkedin/on-demand:
    post:
      tags:
      - Contact
      summary: Request a user-triggered LinkedIn employee scrape
      description: Initiates an async LinkedIn employee scrape for an entity. Returns 202 immediately; a notification is sent when complete.
      operationId: 4af969912d081bdf4a715b3371f65990
      parameters:
      - name: entityType
        in: path
        description: Type of entity (agency, brand, or property)
        required: true
        schema:
          type: string
          enum:
          - agency
          - brand
          - property
      - name: entityId
        in: path
        description: ID of the entity
        required: true
        schema:
          type: integer
      responses:
        '202':
          description: Scrape accepted; notification will be sent on completion
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
        '409':
          description: A scrape is already in progress for this entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
        '422':
          description: Entity is missing LinkedIn URLs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
        '502':
          description: Social platforms API error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
      security:
      - bearerAuth: []
  /api/contacts/primary-email/check:
    get:
      tags:
      - Contact
      summary: Check if a primary email is linked to any contacts
      description: Validates whether a given primary email address is already associated with existing contacts in the system to help prevent duplicate entries
      operationId: 50840c1a93f2e320ab5ffa64cd65f6ff
      parameters:
      - name: email
        in: query
        description: The primary email address to check
        required: true
        schema:
          type: string
          format: email
      responses:
        '200':
          description: Primary email check result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactInformationCheckResource'
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                required:
                - error
                properties:
                  error:
                    type: string
                    example: The email field is required.
                type: object
      security:
      - bearerAuth: []
components:
  schemas:
    PropertyContactShowStoreUpdateResource:
      properties:
        id:
          type: integer
        team_id:
          type: integer
        name:
          type: string
        position:
          type: string
        suggested:
          type: integer
        previous_suggested:
          type: integer
        approved:
          type: boolean
        notes:
          type: string
        birthday:
          type: string
          deprecated: true
        profile_picture:
          type: string
        work_phone:
          type: string
        work_phone_ext:
          type: string
        email:
          type: string
        previous_email_status:
          type: string
        previous_email_status_updated_at:
          type: string
          format: date-time
        email_status:
          type: string
        email_status_updated_at:
          type: string
          format: date-time
        mail_code:
          type: string
        linkedin:
          description: Linkedin profile url
          type: string
        facebook:
          description: Facebook profile url
          type: string
        twitter:
          description: Twitter profile url
          type: string
        instagram:
          description: Instagram profile url
          type: string
        synopsys:
          type: string
          deprecated: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        tasks:
          type: array
          items:
            properties:
              id:
                type: integer
              url:
                type: string
            type: object
        linkedin_data:
          $ref: '#/components/schemas/ContactLinkedinData'
      type: object
    ContactEmailStatusFileMetadataResource:
      properties:
        users:
          type: array
          items:
            allOf:
            - properties:
                id:
                  type: integer
                text:
                  type: string
              type: object
      type: object
    UpdateContactRequest:
      properties:
        name:
          type: string
        email:
          type: string
          format: email
        companies:
          description: Only for Agency contacts. An array with companies associated with the agency contact.
          type: array
          items:
            properties:
              id:
                type: integer
              name:
                type: string
            type: object
        properties:
          description: Only for Agency contacts. An array with properties associated with the agency contact.
          type: array
          items:
            properties:
              id:
                type: integer
              name:
                type: string
            type: object
        position:
          type: string
        profile_picture:
          type: string
        work_phone:
          type: string
        work_phone_ext:
          type: string
        email_status:
          type: string
        email_status_updated:
          type: boolean
        manual_email_status:
          type: string
        manual_email_status_updated_at:
          type: string
          format: date-time
        linkedin:
          type: string
        facebook:
          type: string
        twitter:
          type: string
        instagram:
          type: string
        notes:
          type: string
        suggested:
          type: boolean
        previous_suggested:
          type: boolean
        linkedin_data:
          type: object
        contact_status_id:
          type: integer
      type: object
    UpdateContactEmailStatusRequest:
      required:
      - id
      - email_status
      - email_status_updated
      properties:
        id:
          type: integer
        email_status:
          type: string
        email_status_updated:
          type: boolean
      type: object
    ContactEmailStatusFileIndexResource:
      type: array
      items:
        properties:
          user_name:
            type: string
          filename:
            type: string
          original_filename:
            type: string
          created_at:
            type: string
        type: object
    ReportBadEmailRequest:
      required:
      - person_profile_id
      - entity_id
      - entity_type
      properties:
        person_profile_id:
          description: The person profile ID
          type: integer
        entity_id:
          description: The entity ID (agency, brand, or property)
          type: integer
        entity_type:
          description: The type of entity
          type: string
          enum:
          - agency
          - brand
          - property
      type: object
    ContactCreateSaleRequest:
      required:
      - person_profile_ids
      - sale_list_id
      properties:
        person_profile_ids:
          type: array
          items:
            type: integer
        sale_list_id:
          type: integer
        source_entity_type:
          type:
          - string
          - 'null'
          enum:
          - brand
          - property
          - agency
      type: object
    AgencyContact:
      properties:
        id:
          type: integer
        agency_id:
          type: integer
        name:
          type: string
        position:
          type: string
        suggested:
          type: integer
        previous_suggested:
          type: integer
        approved:
          type: boolean
        notes:
          type: string
        birthday:
          type: string
          deprecated: true
        profile_picture:
          type: string
        work_phone:
          type: string
        work_phone_ext:
          type: string
        email:
          type: string
        previous_email_status:
          type: string
        previous_email_status_updated_at:
          type: string
          format: date-time
        email_status:
          type: string
        email_status_updated_at:
          type: string
          format: date-time
        mail_code:
          type: string
        linkedin:
          description: Linkedin profile url
          type: string
        facebook:
          description: Facebook profile url
          type: string
        twitter:
          description: Twitter profile url
          type: string
        instagram:
          description: Instagram profile url
          type: string
        synopsys:
          type: string
          deprecated: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        companies_count:
          description: Number of companies to which the agency contact is a

# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sponsorunited/refs/heads/main/openapi/sponsorunited-contact-api-openapi.yml