{
  "api_contract": "sourcey.catalog-api/v1",
  "release_id": "sha256:1042b2f7b6130b564b0059e00560960c50db2d7578dfa5178d401e5d14d9b11f",
  "artifact_sha256": "sha256:a695609a4d6872bd447e3125d912e7f84e605d0f064df0b08e62a9f24d9d2e80",
  "data": {
    "revision_contract": "sourcey.agent-readiness-revision/v1alpha1",
    "agent_readiness_profile_id": "arp_01kzf0m4xa1m8yr7cf5q2b9vn6",
    "entity_id": "ent_01kyh8fpe3new9gxd18qs3bskh",
    "scope": {
      "product": {
        "key": "hubspot-crm-api",
        "name": "HubSpot CRM API"
      },
      "funnel": {
        "key": "api-integration-lifecycle",
        "name": "API integration lifecycle"
      }
    },
    "catalog_binding": {
      "base_release_id": "sha256:5082ec07047a2324648f569d234cc64342ce2707b2f3d77fde8fc06af517cee6",
      "entity_revision_digest": "sha256:d834f446f341ff50dd565416a3b8489b405fe189c597bcfa66ca67249314dd03"
    },
    "declaration_revision_digest": "sha256:a1675efc4153495e37a4b55f13314a0146879a63aa12ef8e797471cbbae9cd2c",
    "declaration": {
      "declaration_id": "declaration_hubspot_crm_api_integration_lifecycle",
      "provenance": {
        "repository": "sourcey/agent-ready-services",
        "commit": "00f00edd170194cc1cf3081b97b218474537ffdb",
        "path": "vendors/hu/hubspot.yaml",
        "git_blob_oid": "10ee382e13968d45b38555368c898b1697477a07",
        "blob_digest": "sha256:0abad36b327c2a292df5a4399992212cbfe2fbe92ba52355f570629c0c352716"
      },
      "status": "community_declared"
    },
    "lifecycle": "active",
    "effective_from": "2026-08-08T02:06:59.735Z",
    "signals": [
      {
        "stage": "evaluate",
        "signal_code": "decidable_eligibility",
        "value": "no",
        "observed_at": "2026-08-07T21:13:27.297Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "service-terms"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "negative_coverage": {
          "kind": "complete-response-inspection",
          "scope": "exact-resource",
          "covered_surfaces": [
            {
              "node_kind": "resource",
              "node_id": "service-terms"
            }
          ]
        },
        "note": "Public eligibility criteria for the HubSpot API integration platform depend on user-specific agreement choices and partner/customer classifications that cannot be fully decided by an automated agent alone."
      },
      {
        "stage": "evaluate",
        "signal_code": "machine_discovery",
        "value": "yes",
        "observed_at": "2026-08-07T21:13:30.961Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-overview"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "HubSpot's developer documentation index and API reference entrypoints provide machine-discoverable documentation and structure (including llms.txt and structured metadata)."
      },
      {
        "stage": "evaluate",
        "signal_code": "readable_pricing",
        "value": "yes",
        "observed_at": "2026-08-08T00:14:20.635Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "pricing"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "HubSpot explicitly documents that developer accounts and API access for building and testing integrations are free without requiring a paid subscription."
      },
      {
        "stage": "evaluate",
        "signal_code": "structured_terms",
        "value": "partial",
        "observed_at": "2026-08-07T21:13:27.297Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "service-terms"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "negative_coverage": {
          "kind": "complete-response-inspection",
          "scope": "exact-resource",
          "covered_surfaces": [
            {
              "node_kind": "resource",
              "node_id": "service-terms"
            }
          ]
        },
        "note": "HubSpot legal terms are accessible via stable, readable web pages across customer, developer, and public categories, but are not provided as a structured data API/contract."
      },
      {
        "stage": "sign_up",
        "signal_code": "captcha_free",
        "value": "unknown",
        "observed_at": "2026-08-07T21:13:46.317Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-signup"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "note": "Reid/headless capture confirms landing on signup page but does not conclusively establish whether CAPTCHA is absent across the complete signup flow."
      },
      {
        "stage": "sign_up",
        "signal_code": "machine_operable_form",
        "value": "unknown",
        "observed_at": "2026-08-07T21:13:46.317Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-signup"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "note": "The signup landing page content was captured, but machine-operability of the complete signup form fields could not be verified from the initial page payload alone."
      },
      {
        "stage": "sign_up",
        "signal_code": "phone_verification_free",
        "value": "unknown",
        "observed_at": "2026-08-07T21:13:46.317Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-signup"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "note": "Whether phone or SMS verification is required during the signup flow is not established in the provided signup evidence."
      },
      {
        "stage": "sign_up",
        "signal_code": "stable_entrypoint",
        "value": "yes",
        "observed_at": "2026-08-07T21:14:08.852Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-signup"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "A stable HTTP signup entrypoint was accessible at https://app.hubspot.com/signup-hubspot/crm."
      },
      {
        "stage": "sign_up",
        "signal_code": "supported_identity_flow",
        "value": "yes",
        "observed_at": "2026-08-07T21:14:02.455Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "oauth"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "note": "HubSpot documents a scoped, revocable OAuth identity flow featuring explicit human authorization boundaries and token refresh mechanisms."
      },
      {
        "stage": "pay",
        "signal_code": "explicit_price",
        "value": "not_applicable",
        "observed_at": "2026-08-08T00:14:20.635Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "pricing"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "negative_coverage": {
          "kind": "complete-response-inspection",
          "scope": "exact-resource",
          "covered_surfaces": [
            {
              "node_kind": "resource",
              "node_id": "pricing"
            }
          ]
        },
        "note": "Evidence confirms that developers can build apps and access public APIs using a free HubSpot account without requiring a paid subscription or payment step."
      },
      {
        "stage": "pay",
        "signal_code": "machine_operable_checkout",
        "value": "not_applicable",
        "observed_at": "2026-08-07T21:13:46.317Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-signup"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "negative_coverage": {
          "kind": "bounded-rendered-flow-inspection",
          "scope": "tested-surfaces",
          "covered_surfaces": [
            {
              "node_kind": "resource",
              "node_id": "crm-signup"
            }
          ]
        },
        "note": "No checkout or payment step is required as developer platform features and accounts are free."
      },
      {
        "stage": "pay",
        "signal_code": "sales_intervention_free",
        "value": "not_applicable",
        "observed_at": "2026-08-07T21:13:46.317Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-signup"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "negative_coverage": {
          "kind": "bounded-rendered-flow-inspection",
          "scope": "tested-surfaces",
          "covered_surfaces": [
            {
              "node_kind": "resource",
              "node_id": "crm-signup"
            }
          ]
        },
        "note": "No payment or purchase step exists for developer access, making sales intervention not applicable."
      },
      {
        "stage": "pay",
        "signal_code": "supported_payment_rail",
        "value": "not_applicable",
        "observed_at": "2026-08-07T21:13:46.317Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-signup"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "negative_coverage": {
          "kind": "bounded-rendered-flow-inspection",
          "scope": "tested-surfaces",
          "covered_surfaces": [
            {
              "node_kind": "resource",
              "node_id": "crm-signup"
            }
          ]
        },
        "note": "Payment rails are not applicable because developer accounts and API testing do not require payment."
      },
      {
        "stage": "provision",
        "signal_code": "automatic_activation",
        "value": "unknown",
        "observed_at": "2026-08-07T21:13:52.217Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-operations"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "note": "Retained evidence for the headless capture of crm-operations returned a 500 error page, which does not establish whether automatic activation is present."
      },
      {
        "stage": "provision",
        "signal_code": "bounded_delay",
        "value": "unknown",
        "observed_at": "2026-08-07T21:13:38.966Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-operations"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "Documentation describes batch operations and API usage limits, but does not state a documented bounded delay for record or service provisioning completion."
      },
      {
        "stage": "provision",
        "signal_code": "credential_delivery",
        "value": "yes",
        "observed_at": "2026-08-07T21:14:02.455Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "oauth"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "note": "HubSpot documents an OAuth authorization flow where exchanging the authorization code with /oauth/v3/token delivers an access token and refresh token."
      },
      {
        "stage": "provision",
        "signal_code": "machine_readable_status",
        "value": "partial",
        "observed_at": "2026-08-07T21:13:38.966Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-operations"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "negative_coverage": {
          "kind": "complete-response-inspection",
          "scope": "exact-resource",
          "covered_surfaces": [
            {
              "node_kind": "resource",
              "node_id": "crm-operations"
            }
          ]
        },
        "note": "Batch create operations allow enabling multi-status error responses with a trace ID and terminal status, but complete asynchronous provisioning lifecycle tracking is not fully exposed across all operations."
      },
      {
        "stage": "operate",
        "signal_code": "api_tool_access",
        "value": "yes",
        "observed_at": "2026-08-07T21:13:30.961Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-overview"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "HubSpot provides documented CRM API endpoints under api.hubapi.com for managing records such as contacts and deals."
      },
      {
        "stage": "operate",
        "signal_code": "delegated_recovery",
        "value": "yes",
        "observed_at": "2026-08-07T21:13:33.292Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-errors"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "HubSpot documents token generation, access token refresh, and retry behavior for rate limits and transient errors."
      },
      {
        "stage": "operate",
        "signal_code": "documented_limits_errors",
        "value": "yes",
        "observed_at": "2026-08-07T21:13:38.966Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-operations"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "HubSpot documents batch request limits (100 inputs), detailed error structures, and retry/rate-limiting guidelines."
      },
      {
        "stage": "operate",
        "signal_code": "usable_authentication",
        "value": "yes",
        "observed_at": "2026-08-07T21:13:42.627Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "oauth"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "HubSpot documents OAuth authentication using authorization codes to obtain access tokens for API requests."
      }
    ],
    "revision_digest": "sha256:c2ad3b65e86423943af0819b8bd2554895af553186b5407b556dea1f8562d75a"
  }
}
