Tidelift Packages API

The Packages API from Tidelift — 6 operation(s) for packages.

OpenAPI Specification

tidelift-packages-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 1.2.1
  title: Tidelift External Alignments Packages API
  x-logo:
    url: /docs/assets/tidelift_logo.png
    altText: Tidelift
  license:
    name: Proprietary
servers:
- url: https://api.tidelift.com/external-api
security:
- BearerAuth:
  - user
  - project
  - organization
tags:
- name: Packages
paths:
  /v1/packages:
    get:
      x-tidelift-api-meta:
        product-area: intelligence-api
        access-level: small
        visibility: public
      tags:
      - Packages
      security:
      - BearerAuth:
        - user
        - organization
      operationId: getPackages
      x-rails-controller: packages#index
      summary: Gets a paginated list of packages with at least one filter applied
      description: Gets a paginated list of packages with at least one filter applied
      parameters:
      - name: lifted
        description: Filter parameter. Filters packages to only those that are lifted or non-lifted.
        in: query
        required: false
        schema:
          type: boolean
      - name: source_repository_url
        description: Filter parameter. Filters packages to only those associated with the url-encoded source repository url.
        in: query
        required: false
        schema:
          type: string
      - name: searchable_name
        description: Filter parameter. Filters packages to those whose name contains the given string.
        in: query
        required: false
        schema:
          type: string
      - name: platform
        description: Filter parameter. Filters packages to those matching the given platform.
        in: query
        required: false
        schema:
          type: string
      - $ref: '#/components/parameters/pagePaginationParam'
      - $ref: '#/components/parameters/perPagePaginationParam'
      responses:
        '200':
          description: The paginated list of packages
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PaginationEnvelope'
                - $ref: '#/components/schemas/PackageList'
        '400':
          description: Packages must be filtered.
        '401':
          $ref: '#/components/responses/401Error'
        '404':
          description: Not Found - SourceRepository
  /v1/packages/lookup:
    post:
      x-tidelift-api-meta:
        product-area: intelligence-api
        access-level: small
        visibility: public
      tags:
      - Packages
      security:
      - BearerAuth:
        - user
        - organization
      operationId: lookup
      x-rails-controller: packages#lookup
      summary: Show details of a set of packages.
      description: Show details of a set of packages
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - type: object
                title: Package hashes
                properties:
                  packages:
                    description: The packages being looked up
                    type: array
                    items:
                      $ref: '#/components/schemas/Package'
                additionalProperties: false
                required:
                - packages
              - type: object
                title: PURLs
                properties:
                  purls:
                    description: Array of properly formatted PURLs
                    type: array
                    items:
                      type: string
                      example: pkg:pypi/urllib3
                additionalProperties: false
                required:
                - purls
      responses:
        '200':
          description: Details of packages found from the search and any package names that had no results.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                - packages
                - missing_results
                properties:
                  packages:
                    type: array
                    items:
                      $ref: '#/components/schemas/PackageDetail'
                  missing_results:
                    type: array
                    items:
                      $ref: '#/components/schemas/PackageWithHint'
        '400':
          description: Request body format incorrect or more than 1000 packages requested.
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          description: 403 Forbidden
  /v1/packages/eol-packages:
    post:
      x-tidelift-api-meta:
        product-area: intelligence-api
        access-level: small
        visibility: public
      tags:
      - Packages
      security:
      - BearerAuth:
        - user
        - organization
      operationId: eol_packages
      x-rails-controller: packages#eol_packages
      summary: Show end-of-life details for a set of packages.
      description: Show end-of-life details for a set of packages
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - type: object
                title: Package hashes
                properties:
                  packages:
                    description: The packages being looked up
                    type: array
                    items:
                      $ref: '#/components/schemas/Package'
                additionalProperties: false
                required:
                - packages
              - type: object
                title: PURLs
                properties:
                  purls:
                    description: Array of properly formatted PURLs
                    type: array
                    items:
                      type: string
                      example: pkg:pypi/urllib3
                additionalProperties: false
                required:
                - purls
      responses:
        '200':
          description: Details of packages found from the search and any package names that had no results.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                - packages
                - missing_results
                properties:
                  packages:
                    type: array
                    items:
                      type: object
                      additionalProperties: false
                      properties:
                        platform:
                          type: string
                        name:
                          type: string
                        purl:
                          type: string
                        package_is_not_eol:
                          $ref: '#/components/schemas/PackageCheckStatus'
                        package_eol_indicators:
                          type: object
                          additionalProperties: false
                          properties:
                            eol_reference_found:
                              type: boolean
                            effective_on:
                              type: string
                              format: date
                              nullable: true
                            reference_url:
                              type: string
                              nullable: true
                            package_renamed_to:
                              type: array
                              items:
                                type: string
                            no_planned_maintenance:
                              type: boolean
                            reason:
                              type: string
                        maintenance_plan:
                          type: object
                          additionalProperties: false
                          properties:
                            plan_type:
                              type: string
                            major_version_count:
                              type: integer
                              nullable: true
                            minor_version_count:
                              type: integer
                              nullable: true
                            external_url:
                              type: string
                              nullable: true
                  missing_results:
                    type: array
                    items:
                      $ref: '#/components/schemas/PackageWithHint'
        '400':
          description: Request body format incorrect or more than 1000 packages requested.
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          description: 403 Forbidden
  /v1/packages/updates-since:
    get:
      x-tidelift-api-meta:
        product-area: intelligence-api
        access-level: small
        visibility: public
      tags:
      - Packages
      security:
      - BearerAuth:
        - user
        - organization
      operationId: updates_since
      x-rails-controller: packages#updates_since
      summary: Show packages that have updated data since the given datetime.
      description: Show packages that have updated data since the given datetime.
      parameters:
      - $ref: '#/components/parameters/pagePaginationParam'
      - $ref: '#/components/parameters/perPagePaginationParam'
      - in: query
        name: date
        schema:
          type: string
          format: datetime
        required: true
        description: The datetime to search for changes on or after
      responses:
        '200':
          description: Package platforms and names that have been updated since the passed date.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PaginationEnvelope'
                - type: object
                  additionalProperties: false
                  required:
                  - results
                  properties:
                    results:
                      type: array
                      items:
                        type: object
                        required:
                        - platform
                        - name
                        - purl
                        - last_changed_on
                        properties:
                          platform:
                            type: string
                          name:
                            type: string
                          purl:
                            type: string
                          last_changed_on:
                            type: string
                            format: datetime
                            description: When the package record last was updated by new information
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          description: 403 Forbidden
  /v1/packages/{package_platform}/{package_name}:
    get:
      x-tidelift-api-meta:
        product-area: intelligence-api
        access-level: small
        visibility: public
      tags:
      - Packages
      security:
      - BearerAuth:
        - user
        - organization
      operationId: showPackage
      x-rails-controller: packages#show
      summary: Show details of a specific package.
      description: Show details of a specific package
      parameters:
      - $ref: '#/components/parameters/packagePlatformParam'
      - $ref: '#/components/parameters/packageNameParam'
      responses:
        '200':
          description: Details of the package
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PackageDetail'
        '400':
          description: Parameters specified are not correct, or the package is from an unsupported platform.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          description: 403 Forbidden
        '404':
          description: Package not found
  /v1/packages/{package_platform}/{package_name}/attestation-statement:
    get:
      x-tidelift-api-meta:
        product-area: intelligence-api
        access-level: small
        visibility: public
      tags:
      - Packages
      security:
      - BearerAuth:
        - user
        - organization
      operationId: getPackageAttestationStatement
      x-rails-controller: packages#attestation_statement
      summary: Show the attestation statement for a specific package.
      description: Show the attestation statement for a specific package
      parameters:
      - $ref: '#/components/parameters/packagePlatformParam'
      - $ref: '#/components/parameters/packageNameParam'
      responses:
        '200':
          description: Details of the package
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PackageAttestationStatement'
        '400':
          description: Parameters specified are not correct, or the package is from an unsupported platform.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          description: 403 Forbidden
        '404':
          description: Package not found
