{
  "contract": "sourcey.site-record/v1alpha1",
  "release_id": "sha256:aee4e70d2be957fa9235c225748a328e4eefc0252882edd6db0342960161d941",
  "snapshot_id": "sha256:08eb1d9271ff13a04300eed2aafb3bf6af0eb4f01b5d5e3daaa8ed2bf2737311",
  "artifact_sha256": "sha256:080dc492f41a47f5d3867feb3411f6cfb6bdc66901f15581220373a644ef392e",
  "data": {
    "entity_id": "ent_01kyy6rm10g6b7jtmft8n6qr0n",
    "entity_slug": "heroku",
    "profile": {
      "projection_contract": "sourcey.agent-readiness-projection/v1alpha1",
      "agent_readiness_profile_id": "arp_01m4t6w5qc7kz13svbdsk5jn3h",
      "entity_id": "ent_01kyy6rm10g6b7jtmft8n6qr0n",
      "scope": {
        "product": {
          "key": "heroku-platform",
          "name": "Heroku Platform"
        },
        "job": {
          "key": "deployment-create",
          "name": "Create a deployment"
        }
      },
      "catalog_binding": {
        "base_release_id": "sha256:a9835876058c8d85e09b4ddaa097aaa0496254356174dfa72a962973a5001d3f",
        "entity_revision_digest": "sha256:692d610f1102ca2580828e0d8ef648bca2276f19a9a5cdb3119c2b5df74481b9"
      },
      "declaration_revision_digest": "sha256:3dd2c799b7f4203022a4b34b29e331f705c424d93aa367c0d2038ca2b8b0c329",
      "declaration": {
        "declaration_id": "declaration_heroku_heroku_platform_deployment_create",
        "provenance": {
          "repository": "sourcey/agent-ready-services",
          "commit": "ea92d50c8d45b15cfc66aaa8871f3694808428bb",
          "path": "entities/he/heroku.yaml",
          "git_blob_oid": "1aa77c3887c68768476cef33fde4ae3323a37b9e",
          "blob_digest": "sha256:1307f456e42e89b84ab25e0d0f5a693f9c36fd93794f130dd6e949d6c8434e1b"
        },
        "status": "community_declared"
      },
      "surface_catalog": {
        "participants": [
          {
            "participant_id": "heroku",
            "roles": [
              "access_operator",
              "identity_provider",
              "operations_provider",
              "payment_provider",
              "provisioning_provider",
              "subject"
            ],
            "identity": {
              "entity_id": "ent_01kyy6rm10g6b7jtmft8n6qr0n"
            }
          }
        ],
        "resources": [
          {
            "resource_id": "account-signup",
            "uri": "https://signup.heroku.com",
            "roles": [
              "access"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          },
          {
            "resource_id": "api-reference",
            "uri": "https://devcenter.heroku.com/articles/platform-api-reference",
            "roles": [
              "discovery",
              "documentation",
              "operations",
              "provisioning"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          },
          {
            "resource_id": "authentication",
            "uri": "https://devcenter.heroku.com/articles/platform-api-quickstart",
            "roles": [
              "authentication",
              "documentation"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          },
          {
            "resource_id": "build-and-release",
            "uri": "https://devcenter.heroku.com/articles/build-and-release-using-the-api",
            "roles": [
              "documentation",
              "operations"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          },
          {
            "resource_id": "checkout",
            "uri": "https://dashboard.heroku.com/account",
            "roles": [
              "checkout"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          },
          {
            "resource_id": "pricing",
            "uri": "https://www.heroku.com/pricing",
            "roles": [
              "pricing"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          },
          {
            "resource_id": "service-terms",
            "uri": "https://www.salesforce.com/company/legal/",
            "roles": [
              "terms"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          }
        ],
        "endpoints": [
          {
            "endpoint_id": "registration",
            "uri": "https://signup.heroku.com",
            "transport": "http",
            "roles": [
              "registration"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          },
          {
            "endpoint_id": "service-api",
            "uri": "https://api.heroku.com",
            "transport": "http",
            "roles": [
              "service"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          }
        ],
        "interfaces": [
          {
            "interface_id": "api-authentication",
            "modality": "network_api",
            "functions": [
              "authentication"
            ],
            "endpoint_ids": [],
            "resource_ids": [
              "authentication"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          },
          {
            "interface_id": "service-api",
            "modality": "network_api",
            "functions": [
              "service_operation"
            ],
            "endpoint_ids": [
              "service-api"
            ],
            "resource_ids": [
              "api-reference",
              "build-and-release"
            ],
            "operated_by_participant_id": "heroku",
            "standard_bindings": []
          }
        ],
        "relations": [
          {
            "relation_id": "authentication-authenticates-api",
            "kind": "authenticates",
            "from": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "service-api"
            }
          },
          {
            "relation_id": "reference-describes-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "api-reference"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "service-api"
            }
          },
          {
            "relation_id": "signup-precedes-authentication",
            "kind": "precedes",
            "from": {
              "node_kind": "resource",
              "node_id": "account-signup"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            }
          }
        ],
        "surface_exclusions": [
          {
            "exclusion_id": "separate-eligibility-resource",
            "role": "eligibility",
            "rationale": "Access conditions are published within the vendor's terms; no separate eligibility resource is declared."
          }
        ]
      },
      "lifecycle": "active",
      "effective_from": "2026-10-13T08:45:27.746Z",
      "revision_digest": "sha256:fbd8880f28f51d4821e613e5ea28a7bcbc99d4aa07bd088f99b32d68aeabf029",
      "policy_digest": "sha256:b612172aad277b54461de84e006815126f2df566563954b02f4432a39cad89ac",
      "policy_version": "kind-2026-10-12.2",
      "policy_as_of": "2026-10-05T00:00:00Z",
      "job": {
        "job_id": "deployment-create",
        "job_digest": "sha256:ddf2fde714184f458c1d0cbc53e3a9a4522174f2d2d792b2abbe8b9a54eecd36",
        "category": "frontend-hosting",
        "name": "Create a deployment",
        "statement": "Create a deployment named with the run's nonce, then read it back."
      },
      "interface_id": "service-api",
      "label": "probed",
      "label_run_at": null,
      "grade": {
        "letter": "B",
        "statement": "A card on file.",
        "steps": [
          {
            "step": "discover",
            "outcome": "machine",
            "timing": null
          },
          {
            "step": "authority",
            "outcome": "workaround",
            "timing": "setup"
          },
          {
            "step": "onboard",
            "outcome": "workaround",
            "timing": "setup"
          },
          {
            "step": "pay",
            "outcome": "workaround",
            "timing": "setup"
          },
          {
            "step": "confirm",
            "outcome": "machine",
            "timing": null
          },
          {
            "step": "sustain",
            "outcome": "workaround",
            "timing": "setup"
          }
        ],
        "job": "reachable",
        "approvals": [],
        "workarounds": [
          {
            "step": "authority",
            "timing": "setup"
          },
          {
            "step": "onboard",
            "timing": "setup"
          },
          {
            "step": "pay",
            "timing": "setup"
          },
          {
            "step": "sustain",
            "timing": "setup"
          }
        ]
      },
      "discovery": [
        {
          "fact": "agent_documentation",
          "value": "https://heroku.com/llms.txt",
          "descriptor_url": "https://heroku.com/llms.txt",
          "attempt_digest": "sha256:34d91ea2ce61ffebd189252dbfa177b315b8e7cf8fc39b3b0c59400be3d5da41",
          "adapter": {
            "namespace": "llms.txt",
            "version": "1"
          }
        },
        {
          "fact": "agent_documentation",
          "value": "https://devcenter.heroku.com/llms.txt",
          "descriptor_url": "https://devcenter.heroku.com/llms.txt",
          "attempt_digest": "sha256:80778bbe6a41e932ec0e708ec0e81e2e2576513fdc08d871263d5c9346d22f2a",
          "adapter": {
            "namespace": "llms.txt",
            "version": "1"
          }
        },
        {
          "fact": "documentation_route",
          "value": "https://api.heroku.com/",
          "descriptor_url": "https://devcenter.heroku.com/articles/platform-api-reference",
          "attempt_digest": "sha256:abefb17b22a570fa0b14a7088ea288db6f0c92f540a87f9fa986cb279722faa1",
          "adapter": {
            "namespace": "llms.txt",
            "version": "route"
          }
        }
      ],
      "discovery_run_at": null,
      "run": {
        "started_at": "2026-10-13T08:44:29.578Z",
        "finished_at": "2026-10-13T08:45:27.746Z",
        "discovery_reads": 30,
        "exchanges": [
          {
            "purpose": "probe_operation",
            "role": "request",
            "method": "POST",
            "url": "https://api.heroku.com/apps/example-app/builds",
            "started_at": "2026-10-13T08:45:03.976Z",
            "finished_at": "2026-10-13T08:45:04.036Z",
            "response": {
              "status": 401,
              "media_type": "application/json",
              "content_bytes": 229,
              "content_digest": "sha256:caef36bf595bc7ec1c486584b13705d158ab647b68cbf62224bc24f0b8107013"
            },
            "transport_error": null,
            "exchange_digest": "sha256:2d7648db96cce300400721b3e31b49822958b056cac8f2d52e5f6ffd69e24b83"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://api.heroku.com/.well-known/oauth-protected-resource/apps/example-app/builds",
            "started_at": "2026-10-13T08:45:08.576Z",
            "finished_at": "2026-10-13T08:45:08.633Z",
            "response": {
              "status": 400,
              "media_type": "application/json",
              "content_bytes": 159,
              "content_digest": "sha256:17bb5365f1c019631af252678a17993a99956b07e627ae87a3d6b711eb4af36e"
            },
            "transport_error": null,
            "exchange_digest": "sha256:800e601911fd6a80411688c40990e50c8ea50497d64645e336b8edc156a05b70"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://api.heroku.com/.well-known/oauth-protected-resource",
            "started_at": "2026-10-13T08:45:13.260Z",
            "finished_at": "2026-10-13T08:45:13.300Z",
            "response": {
              "status": 400,
              "media_type": "application/json",
              "content_bytes": 159,
              "content_digest": "sha256:17bb5365f1c019631af252678a17993a99956b07e627ae87a3d6b711eb4af36e"
            },
            "transport_error": null,
            "exchange_digest": "sha256:16a990cc76eb8877b89329332c517d5a859d556257f26bd15087966cbcdfb2a1"
          },
          {
            "purpose": "probe_page",
            "role": "request",
            "method": "GET",
            "url": "https://signup.heroku.com",
            "started_at": "2026-10-13T08:45:17.115Z",
            "finished_at": "2026-10-13T08:45:17.232Z",
            "response": {
              "status": 200,
              "media_type": "text/html",
              "content_bytes": 283846,
              "content_digest": "sha256:d4e059b4e14bd480a73d9993718ac344cdc6138721000ba6a0dd2c998153e05a"
            },
            "transport_error": null,
            "exchange_digest": "sha256:1582b803a30fcf203252cca0ec8ba02f5d185cfa03b104d2c557c75c473f775b"
          },
          {
            "purpose": "probe_page",
            "role": "request",
            "method": "GET",
            "url": "https://dashboard.heroku.com/account",
            "started_at": "2026-10-13T08:45:22.287Z",
            "finished_at": "2026-10-13T08:45:22.349Z",
            "response": {
              "status": 200,
              "media_type": "text/html",
              "content_bytes": 271800,
              "content_digest": "sha256:d872032c3c188d0492006935a9c3cab516c73ff75309ac890b66d425bbf187ab"
            },
            "transport_error": null,
            "exchange_digest": "sha256:e8e048b7bab8344c5532b26761f3b92783e1c68ae15fde5c88f4af0a0b50342c"
          }
        ],
        "assertions": []
      },
      "last_run_at": "2026-10-13T08:45:27.746Z",
      "publication": {
        "visibility": "discoverable",
        "reasons": []
      },
      "provenance": {
        "dispute": "none",
        "vendor_attestation": {
          "status": "none"
        },
        "basis_event_ids": []
      },
      "canonical_url": "https://sourcey.com/c/heroku/agent-readiness/heroku-platform/deployment-create",
      "projection_digest": "sha256:59325d2b78ee31e073c59c3ef05783b97c776a7c74a1d914c8a81d184a9c4d5d"
    }
  }
}
