{
  "openapi": "3.1.0",
  "info": {
    "title": "Fjf2or offline partner contract",
    "version": "partner-preview-1",
    "description": "Documentation only. Existing implementation is an in-process handler, not HTTP. No deployed base URL, live signing or transaction submission. Internal handler envelopes include status/body; prospective HTTP JSON uses body."
  },
  "servers": [],
  "x-runtime": "IN_PROCESS_ONLY_NO_HTTP_SERVER",
  "x-productionApproved": false,
  "paths": {
    "/v1/platform": {
      "get": {
        "summary": "Read fixed offline platform profile",
        "security": [],
        "responses": {
          "200": {
            "description": "Demo profile and terms hash; no production consent."
          }
        }
      }
    },
    "/v1/auth/challenge": {
      "post": {
        "summary": "Create a one-time creator-bound challenge",
        "description": "In-process adapter contract; prospective HTTP mapping only. No deployed server.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "creator",
                  "termsHash"
                ],
                "properties": {
                  "creator": {
                    "type": "string",
                    "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
                    "description": "32-byte public key in base58; byte decoding is required in validation."
                  },
                  "termsHash": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$",
                    "example": "b473fd753eed87e5f0efdfad5affd4de086e0b02d2d5779ed5df20b2d5c096a7"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "id, message, expiresAt and productionApproved false."
          },
          "400": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          },
          "413": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/v1/auth/verify": {
      "post": {
        "summary": "Verify a client-supplied public authentication proof",
        "description": "In-process adapter contract; prospective HTTP mapping only. No deployed server.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id",
                  "signatureBase64"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{48}$"
                  },
                  "signatureBase64": {
                    "type": "string",
                    "description": "Client-supplied 64-byte Ed25519 proof encoded as base64; no signing endpoint."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bearer scope offline:launch-draft; expiry one hour; productionApproved false."
          },
          "400": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          },
          "413": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/v1/launch/build": {
      "post": {
        "summary": "Prepare an offline canonical unsigned draft",
        "description": "In-process adapter contract; prospective HTTP mapping only. No deployed server.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicLaunch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Unsigned fixture; productionApproved false, sendable false and placeholderBlockhash true.",
            "content": {
              "application/json": {
                "example": {
                  "mode": "OFFLINE_PROTOTYPE",
                  "fixtureOnly": true,
                  "productionApproved": false,
                  "sendable": false,
                  "placeholderBlockhash": true,
                  "expiresAt": 190001,
                  "platform": "Fjf2orw2gsxoX7wW498JorwPomz2S1EBBG5mngdeMr2C",
                  "feeWallet": "AshmihxhhEhCZgmbbwvVJN537nLoZAxc76pBDiXLjHhR",
                  "withdrawAuthority": "AshmihxhhEhCZgmbbwvVJN537nLoZAxc76pBDiXLjHhR",
                  "requiredSigners": [
                    "FVen3X669xLzsi6N2V91DoiyzHzg1uAgqiT8jZ9nS96Z",
                    "4Qrizztktt7NqKQs5xUCE44nZ43rYtLNViTqEuNNY1sV"
                  ],
                  "messageHash": "190a995ab39714405d83c4af78e1f9f93d7ab6229819fcda64e1734035414aaa",
                  "unsignedTransactionBase64": "AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAIACQ/XWpgBgrEKt9VL/tPJZAc6DuFy89qmIyWvAhpo9wdRGjKvpISnx4QpEg+saPE3E3l6pAAOwn31V34982DpQwQ4aeqbnUUslCKxUk1NVnp+PNqML/kFA4OlGoYpB2pctFdI1HbV9xd6jv9VLQO5Eqfuu51SvafjLofN8JMsC2snJsxEblOQnf0RDwgKLbFquCc6aMrmjv6qlwUshbwIp6VhMULw0XcWiNHtUyJmujMFd5SIta343d8aFFj7RvjA5wsDBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAUEO5VNyibh75G1LE+Pia+Kb1rIxiFW8XHPDyGsUckiDRnkOAXGVIobZez7AfTGHaluwMpLnHLTPHsvj5MJAk7a8QNPkAsycyxrgECTyJdKqv1bjO5W1cdqVY+apj1pWQeDqBUmIQ+UoOjoTSCHADs6QmDSnOedrP4hpOp3H6YoB+hkA6+P+4a/40eI9cRD2jZLR3wMJRFuZbxjDDARyCQG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEge5mzXd4o5Lnt7pfknXY5e1pKDJP6/SdMeGoAaO3W8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGAAUCIL8CAAYACQMQJwAAAAAAAAcQAAAICQoCAQsDBAwMDQ4HBYoBJb5+3iyaqxEGDwAAAEZqZjJvciBBUEkgRGVtbwQAAABERU1PJAAAAGh0dHBzOi8vaXBmcy5pby9pcGZzL2JhZnlPZmZsaW5lRGVtbwAAgMakfo0DAAB4xftR0QIAdF1vdQEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsAQCAxqR+jQMAAA==",
                  "cost": {
                    "basis": "HISTORICAL_RENT_NOT_CURRENT_RPC_QUOTE",
                    "accounts": [
                      {
                        "kind": "pool",
                        "bytes": 429,
                        "historicalRentLamports": 2829560
                      },
                      {
                        "kind": "mint",
                        "bytes": 485,
                        "historicalRentLamports": 3114040
                      },
                      {
                        "kind": "baseVault",
                        "bytes": 178,
                        "historicalRentLamports": 1554480
                      },
                      {
                        "kind": "quoteVault",
                        "bytes": 175,
                        "historicalRentLamports": 1539240
                      }
                    ],
                    "networkFeeLamports": 11800,
                    "minimumLamports": 9049120,
                    "reserveLamports": 1000000,
                    "recommendedLamports": 10049120
                  },
                  "metadataPublicationVerified": false,
                  "currentBalanceVerified": false,
                  "nextGate": "Existing pilot-launch.prepareManifest with operator-controlled read-only RPC"
                }
              }
            }
          },
          "400": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          },
          "413": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Offline fail-closed error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "code",
                    "productionApproved"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "productionApproved": {
                      "const": false
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "CreatorSession": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]{8,64}$"
            },
            "description": "Prospective mapping to the in-process idempotencyKey argument."
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "CreatorSession": {
        "type": "http",
        "scheme": "bearer",
        "description": "Prospective HTTP mapping only; in-process argument is bearer. Hash stored in memory."
      }
    },
    "schemas": {
      "PublicLaunch": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "creator",
          "mint",
          "name",
          "symbol",
          "uri"
        ],
        "properties": {
          "creator": {
            "type": "string",
            "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
            "description": "32-byte public key in base58; byte decoding is required in validation."
          },
          "mint": {
            "type": "string",
            "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
            "description": "32-byte public key in base58; byte decoding is required in validation."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32,
            "description": "Maximum 32 UTF-8 bytes; maxLength is only a character bound."
          },
          "symbol": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10,
            "description": "Maximum 10 UTF-8 bytes."
          },
          "uri": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "pattern": "^https://(ipfs\\.io|arweave\\.net)/",
            "description": "Maximum 200 UTF-8 bytes; authoritative URI/metadata validation is also required."
          }
        }
      }
    }
  },
  "x-no-execution-endpoints": true
}
