Tribute Store Obituaries API

Push obituary cases - the deceased, obituary text, service events (visitation, service), and a base64 photo thumbnail - via POST /api/external-case/post, using your CaseId as an add/update key. Each success returns a Tribute Store OBITUARY_ID and auto-provisions a personalized Tribute Store page reachable at the store base URL with ?oId={OBITUARY_ID}. Retrieve a single obituary or list obituary summaries with OData paging/sorting. Endpoints modeled from the public Tribute Store API Documentation 1.1.

OpenAPI Specification

tributetech-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Tribute Store API
  description: >-
    The Tribute Store API is a REST-style JSON API from Tribute Technology for
    partners who integrate funeral-home case-management systems with the Tribute
    Store. It lets an integrator authenticate a funeral home, push its serving
    locations (rooftops), and push obituary cases (the deceased, their obituary
    text, service events, and a photo). Each successfully posted obituary
    automatically provisions a personalized Tribute Store page for the deceased,
    reachable at the store base URL with an ?oId={OBITUARY_ID} query string.


    Access is partner-gated. Tribute Technology issues each integrator a
    {Provider} credential plus an IP allowlist, and issues each funeral home a
    {HostName, UserName, Password} triple. The triple is exchanged at the token
    endpoint for a short-lived HTML bearer token that scopes all subsequent
    requests to that funeral home.


    This document was modeled from the public "Tribute Store API Documentation
    1.1" (updated March 25, 2019). Field lists and endpoints are taken verbatim
    from that document; response object schemas beyond the documented sample
    fields are omitted rather than fabricated.
  version: '1.1'
  contact:
    name: Tribute Technology
    url: https://www.tributetech.com
servers:
  - url: https://api.tributecenteronline.com
    description: Production
  - url: https://api.demo.tributecenteronline.com
    description: Development / Demo
security:
  - bearerAuth: []
tags:
  - name: Authentication
    description: Exchange a funeral-home credential triple for a bearer token.
  - name: Serving Locations
    description: Funeral-home rooftops (serving locations) that obituaries attach to.
  - name: Obituaries
    description: Obituary cases pushed to the Tribute Store, and their retrieval.
