---
name: "JSON::RPC::Legacy::Procedure"
section: "3pm"
platform: "linux"
package: "libjson-rpc-perl"
version: "1.06-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/JSON::RPC::Legacy::Procedure"
---

# JSON::RPC::Legacy::Procedure(3pm)

JSON-RPC Service attributes

## NAME

JSON::RPC::Legacy::Procedure - JSON-RPC Service attributes

## SYNOPSIS

```
 package MyApp;

 use base ('JSON::RPC::Legacy::Procedure');

 sub sum : Public {
     my ($s, @arg) = @_;
     return $arg[0] + $arg[1];
 }

 # or

 sub sum : Public(a, b) {
     my ($s, $obj) = @_;
     return $obj->{a} + $obj->{b};
 }

 # or

 sub sum : Number(a:num, b:num) {
     my ($s, $obj) = @_;
     return $obj->{a} + $obj->{b};
 }

 # private method can't be called by clients

 sub _foobar : Private {
     # ...
 }
```

## DESCRIPTION

Using this module, you can write a subroutine with a special attribute.

Currently, in below attributes, only Public and Private are available. Others are same as Public.

- Public

  Means that a client can call this procedure.

- Private

  Means that a client can't call this procedure.

- Arr

  Means that its return values is an array object.

- Obj

  Means that its return values is a member object.

- Bit

  - Bool

  Means that a return values is a `"true"` or `"false"`.

- Num

  Means that its return values is a number.

- Str

  Means that its return values is a string.

- Nil

  - None

  Means that its return values is a `"null"`.

## TODO

- Auto Service Description

  - Type check

  ## SEE ALSO

\<http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html\>

## AUTHOR

Makamaka Hannyaharamitu, \<makamaka\[at\]cpan.org\>

## COPYRIGHT AND LICENSE

Copyright 2007 by Makamaka Hannyaharamitu

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