components:
  schemas:
    PackageDetailRelease:
      type: object
      additionalProperties: false
      required:
      - version
      - published_at
      properties:
        version:
          type: string
          nullable: true
        published_at:
          type: string
          nullable: true
          format: date-time
    Package:
      type: object
      additionalProperties: false
      required:
      - platform
      - name
      properties:
        platform:
          type: string
        name:
          type: string
    PackageAppearsMaintainedQualityCheck:
      description: The project lacks auto-detectable evidence of recent activity
      type: object
      additionalProperties: false
      required:
      - status
      - recommendation_status
      - additional_data
      properties:
        status:
          $ref: '#/components/schemas/PackageCheckStatus'
        recommendation_status:
          $ref: '#/components/schemas/QualityCheckRecommendationStatus'
        additional_data:
          oneOf:
          - $ref: '#/components/schemas/PackageAppearsMaintainedAdditionalData--maintenance-appearance'
          - $ref: '#/components/schemas/PackageAppearsMaintainedAdditionalData--maintenance-assessment'
          - $ref: '#/components/schemas/PackageAppearsMaintainedAdditionalData--is-lifted'
          - type: object
            nullable: true
    PackageDetail:
      type: object
      additionalProperties: false
      required:
      - name
      - platform
      - purl
      - description
      - tidelift_recommendation
      - alternative_packages
      - security_policy_url
      - versioning_scheme
      - contributors_count
      - sdlc_policy
      - sdlc_evidence
      - repository
      - repository_statistics
      - license
      - latest_release
      - latest_stable_release
      - latest_recommended_release
      - releases
      - quality_checks
      - last_changed_on
      - is_lifted
      - openssf_scorecard
      properties:
        platform:
          type: string
          description: The package manager platform, all lowercase.
          example:
          - maven
          - npm
          - pypi
          - rubygems
          - go
          - nuget
        name:
          type: string
          description: The canonical name of the package (may be adjusted for casing or hyphen vs underscore for example)
        purl:
          type: string
          description: An identifier for the package following the [package URL (purl) specification](https://github.com/package-url/purl-spec)
        description:
          type: string
          nullable: true
          description: Package description taken from the upstream package manager data
        tidelift_recommendation:
          $ref: '#/components/schemas/TideliftPackageRecommendation'
        tidelift_recommendation_reasons:
          $ref: '#/components/schemas/TideliftPackageRecommendationReasons'
        alternative_packages:
          type: array
          description: List of alternative packages that could be used in place of this package
          items:
            type: object
            additionalProperties: false
            required:
            - name
            - type
            properties:
              name:
                type: string
                description: Name of the other package
              type:
                type: string
                description: How the alternative package relates to the original package
                enum:
                - rename
                - alternative
        last_changed_on:
          type: string
          format: date
          nullable: true
          description: When the package record last was updated by new information
        security_policy_url:
          type: string
          nullable: true
          description: If available, a url for the package's upstream security reporting policy
        versioning_scheme:
          type: string
          description: The version numbering rules that the package intends to use; Tidelift may add new possible values for this field over time
          enum:
          - maven
          - pep440
          - osgi
          - semver
          - calver
          - other
        contributors_count:
          type: integer
          nullable: true
          description: Number of contributors to the upstream source repository, if available
        package_manager_url:
          type: string
          nullable: true
          description: Link to this package on the package manager website
          example:
          - https://www.npmjs.com/package/for-each-key
          - https://pypi.org/project/Flask-Sockets/
        sdlc_policy:
          type: string
          nullable: true
          description: If available, a URL where the project explains its software development lifecycle policy (for example, which release streams are still receiving security updates)
        sdlc_evidence:
          type: string
          nullable: true
          description: If available, a URL that may help figure out the project's software development lifecycle policies
        repository:
          type: object
          description: The source code repository where the package is maintained
          additionalProperties: false
          required:
          - url
          - source
          properties:
            url:
              type: string
              nullable: true
            source:
              type: string
              enum:
              - human_verified
              - package_manager
        repository_statistics:
          type: object
          nullable: true
          description: Statistics about the package's source code repository that can be used to assess upstream activity and maintenance
          additionalProperties: false
          required:
          - last_52_weeks_contributors
          - last_commit_at
          - one_year_closed_pull_requests
          - one_year_total_pull_requests
          - one_year_closed_issues
          - one_year_total_issues
          - status
          properties:
            last_52_weeks_contributors:
              type: integer
              nullable: true
              description: Number of distinct contributors in the past year
            last_commit_at:
              type: string
              format: date
              nullable: true
              description: Date of the last commit
            one_year_closed_pull_requests:
              type: integer
              nullable: true
              description: How many pull requests have been closed in the past year
            one_year_total_pull_requests:
              type: integer
              nullable: true
              description: How many pull requests were opened in the last year
            one_year_closed_issues:
              type: integer
              nullable: true
              description: How many issues have been closed in the last year
            one_year_total_issues:
              type: integer
              nullable: true
              description: How many issues were opened in the last year
            status:
              type: string
              enum:
              - Active
              - Unmaintained
              - Removed
              description: Source repositories may be active, archived (Unmaintained), or deleted (Removed); Tidelift may add other statuses in the future
        license:
          type: object
          required:
          - expression
          - source
          properties:
            expression:
              type: string
              nullable: true
              description: An [SPDX expression](https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/)
              example: GPL-3.0 OR MIT
            source:
              type: string
              nullable: true
              enum:
              - corrected_by_tidelift
              - researched_by_tidelift
              - valid_spdx
              - tidelift_researching
              - overridden_by_organization
              - verified_by_maintainer
              - unknown
              description: 'The source of the license information, if the license is known.

                '
        latest_release:
          allOf:
          - $ref: '#/components/schemas/PackageDetailRelease'
          - description: 'The latest release of the package according to version number sort

              (NOT according to time, for example a security update for an old

              release stream cannot be the latest even if it was the most recently published)

              '
        latest_stable_release:
          allOf:
          - $ref: '#/components/schemas/PackageDetailRelease'
          - description: 'The latest release of the package according to version number sort, which is not a prerelease version (excludes betas, release candidates, etc.)

              '
        latest_recommended_release:
          allOf:
          - $ref: '#/components/schemas/PackageDetailRelease'
          - description: 'The latest release of the package ignoring releases with known problems

              '
        is_lifted:
          type: boolean
          description: Whether Tidelift partners with the maintainers of this package
        releases:
          type: array
          description: An array of all known public releases of the package
          items:
            type: object
            additionalProperties: false
            required:
            - version
            - published_at
            - tidelift_recommendation
            properties:
              version:
                type: string
                description: The release's name
              published_at:
                type: string
                nullable: true
                format: date-time
                description: Time that the release was published to the package manager
              tidelift_recommendation:
                $ref: '#/components/schemas/TideliftReleaseRecommendation'
        openssf_scorecard:
          type: object
          nullable: true
          additionalProperties: false
          description: The latest [OpenSSF Scorecard](https://github.com/ossf/scorecard) for the package, if available
          required:
          - last_checked_at
          - overall
          - checks
          properties:
            last_checked_at:
              type: string
              format: date-time
              description: When the scorecard was last refreshed
            overall:
              type: object
              additionalProperties: false
              required:
              - score
              properties:
                score:
                  type: number
                  format: float
                  description: Overall score for the latest scorecard
            checks:
              type: array
              description: Individual OpenSSF scorecard checks. See [OpenSSF Scorecard documentation](https://github.com/ossf/scorecard?tab=readme-ov-file#scorecard-checks) for details
              items:
                type: object
                additionalProperties: false
                required:
                - check_name
                - score
                - reason
                properties:
                  check_name:
                    type: string
                    description: Name of the individual check
                  score:
                    type: number
                    format: float
                    description: Score for the individual cehck
                  reason:
                    type: string
                    description: Supporting information for the individual check score
        quality_checks:
          allOf:
          - $ref: '#/components/schemas/QualityChecks'
          - description: 'Quality checks are boolean indicators of package quality (but the boolean can be `noassertion` or `pending` if we don''t have the data yet).

              A `pending` check is in the process of being recomputed. A `noassertion` check may be missing needed data and require manual research.

              (Tidelift can often help fill in `noassertion` checks, let us know what you need.)

              '
    PackageAppearsMaintainedAdditionalData--maintenance-assessment:
      type: object
      additionalProperties: false
      required:
      - reason
      - is_maintained
      - is_maintained_updated_at
      properties:
        reason:
          type: string
          enum:
          - package_is_maintained_assessed_true
          - package_is_maintained_assessed_false
          description: Tidelift has manually assessed this package's maintenance status.
        is_maintained:
          type: boolean
          description: The manual assessment of the package's maintenance status.
        is_maintained_updated_at:
          type: string
          format: date-time
          description: The time at which the package's maintenance status was manually assessed.
    TideliftReleaseRecommendation:
      type: string
      nullable: true
      enum:
      - recommended
      - not_recommended
      - not_assessed
    QualityCheckRecommendationStatus:
      type: string
      enum:
      - success
      - warning
      - issue
      - unknown
    GenericQualityCheck:
      type: object
      additionalProperties: false
      required:
      - status
      - recommendation_status
      - additional_data
      properties:
        status:
          $ref: '#/components/schemas/PackageCheckStatus'
        recommendation_status:
          $ref: '#/components/schemas/QualityCheckRecommendationStatus'
        additional_data:
          type: object
          nullable: true
    PackageIsNotEOLQualityCheck:
      description: The project does not have an active end-of-life notification.
      type: object
      additionalProperties: false
      required:
      - status
      - recommendation_status
      - additional_data
      properties:
        status:
          $ref: '#/components/schemas/PackageCheckStatus'
        recommendation_status:
          $ref: '#/components/schemas/QualityCheckRecommendationStatus'
        additional_data:
          type: object
          additionalProperties: false
          required:
          - reason
          - eol_reference_found
          - effective_on
          - reference_url
          - package_renamed_to
          - no_planned_maintenance
          properties:
            reason:
              type: string
              enum:
              - package_repository_is_unmaintained
              - package_is_renamed
              - package_has_future_end_of_life
              - package_has_no_known_end_of_life
              - package_is_unknown
              description: The reason Tidelift has decided the package's end-of-life status.
            eol_reference_found:
              type: boolean
              description: If Tidelift has a known end-of-life effective date from a published source.
            effective_on:
              type: string
              format: date
              nullable: true
              description: The ISO 8601 formatted date at which the package will be considered end-of-life.
            reference_url:
              type: string
              nullable: true
              description: The URL which indicates that the package will be end-of-life.
            package_renamed_to:
              description: The packages that this package was renamed to.
              type: array
              items:
                type: object
                properties:
                  platform:
                    type: string
                  name:
                    type: string
            no_planned_maintenance:
              type: boolean
              description: If the package's deprecation status and repository activity indicates no further updates should be expected.
    PackageList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/PackageWithPurl'
    PackageWithHint:
      allOf:
      - $ref: '#/components/schemas/Package'
      - type: object
        description: An optional hint, which might be the reason the package wasn't found.
        additionalProperties: false
        properties:
          hint:
            type: string
    PackageCheckStatus:
      type: string
      enum:
      - passed
      - not_passed
      - noassertion
      - pending
    PackageAppearsMaintainedAdditionalData--maintenance-appearance:
      type: object
      additionalProperties: false
      required:
      - reason
      - contributors_in_past_year
      - contributors_in_past_year_count
      - frequent_package_activity
      - frequent_package_activity_one_year_closed_issues_count
      - frequent_package_activity_one_year_total_issues_count
      - frequent_package_activity_one_year_closed_pull_requests_count
      - frequent_package_activity_one_year_total_pull_requests_count
      - recent_commits
      - recent_commits_date
      - recent_latest_release
      - recent_latest_release_date
      - repository_not_marked_unmaintained
      - repository_not_marked_unmaintained_status
      properties:
        reason:
          type: string
          enum:
          - package_appears_maintained
          - package_appears_unmaintained
          description: 'Tidelift checks upstream source repository and release activity to determine maintenace activity for the package.

            If the source repository has been marked archived or unmaintained, it fails this check.

            Otherwise, Tidelift considers a package to appear unmaintained if all of the following are `false`: `contributors_in_past_year`

            `frequent_package_activity`, `recent_commits`, and `recent_latest_release`.

            '
        contributors_in_past_year:
          type: boolean
          description: Whether there has been any contributors to the package's source repository in the past year.
          nullable: true
        contributors_in_past_year_count:
          type: number
          description: How many contributors there were to the package's source repository in the past year.
          nullable: true
        frequent_package_activity:
          type: boolean
          description: Whether at least 1/3 of issues and pull requests must have been closed in the past year.
          nullable: true
        frequent_package_activity_one_year_closed_issues_count:
          type: boolean
          description: Number of closed issues on the package's source repository in the past year.
          nullable: true
        frequent_package_activity_one_year_total_issues_count:
          type: boolean
          description: Total number of issues on the package's source repository in the past year.
          nullable: true
        frequent_package_activity_one_year_closed_pull_requests_count:
          type: boolean
          description: Number of closed

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