paths:
  /token/:
    post:
      operationId: createToken
      tags:
        - Authentication
      summary: Request a bearer token for a funeral home
      description: >-
        Exchange a funeral home's {HostName, UserName, Password} triple for a
        short-lived HTML bearer token. The HostName is supplied in the f-hostname
        header and the integrator's Provider credential in the f-provider header;
        the username and password are supplied in a form-urlencoded body with
        grant_type=password and scope=external-api. The returned token identifies
        the funeral home on all other endpoints.
      security: []
      parameters:
        - name: f-hostname
          in: header
          required: true
          schema:
            type: string
          description: The funeral home HostName set up for your Provider.
        - name: f-provider
          in: header
          required: true
          schema:
            type: string
          description: Your integrator Provider credential string.
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
                - grant_type
                - username
                - password
                - scope
              properties:
                grant_type:
                  type: string
                  enum:
                    - password
                username:
                  type: string
                password:
                  type: string
                  format: password
                scope:
                  type: string
                  enum:
                    - external-api
      responses:
        '200':
          description: Token issued.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '400':
          description: Authorization failure (for example unsupported_grant_type).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenError'
  /api/external-location/post:
    post:
      operationId: postExternalLocation
      tags:
        - Serving Locations
      summary: Create or update a serving location (rooftop)
      description: >-
        Push a funeral-home serving location (rooftop). The Id is your
        application's unique identifier for the location; posting a previously
        used Id updates the existing record, a new Id creates one. Returns the
        Tribute Store SERVING_LOCATION_ID on success.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalLocation'
      responses:
        '200':
          description: The Tribute Store serving location identifier.
          content:
            application/json:
              schema:
                type: integer
                description: SERVING_LOCATION_ID
        '400':
          description: Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Message'
  /api/locations/{servingLocationId}:
    get:
      operationId: getLocation
      tags:
        - Serving Locations
      summary: Get a serving location
      description: >-
        Retrieve the current information stored about a serving location by its
        Tribute Store SERVING_LOCATION_ID. ShowOnWebSite corresponds to
        CouldServeObituary on the POST.
      parameters:
        - name: servingLocationId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The serving location record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Location'
  /api/locations/:
    get:
      operationId: listLocations
      tags:
        - Serving Locations
      summary: List all serving locations
      description: >-
        Return a JSON array of all serving locations for the authenticated
        funeral home. Not recommended for the demo user.
      responses:
        '200':
          description: Array of serving locations.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Location'
  /api/locations/getlocationtypes:
    get:
      operationId: getLocationTypes
      tags:
        - Serving Locations
      summary: List location types
      description: Return the predefined location type values.
      responses:
        '200':
          description: Array of location types.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LocationType'
              example:
                - Id: 1
                  Name: Cemetery
                - Id: 2
                  Name: Church
                - Id: 3
                  Name: Funeral Home
                - Id: 4
                  Name: Memorial
  /api/external-case/post:
    post:
      operationId: postExternalCase
      tags:
        - Obituaries
      summary: Create or update an obituary case
      description: >-
        Push an obituary case for the deceased, including name, birth/death
        dates, obituary text, service events, and an optional base64 photo
        thumbnail. CaseId is your unique identifier and acts as an add/update
        key. Returns the Tribute Store OBITUARY_ID on success.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalCase'
      responses:
        '200':
          description: The Tribute Store obituary identifier.
          content:
            application/json:
              schema:
                type: integer
                description: OBITUARY_ID
        '400':
          description: Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Message'
  /api/obituaries/GetObituary/{obituaryId}:
    get:
      operationId: getObituary
      tags:
        - Obituaries
      summary: Get an obituary
      description: >-
        Retrieve the fully specified obituary object by its Tribute Store
        OBITUARY_ID (returned from a successful external-case post). The full
        object schema is not enumerated in the source documentation.
      parameters:
        - name: obituaryId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The fully specified obituary object.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
  /api/obituaries:
    get:
      operationId: listObituaries
      tags:
        - Obituaries
      summary: List obituary summaries
      description: >-
        Return a JSON array of obituary summary objects (id, image URL, name,
        birth/death dates). Supports standard OData query options for paging and
        sorting.
      parameters:
        - name: $orderby
          in: query
          required: false
          schema:
            type: string
          description: 'OData ordering, for example: DeathDate desc'
        - name: $skip
          in: query
          required: false
          schema:
            type: integer
        - name: $top
          in: query
          required: false
          schema:
            type: integer
      responses:
        '200':
          description: Array of obituary summary objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ObituarySummary'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        HTML bearer token obtained from POST /token/. Include as
        Authorization: Bearer {TOKEN}.
  schemas:
    TokenResponse:
      type: object
      properties:
        access_token:
          type: string
        token_type:
          type: string
          example: bearer
        expires_in:
          type: integer
          description: Token lifetime in seconds.
    TokenError:
      type: object
      properties:
        error:
          type: string
          example: unsupported_grant_type
    Message:
      type: object
      properties:
        Message:
          type: string
    ExternalLocation:
      type: object
      required:
        - Id
        - LocationType
        - Name
      properties:
        Id:
          type: string
          description: Unique identifier of this location from your application.
        LocationType:
          type: string
          enum:
            - Cemetery
            - Church
            - Funeral Home
            - Memorial
            - Other
          description: Should always be "Funeral Home" for obituary attachment.
        Name:
          type: string
          description: Funeral home company/branch name.
        Address1:
          type: string
        Address2:
          type: string
        City:
          type: string
        State:
          type: string
          description: Two-letter abbreviation.
        Country:
          type: string
          enum:
            - US
            - CA
        Phone:
          type: string
        PostalCode:
          type: string
          description: US ZIP or Canadian postal code.
        WebSite:
          type: string
        Email:
          type: string
        Fax:
          type: string
        CouldServeObituary:
          type: boolean
          description: Whether obituaries will be attached. Should be true.
    Location:
      type: object
      properties:
        Id:
          type: integer
        LocationTypeId:
          type: integer
          description: 3 for Funeral Home.
        Name:
          type: string
        AddressId:
          type: integer
        WebSite:
          type: string
        Email:
          type: string
        ShowOnWebSite:
          type: boolean
          description: Equivalent to CouldServeObituary on the POST.
        Address1:
          type: string
        Address2:
          type: string
        City:
          type: string
        State:
          type: string
        PostalCode:
          type: string
        Country:
          type: string
    LocationType:
      type: object
      properties:
        Id:
          type: integer
        Name:
          type: string
    ExternalCase:
      type: object
      required:
        - CaseId
        - FirstName
        - LastName
        - DeathDate
      properties:
        CaseId:
          type: string
          description: Your unique identifier for the obituary (add/update key).
        ProviderName:
          type: string
          description: Your Provider credential string.
        FirstName:
          type: string
        LastName:
          type: string
        BirthDate:
          type: string
          format: date-time
        DeathDate:
          type: string
          format: date-time
        Services:
          type: array
          items:
            $ref: '#/components/schemas/ServiceEvent'
          description: Service events such as visitation or service.
        Obituary:
          type: string
          description: The obituary text of the deceased.
        Photo:
          type: string
          description: Base64-encoded 60x70 pixel thumbnail photo of the deceased.
        IsPhotoChanged:
          type: boolean
          default: false
        IsPublished:
          type: boolean
    ServiceEvent:
      type: object
      required:
        - Type
        - StartTime
        - Location
      properties:
        Type:
          type: string
          description: Event type, for example Visitation.
        StartTime:
          type: string
          format: date-time
        EndTime:
          type: string
          format: date-time
        Location:
          $ref: '#/components/schemas/ServiceLocation'
    ServiceLocation:
      type: object
      required:
        - Name
        - Address1
        - City
        - State
        - PostalCode
        - Phone
      properties:
        Name:
          type: string
        Address1:
          type: string
        Address2:
          type: string
        City:
          type: string
        State:
          type: string
        PostalCode:
          type: string
        Phone:
          type: string
    ObituarySummary:
      type: object
      properties:
        Id:
          type: integer
          description: The Tribute Store OBITUARY_ID.
        ImageUrl:
          type: string
        Name:
          type: string
        FirstName:
          type: string
        MiddleName:
          type: string
        LastName:
          type: string
        BirthDate:
          type: string
          format: date-time
        DeathDate:
          type: string
          format: date-time